0x01 前言

在大多数情况下,FireEye的Red Team都不自己写工具,因为有人感觉写工具像早上唤醒自己的声音“今天我要写一个工具”,就好比早上闹钟叫醒了自己,自己却把闹钟丢到床底。通常情况下,Red Team成员会找出繁琐任务的捷径,即为创建一个自动执行任务的评估工具,不管是对现在还是将来都是有用的,就像我的Boss喜欢开玩笑说:“懒惰滋生智慧!”
在Mandiant,我们开发(或者显著贡献)相当多的工具和脚本,使我们平时的工作变得相对轻松。为了使广泛的安全社区了解这些工具的来源和用法,我们写了这篇不算是很正规的文章,作为这些工具的综述。文章的目的是突出新开发的工具,或者是现有工具的重大功能变更,并通过一系列的案例研究,保证阅读和学习的乐趣。
我们的Red Team经常会面对各种各样的网络环境、技术、防御和组织架构,所以必须克服每个网络对我们提出的新挑战,及所有客户端基础设施和重叠配置的问题。现有的公共工具可能不太适用于大型的网络环境,或者不能帮助Red Team完成攻击周期的特定阶段。文章中讨论的工具,在过去的几个月,经历了不同版本的变更与修改,现在已经能够用于平时的任务。所以,我们希望这些工具能让大家的工作和生活更加轻松。

0x02 域枚举

工具名称:ADEnumerator(活动目录枚举器)
下载地址:https://github.com/chango77747/AdEnumerator
在攻击周期的侦察阶段,域枚举是必不可少的。当你加入域系统后,可以轻易的使用ADSI(Active Directory Service Interfaces)活动目录服务接口或net命令枚举域对象,ADSI适用于没有加入域的系统,使用如图1所示的“runas /netonly”命令。由于使用ADSI进行域枚举,设计详细的LDAP查询可能会有点麻烦,所以我们使用ADEnumerator对原始的LDAP进行自动查询。

图1 使用PowerShell和ADSI进行域枚举

ADEnumerator是一个PowerShell的模块,被设计用来从非域系统查询活动目录服务,ADEnumerator适用于下面的例子:
(1)你通过NBNS欺骗或其他方式从一台打印机获得域凭据,并且想进行域枚举。注意:所有的域用户凭据都可以查询LDAP。
(2)你想收集关于你获取账户的更多信息,通常,通过组命名方式就可以知道使用凭据的位置(如组名字{systemName}_localAdmin)。
(3)你拥有凭据,能够从一个已知的系统内部进行渗透测试,但该系统没有加入域。
(4)你想通过命令行进行活动目录枚举,这样就可以把输入的命令连在一起。
图2给出了ADEnumerator.psm1模块的导入,与域控制器建立LDAP连接并执行各种域枚举方法。在ADEnumerator中还有很多其他的方法,可以参考脚本文件顶端的完整方法列表。

图2 ADEnumertor.psm1导入和枚举

或者,你可以在攻击平台上安装远程服务器管理工具,使用“runas”命令执行“mmc”,添加活动目录管理单元。然后你就可以把域改成目标域,并在图形界面查看整个活动目录结构,如图3所示。


图3 不同用户运行的活动目录管理单元

0x03 权限提升和扩展

Tools A

工具名称:CredNinja
下载地址:https://github.com/Raikia/CredNinja
你有没有过这样的情况,列表中的证书超过100个,然而并不知道哪个是有效的,或者不知道哪个证书对目标系统有管理员权限。CredNinja应运而生(它能做更多!)。用例和一般功能如下:
利用SMB访问(TCP端口445)
试图为所有的系统挂载C盘,将返回:
登录无效——无效的证书(防止锁定,包括账号锁定)
拒绝访问——非本地管理员
文件列举——本地管理员!
多线程——在大型网络环境中灵活使用
识别目标操作系统的指纹和域成员
如果“-Users”标志被启用,那么会执行目录列举“C:\Users”(如果是XP则是C:\Documents and Settings),查看所有主文件夹的时间戳,并打印文件夹拥有者在100天内对主文件夹修改的时间戳(这个值是可以修改的,默认100天)。
提供快速用户狩猎功能来识别目标系统上的活跃用户。
CredNinja对于权限提升和扩展是非常有用的,因为你可以通过证书标识已提权的系统,并继续从这些系统下载证书。图4给出CredNinja通过识别各种系统域凭据是否具有域管理员权限或者已经失效。同时CredNinja也可以针对单个系统运行,并通过清除无效的凭据来清理信用凭证列表。

图4 CredNinja运行在各种系统使用的证书列表

Tools B

工具名称:WMIOps
下载地址:https://github.com/ChrisTruncer/WMIOps
从进攻来说,WMI(Windows Management Instrumentation)是新的热门方式。WMIOps作为一个PowerShell脚本,可以通过WMI在Windows环境下执行本地或远程主机上的各种操作,主要为渗透测试或Red Team对战使用而设计。在执行进攻任务时,现有的一些工具会使用WMI,WMIOps把这些技术合并到单个工具中,以完成攻击生命周期各项任务。
图5给出通过WMIOps的Get-ProcessOwnersWMI方法获取目标系统Win7-Client02中的用户列表。可以看到,用户“Dick.Grayson”在Win7-Client02有本地管理员权限,且被授权可以执行任意WMI命令。用户“Bruce.Wayne”在Win7-Client02运行了进程,意味着该用户的证书可能明文存储在LSASS(Local Security Authority Subsystem Service)本地安全验证子系统上。
为了获取“Bruce.Wayne”的证书, 在图6中使用了WMIOps的Invoke-RemoteScriptWithOutput方法,通过运行一个远程的PowerShell进程,执行“Invoke-Expression”命令下载证书并执行“Invoke-Mimikatz”脚本,同时该命令会指示输出发送到监听HTTPS的服务器10.181.73.210,图7给出了发送到服务器的Mimikatz输出。


图5 WMIOps的Get-ProcessOwnersWMI方法获取用户列表运行的进程


图6 Invoke-RemoteScriptWithOutput调用Invoke-Mimikatz并将输出发送到“callbacksite”


图7 图4执行的命令发送的Mimikatz结果

0x04 初始向量

工具名称:EyeWitness
下载地址:https://github.com/ChrisTruncer/EyeWitness
默认凭据是初始向量中最常见一种的,如Web管理平台Jboss、Apache Tomcat、Jenkins等。EyeWitness可以在侦察阶段通过对网站每一个页面进行截图,我们增加了一个“主动扫描”模块,为EyeWitness提供以下功能:
签名认证——判断主机是否存在默认的已知凭证,如果存在则使用保存在文件中的凭证尝试登录。
登录检查——判断根路径是否存在登录表单,或者登录是否基于HTTP认证,尝试使用存储在文件中的用户名和密码组合进行登录。
附加URL检查登录——将常用的登录页面列表添加到网站根目录,例如“admin”、“login”、“login.php”页面等。这些页面列表保存在数据文件中,所以可以轻易定制。
如果一个页面接收到一个HTTP 200的响应代码,判断其是否是登录表单。
EyeWitness会尝试使用存储在文件中的用户名和密码组合进行登录。
“主动扫描”标志如图8所示,报告示例和控制台输出在图9和图10中给出。一个名为“登录确定”类别也被添加进了报告,EyeWitness能确定登录,但无法验证登录。如果你想进一步了解这个模块,可以从christophertruncer的博客文章了解。


图8 EyeWitness主动扫描标志


图9 使用主动扫描模块成功登录

图10 EyeWitness报告输出

0x05 模拟攻击

工具名称:Egress-Assess
下载地址:https://github.com/ChrisTruncer/Egress-Assess
为了综合Mandiant、FireEye和iSIGHT Partners(美国德州安全公司,目前已被FireEye收购)的能力,每一次任务都会有我们独一无二的威胁情报和技术。客户经常要求我们确定他们行业的威胁,并模拟他们的TTPs来评估组织当前的检测能力。Egress-Assess是一个Python的工具,用于模拟已知的TTPs攻击者,例如IP地址和FQDNs(Fully Qualified Domain Names)完全限定的DNS连接到网络。Egress-Assess是开源的,但是,Mandiant维护一个专有版本,该版本包含真正威胁组的副本NBIs(network-based indicators)基于网络的指标。
如果HTTP(S)头请求中的主机值是已知的恶意IP地址或FQDN,并生成已知恶意URI的web请求,Egress-Assess会修改主机值。此外,还可以生成假的PII、PHI或PCI数据来模拟数据威胁,我们通过Egress-Assess来模拟真正的威胁组指标或者数据威胁,来评估客户的检测能力。图11给出了公开版本的Egress-Assess支持的威胁组列表,如果你想进一步了解Egress-Assess,可以从christophertruncer的博客文章了解。


图11 Egress-Assess支持的威胁组列表

0x06 结论

这些工具只是一部分,实际上Red Team用到的可能会很多,同时,我们鼓励大家在评估或实验室中使用这些工具。
我们再次强调,每个工具创造或修改的需求都是经过确认的,同时开发工具和发展技术来自动执行任务或完成一个目标,也是非常的激动人心。有些工具引入新的技术来完成一个目标,而其他只是简单地自动扩展现有的工具和技术。无论你的动机如何,引入新的工具和技术都是一个极佳方式,来提高我们的行业知名度并保证更高质量的安全。
来源:[FireEye]

Leave a Reply

Your email address will not be published. Required fields are marked *