2021/04/15
FakeTelegram木马分析报告
攻击流程:
攻击途径
木马的下载链接:
hxxps://iplogger.org/2r64b6
(数据显示该短链接的来源页面为hxxps://telegram.ccmmsl.com/)
浏览器访问下载链接,将被重定向到URL:
hxxps://cdn.discordapp.com/attachments/815911118606172214/818981362928713758/tsetup.exe。
从最后的资源链接可以看出,该木马被托管于Discord CDN服务器。Discord是一款主要面向游戏玩家的流行聊天通讯软件,用户量逐年增加。并且由于向Discord上传的附件可被所有人下载,用户之间的文件分享和传输快速便捷等特点,同样也引起了网络犯罪人员的注意。随之而来的就是大量恶意软件被托管于Discord的CDN服务器以提供给木马远程下载。本次攻击中的木马资源链接就是一个典型案例。
执行攻击
本次攻击中,从链接下载回来的“安装包”使用C#语言进行编写,并通过程序图标伪装成Telegram安装程序的32位文件。为了更好地伪装自身,还盗用了Telegram合法软件签名Telegram FZ-LLC,不过从文件属性中可以看到该签名实际无效。
为了躲避检测,程序中大量敏感字符串进行了Base64编码,运行时才会解码。
执行环境准备
虚假安装包木马会获取本地机器的MAC地址,匹配自身携带的地址库(共含13345个MAC地址),若在列表中则不进行感染。除此之外,程序中还有绕过指定的IP List和地区、恶意代码延迟执行等功能,不过并未启用。
为了避免重复感染,程序通过确认文件 _%LocalAppData%ASUNCB-dcBdklMsBabnDBlU _是否存在来判断当前机器是否已被感染过,若确认已感染便会退出并自我删除,否则便创建该文件并继续执行后续操作。
接着访问网址 hxxps://www.google.com/,确认网络可用,否则持续等待,直至访问响应成功。
为了攻击过程的顺利进行,木马通过修改注册表_EnableBalloonTips、EnableSmartScreen、EnableLUA、ConsentPromptBehaviorAdmin、PromptOnSecureDesktop_等键值的方式禁用SmartScreen和UAC,降低系统的防御能力,让用户对攻击过程无感知。
然后从Telegram官方URL:hxxps://updates.tdesktop.com/tsetup/tsetup.2.6.1.exe下载正常的Telegram安装程序到目录 %LocalAppData% 下,以管理员权限执行合法安装程序,完成安装包原本的工作。
最后,创建两个bat文件 %TEMP%\Action.bat、%TEMP%\Remove.bat,写入batch命令并执行脚本。Action.bat执行后续攻击流程,Remove.bat则完成自我删除。
Powershell脚本下载和启动
脚本文件Action.bat利用powershell执行远程脚本:
hxxp://ppoortu8.beget.tech/new_file.txt
而new_file.txt又作为downloader再次下载其它3个脚本并执行其中的start.vbs。
start.vbs只对ROM容量大于128KB的机器进行感染。如果符合条件,启动%TEMP%\ready.ps1。
ready.ps1将patch自身powershell进程中的amsi.dll模块,以此躲避其对内存中恶意脚本内容的检测。最后执行Get-Content.PS1脚本内容。
后门程序的释放和驻留
Get-Content.ps1作为最后执行的脚本,负责完成后门程序的释放和驻留操作。
首先,脚本判断当前脚本执行环境是否拥有管理员权限,有则执行后续操作,没有则尝试以管理员身份重新执行start.vbs。此外,该脚本还会尝试绕过系统UAC的防护。
成功后绕过防护后,脚本开始准备释放后门dll,涉及到的服务为termservice。先将3个目录加入Windows Defender扫描排除项中,以免目录中的相关文件被清除:
1. C:windowsbranding
2. C:userswgautilaccdesktop
3. C:usersmirrorsdesktop
然后检查服务termservice是否存在,若没有则进行创建,并导入相应的注册表配置(%Temp%\rpds.reg)。termservice服务存在的情况下,Get-Content.ps1会暂时禁用该服务,待后续操作修改配置后再运行。
接下来,会解密并创建以下文件:
- %SystemRoot%brandingmediasrv.png(RDP Wrapper DLL);
- %SystemRoot%brandingmediasvc.png(ServHelper BackDoor DLL);
- %SystemRoot%brandingwupsvc.png(RDP Wrapper配置文件);
-
如果以下合法文件在系统中没有,则进行创建:
- %SystemRoot%system32rdpclip.exe;
- %SystemRoot%system32rfxvmt.dll。
病毒还会对TermService服务相关注册表值进行修改:
1. 设置RDP-Tcp使用端口为7201:
2. 使用上一步释放的dll文件%SystemRoot%brandingmediasrv.png作为termservice的ServiceDll:
3. 禁用WDDM显示驱动模型,使用更老的XDDM
设置TermService启动类型为自动运行。这样服务每次运行都会加载ServiceDll,即%SystemRoot%brandingmediasrv.png,ServiceDll会加载后门,从而实现后门程序在机器上的驻留。
将网络服务SID:S-1-5-20转为用户名NT AuthorityNetwork Service,将其加入管理员组。
最后,将目录%SystemRoot%branding下的所有文件创建、访问、修改时间都改为2014/11/11 12:00:00。启动远程桌面服务rdpdr、TermService。清除 %TEMP% 目录下与本次攻击相关的文件。
后门程序启动
TermService服务启动后,会加载mediasrv.png(ServiceDll)。mediasrv.png实际是一个RDP Wrapper程序,但除此之外,该dll的代码中还多出一个加载恶意dll(%SystemRoot%brandingmediasvc.png)的动作。
总的来说,mediasrv.png主要进行以下三个操作:
1. 导入系统原始RDP相关DLL: termsrv.dll。对外间接提供termsrv.dll原始功能;
2. 利用解密出的RDP Wrapper配置文件(%SystemRoot%\brandingwupsvc.png)实现RDP功能的包装,支持更多功能;
3. 将mediasvc.png作为DLL进行加载,攻击的后续动作由mediasvc.png的dll主函数完成。
被加载的dll: mediasvc.png,是一款名为ServHelper后门木马,于2018年末第一次被发现。该木马使用Delphi语言进行开发,通常以dll形式出现,并使用PECompact进行加壳,以劫持RDP服务的方式完成在受害机器上的驻留。
此次攻击释放的木马文件中大部分敏感字符串均进行了加密,解密密钥为“RSTVWVDJ”。
执行后,ServHelper会连接C2: hxxps://jfuag3.cn/figjair/b.php,根据收到的命令执行相应操作。其共支持32条指令:包括用户创建、文件下载、远控工具配置、键盘记录、会话通道控制等功能。
解密出的字符串,含有各项命令涉及的URL、注册表项、命令行、文件路径等。
下表列出了所支持的命令字符串:
bk | 会话通道创建 |
---|---|
info | 获取机器信息 |
fixrdp | 设置注册表项并重启系统 |
reboot | 重启计算机 |
updateuser | 更新管理员组和远程账户用户名和密码,没有则默认用户为WgaUtilAcc |
deployns | 部署NetSupport远控工具 |
keylogadd | 添加键盘记录器,向管道\.pipetxtpipe写入”add^” |
keylogdel | 删除键盘记录器,向管道\.pipetxtpipe写入”del^” |
keyloglist | 列出键盘记录器,向管道\.pipetxtpipe写入”list” |
keylogreset | 重置键盘记录器,向管道\.pipetxtpipe写入”reset” |
keylogstart | 通过执行模块中导出函数euefnaiw启动keylogger |
sshurl | 下载ssh.zip |
getkeylog | 获取键盘记录(c:windowstemptv.txt) |
getchromepasswords | 获取chrome密码,存储于c:windowstemplogins_read.txt |
getmozillacookies | 获取mozallia Cookies,存储于c:windowstempmoz.txt |
getchromecookies | 获取chrome Cookies,存储于c:windowstempcookies.txt |
search | 查询mozallia和chrome Cookies中的内容 |
bkport | 指定隧道端口 |
hijack | 通过执行模块导出函数gusiezo3劫持用户账户 |
persist | 持久化驻留 |
stophijack | 停止劫持 |
sethijack | 劫持活动用户 |
setcopyurl | 设置复制工具url |
forcekill | 强制终止进程 |
nop | 心跳包 |
Tun | 创建ssh通道,本地端口为7201 |
Slp | 睡眠 |
killtun | 关闭ssh进程 |
shell | 执行cmd命令并回显 |
update | 模块更新 |
load | 从url下载执行文件 |
socks | 创建ssh通道 |
后续更新
在攻击发生后的几天,伪装的安装包文件曾有过一次更新。下载回的文件是基于github开源项目go-clr编写的加载器。运行后会解密除携带的C#木马并使用CLR托管执行。
释放并执行的C#木马内部名称为Droper.exe,仅实现一个功能,释放并执行两个powershell脚本:
1. %TEMP%\get-content.ps1;
2. %TEMP%\ready.ps1;
释放成功后执行ready.ps1。
对比之前的样本,Dropper.exe不再下载合法安装包进行安装,不再将ROM大小作为执行条件,成功执行后无需联网。
0x06 IOCs
MD5
- 675f88e0715be722e6609e4047f2aad7
- de78b574c81eb85652c198e70898a9a0
- 8a4e2ee2fa9195022c3747a363baa092
- 3a9821c769ecbf95d44117a04729f2f2
- b1a2d11ae871805b8fcb2b4820b47e7e
- 37330f50cf392bca59567a22de3b836a
- 7fcaacd9d9ba4695d12e82020d84a95d
- aa5219949ca4ecdcd0d9afe7615124fb
- 6c5b7af9c87ee08c7a7bd43ed7f75d6d
URL
- hxxps://telegram.ccmmsl.com/
- hxxps://iplogger.org/2r64b6
- hxxps://cdn.discordapp.com/attachments/815911118606172214/- 818981362928713758/tsetup.exe
- hxxp://ppoortu8.beget.tech/new_file.txt
- hxxp://ppoortu8.beget.tech/start.vbs
- hxxp://ppoortu8.beget.tech/Get-Content.ps1
- hxxp://ppoortu8.beget.tech/ready.ps1
- hxxp://bromide.xyz/ssh.zip
- hxxp://sdsddgu.xyz/khkhkt
- hxxps://raw.githubusercontent.com/sqlitey/sqlite/master/speed.ps1
- nvursafsfv.xyz
- pgf5ga4g4b.cn
字符串解密脚本
def decbkd(s, k = 'RSTVWVDJ'):
l = len(s)
kl = len(k)
o = ''
for i in range(l):
if s[i].isalpha():
o += chr((ord(s[i].upper()) - ord(k[i%kl].upper()) + 26)%26 + (ord('A') if s[i].isupper() else ord('a')))
else:
o += s[i]return o
参考
https://www.binarydefense.com/an-updated-servhelper-tunnel-variant/
https://www.proofpoint.com/us/threat-insight/post/servhelper-and-flawedgrace-new-malware-introduced-ta505
本文始发于微信公众号(盾山实验室):Hvv近期0day总结四
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论