返回列表 发帖

木马是如何编写的(三)(3)

以上只是一个简单的例子,真正写起木马来要解决的技术问题比这多得多,这得需要扎
实的编程功底和丰富的经验。如下的问题就值得仔细考虑:
  首先是程序的大小问题,本程序经编译链接后得到的可执行文件竟有400多K,用As
pack1.07压了一下也还有200多K。可以看出不必要的Form是应该去掉的;并且尽量由自
己调用底层的API函数,而尽量少使用Borland打好包的VCL控件;要尽量使用汇编语言(
BCB支持C++和汇编混编),不但速度会加快,而且大小可以小很多,毕竟木马是越小越
好。
  还有启动方式的选择。出了Win.ini、System.ini之外,也还是那几个注册表键值,
如:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
  都已被其他的木马用烂了。现在又开始对exe、dll和txt文件的关联程序动手脚了(
如冰河和广外女生)。这里涉及到参数传递的问题。得到ParamStr()函数传来的参数,
启动自己后再启动与之关联的程序,并将参数传递给它,这样就完成了一次“双启动”
,而受害者丝毫感觉不到有任何异常。具体键值如:
与exe文件建立关联:HKEY_CLASSES_ROOT\exefile\shell\open\command
与txt文件建立关联:HKEY_CLASSES_ROOT\txtfile\shell\open\command
与dll文件建立关联:HKEY_CLASSES_ROOT\dllfile\shell\open\command
  等,当然还可以自己扩充。目前还有一种新方法:在HKEY_LOCAL_MACHINE\SOFTWAR
E\Microsoft\Windows NT\CurrentVersion\Windows下添加如下键值 "AppInit_DLLs"="
Server.dll",这就把Server.dll注册为系统启动时必须加载的模块(你应该把木马编译
成DLL)。下次开机时,木马以动态链接库形式被加载,存在于系统进程中。因为没有它
自己的PID(Process ID 进程识别号),所以在NT的任务管理器中也看不见(不过在“
系统信息”--“软件环境”--“已加载的32位模块”中还是可以详细看到当前内存中加
载的每一个模块的 ^_^),这样做的目的是可以使自己的程序更加隐蔽,提高木马的生
存能力。
  木马的功能还可以大大扩充。你可以充分发挥你的想象力--比如上传、下载、新建
、改名、移动文件,截图存为jpg文件传回,录音监听成Wav文件,录像成AVI文件,弹光
驱,读软驱,关机,重启,不停地挂起,胡乱切换分辨率(烧掉你的显示器),发对话
框,不停地打开资源管理器直到死机,杀掉Kernel32.dll进程使机器暴死,交换鼠标左
右键,固定鼠标,限制鼠标活动范围,鼠标不听指挥到处乱窜,记录击键记录(记录上
网口令,这需要深入了解钩子(Hook)技术,如键盘钩子和鼠标钩子),窃取重要的密
码文件如pwl和sam文件,格式化磁盘,乱写磁盘扇区(像病毒大爆发),破坏零磁道,
乱写BIOS(像CIH),胡乱设置CMOS,加密MBR、HDPT和FAT(像江民炸弹)……真是琳琅
满目、心狠手辣呀!而且实现起来并不是很复杂,只不过后面几项需要比较扎实的汇编
功底而已(有几项要用到Vxd技术)。唉!路漫漫其修远兮,吾将上下而求索……
  如果你想更安全地执行你的入侵活动,就应该像广外女生一样可以杀掉防火墙和杀
毒软件的进程。防火墙和杀毒软件监视的是特征码,如果你是新木马,它就不吱一声;
但是如果你打开不寻常的端口,它就会跳出来报警。因此最好的办法是启动后立即分析
当前进程,查找有没有常见防火墙和杀毒软件的进程,如果有就杀无赦。比如常见的如
:Lockdown,天网防火墙,网络卫兵,kv3000,瑞星,金山毒霸,Pc-Cillin,Panda,
Mcafee,Norton和CheckPoint。杀掉后,再在特定的内存地址中作一个标记,使它们误
以为自己已启动,因此不会再次启动自己了。
  针对来自反汇编工具的威胁。如果有人试图将你的木马程序反汇编,他成功后,你
的一切秘密就暴露在他的面前了,因此,我们要想办法保护自己的作品。首先想到的是
条件跳转,条件跳转对于反向工程来说并不有趣。没有循环,只是跳转,作为使偷窃者
令人头痛的路障。这样,就没有简单的反向操作可以执行了。陷阱,另一个我不太肯定
,但听说有程序使用的方法:用CRC校验你的EXE文件,如果它被改变了,不要显示典型
错误信息,而给予偷窃者致命的一击。
  最后如果你需要它完成任务后可以自己删除自己,我提示你:退出前建立一个批处
理文件,加入循环删除本exe文件和本批处理文件自己的命令后保存,执行它,再放心地
退出。你可以试一下,所有文件都消失了吧?!这叫“踏雪无痕”。
  入侵安装了防火墙的机器最好使用自己编写的木马,这样不光防火墙不会报警,而
且你自己心里也坦然一些--毕竟是自己的作品吗!如果你是系统管理员,那就请你不要
偷懒,不仅要经常扫描1024以下的端口,而且包括1024以上的高端端口也要仔细扫描,
65535个端口一个也不能漏。因为许多木马打开的就是高端端口(如本例中的4444)。
  写在最后:上面例子的用意并不是教你去如何攻击他人,目的只是让你了解木马的
工作原理和简单的编写步骤,以便更好地防范和杀除木马,维护我们自己应有的网络安
全。因此,请列位看官好自为之,不要乱下杀手啊!

返回列表 回复 发帖