首页
社区
课程
招聘
[原创]感染型病毒编程实现(有源码)
发表于: 2014-3-21 00:24 24318

[原创]感染型病毒编程实现(有源码)

2014-3-21 00:24
24318

  众所周知,感染型病毒是通过感染计算机PE文件,来复制传播。病毒与PE文件同穿一条裤子,偷偷寄存在人家后院,尽干“不见得人”的事。
  搜一下硬盘发现曾写过一个练过手,虽然写得不尽完美,但感染性还是有的,分享下,初学者能有一个直观印象,大鸟请拍砖。。。
  病毒的目的创建svchost傀儡进程,感染计算机下所有非系统文件夹下的exe,dll文件,在被感染文件下添加一个节,把母体和shellcode写进去,修改入口。下次被感染母体运行时,释放病毒母体并运行,重复过程继续感染。
  感染流程如下:
 
下面回答关键的几个问题:
1,如何注入svchost进程?
  通过Inline 底层的ntdll.dll  ZwWriteVirtualMemory函数,可以在母体创建svchost.exe进程还没有执行线程的过程中,得到往svchost.exe进程空间写入注入代码的机会。
  为什么要Inline ZwWriteVirtualMemory函数,而不是其它的?
因为进程创建进程有一个过程,打开映像文件,创建执行体,初始化线程,线程执行。往进程注入代码的关键时刻只能是线程执行前。初始化线程,有调用ZwWriteVirtualMemory写入数据的过程,这时候如果Hook住 ZwWriteVirtualMemory函数就可以为所欲为了。
  写入shellcode和修改入口跳转到shellcode,然后再让svchost进程跑起来。那么svchost就帮你干事了。
 
2,注入svchost 的Shellcode代码如何写?
  Shellcode是用C++写后,编译成一个exe文件,然后再去提取你需要的那部分。写Shellcode最重要的是保证其独立性,别让代码跑崩了。Shellcode不像exe执行一样有PE加载器重定位,链接输入表,为你准备一切东西就等你跑起来。Shellcode是“干坏事”的没有人帮,怎么办?所以一切要自己动手丰衣足食,这里的shellcode调用所有的API都是通过LoadLibrary和GetProcAddress得到的。那LoadLibrary和GetProcAddress怎么得到?这里通过fs:[0x30]寄存器,得到kernel基址,然后解析输出表得到两个API地址。
  有时编译器会在你不知道情况下,为你加上库函数,这样情况要避免。如初始化一个数组:
Array[1024]={0};
  汇编下做了什么?
 
编译器自动为你加上memset库函数。所以shellcode一跑就崩溃了。
3,写shellcode代码要注意什么?
 重定位。

 源码 


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 5
支持
分享
最新回复 (35)
雪    币: 66
活跃值: (49)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
楼主辛苦了,谢谢分享
2014-3-21 00:29
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
真巧,这两天也在学习这个
2014-3-21 00:34
0
雪    币: 119
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我是来顶的!
2014-3-21 00:37
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
写得很详细  感谢分享!
2014-3-21 00:45
0
雪    币: 2664
活跃值: (3401)
能力值: ( LV13,RANK:1760 )
在线值:
发帖
回帖
粉丝
6
恩,之前分析过类似的样本
2014-3-21 01:07
0
雪    币: 19
活跃值: (1086)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
LZ辛苦  又学到东西了
2014-3-21 01:44
0
雪    币: 107
活跃值: (404)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
学习。。。。。。。。。。。。。。。。。。。。
2014-3-21 06:43
0
雪    币: 163
活跃值: (45)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
Mark一下
2014-3-21 07:58
0
雪    币: 11
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
有源码有真相,谢谢分享
2014-3-21 08:34
0
雪    币: 255
活跃值: (207)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
马卡一下 有空研究下
2014-3-21 08:45
0
雪    币: 222
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
第一次在第一页回贴,不错!
2014-3-21 09:21
0
雪    币: 269
活跃值: (906)
能力值: ( LV12,RANK:345 )
在线值:
发帖
回帖
粉丝
13
怎么放码了,你这个违规了吧,群主可是明确说过的
2014-3-21 09:49
0
雪    币: 70
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
强悍,研究下
2014-3-21 09:52
0
雪    币: 111
活跃值: (113)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
15
。。。。。。。。。
2014-3-21 10:16
0
雪    币: 111
活跃值: (113)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
16
吓?表示不知道。。
2014-3-21 10:18
0
雪    币: 73
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
看过LZ的文章,貌似越来越深入了。
2014-3-21 10:19
0
雪    币: 150
活跃值: (496)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
非常感谢~~
2014-3-21 11:02
0
雪    币: 269
活跃值: (906)
能力值: ( LV12,RANK:345 )
在线值:
发帖
回帖
粉丝
19
你们发现帖子中很少有类似源码吗,注意点好难免那天被删了就不好了,主要是论坛以安全为主,有这个规定可能是担心有些人直接用源码做其他事情,这样的话对论坛影响也不好,可以体谅,如果没有这个约束,源码早就满天飞了
2014-3-21 12:14
0
雪    币: 80
活跃值: (109)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
20
学习。谢谢楼主!
2014-3-21 12:48
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
mark,果然有研究
2014-3-21 13:17
0
雪    币: 326
活跃值: (41)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
22
前排留名。
2014-3-21 13:24
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
被感染后怎么恢复呀
2014-6-20 17:42
0
雪    币: 251
活跃值: (301)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
24
没什么意思。早就不玩这个了。
2014-6-20 17:44
0
雪    币: 64
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
25
谢谢LZ。
2014-7-12 15:31
0
游客
登录 | 注册 方可回帖
返回
//