特诺伊木马概述
历史上
特洛伊木马是木马屠城记里,希腊军队在特洛伊战争中,用来攻破特洛伊城的那只大木马
值得注意的是,木马屠城记并非于古希腊诗人荷马的两部著作伊利亚特与奥德赛里记载,而是在罗马帝国时期的诗人维吉尔所写的史诗《埃涅阿斯纪》中, 才第一次被记载
木马屠城记一直被现代科学人视为神话故事,直至十九世纪时,业余考古学者海因里希·施利曼(Heinrich Schliemann)才证实特洛伊城的遗址
回到现在
电脑中特洛伊木马(Trojan Horse),其功能和几千年前的特洛伊木马是相似的
其来源于希腊神话特洛伊战争的特洛伊木马
攻城的希腊联军佯装撤退后留下一只木马,特洛伊人将其当作战利品带回城内
当特洛伊人为胜利而庆祝时,从木马中出来了一队希腊兵,它们悄悄打开城门,放进了城外的军队,最终攻克了特洛伊城
计算机中所说的木马,其特征与特洛伊木马一样具有伪装性,表面上没有危害、甚至还附有用户需要的功能,却会在用户不经意间,对用户的计算机系统产生破坏或窃取数据,特别是用户的各种账户及口令等重要且需要保密的信息,甚至控制用户的计算机系统
是黑客用来盗取其他用户的个人信息,甚至是远程控制对方的计算机而加壳制作,然后通过各种手段传播或者骗取目标用户执行该程序,以达到盗取密码等各种数据资料等目的
病毒和木马的区别
与病毒相似,木马程序有很强的隐秘性,随操作系统启动而启动
特洛伊木马(简称木马)是恶意软件执行意外或未经授权的恶意的行为 木马和病毒之间的主要区别是无法复制
木马造成损害的系统,降低系统的安全性,但不复制
如果它复制,那么它应该被归类为病毒
木马的结构
一般的,木马是由传统的C&S架构组成的,其一般由
三部分组成
木马网路入侵的方法
第一步、黑客制作和测试完成木马程序之后,将其上传到服务器
第二步、用户通过各种诱骗手段诱使其从服务器上下载并安装木马程序在自己电脑上
第三步、木马开始运行之后反馈信息给控制端
第四步、控制端开始和木马运行的受害者电脑建立连接
第五步、黑客开始访问受害者的电脑资源
木马的传播方式
木马常用的传播方式,有以下几种:
控制端将木马伪装之后添加到附件中,发送给收件人
或者在进行聊天时,利用文件传送功能发送伪装过的木马程序给对方
木马程序一般非常小,只有是几K到几十K,如果把木马捆绑到其它正常文件上,用户是很难发现的
所以,有一些网站被人利用,提供的下载软件往往捆绑了木马文件,在用户执行这些下载的文件的同时,也运行了木马
木马的特性
木马的分类
1. 按网络连接方式分类
按照网络连接方式分,我们可以分为两类
正向连接的这类木马的通信是由控制端发起的,早期的木马多属于这种类型,缺点就是这类木马不能绕过防火强对服务端发起连接请求
而反向型的这类木马的通信是由木马服务端(运行了木马的PC)发起的,现在的木马多属于这种类型
这是因为防火墙对进入计算机的数据会严查,流出计算机的数据却很少检查
2. 按功能分类
按照这种分类方法,我们可以把木马分为以下几种:
木马的启动方式
木马常用的启动方式有以下几种
木马的常见技术
1. hook技术
hook是一种通过更改程序的代码、数据结构,改变程序运行路线的技术
很多木马隐藏自己的技术都是通过hook来实现的
hook技术一般分为2种:
包括 IAT hook、 EAT hook、Dll 注入等
包括 SSDT hook、IDT hook、SYSENTER hook 、IRP Hook、Object Hook等
2. Dll注入
所谓DLL注入就是将一个DLL放进某个进程的地址空间里,让它成为那个进程的一部分,这样,当这个程序运行的时候,木马也就一起运行了
要实现DLL注入,首先需要打开目标进程
注入的方式:
木马常利用微软操作系统的注册表项:
HKLM\Software\Microsoft\Windows NT\ CurrentVersion\Windows \AppInit_Dlls
由于该项的键值会被GUI程序自动加载,只要程序调用 User32.dll,在进入函数 DllMain 的初始化阶段时,该项下的 dll 文件会被自动加载
3. 消息钩子
Windows内部提供了SetWindowsHook、 SetWindowsHookEx来设置消息钩子
它们的第一个参数idHook用来标识设置消息类型、HOOKPROC是自定义的处理过程
常见参数:
获取鼠标消息
WH_MOUSE
获取键盘消息
WH_KEYBOARD
4. 远程线程注入
使用OpenProcess打开试图嵌入的进程
因为需要写入远程进程的内存地址空间,所以必须申请足够的权限,包括远程创建线程、远程VM操作、远程VM写权限
之后就是为LoadLibraryW函数线程启动DLL木马准备参数
LoadLibraryW函数是在kernel32.dll中定义的一个功能函数,用于加载DLL文件,它只有一个参数,就是DLL文件的绝对路径名(也就是木马DLL文件的全路径文件名)
由于木马DLL是在远程进程内调用的,所以还需要将这个文件名复制到远程地址空间
计算LoadLibraryW的入口地址,启动远程线程LoadLibraryW,通过远程线程调用木马DLL
5. 木马的秘密信道技术
ICMP回显请求(type=0)和回显应答(type=8)报文
规范约定ICMP报文中的标识符和序列号字段由发送端任意选择,因此在ICMP包中标识符、序列号和选项数据等部分都可用来秘密携带信息
由于防火墙、入侵检测系统等网络设备通常只检查ICMP报文的首部,因此使用ICMP建立秘密通道时往往直接把数据放到选项数据中
这类秘密信道可以实现直接的客户端和服务端通信,具有准实时的特点
利用反弹端口型木马的逆向连接技术建立木马连接,其中有两种类型
合并端口法
使用特殊的手段,在一个端口上同时绑定两个TCP或者UDP连接,通过把木马端口绑定于特定的服务端口之上,比如HTTP的80端口,使得其秘密通信对防火墙更具迷惑性,从而降低秘密通信流量被发现的风险
使用报文伪装技术建立秘密信道
将数据插入到HTTP协议报文的一些无用的段内,然后利用建立TCP连接的三次握手规则进行秘密通信
这需要木马要直接替换程序的HTTP发送程序的地址,替换成木马自己的恶意程序的地址
之后程序在调用HTTP发送程序的时候,其实调用的是木马的恶意程序,恶意程序在要发送的数据中加入自己的要通信的内容之后,又将数据交给了正在的HTTP发送程序
最后我们来说说木马的危害吧
木马的危害
本文完
下期内容:二进制软件逆向分析基础