红 + 蓝 = 紫
David Fletcher & Sally Vandeven //
** advisory:** 本博文中引用的技术和工具可能已过时,不适用于当前环境。但本文仍可作为学习机会,并可能集成到现代工具和技术中。
我们于2016年10月6日在密歇根州大急流城的GrrCon黑客会议上进行了一场对话式演讲,旨在展示蓝队保护网络与红队攻击网络之间的友好交锋。讨论的主题包括BHIS在企业环境中发现的一些最普遍的访问获取、权限提升和控制方法。我们还探讨了蓝队如何为渗透测试做准备,让测试人员的工作更加困难。以下是演讲内容及相关支持材料,包括命令示例和参考。
密码喷洒
这是针对企业的密码猜测攻击。渗透测试人员使用命令行查询Active Directory或通过开源情报收集用户名列表,然后使用常见密码(如“Autumn2016”)尝试每个用户名登录。由于账户锁定策略,必须谨慎操作以避免锁定用户账户。在每个观察窗口内为每个用户猜测一个密码,以降低锁定风险。
如何从命令行发起域密码喷洒攻击:
首先检查密码策略,包括锁定设置:
|
|
示例策略显示,在此网络上,我们会选择简单的8字符密码(如Fall2016或Summer16),并每十分钟喷洒一个密码。“锁定观察窗口”定义了最后一次错误密码后坏密码计数器重置为零的时间。因此,在一次错误密码后,坏密码计数为一,但等待十分钟后计数重置,可以再次猜测。这大大降低了锁定账户的风险。但服务账户可能不受相同锁定规则约束,且坏密码计数在冗余DC之间不同步,如果每次登录认证到不同DC,可能存在冲突。因此,我们的经验法则是每个观察窗口猜测一次。
了解策略后,可以使用wmic或PowerShell创建用户列表。PowerShell命令更快,但并非总是可用:
|
|
|
|
然后使用FOR循环测试每个凭据,挂载共享\\%LOGONSERVER%\IPC$
:
|
|
脚本化:
使用Beau Bullock的PowerShell脚本Invoke-DomainPasswordSpray.ps1,自动完成所有操作。只需提供用户列表和密码(如“Autumn2016”)。如果提供密码列表,脚本会在每个观察窗口为每个账户猜测一个密码。甚至可以不提供用户列表,脚本会在运行时生成。
|
|
参考:
- DomainPasswordSpray.ps1脚本:https://github.com/dafthack/DomainPasswordSpray
- OWA门户密码喷洒博文:http://www.blackhillsinfosec.com/?p=5089
AppLocker绕过
二次执行
当运行进程启动第二个进程时,该进程通过“二次执行”启动,不被AppLocker检测,规则不适用。这意味着即使未明确允许,也可运行可执行文件。有两种方法实现:使用RUNDLL32.EXE或REGSVR32.EXE。
使用Metasploit的msfvenom创建恶意DLL文件,建立到192.168.2.10:443的HTTPS连接:
|
|
|
|
或
|
|
另一种绕过方法是使用InstallUtil.EXE直接访问.NET函数,避开AppLocker检测。参考下方BHIS博文“PowerShell w/o PowerShell”。
第三方命令外壳
如果cmd.exe被阻止,可以尝试第三方外壳。我们测试过ReactOS的开源类Windows操作系统中的命令外壳,工作完美。如果AppLocker阻止执行,可将EXE转换为DLL并使用上述RunDLL32.exe方法。也可使用Didier Stevens帖子中的预转换cmd.dll。
参考:
- 无PowerShell的PowerShell:http://www.blackhillsinfosec.com/?p=5257
- 应用白名单绕过:http://subt0x10.blogspot.com/2016/04/bypass-application-whitelisting-script.html
- 开源类Windows OS:https://www.reactos.org/ 或 https://en.wikipedia.org/wiki/ReactOS
- EXE转DLL方法:https://blog.didierstevens.com/2010/02/04/cmd-dll/
权限提升
我们常用多种工具帮助在Windows域中提升权限。
GPP(组策略首选项)
微软2008年引入。GPP首选项文件中常包含加密的特权凭据,用于脚本化管理任务。但由于使用的静态对称AES加密密钥已公开,文件中的凭据可轻松解密。这是我们首先检查的低 hanging fruit。
在命令行中运行:
|
|
如果找到包含加密值的cpassword属性项,解密获取明文密码并尝试使用凭据。使用gpp-decrypt.rb解密,或使用PowerSploit的Get-GPPPassword模块或Metasploit的gpp模块一站式查找和解密。
参考:
- https://blogs.technet.microsoft.com/grouppolicy/2009/04/22/passwords-in-group-policy-preferences-updated/
- http://tools.kali.org/password-attacks/gpp-decrypt
- https://github.com/PowerShellMafia/PowerSploit/blob/master/Exfiltration/Get-GPPPassword.ps1
- https://www.rapid7.com/db/modules/post/windows/gather/credentials/gpp
PowerUp
查找可能允许权限提升的常见错误配置。此PowerShell脚本检查弱服务权限、未引用的服务路径、可劫持DLL等。在PowerShell中运行模块,或使用Empire内置模块远程调用。
|
|
然后使用PowerUp内置模块利用发现的漏洞。
使用PowerSploit的PowerView模块中的ShareFinder和FileFinder扫描域,查找可访问的有价值文件。默认情况下,FileFinder会标记名称中包含“pass”、“sensitive”、“secret”、“admin”、“login”或“unattend*.xml”的文件,但搜索条件可配置。
|
|
Bloodhound
自动化查找提升AD账户路径的工具。使用PowerShell查询Active Directory,创建图表显示攻击者可访问的账户/计算机,以从内存中转储凭据(如使用Mimikatz)。转储的凭据可能提供直至域管理员的权限提升。
限制客户端到客户端流量
仅少数组织实现此级别控制,有效限制了我们的 pivoting 能力。 unfortunately,关于如何实现此安全级别的参考不多,但可以假设细粒度NTFS权限和基于主机的防火墙规则是部分方案。
W^X
仅允许用户在不可执行位置写入,仅允许在不可写入位置执行应用程序。后者可通过AppLocker强制执行。默认AppLocker规则仅允许从Program Files目录和Windows目录执行,用户默认无写入权限。实施AppLocker时,值得审计这些位置的权限变更。
参考:
- PowerUp:https://github.com/PowerShellMafia/PowerSploit/tree/master/Privesc
- PowerView:https://github.com/PowerShellMafia/PowerSploit/tree/master/Recon
- Empire:https://github.com/adaptivethreat/Empire
- Bloodhound:https://www.youtube.com/watch?v=MYxk73DsGQI 或 https://wald0.com/?p=68
- Mimikatz:http://www.blackhillsinfosec.com/?p=4667
- LAPS:https://technet.microsoft.com/en-us/mt227395.aspx
主动防御
指使攻击者工作更困难和困惑,不指“反击”(多数定义下非法)。注入一点混乱和不可预测性,能有效迷惑和减慢攻击者。多数人听说过蜜罐,但还有蜜文件、蜜账户、蜜令牌等。ADHD是BHIS整理的主动防御发行版,免费提供。
Web Bugs
网页中的隐藏元素,如从web bug服务器加载的1x1像素图像。服务器收集IP地址、User Agent和时间戳等识别信息。Web bug可嵌入到名称诱人的.DOC文件中(如ProjectedSalaries-2017.doc或Passwords.doc)。当攻击者上钩时,识别信息被记录。
Weblabyrinth
创建虚假网页迷宫,旨在混淆自动化网页扫描器。
Honeyports
使用TrustedSec的Artillery工具,在攻击者尝试连接网络上的假服务时捕获并黑洞处理。
Kippo
监控暴力SSH攻击,通过模拟真实SSH服务器连接迷惑攻击者。
ADHD中还有更多工具。
参考:
- ADHD工具列表:https://github.com/adhdproject/adhdproject.github.io/blob/master/index.md
- 关于ADHD:http://www.blackhillsinfosec.com/?page_id=4419
- ADHD安装说明:http://www.blackhillsinfosec.com/?p=5234
- Artillery:https://www.trustedsec.com/artillery/
- Web Bugs:https://github.com/adhdproject/adhdproject.github.io/blob/master/Tools/WebBugServer.md
- Weblabyrinth:https://github.com/adhdproject/adhdproject.github.io/blob/master/Tools/Weblabyrinth.md
- Honeyports:https://github.com/adhdproject/adhdproject.github.io/blob/master/Tools/HoneyPorts.md
- Kippo:https://github.com/adhdproject/adhdproject.github.io/blob/master/Tools/Kippo.md