当前位置: 首页 > 图文教程 > 网络安全 > 黑客技术 > Win32 下病毒设计入门详细说明

黑客技术
黑客利用提供甲流疫苗接种骗术散播电脑病毒
中关村在线的服务器遭到黑客入侵
黑客常用4种攻击手段和应对措施
不用ARP欺骗进行嗅探和会话劫持进行MAC欺骗
重庆银行官网被黑客入侵挂马
网站被攻击的方式和防范黑客攻击的措施
黑客攻击:用DOS命令破解NT系统账号密码
Windows环境下木马程序如何隐藏系统中
最新的QQ空间密码和权限破解的方法
网上看科幻片阿凡达当心挂马站点和钓鱼网站
百度被黑引发中伊互联网红黑客大战
XSS攻击如何实现以及保护Web站点免受跨站点脚本攻击
互联网发展史上的几次影响较大的黑客事件
科技博客网站Techcrunch遭到黑客攻击
防止社交媒介遭受黑客攻击的10个方法
美国会议员网站被黑 贴上反奥巴马总统信息
游侠网Netshow论坛受到DDOS大流量攻击
火车票转让成网络热词 黑客借机挂马
网警摧毁国内最大黑客网 木马产业链规模达百亿
“谷姐”蹿红背后:拒百万广告 遭黑客攻击

黑客技术 中的 Win32 下病毒设计入门详细说明


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 86 ::
收藏到网摘: n/a

本文假定你对dos下的病毒和386PM有一定的了解。
  1、感染任何一个病毒都需要有寄主,把病毒代码加入寄主程序中(伴侣病毒除外)
  以下说明如何将病毒代码嵌入PE文件中,有关PE文件的结构请看以前的文章。 PE文件的典型结构:MZ Header DOS STUB CODE PE HEADER OPTIONAL HEADER SECTION TABLE SECTION 1 SECTION 2 ... IMPORT TABLE EXPORT TABLE 和DOS的可执行文件类似,PE的代码映象分为几个SECTION,在文件中会对齐页边界(4K)。一般来说,文件会加载在400000h开始的空间,而第一个SECTION在401000h处,同时入口地址也是401000h。
  由高级语言编写的程序,每个SECTIO-N的长度不可能刚好是4K的倍数,因此在SECTION的末尾将会存在一段未用的空间,大小可由Section的PHYSICAL SIZE-VIRTUALSIZE得到,在文件中起始位置可由 PHYSICAL OFFSET得到,这段空间可以用来存放病毒代码。此外一般来说,MZ Header+DOS STUD+PEHEADER+OPTIONAL HEADER+SECTION TABLE不过1K左右,而SECTION 1由4K开始,空出来的地方足够存放一个设计精良的病毒。CIH就是将代码存放在这些空闲空间里。
  2、分配驻留所需内存
  对于驻留形的病毒,分配驻留所需内存是必需的。在DOS下使用由于所有的 应用程序都映射在相同的线性地址空间里,使用一般的内存分配调用就足够了。而在WIN32下,每个应用程序都有自己的线性地址空间,必须使用特殊的函数分配2GB以上的系统地址。典型的如:VXD服务_PageAllocate,和kernel32的 VxDCALL _PageReserve。_PageAllocate请参看win98ddk中的说明,VxDCall _PageReserve 请参看HPS源码中的注释。
  3、截留FILE I/O操作 驻留型的病毒通过截留FILE I/O来激活,可以通过使用VXD服务
  IFSMgr_Install-FileSystemAPIHook(如CIH)或截留VxDCall中的DOS Services callback(如HPS)。
  在Win32下编写病毒不是一件困难的事。值得注意的有几件事:
  一、Win32下的系统功能调用不是通过中断实现,而是由DLL中导出
  (直接使用VxD服务除外)。直接在病毒中得到API入口不是一件容易的事,可以通过以下这个变通的方法。
  在同一个版本的Windows下,同一个核心函数的入口总是固定的(指由Kernel32,gdi32,user32导出的函数)。因此可以用以下的方法得到函数入口:
  在Intialize Code得到要用的函数入口并将它填入病毒中,在病毒运行时可以直接使用了。
  本人的一台操作系统为Win2000 Server的笔记本电脑最近被感染了病毒,我首先用相关杀毒软件来扫描计算机,扫描报告如下:
  病毒名称:Hacktool
  文件名:c:\winnt\system32\ntservice.exe
  操作:删除失败,隔离失败,访问被拒绝
  如何才能彻底 删除呢?
  因为c:\winnt\system32\ntservice.exe已经在运行了,直接删除显然是不可能的。于是我运行Windows任务管理器,在进程选 项卡中选择结束ntservice.exe进程,结果系统显示“无法中止进程,拒绝访问”。
  我突然想到在Win 2000(XP)的控制台状态下是可 以用DOS命令的。
  什么是控制台
  控制台是Windows的一种简易运行模式,它可以不启动图形界面而在命令行状态下有限制地访问 FAT和NTFS分区,并对系统进行一些设置和操作。通过控制台,我们可以更换系统文件、关闭或者禁用某个系统服务、禁用或卸载硬件 设备、修复引导扇区、新建分区以及格式化硬盘分区等。
  启动控制台
  对于Windows 2000,我们可以用光盘启动电脑,然后在安 装程序的选单中按R键选择“修复Windows 2000安装”,再从修复选单中按C键选择“故障恢复控制台修复Windows2000”。对于 WindowsXP,同样是用光盘启动电脑,然后按R选择修复,就能直接进入控制台。
  直接把控制台的相关选项安装到启动菜单中的方 法:把光盘放入光驱,然后直接在运行中输入“d:\i386\winnt32/cmdcons”之后回车(这里假设你的光驱是D),再点击“是”,就可以把控 制台选项安装到高级启动菜单中,这样以后直接从硬盘就可以进入控制台中。这个方法适用于Windows 2000和Windows XP。
  在控制台的 命令提示符下,为安全起见,我首先对ntservice.exe进行备份,然后直接运行:del c:\winnt\system32\ntservice.exe就OK了。
  二、主要是要截留文件I/O操作
  Windows下截留文件I/O操作有几种方法,在病毒中使用的主要有两种。
  1、使用VxDCallIFSMgr_InstallFileSystemHook
  2、截留Kernel32.dll中导出的第一个函数VxDCall对DOS
  INT 21的呼叫(EAX=2A0010)。
  VxDCall的代码如下:
  mov eax,dword ptr [esp+04]
  pop dword ptr [esp]
  call fword ptr cs:[xxxxxxxx]
  ^^^^^^^^只要将这个地址指向的地址改为自己的过程入口,就捕获了所有的VxDCall。
  进入这个过程时:
  eax=service number,如果是DOS INT 21将是2A0010
  esp[2c]