一PE感染型木马行为分析、清理及感染文件修复

阅读量    31834 | 评论 5   稿费 300

分享到: QQ空间 新浪微博 微信 QQ facebook twitter

本文分析一个PE感染木马病毒行为, 澄清基本功能和加载方式,并给出受损文件修复方案。 该木马病毒通过感染系统原有PE和移动介质驻留系统进行复制传播,窃取文件。

 

前言

前不久一入行不久的朋友种了木马病毒,自己分析了启动方式和病毒本体,清除了病毒本体和其启动项,以为打完收工,可诡异的 iexplore.exe 进程杀了又起周而复始,随求助我来看看,初步查看行为,怀疑是早年灰鸽子常用的进程替换,创建一个挂起状态(SUSPEND)的进程, 填充恶意代码,设置主线程的上下文,启动主线程,自身退出。都是老套路找出本体干掉相关启动项即可解决问题,随着分析深入发现此木马病毒手法虽老,强在巧妙集成,环环相扣,功能较多,应为团队所为,详细跟进了下,随有此文记录下分析过程。

 

一 基本行为分析

OD加载,典型UPX入口

查段确认UPX,

懒的手脱,下载UPX顺利脱掉。

OD继续,步过初始化和花指令,申请内存空间,解密关键代码拷贝到新空间,push 首地址,ret 返回执行,

CreateProcess 创建进程,挂起。

分步申请内存,置零后将数据解密后拷贝

跨进程分步拷贝数据到新进程内存中,拷贝1

拷贝2,其余略过…

ResumeThread 线程,在新进程写入内存下断点。

新进程断在最后一次写的跳转代码处,

新进程进行必要的初始化拷贝自身到启动目录后先后创建4个线程,分别完成不同的功能

断下4个线程逐个分析各线程功能分别为
1 模拟浏览器伪装http流量访问 google.com、bing.com、yahoo.com
2 遍历盘符,判断磁盘类型,进行相应操作
3 连接特定域名进行木马数据交互
4 创建ftp服务器将本机所有磁盘设为ftp服务目录
以下是对四个线程的简要分析

1 模拟正常流量

设定 User-agent 伪装浏览器流量访问网站,略过。

2 遍历盘符,判断磁盘类型

如为移动介质写 autorun.inf 及相关传染组件
调用 GetLogicalDriveString 获取磁盘列表,GetDriveType获取磁盘类型

获取磁盘剩余空间后写入 autorun.inf 及相关组件

可移动介质内写入如下文件

.cpl文件为控制面板项,实为PE文件,OD加载起来…
CreateProcess 创建进程传染…

3 连接特定域名

supnewdmn.com 指向ip为 82.112.184.197,归属地俄罗斯
tvrstrynyvwstrtve.com
rtvwerjyuver.com
wqerveybrstyhcerveantbe.com

就supnewdmn.com进行简要分析,其指向Ip为 82.112.184.197,归属俄罗斯
supnewdmn.com指向ip及下载恶意文件记录

82.112.184.197 对应域名及相关域名解析记录..

线程4: FTP服务

木马病毒伪装流量访问大站、移动介质写autorun.inf传染、木马域名回连常见,明目张胆开21端口ftp服务的还比较少见。
获取ftp指令后在标准 ftp指令序列内对比指令是否合法,

ftp用户名口令是明文,找起来比较简单,用户名密码均为:supnewdmn , explorer.exe 访问 ftp://127.0.0.1 所有磁盘皆可访问。

 

二 启动加载方式

经观察分析,ie并不是杀掉进程后立即启动,而是不定期起来,用Procmon观察,与用户行为有关系,具体到木马中分析,除了写启动目录外,木马调用OpenProcessToken、LookupPrivilegeValue、AdjustTokenPrivileges提升自身权限后,获取进程列表,对相应模块PE进行写操作,对进程需要加载模块添加段。
例如 Acunetix、Wireshark、WinHex、FileZilla 加载的dll zlib.dll

OD的 loaddll.exe

当宿主进程加载该模块时,释放命名为“原进程名+mgr.exe” 的PE文件并执行。

mgr.exe ,最近打开的几个进程都已有模块被感染。

按照添加段的二进制代码特征搜索C盘内 .exe *.dll 文件,已感染485个.

 

三 清除

病毒遍历系统所有进程模块,修改PE文件增加段将恶意代码存储在新段中。其修改PE文件以下位置,

struct IMAGE_FILE_HEADER FileHeader
WORD NumberOfSections //段数量加1
struct IMAGE_OPTIONAL_HEADER32 OptionalHeader
DWORD AddressOfEntryPoint //入口点指向新节内
DWORD SizeOfImage //映像大小
DWORD CheckSum //校验和

以上4项,NumberOfSections、SizeOfImage、CheckSum好处理,清除恶意节后计算相应结果修改即可,新入口地址指向新段,在执行完恶意代码后会返回原入口点,通常会存在新段内,跟踪验证。

如上图所示新旧入口地址偏移存储在新加段结尾位置,同时存储了宿主进程的全路径供释放时使用。
以上几个位置,写个简单的python程序就可恢复,恢复完数据记得恢复原文件时间。

 

四 总结

与时下的无文件木马相比,传统木马病毒因有文件驻留,更注意自身加壳、加密、PE感染驻留,Dll劫持、白加黑等方法的运用,只要细心分析澄清不难。澄清机理彻底清除,只是攻击追踪溯源的第一步,后续还有大量的工作需要做……

鉴于头发不多了,今天就先到这吧…

分享到: QQ空间 新浪微博 微信 QQ facebook twitter
|推荐阅读
|发表评论
|评论列表
加载更多