原文:https://pentestlab.blog/2018/05/28/situational-awareness/
传统的内部侦察测试使用Windows内置命令,如net view、net user等,以获取主机和域信息。因为蓝色团队可以监视这些命令并触发警报。所以使用其他方法,如PowerShell和WMI,避免在环境探索的过程中被检测。
PowerView
PowerView是由Will Schroeder开发的PowerShell脚本,是PowerSploit框架和Empire的一部分。该脚本仅依赖于PowerShell和WMI (Windows管理工具)进行查询。从现有的meterpreter会话PowerView中可以加载和执行以下命令来检索关于域的信息:
meterpreter > load powershell
meterpreter > powershell_import /root/Desktop/PowerView.ps1
meterpreter > powershell_execute Get-NetDomain
PowerView有各种各样的cmdlet,可以发现本地管理员。
meterpreter > powershell_execute Invoke-EnumerateLocalAdmin
Invoke-UserHunter可以帮助扩展网络访问,因为它可以识别用户登录的系统,并且可以验证当前用户是否有本地管理员访问这些主机。
PS > Invoke-UserHunter
PowerView包含多个cmdlet,还可以检索域信息。
PS > Get-NetForest
还有一些模块可以执行基于主机的枚举。
(Empire: xx) > usemodule situational_awareness/host/winenum
(Empire: powershell/situational_awareness/host/winenum) > info
另外还有一个PowerView的Python实现,如果提供了凭证,它可以在不属于域内的主机上执行。
#./pywerver.py get-netshare -w PENTESTLAB -u test -p Password123 --computername WIN-PTELU2U07KG
https://github.com/PowerShellMafia/PowerSploit
HostRecon
还有一个PowerShell脚本可以自动执行主机中的环境探索任务。Beau Bullock开发了HostRecon并可以使用PowerShell和WMI查询从主机检索各种信息以逃避检测。HostRecon可以枚举本地用户和主机的本地管理员。该脚本将执行一系列检查,以确定防火墙状态、安装的防病毒解决方案(如果使用了LAPS)和应用程序白化产品。因为保持隐形是红队评估的首要任务,获得这方面的知识对于在这一阶段和以后使用的闪避行动是必不可少的。该脚本还会尝试识别域名密码策略,域控制器和域管理员等域名信息。
meterpreter > powershell_import /root/Desktop/HostRecon.ps1
meterpreter > powershell_execute Invoke-HostRecon
https://github.com/dafthack/HostRecon
HostEnum
HostEnum脚本由Andrew Chiles开发在主机上执行时提供详细信息,和HostRecon类似。 HostEnum既可以在本地执行,也可以从内存中执行,并可以以HTML格式生成输出。
meterpreter > load powershell
meterpreter > powershell_import /root/Desktop/HostEnum.ps1
meterpreter > powershell_shell
PS > Invoke-HostEnum -Local -Domain 参数-Domain将执行某些域检查,如检索域用户列表和其他域信息。
https://github.com/threatexpress/red-team-scripts
RemoteRecon
在获得本地管理员凭证并将这些凭证共享到多个主机的场景中,可以使用WMI在远程主机上执行环境探索。RemoteRecon是由Chris Ross开发的,它的目的是允许红色团队在不部署原始植入物的情况下进行侦察。该脚本可以捕获击键和屏幕截图、执行命令和shell代码,还可以加载PowerShell脚本以执行其他任务。在进行任何操作之前,需要首先使用本地管理员凭证将脚本远程安装到主机中,或者如果当前用户已经是目标主机上的本地管理员,则只需要计算机名。
PS C:\> Import-Module .\RemoteRecon.ps1
PS C:\> Install-RemoteRecon -ComputerName 'WIN-2NE38K15TGH'
通过脚本执行的命令的输出可以用-Results参数来检索。
PS C:\> Invoke-PowerShellCmd -ComputerName 'WIN-2NE38K15TGH' -Cmd "ps -name exp" -Verbose
PS C:\> Invoke-PowerShellCmd -ComputerName 'WIN-2NE38K15TGH' -Results
https://github.com/xorrior/RemoteRecon
参考:
https://github.com/PowerShellMafia/PowerSploit/tree/master/Recon
https://www.blackhillsinfosec.com/hostrecon-situational-awareness-tool/
http://threatexpress.com/2017/05/invoke-hostenum/
https://github.com/dafthack/HostRecon
https://github.com/xorrior/RemoteRecon