扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
一、关端口
祸从口出,同样,端口也是木马的最大漏洞,经过大家的不断宣传,现在连一个刚刚上网没有多久的“菜鸟”也知道用NETSTAT查看端口。放弃了端口后木马怎么和控制端联络呢?对于这个问题,不同的木马采用了不同的方法,大致分为以下两种方法:寄生、潜伏。
1、寄生就是找一个已经打开的端口,寄生其上,平时只是监听,遇到特殊的指令就进行解释执行;因为木马实际上是寄生在已有的系统服务之上的,因此,你在扫描或查看系统端口的时候是没有任何异常的。据我所知,在98下进行这样的操作是比较简单的,但是对于Win2000 相对要麻烦得多。由于作者对这种技术没有很深的研究,在这里就不赘述了,感兴趣的朋友可以去http://www.ahjmw.gov.cn/cit/或者西祠胡同的WinSock版查看相关的资料。
2、潜伏是说使用IP协议族中的其它协议而非TCP/UDP来进行通讯,从而瞒过Netstat和端口扫描软件。一种比较常见的潜伏手段是使用ICMP协议,ICMP(Internet控制报文)是IP协议的附属协议,它是由内核或进程直接处理而不需要通过端口,一个最常见的ICMP协议就是Ping,它利用了ICMP的回显请求和回显应答报文。一个普通的ICMP木马会监听ICMP报文,当出现特殊的报文时(比如特殊大小的包、特殊的报文结构等)它会打开TCP端口等待控制端的连接,这种木马在没有激活时是不可见的,但是一旦连接上了控制端就和普通木马一样,本地可以看到状态为Established的链接(如果端口的最大连接数设为1,在远程使用Connect方法进行端口扫描还是没有办法发现的);而一个真正意义上的ICMP木马则会严格地使用ICMP协议来进行数据和控制命令的传递(数据放在ICMP的报文中),在整个过程中,它都是不可见的。(除非使用嗅探软件分析网络流量)
3、除了寄生和潜伏之外,木马还有其他更好的方法进行隐藏,比如直接针对网卡或Modem进行底层的编程,这涉及到更高的编程技巧。
二、隐藏进程
在win9x时代,简单的注册为系统进程就可以从任务栏中消失,可是在Window2000盛行的今天,这种方法遭到了惨败,注册为系统进程不仅仅能在任务栏中看到,而且可以直接在Services中直接控制停止、运行(太搞笑了,木马被客户端控制)。使用隐藏窗体或控制台的方法也不能欺骗无所不见的ADMIN大人(要知道,在NT下,Administrator是可以看见所有进程的)。在研究了其它软件的长处之后,木马发现,Windows下的中文汉化软件采用的陷阱技术非常适合木马的使用。
DLL陷阱技术是一种针对DLL(动态链接库)的高级编程技术,编程者用特洛伊DLL替换已知的系统DLL,并对所有的函数调用进行过滤,对于正常的调用,使用函数转发器直接转发给被替换的系统DLL,对于一些事先约定好的特殊情况,DLL会执行一些相对应的操作,一个比较简单的方法是起一个进程,虽然所有的操作都在DLL中完成会更加隐蔽,但是这大大增加了程序编写的难度,实际上这样的木马大多数只是使用DLL进行监听,一旦发现控制端的连接请求就激活自身,起一个绑端口的进程进行正常的木马操作。操作结束后关掉进程,继续进入休眠状况。
因为大量特洛伊DLL的使用实际上已经危害到了Windows操作系统的安全和稳定性,据说微软的下一代操作系统Window2001(海王星)已经使用了DLL数字签名、校验技术,因此,特洛伊DLL的时代很快会结束。取代它的将会是强行嵌入代码技术(插入DLL,挂接API,进程的动态替换等等),但是这种技术对于编写者的汇编功底要求很高,涉及大量硬编码的机器指令,并不是一般的木马编写者可以涉足。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。