在客户端网络上执行外部渗透测试的完整指南
2021-10-31
来源:嘶吼专业版
在执行安全评估(例如渗透测试、Red Teaming等)后,我习惯于向客户的高级管理层汇报已完成的工作。
这为讨论诸如使用的攻击策略、技术和程序(TTPs)、使用的攻击向量、发现、建议、补救措施等内容创造了机会。
很多时候,领导团队都会对我最初在网络上立足的一些方式或我使用的一些策略感到无比惊讶。
对于他们中的大多数人来说,他们期待着像《碟中谍》中汤姆·克鲁斯那种风格的黑客攻击、绕过防火墙等等,结果却发现我毫不费力地就破坏了他们的网络。
因此,我通常会花时间向我的客户阐明现代攻击通常是如何进行的,以及像一个脆弱的用户凭据这样简单的小漏洞如何能够颠覆整个网络防御。
事实是,网络攻击强调更多的是效率而不是精致。因此,攻击者不会寻找最难的突围闯入方法。他们通常会寻找最简单的进入方式。
我们通常将这种方法称为阻力最小的路径,其中一条路径就是登录凭据。只需一组用户凭据,您的整个网络可能会落入敌人的手中。
任务
早在2018年,一家大型医疗保健组织就与我们签约,对其外部网络基础设施进行外部渗透测试。对于从测试的范围,该组织向我们提供了他们的域名和IP地址范围。当然,目标是从互联网上识别危害组织的攻击向量。
外部渗透测试清单
侦察
在其他渗透测试技术中,我无需提及或重复侦察在每次网络攻击或网络渗透测试中的重要性。网络杀伤链的这个阶段是您被动或主动收集有关目标的情报的地方。
我通常利用这个机会使用开源情报(OSINT)工具和平台进行大量被动情报收集,以制定外部渗透测试计划。在这个阶段,我几乎不使用扫描工具来攻击目标网络,因为我可以获得制定攻击策略所需要的几乎所有信息。
那么,在这个阶段我通常在寻找什么?好吧,在可以从OSINT中发现的大量信息中,我通常会重点关注的关键内容包括:
· 子域
· 登录门户(Citrix、OWA、VPN、SharePoint等)
· 技术类型(IIS等)
· 电子邮件地址
· 用户名(很多)
外部渗透测试工具
使用诸如Google(Google.com)、Shodan(Shodan.io)、Censys(Censys.io)、connect.data.com、Ferge、Recon ng、SimpleMail、The Harvester、SpiderFoot(SpiderFoot.net)、Email Hunter(Hunter.io)、VirusTotal(VirusTotal.com)、FOCA、Maltego和Pastebin(Pastebin.com)等工具、网站和平台,我能够收集到大量关于我的客户的信息,例如子域、电子邮件地址、用户名、主机、网络服务、开放端口、先前违规行为泄露的凭据、登录门户等。
为了在写这篇文章的同时对我的客户的姓名进行保密,我使用了一个示例域和电子邮件搜索器来演示我获取目标客户的用户名格式和电子邮件地址(然后提取用户名)的多种方法之一。
目标发展
我在侦察阶段花费了大量时间并收集了大量信息,随后我浏览了收集到的大量数据,并战略性地绘制出我的攻击面和我将使用的攻击技术。
在浏览这些数据时,我对通常向组织的LDAP或AD环境进行身份验证的应用程序和网络服务非常感兴趣。
这可能是SMB、OWA、Autodiscover、VPN、Citrix、Jenkins、SharePoint、定制应用程序等。一旦我发现了这样的服务以及要攻击的服务,我就会组织我在侦察中发现的所有电子邮件地址和用户名。
我确保已删除了重复的电子邮件地址、用户名,还交叉检查了外部用户名和内部域用户名的格式是否相同,或者是否存在差异。
在此阶段结束时,我发现了客户端的外部OWA和Citrix应用程序等,并且还获得了近1,000个唯一用户名。从这里开始,我已准备好进入我的杀伤链的下一阶段。
入侵
对于大多数攻击,这一阶段对手会开始试图获得初始立足点。在这个阶段,很多事情都是迭代的,因为这个阶段使用的TTP会根据从侦察和目标开发阶段收集的信息而变化。
在外部渗透测试期间,效率是关键,并且在大多数情况下,保持最简是您的最佳途径。在渗透测试的早期,通常需要发现漏洞并对它们进行利用。
然而,随着对手的TTP不断进化,我们也必须不断发展。话虽如此,一种基本但有效的攻击技术是基于身份验证的攻击,也称为密码暴力破解。
在典型的密码暴力破解攻击中,您有一个用户名,您尝试针对该用户名尝试多个可能的密码,希望该用户使用的是您列表中的密码之一。
管理员变得更聪明,并开始实施帐户锁定策略,因此,在登录尝试达到一定阈值后(例如五次尝试后),帐户将被锁定。为了对抗这种控制,出现了一种新的基于身份验证的攻击,称为密码喷射(有人称之为水平攻击、反向暴力破解等)。
通过这种攻击,攻击者会收集多个用户名或电子邮件地址(取决于被攻击的应用程序或网络服务的类型),然后针对所有用户名或电子邮件地址尝试使用一个密码,以识别可能使用此类密码的用户之一。
这种黑客技术在现实世界中的攻击和我的大多数渗透测试活动中都有很高的成功率,并且这种情况将继续存在。有多种工具可以执行这种攻击,但是,对于基于应用程序的密码喷射攻击,我首选的工具是Burp Suite。
Burp Suite为我提供了足够的空间来自定义我的密码喷射,例如线程、节流、字符串grepping等。在为这次攻击选择密码时,我通常尝试季节+年份(例如Summer2018、Winter19等)、公司名称+数字(例如Company123、Company2003等)、先前公司违规行为、地点、运动队等的想法。老实说,为密码喷射攻击选择密码没有所谓的正确或错误方法。
在针对客户端的Citrix Web应用程序设置和配置Web渗透测试工具Burp Suite中的所有内容后,我开始缓慢而稳定地发起攻击。我的第一轮喷雾给了我两个有效的用户凭据,密码为Winter2017。
使用发现的两个用户帐户,我能够以这些用户的身份向客户端的Citrix应用程序进行身份验证。然而,令我沮丧的是,没有一个用户在他们的Citrix应用程序目录中拥有应用程序。
由于我已经拥有两个有效凭据,因此我使用了Black Hills的MailSniper工具并转储了客户端的OWA全局地址列表(GAL)。这为我的下一轮密码喷射攻击提供了额外的用户名。
这一次,我尝试对客户的OWA进行喷射攻击,使用密码Companyname123(我使用了实际客户的名称并在其后附加了数字123)。这给我带来了两个额外的有效凭据。
这一次,其中一位用户在其Citrix应用程序目录中有一个内部SAP应用程序,并且该SAP应用程序将使用Internet Explorer打开。
外部渗透测试中的横向移动
在横向移动阶段,无论是从应用程序级别还是网络级别,攻击者或渗透测试人员都已经获得了对目标的某种级别的访问权限,包括有限访问权限或完全访问权限。
从这一点来看,未来的目标是找到在目标网络内移动的方法,同时规避内部网络安全控制。
我们(对手/渗透性测试者)使用获得的访问权限来收集额外的信息,以便在目标的内部网络中移动。
基本上,我们回到了侦察阶段,这可以是基于主机的情报收集和/或基于网络的情报收集。同样,此阶段使用的技术可能因许多因素而异。
Citrix突破
此时,我已经获得了应用程序级别的访问权限,我的下一个目标是获得网络级别的访问权限。由于我有突破Citrix环境的经验,因此到了进入网络级别的时机了。
如果您有兴趣阅读有关Citrix突破的更多信息,NetSPI的同事们有一个很棒的博客(有关博客链接,请参阅On The Web部分)。为了执行Citrix突围攻击,我使用Internet Explorer打开了受害者的SAP帐户并尝试保存网页的源代码。
然后使用“文件”菜单中的“另存为”选项,我导航到了C:\Windows\System32\目录并调用Windows CMD 实用程序(cmd.exe)。
此弹出窗口打开了CMD,让我可以访问后端Citrix服务器。
通过访问后端Citrix服务器,我启动了一个PowerShell Empire listener,生成了一个PowerShell启动器,在Citrix服务器上执行它,并从Citrix服务器回调到我的 Empire listener。
Kerberoasting
“关于Kerberoasting的评论和文章还不够多,所以我不会在这里详述它的解释。我将直接讨论接下来发生的事情。大多数情况下,Citrix服务器被认为是具有高价值的系统,因此只有有限数量的用户在服务器上拥有管理权限。
话虽如此,我仍以非特权用户身份访问Citrix服务器的用户帐户。但是,任何域用户帐户均可用于请求服务主体名称(SPN),这是Kerberos身份验证使用的一种Windows特性,用于将服务实例与服务登录帐户关联起来;例如,运行IIS的服务帐户的SPN。
可以使用Windows的内置实用程序setspn.exe在本地查询服务帐户的AD,也可以使用Empire、Impackets、Metasploit等工具远程完成。
我使用我的Empire会话,转储了SPN并开始使用Hashcat破解密码哈希。破解密码的命令示例如下:
hashcat -m 13100 -a 0 spn.outputpassword.list -r best64.rule -o kerb.cracked
在查看SPN查询输出时,我注意到一些帐户属于Administrators组,而Hashcat碰巧破解了一个此类帐户(IIS_Admin)的密码哈希。
凭证滥用/重用
在这次外部渗透测试收集的初始信息中,我获得了一些关于内部网络的重要情报,例如域管理员、企业管理员、域控制器等的列表。
因此,为了有效地使用新获得的凭据来破坏域,我需要确定域管理员或企业管理员已登录会话或之前已登录的系统。
可以使用诸如netview.py、Invoke-EventHunter之类的工具来实现该目标。在我确定了域管理员和企业管理员进行会话的几个系统之后,我使用IIS_Admin帐户和破解的密码启动了针对这些系统的CrackMapExec。
我确定了几个系统,其中IIS_Admin帐户具有管理权限,并使用CrackMapExec中的Mimikatz模块从这些框中提取凭据。
在提取的凭据中,有一个属于域管理员!我需要做的最后一件事是根据域控制器确认新域管理员凭据的有效性,并转储NTDS数据库以进行离线密码破解和分析。
数据搜索和渗透
对手的主要目标之一是访问或提取敏感/关键数据,我们粗略地将之称为目标的”crown jewels“。它们可能是:
· 用户凭据
· 秘方
· 蓝图
· 客户资料
· 个人身份信息(PII)
· 病历
· 财务数据
· 知识产权
渗漏阶段是将数据从目标的网络环境移动到攻击者控制的系统(例如C2服务器)的阶段。这通常是数据搜寻活动的一部分。
在过去,渗透测试只是为了获得域管理员(DA)级别的访问权限,这样的日子已经一去不复返了。
现在,外部渗透测试需要证明,如果您的测试和攻击由真实世界的对手执行,您的客户可能会遭受业务风险和影响。话虽如此,这是我们测试的关键阶段之一。
作为渗透测试人员,在将数据移出客户环境之前,可能有必要与您的客户确认参与规则(RoE)是否要求数据渗漏。
如果允许,我会仔细分析要泄露的数据类型,以向客户展示业务风险和影响。根据环境和受到攻击的系统,不同的渗漏技术可用于不同的情况。
最后的话——外部渗透测试
正如您在这篇文章中可能已经注意到的那样,我没有在此测试中运行单个漏洞扫描。为什么要提这个?有几次我看到一些渗透测试报告或工作声称是外部渗透测试,但实际上,它们是漏洞评估。
关于渗透测试和漏洞评估之间差异的争论已经持续了很长时间,在这里我只是想分享我执行外部渗透测试的众多方法之一,由于我不是专家,所以我将不再讨论它。