天融信阿尔法实验室 陈峰峰
0×00 概述
这是@neteagle捕获的一个样本,好奇索要过来看看,简单分析了一下;这是一个带感染功能的后门程序。由于其传播名称eraseme_%d%d%d%d%d.exe,所以我们称之为Eraseme后门。这是我第一份分析报告,感谢hj大侠和段哥的指导。分析中如有不对的地方也望各位指出。
样本主要包含三个程序:
PE程序(PE0):外壳程序,主要负责释放PE1
PE程序(PE1):核心程序,负责感染、控制,使用UPX减小体积,释放SYS1
驱动程序(SYS1):修改系统TCPIP并发最大连接数
0×01 程序运行流程
- PE0程序运行流程(eraseme_51587.exe)
1.检查环境是否是处于正常环境中,如果存在文件监视、进程监视、wireshark程序正在运行,或者运行在wmware或Sandboxie沙箱环境中,则直接退出;(ps:其中还检查当前用户是否为currentuser,猜测可能是某个沙箱环境会使用currentuser用户名登录,有知道的朋友帮忙告知一下)
检查是否在VMWare中
检测Sandboxie
找是否执行了wireshark、procomon、file monitor、registry monitor
2.在正常环境下,解密自身资源,获得PE1,注入新创建的进程中执行;
3.清理文件 Open C:\Windows\system32\cmd.exe /c del C:\eraseme_51587.exe >nul
4.退出
- PE1程序运行流程
- 获取操作体系统版本;
- 检查计算机用户名是否包含‘snadbox’,‘vm’这种字段。如果存在就退出;
- 获取当前模块名称写入注册表项HKLM\SOFTWARE\Microsoft\windows\currentVersion\run,实现开机自启动;
- 判断系统目录下是否已经存在文件winrsc.exe,不存在的话,就将PE0复制到系统目录更名为winrsc.exe(Xp下复制自身到c:\windows\system目录下,Win7放到%APPDATA%\Microsoft\windows\Start Menu\programs\startup\目录下)
- 存在的话就会创建一个线程执行后门主要功能:
1) 创建exe文件执行互斥
2) 通过ZwSystemDebugControl,隐藏当前进程(XP有效),创建一个线程释放SYS文件到C:\windows\system32\drivers\sysdrv32.sys,加载驱动并运行。
3) 创建一个线程伪装Web服务器,随机生成一个端口(1120~64535),并进行监听,并且收到’GET ‘字符开头的数据时。就会向该连接发送自身二进制数据;
4) 与C&C服务器mail.vspcord.com,555端口建立TCP连接,连接成功后发送机器相关信息,等待接收命令,根据指令发送相关信息
5) 创建一个线程,遍历搜索内网,查找内网所有开放139、445端口的主机。并对这些主机进行IPC$暴力破解(自带一个简单的字典,同时可以通过远程控制下发新的字典数据),破解程序将其复制到远程主机上,重命名为Eraseme_%d%d%d%d%d.exe(%d为1-9的随机数),并创建服务执行或者使用计划任务执行,并向C&C服务器发送
”PRIVMSG #xploit :[ntpass(NetAddJob)] \\192.168.231.128 $passwd$:$username$ [$share]”
“PRIVMSG #xploit :[ntpass(Service)] \\192.168.231.128 $passwd$:$username$ [$share]“;。
6) 创建一个U盘监视的线程,当有U盘存在的时候,会拷贝自身到U盘根目录下生成win.com文件。并且在根目录写入autorun.inf文件来自动执行该文件。
提权
实现进程隐藏
检查活动的用户名是否包含CurrentUser、sandbox、vmware等字段
复制自身到系统目录
XP下复制到c:\windows\system\
Win7复制到%APPDATA%\Microsoft\windows\Start Menu\programs\start up\
1.释放sysdrv32.sys,修改系统TCPIP最大并发连接数,默认为252
2.监听自身ip下随机的一个端口,等有连接发送来”GET ”数据时候,先发送HTTP/1.0 200 OK..Server: private…..
再把自身二进制数据发送过去
3.向mail.vspcord.com服务器发送机器相关信息,并等待服务器返回数据,根据数据执行相关命令
发送机器相关信息
接受并执行服务器发送的指令和代码
4.遍历局域网下开放445和139端口的主机,然后通过ipc$将自身文件传播到局域网主机中
遍历内置用户名以及密码表,成功连上之后通过ipc$进行局域网传播
5.远程启动
通过创建服务启动
向C&C服务器发送“PRIVMSG #xploit :[ntpass(Service)] \\192.168.231.128 $passwd$:$username$ [$share]“;
通过计划任务启动,向C&C服务器发送”PRIVMSG #xploit :[ntpass(NetAddJob)] \\192.168.231.128 $passwd$:$username$ [$share]”
6.有移动磁盘的时候,会复制自身到该移动磁盘根目录win.com,并且写入autorun.inf文件,插入系统直接执行样本
0×02 总结
经过分析,可以看出,其加入了很多虚拟机、沙箱的检查,能够逃避部分APT检测工具检测,但其躲避方法比较普通;代码中针对XP的功能较多,以及通过NetBios暴力猜测方式传播,猜测应该是一个早期的样本。