首页
社区
课程
招聘
[原创]一个通过解析数据包获取密码的木马之详细分析
发表于: 2010-9-10 19:04 16062

[原创]一个通过解析数据包获取密码的木马之详细分析

2010-9-10 19:04
16062

木马时间戳:2010-08-25 10:41:03
样本来源:http://www.crsky.com/soft/7033.html
详情:http://www.52pojie.cn/thread-62464-1-1.html
Hmily牛发现的霏凡站的【UltraEdit-32文本编辑器 v16.20.0.1009 汉化版】被捆绑了木马。
先谢谢Hmily牛提供样本。

MPC.exe分析(木马主体)

0,打开一个Mutex"__i386vm_jre1.6__",该Mutex由inetwh32.dll创建,避免重复感染。

1,创建%Sysemroot%\\inetwh32.dll,提取本身30号DDX资源并写入。

2,以隐藏窗口的方式运行"rundll32.exe "C:\WINDOWS\inetwh32.dll",wWinMain",注入dll并调用wWinMain函


3,创建注册表启动项:HKML\Software\Microsoft\Windows\CurrentVersion\policies\Explorer\Run
新建注册表项"Bluetooth",值为"rundll32.exe "C:\WINDOWS\inetwh32.dll",wWinMain"

4,在临时文件夹下创建并运行deleteMe.bat,内容为:
——————————————————————————————

:pp
del "C:\Documents and Settings\Administrator\桌面\MPC.exe"
if exist "C:\Documents and Settings\Administrator\桌面\MPC.exe" goto pp
del "C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\deleteMe.bat"
while(1)
{
    SleepEx(INFNITE, 1);
}
struct _DATA_PACK{
    struct _STRUCT1{	
	DWORD index;    //低4位保存着数据包中第一个结构的大小,单位为4字节
	byte unkonw5;
	byte unkonw6;
	byte unkonw7;
	byte unkonw8;
	byte unkonw9;
	byte VerifyByte_Is_6;  //通过此位来是不是6,判断是否为要过滤的数据包
	byte unkonw11;
	byte unkonw12;
	DWORD dw1;	//存储指令类型相关信息,连贯的指令需要此处相同
	DWORD dw2;	//存储指令类型相关信息,连贯的指令需要此处相同
	……
    }
    struct _STRUCT2{
	WORD w1;	//存储指令类型相关信息,连贯的指令需要此处相同
	WORD w2;	//存储指令类型相关信息,连贯的指令需要此处相同
	DWORD dw2;
	DWORD dw3;
	byte StructLength;    //高4位存储的是第二个结构的长度,单位为4字节
	byte sign;	      //该位如果为1或4,则不处理该数据包
	……
    }

    struct _INFO{
	char info[变长];//需要进行拦截的信息
	//用户名名格式:"USER XXXXXXX" X即为用户名,空格可以多个
	//密码格式: "PASS XXXXXX" X即为密码,空格可以多个
    }
}
struct _APP_DATA{
	DWORD pre_ptr_APPDATA;  //保存着上一个APP_DATA结构的指针,第一个节点的值为10003168
	DWORD next_ptr_APPDATA; //保存着下一个APP_DATA结构体指针,最后一个节点的值为10003168
	DWORD struct1dw2;	//指令类型匹配信息
	DWORD struct1dw1;	//指令类型匹配信息
	WORD struct2w2;		//指令类型匹配信息
	WORD struct2w1;		//指令类型匹配信息
	DWORD SystemStartedTime; //GetTickCount();
	char string[127];    //保存接收到的username or passwords
	……
}
struct _OFFSET_3160{
	DWORD dw1;     //上一个指令结构,初始化时指向自身
	DWORD dw2;     //下一个指令结构初始化时指向自身
}
struct _OFFSET_3168{
	DWORD ptr_LAST_APP_DATA; //保存着APP_DATA链表最后一个节点
	DWORD ptr_APP_DATA;  //保存着APP_DATA链表的第一个节点
}

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (15)
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
2
晕,编辑之后专题分类又没了~
2010-9-10 19:09
0
雪    币: 78
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
牛 好文章 讲解的很细
2010-9-10 19:21
0
雪    币: 11220
活跃值: (158)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习一下函数QueueUserAPC,貌似挺强大的,,,
http://blog.csdn.net/WhyGoSoFar/archive/2008/05/27/2487747.aspx
刚开始还看不懂为什么开个线程调用SleepEx,以为lz写错了呢,原来是这样http://www.unpack.cn/viewthread.php?tid=48383&jdfwkey=kt9yu3

学习不少东西啊,,谢谢lz,,,
2010-9-11 01:50
0
雪    币: 109
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
学习下吧.谢
2010-9-11 10:50
0
雪    币: 29
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
很详细。多谢LZ分享。得慢慢学习LZ的释义。

另外有个小问题
3,在创建的线程中先另创建一个线程,循环执行代码
代码:
while(1)
{
SleepEx(INFNITE, 1);
}
此线程用于执行post过滤的信息到远端服务器。用QueueUserAPC插入此线程。


如何用OD中断并动态调试QueueUserAPC设置的回调函数?
不想简单的采用“此处建EIP”强制指定EIP地址的方法。

多谢提示!
2010-9-12 03:29
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
7
我是完全用IDA来分析的。
不过这个应该没什么特别的吧。
2010-9-12 11:10
0
雪    币: 29
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
直接通过IDA分析 APC的回调函数倒是也很容易。
用OD加载对应的进程然后定位到回调函数入口再“此处见EIP”也能动态调试。
但是总感觉这样有些暴力。

如果如果调试器能直接在回调函数入口下断点的话,我感觉是最好的方法。

赫赫。多谢你的回答
2010-9-13 14:50
0
雪    币: 226
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
学习一下。。
2010-9-13 14:55
0
雪    币: 25
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
学习了。。。。。。。。。
2010-9-13 19:12
0
雪    币: 90
活跃值: (91)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
潜力贴留名.Opera插图补丁.字数补丁..

学习一下
2010-9-14 00:20
0
雪    币: 1163
活跃值: (137)
能力值: ( LV12,RANK:230 )
在线值:
发帖
回帖
粉丝
12
[QUOTE=xouou;858159]潜力贴留名.Opera插图补丁.字数补丁..

学习一下[/QUOTE]

我k~插件还带签名的~
2010-9-14 08:25
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
哈哈  学习啦
楼主强大
望尘莫及啦
2010-9-14 09:32
0
雪    币: 20
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
都是大牛啊。。
2010-9-20 11:52
0
雪    币: 86
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
牛人呀,非凡的东西也敢分析
2010-10-1 21:42
0
雪    币: 245
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
牛人啊 这得多少年的功力
2010-10-17 21:02
0
游客
登录 | 注册 方可回帖
返回
//