| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 安全365社区 |
安全365
收藏本站
设为首页
会员登录:
安全365
站内搜索: 新闻中心 系统安全 网络安全 安全技术 下载中心
| 安全技术首页 | 技术研究 | 技术应用 | 数据安全 | 企业专区 |
Win32汇编木马初探
Win32汇编木马初探
作者:不详 文章来源:赛迪网 点击数: 更新时间:2007-7-1 10:08:14
现在很多单位都采用单独的计算机来存放重要的涉密文件。然而如果涉密文件被盗,不仅会带来严重的经济损失,窃密者还可能逍遥法外。为了解决这个问题,我们需要对涉密文件采取某些措施:如绑定木马,在窃密者在得手后木马能自动执行,并记录下窃密者的相关信息,最后及时通知监控端。上面所采取的措施,我们称为网络跟踪技术。本文所要讲述的汇编木马,就经常应用在跟踪技术中。

举个例子:在一涉密.Doc文件中绑定一个.Exe木马。如果木马功能复杂,并且是在VC等编译环境下生成,那它的体积至少有几十K,再加上.Doc文件自身的数据量就非常可观了。一个大的.Doc文件会引起窃密者的怀疑,我们的跟踪也就达不到效果。因此,我们势必要设法在不影响最终目的的前提下,尽量减小木马文件的体积。办法可能不止一个,而我采用的是编写汇编木马的方式。当然,研究的平台都是在Windows2000以上的操作系统中。

Win32汇编木马设计思路
完整的汇编木马又称为“小马”,原因有两个:一是它体积小,只有几K;二是它的功能仅仅是反向连接攻击端,从攻击端下载并执行真正的功能复杂的木马(大马)。为了便于大家理解,本文将不关心“大马”的功能实现,重点是提出汇编木马的设计思路,并尽量从基础的角度进行讨论。
汇编木马的设计围绕4个重要的技术指标:体积小、防杀、突破防火墙与进程隐藏、拖动并执行“大马”,

下面逐一介绍:
1、 体积小。常规木马大多用高级语言编写,在集成环境下编译生成。虽然实现方便,但是生成的.Exe文件体积较大。对于汇编木马,我们采用Win32汇编来实现,使得.Exe文件体积控制在几K。
2、 防杀。为了避免被诺顿、卡巴斯基、江民等主流杀毒软件所识别,木马文件一定要进行可靠的加壳处理。根据经验,一般我们选用最新的ASProtect,加壳后的.Exe文件生存能力一般比较强。如果需要,在必要的时候还可以手动修改文件特征码。
3、 突破防火墙与进程隐藏。木马文件执行的时候需要与攻击端通信,必须访问网络。但不仅第三方的个人防火墙会阻拦你,现在Windows XP SP2也自带了软件防火墙。当“不可信任”的应用程序访问网络时,防火墙会报警。我的解决方法是:将网络通信部分的代码作为远程线程注入到防火墙“可信任”的进程中。这个“可信任”的进程一般是系统进程,也可以是IE。代码的注入,同时起到了进程隐藏的作用。
4、 拖动并执行“大马”。这是汇编木马的核心功能,也是本文要重点举例讨论的内容。最终的监控、跟踪功能是在“大马”中实现的,它可以通过高级语言来实现,体积大小并没有什么限制。

Win32汇编基础
为了进行下面的讨论,Win32汇编是大家必须掌握的基础知识。Win32汇编生成的程序也是运行在Windows保护模式下的。我们可以通过下面几个方面去了解:
1、Win32ASM编译器
Win32ASM编译器最常用的有两种:Borland公司的Tasm5.0和Microsoft的Masm6.11及以上版本,两种编译器各有自己的优缺点,本文选用Microsoft的Masm6.11进行岩石。
2、环境设置
为了直接调用Masm6.11提供工具和库文件,我在“我的电脑”属性→“高级”→“环境变量”→“用户变量”里分别设置(以本机为例):
Include = F:\攻防研究\编程相关\汇编\masm611\Include
lib = F:\攻防研究\编程相关\汇编\masm611\lib
path = F:\攻防研究\编程相关\汇编\masm611\bin
3、编译和连接
汇编文件的编译:Ml /c /coff 文件名.asm,生成.obj文件
资源文件的编译:Rc文件名.rc,生成.res文件
连接:Link /SUBSYSTEM:WINDOWS [其他连接选项]OBJ文件名.obj[Res文件名.res]
4、Include和Includelib语句的使用
Include 语句包含了一些系统的定义和API函数说明,其中所有的Windows 数据结构定义和常量定义包含在“windows.inc”中,而很多API函数的说明包含在其它.inc中。例如:ExitProcess函数包含在Kernel32.dll中,我们就要在程序中包括“Include kernel32.inc”和“Includelib kernel32.lib”语句,否则在编译时会出现API 函数未定义的错误;而MessageBox在user32.dll中,那么我们就要在程序中包括“Include user32.inc”和“Includelib user32.lib”语句。
5、数据段、代码段和注释
未初始化的数据定义在.data?段中,已初始化的数据定义在.data段中,而代码则位于.code段中。此外,汇编代码注释由;来指引。
6、命令行参数的提取。
如果生成的.Exe文件是带命令行参数的,那么我们可以通过API函数GetCommandLine来获取。
下面用一个简单的例子来对上面的基础知识走一遍,大家就更清楚了。

.386 ;声明在80386平台下
.model flat, stdcall; 平坦模式,函数调用约定为stdcall
option casemap :none
Include windows.inc
Include kernel32.inc
Include user32.inc
Includelib kernel32.lib
Includelib user32.lib

.data ; 放初始化数据
szCaption db '命令行参数测试',0

.code;代码段
start: ;代码的开始
invoke GetCommandLine; 函数调用语句,取代call指令,省去“push 参数 ”操作
invoke MessageBox,NULL,eax,addr szCaption,MB_OK
invoke ExitProcess,NULL
end start
文件存为test.asm。在命令行下编译、连接,输入Exe文件名+参数。
小知识:如果要学习更多的汇编知识,可以参见罗云彬编等写的《Windows环境下32位汇编语言程序设计》,在网上也能下载到电子教程。

简单的Win32汇编木马模式实现
有了上面的Wn32汇编基础,我们现在回到正题――汇编木马的实现。由于初次介绍,这里我将汇编木马的模型简化,主要实现下载并执行“大马”的功能,同时结合攻击端代码进行演示,算是为以后讨论更为复杂的汇编木马做为铺垫。

[1] [2] [3] 下一页

文章录入:洋葱头    责任编辑:洋葱头 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    认识使用 Rootkit技术的
    木马的概述
    XML木马研究
    金睛火眼—从进程中判断
    木马清除软件列表
    一秒识破机器里是否有QQ
    警惕!游戏木马生成器的
    军事秘密遭木马曝光 日本
    小心!针对魔兽世界的新
    警惕!游戏木马生成器的
    站长邮箱:webmaster@anquan365.com
    联系电话:86-10-67634029 点击这里给我发消息

    Copyright © 2006-2008 www.anquan365.com 北京华安普特网络科技有限公司 版权所有