使用高级语言编写病毒型木马(QQHacker2.0技术详解)
作者:AntGhazi/2002.2.5 主页:AntGhazi.yeah.net
今天无意在yahoo中搜索了一下QQHacker2.0,竟然发现到处都有他的下载点,让我大感意外,QQhacker其实只是我在学习病毒过程中的一个付产品,今天看到用的人不少,决定把QQHacker中用到的一些技术写下来,希望能对大家在学习的过程中会有所帮助。与以前的写作风格一样,尽量使用最简单的例子,最简洁的词汇,表达最清楚的思想。
对QQHacker2.0技术上共有这几点需要说的:执行、感染、隐藏与后门。
一、执行方法很简单,一种方法是先把一个小于2M的小程序感染后,通过正常邮件发送给目标机器。目标机器收到的程序是经过感染的程序(程序大小会增加32K)。一旦执行,我们的后台程序也就跟着执行了。另一种方法是与尼姆达病毒一样的感染方式,利用的OutLook的一个Mime漏洞骗取OutLook自动执行我们的代码。这个实现起来十分简单,不就多说,程序的感染方式下面马上就将介绍。
二、感染。通常在编写比较精巧,功能强大的病毒时,我们都会选择汇编甚至是机器语言。相对比较简单的32但病毒可在PE文件增加一个节,或在其他的节中加入我们需要执行的代码,这些功能需要对PE文件结构与操作系统方面的一些知识(有兴趣的朋友可以去阿晶的主页看看:http://mincer.top263.net/firstpage.htm)。这里我使用的是一种更简单的方法,简单到只需几条语句便可摆平。即:把我们的病毒程序加到目标程序(被感染程序)的最前面,程序执行的时侯会只执行我们的病毒程序。为使目标程序正常运行,我们可以把目标程保存到一个临时exe文件中,再将其以子进程的方式运行。这样基本上就已经达到感染与执行的目的了。刚开始想到这种方法的是我的好友Qiwei,我们在讨论这个问题的时侯还沾沾自喜的以为我们是第一个想到这种方法的人,现在想起来真是惭愧。同时,这会产生一些问题,下面我介绍一下问题产生与决解的方法,这也是QQHacker2.0中的几个比较关键地方:
1、保存。保存方法是首先把病毒体读出,保存在exe文件的开头,然后把目标程序紧接在病毒体的后面,同时保存目标程或病毒体的长度到一特定位置,以便在目标程序另存时可以得到他的长度。最后得到的exe文件覆盖源目标程即可。这样我们在双击最终的程序,系统执行的程序就是我们的病毒体,而加在后面的目标程是不会执行的。大家可以到这里下载感染函数
2、执行。首先根据我们保存时的数据,将目标程序另存到一个临时的exe文件中,并用CreateProcess使其运行,但是这时会同时会运行两个进程,在进程查看器中很容易就会被发现。而且会在硬盘上会留下一个多余的文件。那这个时侯我们有两件事情要做。a、去掉其中一个进程,而我们的程序仍然要继续执行,b、我们创建的临时exe文件要在一执行后,立刻将其删除,不留任何痕迹。决解的方法也很简单,第一个进程隐藏我在《WinNT & Win2K下实现进程的完全隐藏》一文中已经讲比较清楚,即在目标进程中使用CreateRemoteThread函数来运行我们的程序。删除正在运行程序文件的方法也比较巧妙,即:在我们一使用CreateProcess前,使用CreateFile函数把"临时exe" 以 FILE_FLAG_DELETE_ON_CLOSE 方式打开。然后在hFile句柄关闭的时侯,系统会自动把临时exe文件删除。如下:
char strFile = "temp.exe"
hDesc = ::CreateFile(strFile,0, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_FLAG_DELETE_ON_CLOSE, NULL); //使其关闭后自动删除
::CreateProcess(............)//启动目标程序
::CloseHandle (hDesc); //关闭句柄,即:删除strFile文件
3、图标。很明显,感染过后的文件,系统显示的图标将会是我们病毒程序的图标。如果病毒程序没有图片的话,那显示的将会是一个默认的控制台图标,如果被感染的目标程序图片都变成这个样子,那即便是一位从未学过编程的同志也可以猜到大概是被病毒感染了。这种况下我们可以直接把我们病毒程序的图标改成目标程序图标。方法请见我写的《如何修改可执行文件的图标》一文。前提是我们的病毒程序一定是要有图标的程序。QQHacker2.0中的病毒体单图标就占了我4K,使长度一下暴长到32K(未使用任何减肥工具)。我使用图标长度比较大的原因是当目标程序的图标长度大于病毒体图标长度时,再覆盖源图标则图标会变乱,原因很简单,我这就不多说了。一般在图标长度大于4K的情况下,我们不感染即可,惹不起总躲得起吧。呵呵,最后,我会再给出一个修改图标的函数。
三、隐藏。在前面已经说过,请见《WinNT & Win2K下实现进程的完全隐藏》
四、后门。QQHacker2.0的后门中有两个功能,1、得到QQ的密码,在QQ2000b 0710版中,当我们点上了保存密码时,QQ会将最后一次保存的密码放在dat\data.cfg中,并且只是进行了一种简单的对称加密。文件结构非常简单,前4个字节是指是否有保存密码,后4个字节指密码保存的长度,再接来的就是加密过后的密码,接下来又与前面一样的QQ号的结构,与密码的结构是一样的。注:QQ号没有加密。加密方法是"单个字符再偏移0xff"。我们的在解密的时侯,只需使用0xff-pass即可。在QQHacker2.0中是根据注册表查找QQ的目录,再得到密码,如果成功则返回密码邮件地址,不多说了。这个加密方法是Qiwei发现的,他发现后随即写出QQHacker1.0,那月在CSDN上下载排名是在几天之内就暴涨起来的。他的主页地址是:http://vmtltd.yeah.net,值得一去喔。2、第二个功能是得到所有密码框的密码,98下简单,简直使用SendMessage得到,2000下需使用远程线程直接插入到目标进程内部,再SendMessage得到密码。
另外,在后门中我们也可以通过匿名管道绑定cmd等常见木马后门。
结束语:下面是本文件所有需要用到的函数、源码下载与文章地址
1、感染函数下载
4、修改图标函数下载
4、《如何修改可执行文件的图标》
6、我所写的其他文章
全文完