FakeTelegram木马分析报告

 

概述

今年3月份,360安全大脑反病毒团队发现了一起伪装成Telegram通讯软件安装包进行的攻击。“安装包”执行后,会下载合法的Telegram安装包进行安装,以掩盖暗中的恶意行为,通过RDP服务实现驻留。

攻击流程图如下:

攻击途径

木马的下载链接:

hxxps://iplogger.org/2r64b6

(数据显示该短链接的来源页面为hxxps://telegram.ccmmsl.com/

浏览器访问下载链接,将被重定向到URL

hxxps://cdn.discordapp.com/attachments/815911118606172214/818981362928713758/tsetup.exe

从最后的资源链接可以看出,该木马被托管于Discord CDN服务器。Discord是一款主要面向游戏玩家的流行聊天通讯软件,用户量逐年增加。并且由于向Discord上传的附件可被所有人下载,用户之间的文件分享和传输快速便捷等特点,同样也引起了网络犯罪人员的注意。随之而来的就是大量恶意软件被托管于DiscordCDN服务器以提供给木马远程下载。本次攻击中的木马资源链接就是一个典型案例。

 

执行攻击

本次攻击中,从链接下载回来的“安装包”使用C#语言进行编写,并通过程序图标伪装成Telegram安装程序的32位文件。为了更好地伪装自身,还盗用了Telegram合法软件签名Telegram FZ-LLC,不过从文件属性中可以看到该签名实际无效。

为了躲避检测,程序中大量敏感字符串进行了Base64编码,运行时才会解码。

执行环境准备

虚假安装包木马会获取本地机器的MAC地址,匹配自身携带的地址库(共含13345MAC地址),若在列表中则不进行感染。除此之外,程序中还有绕过指定的IP List和地区、恶意代码延迟执行等功能,不过并未启用。

为了避免重复感染,程序通过确认文件 %LocalAppData%\ASUNCB-dcBdklMsBabnDBlU 是否存在来判断当前机器是否已被感染过,若确认已感染便会退出并自我删除,否则便创建该文件并继续执行后续操作。

接着访问网址 hxxps://www.google.com/,确认网络可用,否则持续等待,直至访问响应成功。

为了攻击过程的顺利进行,木马通过修改注册表EnableBalloonTipsEnableSmartScreenEnableLUAConsentPromptBehaviorAdminPromptOnSecureDesktop等键值的方式禁用SmartScreenUAC,降低系统的防御能力,让用户对攻击过程无感知。

然后从Telegram官方URLhxxps://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.ps1patch自身powershell进程中的amsi.dll模块,以此躲避其对内存中恶意脚本内容的检测。最后执行Get-Content.PS1脚本内容。

后门程序的释放和驻留

Get-Content.ps1作为最后执行的脚本,负责完成后门程序的释放和驻留操作。

首先,脚本判断当前脚本执行环境是否拥有管理员权限,有则执行后续操作,没有则尝试以管理员身份重新执行start.vbs。此外,该脚本还会尝试绕过系统UAC的防护。

成功后绕过防护后,脚本开始准备释放后门dll,涉及到的服务为termservice。先将3个目录加入Windows Defender扫描排除项中,以免目录中的相关文件被清除:

(1)       C:\windows\branding\

(2)       C:\users\wgautilacc\desktop\

(3)       C:\users\mirrors\desktop\

然后检查服务termservice是否存在,若没有则进行创建,并导入相应的注册表配置(%Temp%\\rpds.reg)。termservice服务存在的情况下,Get-Content.ps1会暂时禁用该服务,待后续操作修改配置后再运行。

接下来,会解密并创建以下文件:

%SystemRoot%\branding\mediasrv.pngRDP Wrapper DLL);

%SystemRoot%\branding\mediasvc.pngServHelper BackDoor DLL);

%SystemRoot%\branding\wupsvc.pngRDP Wrapper配置文件);

如果以下合法文件在系统中没有,则进行创建:

%SystemRoot%\system32\rdpclip.exe

%SystemRoot%\system32\rfxvmt.dll

病毒还会对TermService服务相关注册表值进行修改:

(1)       设置RDP-Tcp使用端口为7201

(2)       使用上一步释放的dll文件%SystemRoot%\branding\mediasrv.png作为termserviceServiceDll

(3)       禁用WDDM显示驱动模型,使用更老的XDDM

设置TermService启动类型为自动运行。这样服务每次运行都会加载ServiceDll,即%SystemRoot%\branding\mediasrv.pngServiceDll会加载后门,从而实现后门程序在机器上的驻留。

将网络服务SID:S-1-5-20转为用户名NT Authority\Network Service,将其加入管理员组。

最后,将目录%SystemRoot%\branding\下的所有文件创建、访问、修改时间都改为2014/11/11 12:00:00。启动远程桌面服务rdpdrTermService。清除 %TEMP% 目录下与本次攻击相关的文件。

 

后门程序启动

TermService服务启动后,会加载mediasrv.pngServiceDll)。mediasrv.png实际是一个RDP Wrapper程序,但除此之外,该dll的代码中还多出一个加载恶意dll%SystemRoot%\branding\mediasvc.png)的动作。

总的来说,mediasrv.png主要进行以下三个操作:

(1)       导入系统原始RDP相关DLL: termsrv.dll。对外间接提供termsrv.dll原始功能;

(2)       利用解密出的RDP Wrapper配置文件(%SystemRoot%\\branding\wupsvc.png)实现RDP功能的包装,支持更多功能;

(3)       mediasvc.png作为DLL进行加载,攻击的后续动作由mediasvc.pngdll主函数完成。

被加载的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

添加键盘记录器,向管道\\.\pipe\txtpipe写入”add^”

keylogdel

删除键盘记录器,向管道\\.\pipe\txtpipe写入”del^”

keyloglist

列出键盘记录器,向管道\\.\pipe\txtpipe写入”list”

keylogreset

重置键盘记录器,向管道\\.\pipe\txtpipe写入”reset”

keylogstart

通过执行模块中导出函数euefnaiw启动keylogger

sshurl

下载ssh.zip

getkeylog

获取键盘记录(c:\windows\temp\tv.txt

getchromepasswords

获取chrome密码,存储于c:\windows\temp\logins_read.txt

getmozillacookies

获取mozallia Cookies,存储于c:\windows\temp\moz.txt

getchromecookies

获取chrome Cookies,存储于c:\windows\temp\cookies.txt

search

查询mozalliachrome 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大小作为执行条件,成功执行后无需联网。

 

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

(完)