一、概述
近期,翰海源团队一直在持续关注着一个Botnet的演变,该Botnet从2014年8月末开始活动,一直持续到2014年10月底,截至目前该Botnet仍然存活。同时我们也在金融、IT、政府、银行等行业发现了攻击样本,我们提醒客户请警惕最新的Smoke Loader和Andromeda变种botnet。
Botnet使用钓鱼邮件作为主要的传播途径,邮件大多以“my new photo”或者“New offer Job”为主题,携带一个名为“photo.zip”或者“offer.zip”的压缩附件。
在监控中发现,该Botnet在9月份使用Smoke Loader 作为主要的攻击载荷,在10月份之后,该Botnet开始逐渐转变为Andromeda,这两种不同类型的Botnet具有一些十分相似的特征,但是出现在同一个较大规模的Botnet中,并不是十分常见。
Smoke Loader Botnet在2011开始一些俄语的黑客论坛公开出售,2014年3月份作者在论坛申明该程序将只针对使用“俄语”的客户出售(only for RU-speaking customers),不过在网上已经流传出了部分crack版本。
Andromeda Botnet几乎在同一时间出现,目前最新的官方版本为2.08,最初的Andromeda只针对使用俄语的客户出售,2012年作者开始将旧版本开放给使用英语的客户。
这两种Botnet均通过模块化进行安装,原始的安装程序为一个装载器,安装后将根据需要下载其他功能模块,可以窃取主机上的浏览器、FTP、邮件、即时通信工具的账户和密码,接收控制指令对指定目标发起DDos攻击。
该Botnet从8月末开始出现,9月份大量通过邮件的方式传播,从9月份开始到10月末这段时间内我们在某私有云平台上监控到的Botnet每天的活跃统计就有几百,如下图
该Botnet的控制中心主要分布在一些欧洲国家,其中主要的几个分布在乌克兰和俄罗斯境内。
二、技术细节
2.1 装载器
该Botnet使用的装载器采用微软.Net框架的C#语言编写,代码进行混淆处理,我们发现这种框架具有极好的免杀效果,如下图在9月19号捕获到的样本在VT上检测率为0:
装载器主要负责将一字节数组拷贝到一块可写可读可执行的内存区域,并将代码的控制权转交给这一字节数组:
部分装载器包含以下的pdb路径:
c:\cryptor.server\cryptors\csharp_19_09_2014_20_11_44\outdir_zjNXqqGibngG\NetThree\NetThree\obj\x86\
Release\NetThree.pdb
2.2 注入器
两种Bot均通过多次的注入来执行最终的恶意代码。
2.2.1 Smoke Loader
SmokeLoader装载器成功将控制器交给shellcode后,shellcode会首先通过注册表项:
HKLM\System\CurrentControlSet\Services\Disk\Enum
来判断是否在以下虚拟机环境中:
Virtual、VMware、 QEMU、Xen
我们发现在Andromeda 2.06的版本中也用到了同样的方法来检测虚拟机环境。
如果没有检测出虚拟机环境,则shellcode读取装载器的一段加密数据并在内存中进行解密:
解密后的数据是一个可执行文件,该文件并不会写入到磁盘上,而是通过进程注入的方式来执行。
Smoke Loader会将这段可执行文件注入到Explorer.exe进程中,注入的代码并不是最终要执行的恶意代码,而是另一个注入器,这个注入器会通过 XOR解密另一段代码并将最终的恶意代码注入到 svchost.exe进程中:
2.2.2 Andromeda
整个装载过程中,Andromeda与Smoke Loader几乎完全相同,在注入的过程中有部分不同,下图标注部分是Andromeda中的解密标记:
解密完成后shellcode将重新创建一个挂起的(SUSPEND)自身进程,然后将解密后的代码注入:
与Smoke Loader一样,到这里只是完成了第一次注入,接下来注入代码会根据当前系统的版本为32或者64位来选择注入svchost.exe或msiexec.exe。
以注入msiexec.exe为例,注入代码之前会首先创建一个挂起的msiexec.exe进程,通过文件读取msiexec.exe可执行文件到内存中,然后通过ZwUnMapViewOfSection卸载整个进程空间的数据,修改原始文件中的入口地址为恶意代码的地址,通过ZwMapViewOfSection来将代码注入到新创建的SUSPEND进程并调用ResumeThread重新启动进程。
Smoke Loader和Andromeda均会创建一个守护进程来检测指定路径下的可执行程序运行状态,一旦发现被终止会立即重启主模块。
2.3 对抗
2.3.1 代码混淆
除了在装载器的C#代码中进行过变量和函数名的混淆外,这两种Botnet在shellcode的执行过程中均使用同一种函数名校验和的方法来执行系统函数。
2.3.2 Anti-VM
除了前面提到的Smoke Loader通过注册表来当前运行的环境之外,Andromeda会遍历系统当前进程并计算进程名的CRC32的HASH,然后检查是否存在包含vmtoolsd.exe、vmwareuser.exe、regmon.exe、filemon.exe、VBoxService.exe 、VBoxTray.exe、WireShark.exe、procexp.exe 等18个进程的HASH。
2.3.3 Anti-API Hook
除了前面的几种,Andromeda中的shellcode将所有需要的API函数的第一条指令保存在自己的代码区,然后通过两次跳转来调用API,这种方法并没有在Smoke Loader中使用。
#p#
2.4 网络通信
2.4.1 Smoke Loader
Smoke使用计算机名的CRC32和磁盘序号的异或作为每台主机的标识和互斥体名,首次运行连接C&C的网络数据包如下:
其中POST数据内容经过加密,解密后的数据格式如下:
cmd=getload&login=[MutexName]&sel=cool1&ver=5.1&bits=0&admin=1&hash=[MutexName]
cmd:command
login:主机的唯一标识符
sel:botid
ver:版本号
bits:系统版本标识,32或者64位
admin:当前程序运行用户是否为管理员
hash:主机的唯一标识符
返回页面伪装成一个404页面并携带一段加密的数据,这段数据经过Xor编码,编码的Key为附加数据的第一个字节:
解码后的内容如下:
Smk0|:|socks_rules=127.0.0.1|:||:hosts_rules=127.0.0.1 localhost|:||:|:plugin_size=60500
当返回的HTTP包中的vary字段包含 0-AAAAA时代表Smoker Loader的模块,模块通过HTTP传输并且没有任何的加密和编码。
完整的Smoke Loader Botnet的模块如下:
2.4.2 Andromeda
Andromeda Botnet的模块通过RC4进行加密并带有一个伪装的PK头。
首次运行后发送到控制服务器的数据包如下:
POST的数据内容经过RC4加密并用Base64进行了编码,RC4加密的key硬编码在样本中,本次的RC4 Key为“754037e7be8f61cbb1b85ab46c7da77d”
解密后的POST数据如下:
id:%lu|bid:%lu|os:%lu|la:%lu|rg:%lu
id: 根据系统磁盘信息生成的一个标识
bid:botnet的build id
os:操作系统的版本信息,32位或64位
la: 本地ip地址的十进制表示形式
rg:进程是否在管理员权限下运行
#p#
2.5 功能
下图是该Smoke Loader Botnet的控制台界面:
Smoke Bot可以通过模块对指定的目标地址发起DDos,模块支持以下类型的DDos攻击:
HTTP GET Flood、HTTP POST Flood 、Download Flood、 UDP Flood、SYN Flood 、TCP Flood、HTTPS GET Flood、 HTTP Slowloris Flood
可以嗅探包括以下类型的FTP及浏览器保存帐号信息:
FTP, BitKinex, BulletProof FTP Client, Classic FTP, CoffeeCup FTP, Core FTP, CuteFTP, Directory Opus, ExpanDrive, FAR Manager FTP, FFFTP, FileZilla, FlashFXP, Fling, FreeFTP/DirectFTP, Frigate3 FTP, FTP Commander, FTP Control, FTP Explorer, FTP Navigator, FTP Uploader, FTPRush, LeapFTP, NetDrive, SecureFX, SmartFTP, SoftX FTP Client, TurboFTP, UltraFXP, WebDrive, WebSitePublisher, Windows/Total Commander, WinSCP, WS_FTP
Apple Safari, Flock, Google Chrome, Internet Explorer, Mozilla Browser, Mozilla Firefox, Mozilla Thunderbird, Opera, SeaMonkey
SomkeLoader会在受感染主机上查找保存的邮件地址,并将找到的邮件地址经过Base64编码后发送给控制中心。
Andromeda的功能与SmokeLoader近乎相同,下图是Andromeda Bot的Builder界面。
2.8 文件B超行为分析图
来张文件B超的高清无码图:
三 、安全排查
1.检查系统注册表项:
HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
中是否存在指向名为svchost.exe的启动项。
2. 检查系统临时目录是否存在名为***.tmp.exe的文件。
3. 检查系统AppData目录是否存在未知的可执行文件。
4. 检查系统中是否存在以上列举MD5的文件。
5. 检查网络流量中是否存在上述列举的C&C请求。
四、结论
不管在功能还是对抗的过程上,Smoke Loader和Andromeda都具有极为相似的特征,而随着僵尸网络市场越来越复杂的利益链条关系,僵尸网络之间的关系也变得错综复杂,曾经就出现过垃圾邮件僵尸网络Cutwail和Zeus僵尸网络之间发起相互攻击的例子,而现在我们已经看到Smoke Loader Botnet和Andromeda Botnet正在联合,这样的例子以后可能还会更多。