除此之外也可以采用其他方法,其中一种就是把木马的通信连接与通用端口进行绑定,这样的话木马就可以用这些端口来传送信息。例如,木马把服务端的信息转化成普通的电子邮件形式发送到指定的地方,或者利用FTP协议把在服务端得到的信息传送到指定的FTP主机上(后者容易被发现)。还有一种相对来说比较安全的办法是利用HTTP协议来传送信息,此时防火墙一般难以判断这些信息是属于正常的通信信息还是木马要传送的信息。
以上所有的办法都有一个共同的缺陷,即木马必须要打开一个和外部联系的端口才能够发送数据。对此,有一种改进办法是用ICMP协议来进行数据通信——ICMP报文由系统内核或进程来直接处理,无需通过端口。
现将木马的通信原理具体介绍如下:
1、TCP/IP木马通信原理
假设A机为控制端,B机为服务端,A机如果知道了B机的服务端端口与IP地址就可以与之建立连接。由于服务端端口是事先设定的,为已知项,所以最重要的是获得B机的IP地址。获得该IP地址的方法主要有两种:信息反馈和IP扫描。
所谓信息反馈是指木马成功安装后会收集一些服务端的软硬件信息,并通过E-MAIL,IRC或ICQ的方式告知控制端用户,从而获得服务端的IP等信息。
对于IP扫描技术,由于B机在被木马程序侵入后,其某端口(例如7626端口)显示为开放的,故A机只要扫描IP地址段中7626端口开放的主机即可。例如B机的地址是202.102.45.53,当A机扫描到这个IP时发现它的7626端口是开放的,则此IP会被添加到列表中,此时A机就能够通过木马的控制端程序向B机发出连接信号,B机里的木马程序收到信号后立即做出响应,当A机收到响应的信号后,开启一个随机端口(例如1031端口)与B机的木马端口7626建立连接,这使得一个木马连接被成功建立起来了。而假如用户每次上网的IP地址不同——它的变动是在一定的范围以内的,例如B机的IP是202.102.45.53,则B机上网IP的变动范围是在202.102.000.000~202.102.255.255,因此控制端只需按照这个方法进行搜索。
值得一提的要扫描整个地址段显然费时费力,一般来说控制端都是先通过信息反馈获得服务端的地址。
2、ICMP木马通信原理
ICMP木马技术便是为了摆脱端口的束缚而出现的。ICMP报文由系统内核或进程直接处理而不通过端口,如果木马将自己伪装成一个Ping进程,系统就会将ICMP-ECHOREPLY(Ping的回应包)的监听、处理权交给木马进程,一旦事先约定好的ICMP-ECHOREPLY包出现(这样的包经过修改ICMP包头,加入了木马的控制字段),木马就会接受、分析并从报文中解析出命令和数据。防火墙一般不会对ICMP-ECHOREPLY报文进行过滤,因为过滤ICMP-ECHOREPLY报文就意味着主机无法对外进行Ping等路由诊断操作。
3、反向连接技术
从本质上来说,反向连接和正向连接的区别并不大。
在正向连接的情况下,服务器端也就是被控制端,在编程实现的时候是采用服务器端的编程方法,而控制端在编程实现的时候是采用客户端的编程方法。
当采用反向连接技术编程时,实际上就是将服务器端变成了采用客户端的编程方法,而将控制端变成了采用服务器端的编程方法。防火墙一般会对于连入的链接进行严格的过滤,而对于连出的链接疏于防范,于是,与一般的木马相反,反弹端口型木马采用反向连接技术的编程方法将服务器端(被控制端)使用主动端口,客户端(控制端)使用被动端口。被植入反弹木马服务器端的计算机定时监测控制端的存在,发现控制端上线立即弹出端口主动连接控制端打开的端口。这种连接模式还能突破内网与外部建立连接。
4、端口复用技术
在winsock的实现中,对于服务器的绑定是可以多重绑定的,在确定多重绑定使用谁的时候,根据的原则是谁的指定最明确则将包递交给谁,而且没有权限之分,就是说低级权限的用户是可以重绑定在高级权限如服务启动的端口上的。