网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)

故事发生于某个阳光明媚的某手绘交流群,不知什么时候,来了一位传奇般的雷锋级黑客。

具体他说了什么,就不再复述了,基本就是:“群里谁要QB,我可以帮你刷”。

寡人回了一句,大概意思是:“这是手绘群,打广告别来,QB什么用”之类的云云。

没想到这位雷锋黑客不但不放弃,秉着“我一定要为人民服务的中国梦”精神还加我好友,

寡人也想看看这葫芦里卖的什么药

于是有了已下的一幕:

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(1)

看来真是天下掉馅饼的好事,为什么不试试呢,但是感觉为什么有点不对劲

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(2)

骚年,这意图要不要那么明显,顿时产生了一种:“总有刁民想害朕”的危机感。

如果在平时,基本是已经是拉黑删除钓鱼程序结束了,但是今天寡人怨念尤其的深,不知道是不是昨晚喝的咖啡弄的一夜没睡,还是陪母上大人看了一上午的国产雷剧,浑身积攒了满满的负能量,我开始有了一些比较腹黑的想法 (╯°Д°)╯︵ ┻━┻

我决定,看看这个钓鱼程序卖的是什么药

先来看看这款软件闷骚的小图标

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(3)

使用PEid进行查壳:发现加了UPX壳

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(4)

当然这种这个难度约等于0的压缩壳,使用esp定律或者直接用工具能轻松搞定,脱去upx壳后再次查壳,发现变成了VC 6.0

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(5)

这个年代,当然基本不会有人还在用VC 6.0了那么基本肯定,这一定是宇宙无敌易语言写的神奇玩意。

在虚拟机中再次运行这个软件

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(6)

可以观察到,程序的意图基本就是钓取我们的账号密码,那么,这个账号密码会被发送到哪里呢?

不过不管如何发送,我们至少能够猜到99%是通过网络发送出去的,易语言这个excited的东西啊。网络最一般是通过socket来进行的,socket进行网络通信,用的是tcp udp两种通讯协议,对应最常用的发送数据,应该就是send和sendto这两个函数了。(当然也有WSAsend之类IOCP的做法,不过既然是易语言这种宇宙级语言写出来的东西,我们就不用想的那么复杂)

到这里,寡人决定做一个小小的工具,把这个软件发送的数据给dump下来

到这里,想到一个被用烂了十几年但是仍然有效的技术--------inline hook

至于什么是inline hook,这里我也不继续复述,毕竟这东西网上存在的资料已经非常非常多了,自己动手丰衣足食,不过我还是使用两张图来简单描述一下inline hook

图1.0

首先这是原来正常的函数

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(7)

然后这是被hook过的函数

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(8)

显然的,在我们的函数里,我们就可以做一点坏事,比如把传递给原函数的参数进行过滤修改,当然,在这里我们只是想dump下这个软件发送出去的数据,废话就不多说了,打开visualstudio创建项目

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(9)

编写注入用的DLL(为什么使用DLL呢,因为DLL能够避免很多直接代码注入修改的很多问题,比如代码重定向,例如aslr保护……最主要的是,直接写起来也方便)

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(10)

编写hook类,自己放大图片看吧,具体代码在附件当中自行查阅

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(11)

编写DLLMain

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(12)

到这里,我们需要HookSend和sendto这两个函数,在上面说到的“我们的函数中”,我们就是把数据给dump下来(就是保存下来)

保存的文件名格式是(通讯协议_发送IP地址_端口_索引.bin)

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(13)

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(14)

最后在DLLMainattach中让hook执行并生效

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(15)

编译,一次成功(苍天保佑)

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(16)

最后我们还需要编写一个注入器(这个比较复杂点,但是我们可以用复制黏贴大法在网上抄一段)

注入器的功能,就是把让这个DLL在程序执行之前加载进去,打个比方嘛就是在程序里插入一个内奸。这个内奸就是我们的hook程序,他会不断把这个钓鱼程序的信息报告给我们。

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(17)

编译,Release,那么到这里,我们的准备工作也就完成了

现在万事俱备,只欠东风,当然,这个程序表面上看“是个钓鱼程序”,但是我们也不得不防一手,万一这个程序还有些别的什么动作,那不就神不知鬼不觉被它搞了个大新闻么,所以,我们打开虚拟机环境以防万一。

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(18)

把这个“2016刷qb软件”和我们编写好的hook程序一起放入虚拟机,我们把这个钓鱼程序重命名为Sample.exe

其中Injector就是注入器,他会把当前目录的inlineHooker.dll注入到Sample.exe当中,这样我们就能够监视这个程序了

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(19)

运行Injector,没有出现错误,目标程序也被顺利的打开了。说明注入成功

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(20)

在QQ号码和密码中,我们随便输入一串数字,比如1111111之类的,然后点击“一键刷qb”,在这个“您已成功刷取QB,24小时到账”的忽悠弹窗后,我们发现了桌面上多了点东西.

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(21)

首先我们成功dump到了这个程序往外发送的一些数据包,我们可以看到这些数据包是以send函数的形式发送出去的,也就是这个钓鱼程序与某个IP进行了某些肮脏的屁眼交易

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(22)

从文件名可以看到,这个TCP连接到了27.152.181.114这个地址,而端口是80,显而易见这八成是一个Http协议的通讯,我们用记事本直接打开这个文件,发现它访问了并且Get x/56636里的东西

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(23)

那么到底是什么玩意呢。不妨打开浏览器浏览一下那个地址,2345????.exe,

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(24)

看来就是桌面上多出的这个玩意了。真是钓鱼也不忘打广告捞一笔。真不知道这个钓鱼程序和2345间存在着什么更多的py交易

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(25)

我们接着分析第一个数据包,发现它指向了vip.store.baidupan.com

这是百度网盘还是什么。看这又臭又长的Get请求,那个File字样深深出卖了它似乎又下载了一些别的什么东西.

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(26)

接着看之后另一个数据包,似乎也是在下载什么东西。我们复制下这个链接

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(27)

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(28)

发现迅雷弹出来了,掀桌子,怎么又是这个2345网址导航,看来这个钓鱼程序的作者从一个地方下载还不大放心,从另外的一些地方又下载了一次,莫非下载的多就能进行更多的交易?

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(29)

我索然无味的关掉前几个数据包,显然没有发现什么特别有价值的东西,我接着打开最后一个数据包,恩,似乎出现了一些有意思的东西

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(30)

通过数据包,我们发现它指向了www.****.cc这个地址,而qqdaohao怎么看怎么觉得像QQ盗号的汉语拼音,这命名手法确实很“易语言”,而Name和content这两个参数在传递什么东西。

我蹑手蹑脚地把这个地址放入浏览器然后访问,结果浏览器显示出了ok这个字样,这又代表着什么呢?钓鱼成功?

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(31)

带着疑问,我意识到信息取得的不够多,我第二次执行了这个钓鱼程序,同时刻意把账号和密码设置成了12345678 和 87654321看看这个与name content这两个参数到底有什么关系。

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(32)

可以看到,数据包被再次dump了下来

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(33)

我们再次打开这个数据包,把数据记录下来

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(34)

然后我们用账号密码都是11111111,重复以上步骤再做一遍,然后把数据剪切出来对齐分析

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(35)

结果就变得非常显而易见了,第一部分似乎是没有什么改变,第二部分,清楚的看到

Content是 21 22 23 24…… B1FF 28 27 26 25 24 23……,这B1FF应该是作分隔用的

傻子都看得出来。21代表1;22代表2以此类推、

既然是易语言这种宇宙级编程语言,先有易语言后又天的大神写出来的玩意,不得不怀疑下,他的网站空间是否有做完整的数据长度检查呢

就算没有,我是否可以以流量的形式,1kb 1kb地蚕食他的钓鱼空间已绝后患

既然如此,无需客气,打开SpacerFloodProject,修改config.h代码,把我们的请求代码构造一下,我们每次发送3KB的数据,那么就能消耗其至少3KB的空间,假设一秒发送十次的话30kb的速度,一天就能蚕食它24GB的网络空间,那么不出意外,这个损人利己的钓鱼空间不出2天八成就爆炸了

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(36)

执行dbFlooder,发现数据发送成功,我们尽量地调整发送的数据速度,使其不被其防火墙过滤而拉黑我们。看了看,效果似乎还不错。

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(37)

但是,这个速度还是太慢了,况且就算我们flood成功了,等这家伙发现,删去我们的数据,还不是分分钟的问题,总不能我们一直和他耗着。

带着这个疑问,我打算更加深入一步,在这个HTTP Get请求包当中,可以明显的看到,这个GET请求被发往了一个www.****.cc网页下面

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(38)

我蹑手蹑脚地打开这个网站,一股浓浓的中二病杀马特风扑鼻而来

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(39)

在这个网站得的软件上,我发现了一个有趣的东西,会不会这个钓鱼软件就是这个东西生成的呢?,不顾羞耻病发作,我点开链接下载了这个程序

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(40)

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(41)

下载之后发现是一堆乱码命名的文件,一脸黑人问号,不过这个不影响我们继续分析,不如先打开试试?重复之前的注入步骤,把这个生成器重命名为Sample.exe,执行injector注入

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(42)

看来,这个软件真是至死不渝的打广告啊,除了广告,还有各种忽悠

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(43)

居然还有二维码登陆,本着我不下地狱谁下地狱的精神,我使用我的账号进行登陆,很快,一堆数据包被dump了下来

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(44)

其中大部分,应该和企鹅的快速登陆有关系,但是我还是找到了一个比较特别的数据包,

115.238.240.152,没错的话,他不就是钓鱼软件发往的地址么。

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(45)

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(46)

打开这个数据包,发现它在请求一个txt文件,前面的那串文件名怎么感觉那么眼熟好像又不大一样

不管那么多了,我也试试这钓鱼软件肿么样,我同样生成了一个“钓鱼木马”,当然这水平叫木马是不是有点太抬举自己的了

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(47)

重复注入步骤,做了很多次,就不再啰嗦了

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(48)

在生成的木马面前,输入测试的账号密码11111111

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(49)

查看dump下来的数据包

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(50)

复制到之前我们分析的文本文件当中,嘿,Name的参数发生了改变

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(51)

到了这里,我就大胆的猜想:

1.钓鱼生成器,请求自己钓取到的账号密码是靠那个Name参数同名的txt文件

2.钓鱼软件,通过一个Get请求,把自己的账号密码发送到name对应的txt文本文件下面

通过浏览器,我访问了这个txt文件,同时也证实了这个猜想

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(52)

嘛。那么这个txt文件是什么时候创建的呢,是我登陆那个钓鱼软件生成器时,还是钓鱼木马发送账号密码时,我偷偷摸摸地自己构造了一个请求,来证实我这个想法

在下面这个请求中我构造了name为testtesttest,content为hellohello….

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(53)

之后我去访问testtesttest.txt,嘿,还真有,真是作大死啊

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(54)

现在我们再来看看这个,我创建了一个文本文件,里面只有一个字母,就是只有一字节,为什么会占用磁盘4KB的空间呢

这个和文件系统有关,但文件系统最小粒度单位,常常是簇,而一个簇的大小,就是4KB

所以,文件大小肯定是4KB的整数倍

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(55)

除了这个,我还想试试更加excited的东西,比如参数中传递一些非常规字符,假如这个能成功,那就不仅仅是flood那么简单了。但是,可惜的是,似乎这些字符都被过滤掉了00截断同样试了试,未果,他也很识相的写出了参数错误字样

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(56)

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(57)

既然如此,我就只好用塞文件大法了,我只要发送几十个字节的Get请求,就能足足浪费这个钓鱼空间4KB的空间容量,同时产生大量的文件碎片

这个就不是那么容易删掉了吧

打开spacerFlood项目,重新构造数据包

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(58)

恩,试了试,效果还不错,皮卡丘,就交给你了

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(59)

将这个flood扔到某个云主机上运行,然后我们去睡大觉。而这个dbflood在以每秒鈡10个数据包的速度,往这个空间不断塞着辣鸡数据包,而那个钓鱼空间也在以每秒10个文件,每小时36000个文件,每天864000文件塞着一个文件夹,很快这个文件夹就连资源管理器打开都得半个小时了

已经距离我们编写flood执行到现在已经3天时间了,期间dbflood因为连接问题重启了几次,到现在,这个空间这个文件夹下大概有200w以上个文件了,而今天,发现dbflood的请求从OK变为了全是error

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(60)

再次访问这个目录,发现已经爆炸了,这也意味着,这个一系列害人害己的钓鱼软件的彻底宕机。

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(61)

访问这个网站,看来这个钓鱼作者也发现自己空间似乎不是那么对劲,于是他删掉了所有值钱钓鱼的数据,好吧,至少以前的阴谋算是破产了,但他居然还不死心,居然开发了新的版本,然而之前这个钓鱼程序,包括已经发布的和还在使用的,都已经彻底报废了。

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(62)

我晓有兴趣地下载了这个新版本的钓鱼生成器,再次进行分析

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(63)

我的天,他居然放弃使用空间,而用易语言自己写了服务端,那么81端口是闹哪样,中文数据包仍然显得非常的“易语言”

网站一打开就有木马是什么网站(一个钓鱼木马引发的血案)(64)

我似乎看到了一大堆缺少边界检查和字符过滤的服务端。至于是否存在某些溢出漏洞,这里我就不继续探究了。不过到截止完文为止,这位黑客大神的服务端,似乎还没有做好….

总结:

1.缺少边界与数据检查的服务端,是坑爹又危险的

2.缺少存储优化,曝露直接文件操作而没有检查的存储权限也是坑爹又危险的

3.当然扯远了这个钓鱼程序的用户安全性=0,我可以任意访问其他用户钓取的账户数据,同样是是坑爹又危险的。

最后,技术是好东西,但如果用来歪门邪道,终究是害人害己,就像这次这玩意。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页