第一章 概要
众所周知,全球的黑客组织很多,“匿名者”(Anonymous)黑客组织应是世界最大的黑客组织,组织内参与行动的有数千名成员,曾在2010年12月攻击威士网站、万事达网站和支付网站PayPal,此外,还有一些黑客组织陆续被曝光,譬如Phantom Squad曾在圣诞节攻击微软 Xbox Live 和 PSN 平台,黑客组织SkidNP在2015年计划攻击 Steam 和《我的世界》服务器等等,这些黑客组织的特点是以炫耀自身技术能力为目的,行事高调。相比较于这一类的黑客组织,另一类行事低调,以破坏或窃取数据为目标的黑客组织更应该引起我们的关注,而本报告要披露的海德薇组织就是后者的代表。
海德薇组织的浮现最早可回溯到2012年的一封邮件,这封邮件带有漏洞利用攻击的特征。此后持续的四年间,同类攻击在我国的各大网络信息中心频繁出现,涉及国计民生的重要核心领域,是这些攻击的重点对象。
这封邮件还突破了防火墙、防垃圾邮件网关、入侵防御产品的攻击检查,我们在提取这些恶意样本的代码编写规则、代码生成特性等指纹信息后,发现了这些恶意样本高度重叠和相似,尤其在漏洞利用方法、攻击行为特点、窃密技术手段上,都具有高度的一致性,同时还具备一定的标准化和程序化攻击的特点。
正是这些线索,为我们揭开海德薇组织的神秘面纱提供了重要的支撑,最终我们利用技术手段进入海德薇组织的服务器和邮箱系统,并根据其所窃取的数据集中分析,最后将这个组织命名为“海德薇(Hedwig)”。
我们发现,在利用文件漏洞攻击的样本中,样本所利用的漏洞和内嵌的Shellcode高度同源。海德薇(Hedwig)使用的漏洞主要是CVE-2010-3333、CVE-2012-0158以及CVE-2015-1641,使用的攻击样本类型主要是rtf文件类型。
它们使用的shellcode功能主要有两种:一是从恶意网站上下载可执行文件并执行;二是从自身解密出可执行文件并执行。
如下图,2012年至2014年拦截到的CVE-2010-3333漏洞的shellcode和2015年拦截到的CVE-2012-0158漏洞部分样本的shellcode功能、代码完全一致,这类shellcode主要功能是从恶意网站下载PE文件并执行,而且下载物都命名为a.exe。该特点显示出不同年份截获的样本的shellcode具有同源性。
相同年份截获的利用CVE-2012-0158漏洞和利用CVE-2015-1641漏洞的两种样本的shellcode也存在同源性,下图可以看出这些样本的shellcode的功能都是从自身解密出PE文件并执行,且API序列完全相同,释放的PE文件路径也完全相同,而且表面上看是将名为svchost.exe的文件释放到临时目录下,但实际由于多了“..”,实际释放的路径在 Local settings目录下,一直以来黑客都是这样书写路径,属于完全一致的攻击习惯。
此外,利用相同漏洞文件的结构大多相同,一般只是变换了下载地址或者是内嵌的PE文件。
上图显示利用CVE-2012-0158漏洞的部分样本对比,此类样本的shellcode功能是从自身文件解密出PE文件并执行,我们发现这类样本结构上完全相同,只是替换了内嵌的PE文件,且内嵌的加密PE文件均在文件偏移的0×00011007字节处。其解密方法是顺序与0xBEBAFECA的密钥进行异或。
我们在利用CVE-2015-1641漏洞样本中也发现了同样的现象,样本的shellcode功能同样是从自身文件解密出PE文件并执行,结构上完全相同,而这类文件中内嵌的加密PE文件大多在文件偏移的0x0004249E字节处,且解密方法与CVE-2012-0158漏洞样本完全相同
第二章 海德薇(Hedwig)使用的窃密木马分析
通过对海德薇(Hedwig)组织使用的窃密木马统计分析发现,其中最主要的当属Zeus VM木马家族和HawkEye Keylogger木马家族。
2.1 ZeusVM木马家族
Zeus又称Zbot,是运行在Windows和Mac系统上的网银木马,传播广泛,并有多类型变种,主要功能是窃密,比如:通过web浏览器注入实现劫持用户账户信息,窃取FTP、POP3协议上的敏感信息,截获按键记录,截取计算机屏幕等,还可实现对被控主机的远控功能,比如关机重启,文件上传下载,启动关闭进程等等。
Zeus家族木马的演变图:
Zeus已经有第二代变种,Zeus VM(KINS)家族就是其中比较典型的代表之一。Zeus VM家族木马在2013年第一次出现,完全基于Zeus 2.x代码修改而来,其使用的各种技术较之前的版本都有较大“改进”,并添加了针对各种安全产品的逃逸技术。
Zeus VM木马能盗取30余种FTP客户端软件的账号密码信息、8种浏览器保存的密码、30余种比特币信息、8种邮件客户端保存的用户密码信息,内联挂钩大多数进程的敏感函数截取用户正在使用的应用的账号密码信息,还可通过内置的密码本尝试破解用户登录密码、模拟其他用户登录从而获得其他用户账号下的相关密码信息。相关技术细节描述:
(1) 通过遍历HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall这个注册表项下面的UninstallString和DisplayName键值来获取软件名和和安装路径。
(2) 通过读取特定的注册表项或键值.ini 文件,.dat 文件以及数据库获得相关软件的账号密码信息,从这一点可以看出黑客对于个各种软件的隐私数据存放位置都了如指掌。
\Administrator\Application Data\GHISLER\WCX_FTP.INI \Administrator\Application Data\SmartFTP \Administrator\Local Settings\Application Data\BulletProof Software \Application Data\CUTEFTP\SM.DAT \BPFTP\Bullet Proof FTP\Main \BulletProof Software\BulletProof FTP Client\Main \BulletProof Software\BulletProof FTP Client\Options \Software\BPFTP\Bullet Proof FTP\Options \Software\FlashFXP\ \Software\FTP Explorer\FTP Explorer\Workspace\MFCToolBar-224 \Software\GlobalSCAPE\CuteFTP 8 Home\QCToolbar \Software\VanDyke\SecureFX Administrator\Application Data\FLASHFXP\3\HISTORY.DAT Administrator\Application Data\FLASHFXP\3\SITES.DAT Administrator\Application Data\FLASHFXP\4\HISTORY.DAT Administrator\Application Data\FLASHFXP\4\SITES.DAT Administrator\Application Data\Frigate3 Administrator\Application Data\FTP Explorer Administrator\Application Data\FTPRush Administrator\Application Data\Ipswitch Administrator\Application Data\VANDYKE\CONFIG\SESSIONS Application Data\FILEZILLA\SITEMANAGER.XML Application Data\GLOBALSCAPE\CUTEFTP LITE\SM.DAT Application Data\GLOBALSCAPE\CUTEFTP PRO\SM.DAT Application Data\GLOBALSCAPE\CUTEFTP\SM.DAT Common Files\IPSWITCH\WS_FTP GlobalSCAPE\CuteFTP 8 Professional\QCToolbar HKEY_CURRENT_USER\Software\BPFTP HKEY_CURRENT_USER\Software\CoffeeCup Software\Internet\Profiles HKEY_CURRENT_USER\Software\Cryer\WebSitePublisher HKEY_CURRENT_USER\Software\Far Manager\Plugins\FTP\Hosts HKEY_CURRENT_USER\Software\Far\Plugins\FTP\Hosts HKEY_CURRENT_USER\Software\Far2\Plugins\FTP\Hosts HKEY_CURRENT_USER\Software\Far2\SavedDialogHistory\FTPHost HKEY_CURRENT_USER\Software\FileZilla HKEY_CURRENT_USER\Software\FileZilla Client HKEY_CURRENT_USER\Software\FTPWare\COREFTP\Sites HKEY_CURRENT_USER\Software\Ghisler\Windows Commander HKEY_CURRENT_USER\Software\Sota\FFFTP HKEY_CURRENT_USER\Software\TurboFTP HKEY_LOCAL_MACHINE\Software\Ghisler\Windows Commander HKEY_LOCAL_MACHINE\Software\Mozilla\Firefox\Extensions Software\GlobalSCAPE\CuteFTP 6 Home\QCToolbar Software\GlobalSCAPE\CuteFTP 7 Home\QCToolbar Software\GlobalSCAPE\CuteFTP 9\QCToolbar
(3) 对于浏览器的窃密步骤:1.通过读取相关注册表项或文件获得浏览器已经保存的密码;2.删除浏览器已经存在的 cookie记录,以便让用户再次登陆网站时重新输入账号密码;3.通过监控键盘按键以及内联挂钩浏览器进程中相关敏感函数,截获用户正在输入的账号密码等信息。
(4) 还可盗取多种虚拟货币账户信息:Anoncoin、BBQcoin 、Bitcoin、Bytecoin、Craftcoin、Devcoin、Devcoin、Digitalcoin、Electrum、Fastcoin、Feathercoin、Florincoin、Freicoin、GoldCoin、I0coin、Infinitecoin、Ixcoin、Junkcoin、LitecoinLuckycoin、Megacoin、Mincoin、MultiBit、Namecoin、NovaCoin、Phoenixcoin、PPCoin、ProtoShares、Quarkcoin、Tagcoin、Terracoin、Terracoin、Worldcoin、Yacoin、Zetacoin
(5) 监控多种邮件客户端,窃取私密信息。BatMail、FoxMail、IncrediMail、MAXPROG、Outlook、Pocomail、RimArts、The Bat!、WindowsLive Mail
2.2 HawkEye Keylogger木马家族
HawkEye Keylogger木马可以盗取的信息包括系统信息、浏览器保存的密码信息、电子邮件保存的账户信息、虚拟货币账户信息、剪贴板数据,并可对键盘进行记录。
我们找到了HawkEye Keylogger的控制端,从控制端的配置也能看到其主要的窃密功能。
第三章 海德薇(Hedwig)使用的逃逸技术分析
3.1针对杀软静态检测的逃逸技术
3.1.1利用漏洞的样本文件的静态免杀
在拦截到的利用CVE-2012-0158漏洞的样本中,我们发现其添加了大量的垃圾数据或混淆代码干扰杀毒软件对rtf文件的解析,从而对杀毒软件进行免杀。
3.1.2不同语言编写的PELoader
在截获到的Zeus VM家族样本中我们发现,很多样本都采用C#,VB等语言编写的PELoader作外壳,目的是为了保护其具有窃密功能的核心代码不被杀毒软件检测到。经过我们检测,加了这层外壳之后,杀毒软件对其的检测率明显下降。
PeLoader运行还原代码的主要步骤如下:
(1) 以暂停线程的方式创建一个新的自身进程。 (2) 卸载新创建的进程的全部映像数据。 (3) 从自身文件的资源里加载两段数据,一个是key,一个是要解密的数据,解密之后则是一个新的PE文件。 (4) 在新创建的进程中申请足够大的内存,并将之前解密的PE文件映射进去。 (5) 复制自身进程的所有权限到新进程。 (6) 重新设置EIP,并恢复线程,自身退出。
3.1.3 对抗杀软的启发式检测
通过分析发现,样本在代码中采用了一些手段用于对付杀软的启发式扫描技术。
3.2针对杀软动态防御的逃逸技术
为了便于隐藏自身,大多数ZeusVM家族样本会将核心功能代码注入到其他合法进程中,然后自身退出。
经过分析,样本采用的代码注入方式和传统的注入方式不尽相同,这种注入方式可以绕过部分安全软件的主动防御功能,主要步骤如下:
(1) 以暂停线程的方式创建一个新的explorer.exe (2) 将该explorer.exe进程中装载的ntdll.dll镜像卸载。 (3) 在自身进程中映射一份新的ntdll.dll内存区。 (4) 修改并挂钩自身进程中新创建的ntdll.dll内存区的NtContinue函数。 (5) 将修改过的ntdll镜像映射到explorer.exe中。
(6) 从自身文件中解密出来一个新的具有窃密核心功能的PE文件,并映射到explorer.exe中。
(7) 恢复explorer.exe线程。
(8) 由于explorer.exe在启动时会调到NtContinue函数,因此会直接执行到被篡改的NtContinue函数。
(9) 被篡改的Ntcontinue函数会跳转到一段事先写好的shellcode中。该shellcode代码如下,主要功能是:恢复NtContinue函数原始代码;创建一个新的线程,线程入口点位于之前被映射的具有核心功能的PE文件镜像中;等待线程结束后结束进程。
特别值得一提的是,在向explorer.exe注入恶意代码的时候,病毒并没有直接调用NtMapViewOfSection、NtResumeThread、NtUnMapViewOfSection这些杀软严密监控的敏感函数,而是直接模拟了ntdll里面相关函数的代码直接传递SSDT表中的序号和参数实现,这在一定程度上可以绕过部分安全软件的主动防御功能的监控。比如对于NtUnMapViewOfSection的调用实现如下:
3.3针对沙箱、虚拟机等的逃逸技术
ZeusVM是Zeus木马家族的2.0版本,因此其在反沙箱,反虚拟机等的逃逸技术上也是“集之前版本之大成”。其主要的逃逸技术有以下几种:
(1) 通过检测已加载的模块检测沙箱或虚拟机环境。比如通过sbiedll.dll检测沙箱软件sandboxie是否存在;通过检测api_log.dll检测是否运行在SunBelt SandBox在线沙箱环境中;通过检测dbghelp.dll检测Vmware环境等。
(2) 通过检测窗口标题检测正在运行的软件。
(3) 通过检测进程名称检测是否有调试器等工具运行。其检测的进程名主要包括:"dumpcap.exe"
"wireshark.exe" "ollydbg.exe" "idag.exe" "sysanalyzer.exe" "sniff_hit.exe" "scktool.exe" "proc_analyzer.exe" "hookexplorer.exe" "multi_pot.exe"
(4) 通过检测驱动对象是否存在检测各种虚拟环境或软件。比如通过检测\\.\NPF_NdisWanIp是否存在来检测是否安装有抓取网络数据包的软件;通过检测\\.\vmci.以及\\.\HGFS是否存在检测VMware环境;通过检测\\.\VBoxGuest是否存在检测VirtualBox虚拟环境。
第四章 海德薇(Hedwig)隐蔽信道特点分析
4.1隐藏在图片中的秘密
在Zeus VM家族的窃密木马中,为了便于对主机的控制,病毒采用了从云端下载配置文件的方式。木马在回连真正的黑客控制服务器之前,会先去下载一个配置文件,而这个配置文件的相关信息却隐藏在一个图片中,图片的内容一般与服务器相关。
在图片的末尾一般都会隐藏着一段表面看上去使用base64编码的信息。
实际上这段数据经过base64解码之后,再经过RC6解密算法解密即可得到最后的服务器配置文件,如图阴影部分为解密使用的密钥。
解密之后便是真正的C&C服务器配置信息。
其中前0×18字节是数据头部,用来解析本次配置数据。0偏移处的0xDC1A0BF2是随机值,随后的4字节数据即0×408是数据长度,偏移0×10处的0A即本次 配置数据有10项。偏移0×14处的0x7F6FEB30是对各偏移0×18之后数据的Sha256 Hash值的前4位。解密后会校验改Hash值,若不对,数据会被弃之不用。
配置文件的结构可以描述如下:
StructConfigData { DWORD dwRand; //本例是0xDC1A0BF2 DWORD dwConfigLen; //本例是0x408 DWORD dwZero1; DWORD dwZero2; DWORD dwConfigItemCnt; //有多少配置项,本例是10项 DWORD dwHash; //本例是0x7F6FEB30 ConfigSubItem[dwConfigItemCnt]; } 每个配置项的结构可描述如下: StructConfigSubItem { DWORD dwZeoro; DWORD dwConfigType; //配置项类型,如0x4E23标识是C&C服务器 DWORD dwUnknow; DWORD dwConfigLen; DWORD dwConfigLen; BYTE szData[dwConfigLen]; }
这是样本根据类型0x4E23在配置信息中读取C&C回连服务器地址,本例是
goodnewss4real.com/fresh/gate.php,该地址便是程序用于与黑客服务器进行加密通讯的地址。程序同样会读取其他类型的配置信息,并执行相相应功能,比如类型为0x4E22的配置信息表示程序的更新功能,本例则是http://goodnewss4real.com/fresh/bot.exe。
4.2使用TCP协议加密回传信息
在获得了真正的C&C服务器之后,程序便可以与该服务器进行通讯了。同样,回传的数据也进行了加密,采用的是RC4算法。
回传的数据也有固定的结构,其结构和上面解密后配置文件的结构基本一致。以下是样本上线时给C&C服务器发送的数据包(加密前)
数据前0×18字节正是前述的数据头,偏移0×10处的0x0B表示共有11项数据。其中第1项即第一个绿色部分(偏移0×18至0x4B)是机器名称和盘符序列号,其类型是0×2711。第二个绿色部分(偏移0x7E至0×93) 即第4项数据,类型ID为0x271D,是系统语言版本,中文为0×0804。第2项数据即第一个黄色部分(0x4C到0×63),类型0×2713,其数据是0×02000000,表示样本的版本信息。第3项数据即红色部分(偏移0×64到0x7D)是系统版本信息,其中0x0280a之后的0×0000表示是32位系统。
加密时使用的密钥如下,密钥长度0×100。这与我们在后面篇幅中从黑客服务器上获得到的数据相吻合。
加密后发给C&C服务器的数据如下:
服务器返回的数据也使用同样密钥进行加密解密,在黑客没有上线对肉鸡进行控制时,服务器会返回如下信息:
使用和之前相同的密钥解密之后的数据:
在长0×18的数据头部之后,只有1项数据,占0×14字节,全是0。不包含任何有效命令,接收到这样数据,样本实际上什么也不做。
黑客上线后,则可以使用服务器上的命令程序对肉鸡进行各种指令操作。
4.3使用FTP协议回传信息
在我们截获的HawkEye Keylogger木马中,有一部分是通过FTP上传文件的方式将敏感信息发送给黑客的FTP服务器的。
4.4使用SMTP协议回传信息
在我们截获的HawkEye Keylogger木马中,很大一部分样本是通过SMTP协议给黑客邮箱发送邮件的方式把获得的敏感数据发送给黑客的。
我们累计发现海德薇(Hedwig)组织至少使用了99个域名和38个独立的IP地址。对应的网站大致可以分为三类,第一类主要是黑客入侵并控制的正常网站,这些网站成为黑客控制肉鸡的跳板;第二类是黑客自行注册的域名;第三类则是一些独立IP的主机。
*作者:启明星辰(企业账号),转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)