学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

2万

积分

41

好友

1171

主题
发表于 2020-9-20 08:49:43 | 查看: 13884| 回复: 5
病毒采用了白加黑劫持动态库、远程申请代码执行,内存解密数据dll反射注入的手段进行执行恶意远控代码,技术值得学习与分析。

白文件 Catholic Bishops call for urgent Cameroon peace talks.exe
动态库劫持 wwlib.dll
白文件 AvastProxy.exe
动态库劫持 wsc.dll
加密的数据文件 main.dat

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析
Catholic Bishops call for urgent Cameroon peace talks.exe 白文件
Catholic Bishops call for urgent Cameroon peace talks.exe是微软的office word程序,wwlib.dll利用劫持技术执行恶意行为。IDA打开Catholic Bishops call for urgent Cameroon peace talks.exe,查看导出函数没有找到名为wwiib的模块,搜索字符串找到了获取这个模块的代码位置

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析
wwlib.dll 劫持病毒文件
该dll行为主要是启动迷惑doc文件,然后请求数据块解密到内存执行,然后再此请求病毒文件。

IDA打开wwlib.dll文件,能够找到导出FMain函数,该函数功能为释放资源文件,隐藏doc文档文件,创建进程打开doc文件迷惑使用者看起来为普通的打开文档,放松警惕。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

函数中使用大部分函数都使用的动态加载,GetProcAddress获取函数地址,然后调用函数

使用函数查找资源文件

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

讲dll使用工具打开会看到两个资源文件,分别是doc文档数据以及文件名称

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

释放doc资源后将文件设置为隐藏属性,然后打开doc文件。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

打开doc文档后,程序请求解密字符串网址,请求数据。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

解密出的网址hxxp://103.85.24.158/hk097.dat

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

解析网址请求文件

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

将请求的数据解密到申请的内存空间,然后更改内存块属性,执行代码

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

由于我再写文章的时候已经申请不到了这块代码数据,所以不能将这段行为记录下来了,好在在这之前,我执行了它,这段代码请求了一组文件,我将他们保存了下来,他同样是一组白加黑劫持病毒,分别为AvastProxy.exe、wsc.dll、main.dat,会将他们创建至C:\ProgramData\AvastProxyQUY位置,并设置该文件夹为隐藏属性。
AvastProxy.exe 白文件
AvastProxy.exe是Avast的杀毒软件下的某个程序,同样是被劫持利用加载病毒dll执行恶意代码。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析
wcs.dll劫持病毒文件
该文件主要作用是加载同目录下的main.dat数据文件,进行解密申请内存,加载执行。

在内存中获取当前目录拼接main.dat,读取文件大小,申请内存,读取文件到内存:

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

读到内存后,执行解密,申请文件大小的内存,动态获取VirtualProtect函数继续修改内存属性位可读可写可执行,然后进行调用执行

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

为了查看解密的是什么数据,使用OD加载AvastProxy.exe 文件(同目录下要有dll和dat文件),在VirtualProtect函数下断,回到用户地址,然后他的下一个call就是调用处。这里就是main.dat揭秘出来的数据代码。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析
main.dat数据文件
接下来跳转到的call的位置,就是main.dat解密后的数据,发现代码是4D5A,这应该就是PE文件的头部结构,由于4D5A代表的汇编指令经过下面构造,是仍然可以执行的,这也就是为什么当OEP为0时,程序运行是可行的。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

汇编4D5A下方call ebx,跳转过去是4631d0位置。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

将这段内存dump下来,使用IDA打开, rebase program选项将加载基址对其,发现call ebx的地址是导出函数ApzwTrKM

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析
导出函数ApzwTrKM
这个导入函数实现了DLL反射注入,没有用系统的loadlibrary加载,而是自身解析结构将自己加载起来。

获取当前位置,循环向上查找4D5A标志确定位置,通过PE结构获取一些信息标志信息。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

通过FS[30]结构查找当前进程加载模块:

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

将加载的模块名称简单计算一个类hash值,这个值会跟预先保留好的值进行比较,来获取想要的模块

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

这里预先保留了两个想要的模块名称hash值:
1
2
cmp     [ebp+name_hash], 6A4ABC5Bh ; 6A4ABC5B = Kernel32
cmp     [ebp+name_hash], 3CFA685Dh ; 3CFA685D = ntdll

通过解析模块PE结构找到导出表,同样通过计算hash得方式查找想要的函数

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

要找的函数为
1
2
3
4
5
cmp     [ebp+var_30], 534C0AB8h ;    534C0AB8 = NtFlushInstructionCache
cmp     [ebp+var_30], EC0E4E8Eh ;     EC0E4E8E = LoadLibraryA
cmp     [ebp+var_30], 7C0DFCAAh ;    7C0DFCAA = GetProcAddress
cmp     [ebp+var_30], 91AFCA54h ;    91AFCA54 = VirtualAlloc
cmp     [ebp+var_30], 7946C61Bh ;    7946C61B = VirtualProtect

然后获取函数的地址并调用,申请内存,大小是PE的imagebase字段 + 3C0000大小,为后面加载自身做准备,然后获取各个区段和PE结构信息进行装在自身。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

加载完毕后开始填充IAT表:

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

修复重定位:

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

自实现加载后,修改代码段属性,然后跳转到dllmain进行执行

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

导出函数实现了自身加载自身,完成了系统函数Loadlibrary函数功能,然后跳转到DLLmain执行代码
dllmain主函数
主函数主要功能是创建一个远程连接,管道创建CMD进程实现shell控制,获取计算机一些信息,接受请求的到的的操作码实现各种功能,是一个远控类型的病毒。(样本大部分调用函数都采用了loadlibrary+getprocaddress获取函数地址调用,以及获取函数指针数组调用,所以我们尽量把看到的函数都命名好,方便阅读)

找到主函数,会判断参数数量,没有参数创建启动项、将自身和必要文件拷贝到指定目录,随然后随机参数启动自身并退出。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

当有参数时,会判断一些进程是否存在,并杀死进程、删除文件机注册表,这里使用了改变特权,提高权限,这个病毒使用了两种:
SeDebugPrivilege
描述:通过任意账户请求调试和调整某个进程拥有的内存
攻击情景:特权提升;防护逃逸;凭据窃取
SeTcbPrivilege
描述:表示它的持有者是可信计算机的一部分。一些信任受保护的子系统被授予此特权。
攻击情景:特权提升

如果你想了解更多关于特权方面的知识,推荐阅读这个文章,上面记录了一些有用的特权知识

https://github.com/hatRiot/token-priv/blob/master/abusing_token_eop_1.0.txt

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

紧接会创建cmd shell控制线程,创建消息循环等等,这个线程是实现远控的主要函数:

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

线程中还会创建线程一个thread_Request_file线程,线程功能是请求数据

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

接受请求get_copmputer_info来获取计算机信息、计算机名称、用户名和曾、系统32/64为位等等。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

使用管道绑定创建CMD进程,达到shell管理的目的,管道pipe 用于进程间通讯的一段共享内存。创建管道的进程称为服务器,连接到一个管道的进为管道客户机。

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

控制功能有遍历磁盘文件、操作文件、创建目录、创建进程等等:

远控木马白加黑劫持 dll反射注入分析

远控木马白加黑劫持 dll反射注入分析

样本的主要功能分析完了,样本可以通过发送请求获取目标信息,执行任意下发的文件。
样本使用了白加黑动态库劫持,dll反射内存加载,简单混淆函数等来躲避查杀。

样本已上传密码: infected
sha1
21980f1be5e60fd28e340fec103949d28453a3d4 AvastProxyQUY\AvastProxy.exe
1f0a08cd1c4b6558557ad31337f78153e4b55e0e AvastProxyQUY\wsc.dll
d736f06c8eaef035291db050b356ab38a49f0379 wwlib.dll
70c973c87f3c683b4239c0c38ee426ade5a7ac6f AvastProxyQUY\main.dat
534a7ea9c67bab3e8f2d41977bf43d41dfe951cf Catholic Bishops call for urgent Cameroon peace talks.exe
游客,如果您要查看本帖隐藏内容请回复

温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046

    发表于 2020-9-27 00:32:43
    66666666666666666

      发表于 2020-9-27 02:04:31
      66666666666666666666666666666

        发表于 2021-7-31 09:06:22
        我来看看是什么。

          发表于 2021-11-23 15:30:06
          用心讨论,共获提升!

            发表于 2021-11-28 13:14:10
            好好学习,早日成为大牛

            小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

            GMT+8, 2024-12-22 09:59 , Processed in 0.135371 second(s), 67 queries .

            Powered by Discuz! X3.4

            Copyright © 2001-2021, Tencent Cloud.

            快速回复 返回顶部 返回列表