吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9306|回复: 61

[PC样本分析] 一份通过IPC$和lpk.dll感染方式的病毒分析报告

  [复制链接]
发表于 2017-5-19 17:36 | 显示全部楼层
本帖最后由 lipss 于 2017-5-19 20:11 编辑



样本来自52pojie论坛,从事过两年渗透开始学病毒分析后看到IPC$真是再熟悉不过。

1
样本概况


1.1 样本信息
病毒名称:3601.exe
MD5值:96043b8dcc7a977b16a2892c4b38d87f

病毒行为:
自删除,感染压缩包(zip、rar)、释放lpk.dll文件

1.2 测试环境及工具
操作系统:win7 32位
操作工具火绒剑、OD、IDA、MD5工具


1.3 分析目标
分析此病毒的恶意行为和生成相关文件。


2.具体行为分析


2.1 主要行为

病毒首先使用RegOpenKeyExW函数读取注册表中【HKEY_LOCAL_MACHINE\system\\CurrentControlset\\services\\Ghijkl Nopqrstu Wxy】
个键项如果键项不存在,则创建病毒的系统服务,流程图大体如下:

1.png

有【Ghijkl Nopqrstu Wxy】这个键项的时候,病毒的行为流程图如下:

2.png


如果键项存在则进入一个创建服务的函数,做了以下4个步骤:


1、检查互斥体,防止多开;



2、释放、加载资源文件C:\windows\system32\hra33.dll;


3、开启四个线程(IPC$破解、收集主机操作系统与网络信息、CPU字符串和主频率描述)其中线程A是用于IPC$密码破解,感染同局域网内其他主机。线程B、线程C、线程D功能一致,连接的域名不一样。


感染模块操作


3.png


2.1.1 恶意程序对用户造成的危害(图)

在rar、zip、exe中释放一个lpk.dll的文件,运行exe后加载病毒程序
1.png
图1感染压缩包

2.png

图2 有exe的目录下释放lpk.dll


2.1.2 恶意程序在系统中生成的文件
(1)权限相关()
1.创建服务


3.png

图3 创建的服务名



2.生成文件
4.png
图4 生成的病毒exe

5.png

图5 生成的病毒DLL

3.创建注册表
6.png

图6 注册表所增加的注册表键值


(2)服务/广播
  连接域名
  1
  
sbcq.f3322.org
  2  www.520123.xyz
  3
  (加密)www.520520520.org:9426



2.2 恶意代码分析

2.2.1 加固后的恶意代码树结构图


1.使用PEID检查出病毒程序采用upx壳压缩

7.png

图7 PEID查壳为upx

2.连接域名使用base64加密
8.png

图8 连接域名为base64加密



2.2.2 恶意程序的代码分析片段

病毒首先使用RegOpenKeyExW函数读取注册表中有没有【HKEY_LOCAL_MACHINE\system\\CurrentControlset\\services\\ GhijklNopqrstu Wxy】这个键项;
9.png
图9 判断键项-OD反汇编代码注释

如果没有这个键项的时候则进入一个创建服务的函数,做了以下4个步骤:


1、复制自身到C:\\windows;


2、将【C:\\windows\\随机文件名.exe】注册服务;


3、创建注册表键项;


4、删除自身处理;获取当前exe运行路径随机生成一个随机文件名,复制自身到C:\\windows目录下,如:"C:\Windows\jkfukc.exe",代码片段如下:

10.png

图10 IDA-复制自身到C:\\windows

11

11


图11 OD反汇编-堆栈窗口-随机生成文件名


将生成的文件作为系统服务对象创建,系统服务名为【GhijklmnPqrstuvwx Abcdefg Ijklmnop Rst】,代码片段如下:

12

12


图12 IDA伪C代码-创建系统服务


检查病毒是否已经在机器上运行过,创建注册表键项:【HKEY_LOCAL_MACHINE\system\\CurrentControlset\\services\\GhijklNopqrstu Wxy】
13.png

图13 IDA伪C代码-创建注册表键项




病毒运行后会做删除自身的处理,首先获取当前进程路径、文件短路径、CMD.exe路径。用shellexecute()函数删除自身。然后设置进程的执行级别使自身有足够的时间从内存中退出。

14.png
图14 IDA伪C代码-删除自身


如果键项存在则进入一个创建服务的函数,做了以下步骤:
1、检查互斥体,防止多开;
2、释放、加载资源文件C:\windows\system32\hra33.dll;
3、开启三个线程(IPC$破解、收集主机操作系统与网络信息、CPU字符串和主频率描述) 检查互斥体Ghijkl Nopqrstu Wxy是否存在,如果已经存在时退出程序;183对应着宏定义ERROR_ALREADY_EXISTX。然后释放自定义资源,将自定义资源命名为hra33.dll。
15.png
图15 检查互斥体与释放自定义资源


释放自定义资源文件hra33.dll 到C:\windows\system32\hra33.dll,改写文件的PE头,让其成为PE文件。代码片段如下:
16.png
图16 释放自定义资源,改写PE头为MZ


创建了四个线程,分别命名为线程A、线程B、线程C、线程D。代码片段如下:

17.png
图17 创建四个线程

线程A通过IPC$共享用内置的弱口令字典破解感染同局域网内其他主机。将自身复制到其他主机的共享后,使用at(定制计划任务)的方式执行。

18

18

图18 IPC$破解

线程B、线程C、线程D功能大体一致,连接的域名不一样。获取操作系统版本号、 CPU字符串和主频描述、内存、网络流量信息创建套接字发送给控制端,然后等待接收控制端发过来的指令,执行相关的操作。
  主要功能  
  1)连接域名  
  2)获取操作系统版本号、 CPU字符串和主频描述  
  3)实现功能-(下载文件、更新服务端、打开网页)  


线程B 进入回调函数后,首先进入连接域名函数,创建网络套接字后所连接的域名为:sbcq.f3322.org,代码片段如下:
19.png
图19 IDA伪c代码-创建网络套接字连接sbcq.f3322.org


当连接域名成功,代码向下执行会调用搜集操作系统信息的函数,加载hra33.dll。
20.png
图20 OD反汇编代码-调用搜集操作系统信息函数



使用GetVersionExA()函数获取操作系统版本号、 CPU字符串和主频描述的代码片段如下:
21.png
图21 IDA伪C代码-获取操作系统版本号


22.png
图22 IDA伪C代码-获取CPU字符串和主频描述


利用Send()函数发送消息通知控制端已经加载hra33.dll成功,代码片段如下:
23.png
图23 IDA伪C代码-加载hra33.dll后发送0XB0给控制端


根据控制端传送过来的命令执行相关的操作。定义了URLDownloadToFileA()、winexec()函数,会下载指定url的文件保存到本地中。实现了下载自定义文件的功能。代码片段如下:
24.png
图24 定义UrlDownloadToFileA函数


当接收的参数大于6个字节时,接收到的值等于0x10,从接收到的URL地址处下载文件保存到本地的临时目录,文件名由GetTickCount()函数随机生成,代码片段如下:
25.png
25 接收命令执行下载文件




接收到的值等于0x12时候,创建互斥体【Ghijkl Nopqrstu Wxy】,随机生成文件名。把控制端发送过来的url地址下载保持成本地文件,关闭病毒创建的名称为【Ghijkl Nopqrstu Wxy】服务,删除注册表【HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Ghijkl Nopqrstu Wxy 】键项,删除病毒进程的文件自身。将新的文件重新注册成为系统服务。初步判断这是一个更新自身服务端的功能。代码片段如下:


26.png
图26 下载新的病毒文件  

27.png

图 27 删除原有的服务和注册表

接收到0x14的命令时调用ShellExecute函数将控制端发送过来的控制数据作为IE程序的指定启动参数,打开iexplore.exe进程。


28.png

图28 IDA伪C代码-自带IE打开网页

其他参数还接收了0x2、0x3、0x4、0x5,其中0x2/0x4/0x5未发现有实质的操作,接收到0x3的控制指令后,线程的作用是利用文件路径C:\WINDOWS\system32\ProgramFiles\Internet Explorer\iexplore.exe下的iexplore.exe程序向网址发送GET形式的Http数据请求包。代码片段如下:
29.png
图29 接收命令参数


30.png
图30 发送GET形式的Http数据请求包

线程C的功能与线程B大体一致,连接的域名为:
31.png
图31 连接域名www.520123.xyz

线程D的连接域名使用了加密函数。
32.png
图32 IDA伪C代码-线程D加密函数


在OD载入后动态执行时结果被解密出来。
33.png
图33 OD反汇编代码-连接域名www.520520520.org:9426


Hra33.dll功能是通过加载lpk.dll对其他exe和压缩包进行感染。代码片段如下:


34.png
图34 hra33.dll入口点函数




遍历文件目录,如果找到.exe的目录就把lpk.dll放到该目录下。代码片段如下:
35.png
图35 感染函数


感染zip/rar的方式主要还是利用winrar.rar的rar.exe(命令行工具),首先搜索压缩包内有没有lpk.dll这个文件,然后如果有.exe,就将压缩包重新解压添加lpk.dll文件再压缩。代码片段如下:
36.png
图36 感染压缩文件

3.解决方案


3.1 提取病毒的特征,利用杀毒软件查杀


【Ghijkl Nopqrstu Wxy】对应hex 【4768696A6B6C204E6F70717273747520577879】


3.2 手工查杀步骤或是工具查杀步骤或是查杀思路等。
1、停止【Ghijkl Nopqrstu Wxy】名称的服务

2、删除【Ghijkl Nopqrstu Wxy】键项的注册表

3、删除【C:\windows\system32\hra33.dll】文件

4、清空除了C:\windows\system32\lpk.dll外,所有zip、rar、exe下的lpk.dll文件



黑客交流通常用IDA就够了。。
这是IDA的分析文件和OD注释文件,还有提取出来的hra33.dll
3601_unpack_(52pojie).rar (273.03 KB, 下载次数: 31)

免费评分

参与人数 37吾爱币 +39 热心值 +36 收起 理由
keats + 1 + 1 厉害了!!
ling5597832 + 1 + 1 谢谢@Thanks!
kesshei + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
yuxing818 + 1 + 1 热心回复!
distionsos + 1 + 1 谢谢@Thanks!
没事时看看 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
青莲剑哥 + 1 + 1 用心讨论,共获提升!
水孩子 + 1 + 1 谢谢@Thanks!
SomnusXZY + 1 + 1 热心回复!
IDKK + 1 + 1 我很赞同!
wangqlong + 1 + 1 我很赞同!
egaokiss + 1 + 1 我很赞同!
venus + 1 原理一样,好像新变种,以前不感染ZIP的,服务是建在system32目录下的
xnzhan + 1 + 1 谢谢@Thanks!
QWERTYUIOP[] + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
xyuetao + 1 + 1 用心讨论,共获提升!
常乐 + 1 + 1 希望大神搞个防御工具。
soyiC + 2 + 1 用心讨论,共获提升!
文可う润心 + 1 + 1 谢谢@Thanks!
hhntv418 + 1 谢谢@Thanks!
01234 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
夜猫腻 + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
niufq + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
海底总动员 + 1 我很赞同!
smile1110 + 1 我很赞同!
gunxsword + 1 + 1 谢谢@Thanks!
ironmanxxl + 1 + 1 我很赞同!
howsk + 1 + 1 热心回复!
cunzher + 3 + 1 感谢楼主发布精彩主题!用心讨论,共获提升!
美熙范 + 1 + 1 用心讨论,共获提升!
Kasugano + 1 + 1 用心讨论,共获提升!
众益科技 + 2 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
BY丶显示 + 2 + 1 谢谢@Thanks!
笑颜一如从前Q + 1 + 1 用心讨论,共获提升!
1697817057 + 1 + 1 现在都玩445了 谁还玩135
菜鸟也想飞 + 1 + 1 谢谢@Thanks!
qmopl + 1 + 1 已答复!

查看全部评分

本帖被以下淘专辑推荐:

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-5-25 18:34 | 显示全部楼层
这里提一个小建议
其实你利用病毒名称“Ghijkl Nopqrstu Wxy”作为你的特征,通用性比较低,因为病毒只要改个名字,那么你的这条特征就检测不到了,因此利用病毒名称作为特征,也仅仅是比利用哈希值作为特征要稍微强一些。
你可以考虑利用病毒代码中比较有特色的代码作为特征,举例来说,比如
.00403651: C645F84F                       mov         b,[ebp][-8],04F ;'O'
.00403655: C645F970                       mov         b,[ebp][-7],070 ;'p'
.00403659: C645FA65                       mov         b,[ebp][-6],065 ;'e'
.0040365D: C645FB6E                       mov         b,[ebp][-5],06E ;'n'
或者
.00403899: C645A457                       mov         b,[ebp][-05C],057 ;'W'
.0040389D: C645A572                       mov         b,[ebp][-05B],072 ;'r'
.004038A1: C645A669                       mov         b,[ebp][-05A],069 ;'i'
.004038A5: C645A774                       mov         b,[ebp][-059],074 ;'t'
.004038A9: C645A865                       mov         b,[ebp][-058],065 ;'e'
.004038AD: C645A946                       mov         b,[ebp][-057],046 ;'F'
.004038B1: C645AA69                       mov         b,[ebp][-056],069 ;'i'
.004038B5: C645AB6C                       mov         b,[ebp][-055],06C ;'l'
.004038B9: C645AC65                       mov         b,[ebp][-054],065 ;'e'
你可以把第一段代码中的“C645F84FC645F970C645FA65C645FB6E”作为你的特征,考虑到通用性,还需要把地址,比如“b,[ebp][-8]”中的“[-8]”,也就是十六进制的F8利用通配符代替,因此这条特征最终可以这样写“C645??4FC645??70C645??65C645??6E
那么这就是一条通杀性比较强的特征了
这个木马中类似的写法还有不少,可以多提取几条,用“or”连接。假设程序中一共有五个地方采用了这种形式,你可以取舍一下,比如出现三次就报毒,这样通杀性就更强了。
另外,如果程序是利用自己发明的算法生成的文件名,那么这个算法所对应的十六进制代码,也可以提取出来作为特征,这也是很强的特征。

免费评分

参与人数 1吾爱币 +3 热心值 +1 收起 理由
黑龍 + 3 + 1 谢谢@Thanks!

查看全部评分

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-5-19 19:24 | 显示全部楼层
分析流程很清晰,加精鼓励!

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-5-19 19:44 | 显示全部楼层

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-5-19 19:52 | 显示全部楼层
病毒什么的最可恶了,感谢分析

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-5-19 19:54 | 显示全部楼层
大佬啊..第一次这么前排...

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-5-19 19:58 | 显示全部楼层
分析不错,辛苦啦。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-5-19 21:15 | 显示全部楼层
楼主有没有一个什么软件可以快速的清除电脑里的所有的RAR/ZIP文件中的lpk.dll

点评

everything  发表于 2017-5-20 20:14

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-5-19 21:17 | 显示全部楼层
c语言能干这么多事情。。。。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-5-20 08:07 | 显示全部楼层
感谢大神,学习了。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

发表于 2017-5-20 09:51 | 显示全部楼层
感谢大神,学习了。

发帖求助前要善用论坛搜索功能,那里可能会有你要找的答案;

如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】

如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】【CB】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则


免责声明:
吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。

Mail To:Service@52PoJie.Cn

快速回复 收藏帖子 返回列表 搜索

RSS订阅|手机版|小黑屋|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2017-9-22 00:08

Powered by Discuz!

© 2001-2017 Comsenz Inc.

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