[摘要]信息地道战-浅谈信息隐藏技术在HACK中应用 当一个入侵者得到远程主机的控制后,希望保持战果,安装一个安全的后门用以将来与之保持联系。该怎么做呢?直接将netcat这类文件放在管理员眼皮底下?或...
信息地道战-浅谈信息隐藏技术在HACK中应用
当一个入侵者得到远程主机的控制后,希望保持战果,安装一个安全的后门用以将来与之保持联系。该怎么做呢?直接将netcat这类文件放在管理员眼皮底下?或者仅仅简单地将它改个名字?这样就可以了,是吗?NO!不要以为所有的管理员都是白痴!现在相当多的管理员已经逐渐增强了系统安全意识,虽然他们中的一大部分也许还不是特别了解黑帽子军团的入侵伎俩,但是他们会用基本的网络命令以及借助一些第三方安全工具来诊断当前系统安全现状,当发现一个可疑的进程正运行在他宝贝服务器的内存空间中时,他非常有可能使用端口-进程关联查看程序来看看这个可疑进程正在做着怎么样的勾当!也有不少管理员将求助于一些常有黑客或者安全人士来往的BBS,比如我负责的一个在国内有比较大影响的黑客技术BBS上,平均每天都能看见几个担心自己系统被入侵的初级管理员,自然我们会热心地替他指出解决方案。当你正为使用了端口重定向等技术避开防火墙的检测来做到后门联系而沾沾自喜时,是否想到过一个检测到不明流量和可疑端口开放的管理员正虎视耽耽地看着你在他机器上玩耍!
是的!使用诸如NETCAT这类鼎鼎大名的工具完成你的事业的入侵者,正如一个大摇大摆地走进后门的家伙,也许这个后门已经被聪明的管理员设下了陷阱,正在等着您的大驾光临,也许你就从此踏上不归路。谁知道呢?
说了这么多,无非就是要说明隐秘通道技术对一个黑帽子的重要性,入侵中被当场抓获可不是闹着玩的。永远别小看你的对手-管理员!是否我们从此不能够HACKING?NO!只要打地道战,是的,神出鬼没的地道战!不开放可疑端口,不造成明显异常网络流量,一样地和你可爱的肉鸡保持联系!这样一来,一般的管理员可就傻眼了,即使富有经验的管理员亦很难查出这种方法。
先说说这种技术的理论基础:Transmitted via Carrier Pigeon. RFC 1149,2549中定义过,高于TCP的协议[比如http, ftp, telnet等等基于TCP的应用协议]将数据传给协议栈,TCP将对其初始化,但此时并不直接送往IP层,而是直接将其送往目的地。在那里信息经过TCP层直接送交到等待接收的应用程序中处理。这就是其交互原理,可以类比SSH的技术,都是基于这个理论实现的。
下面我们该谈谈这个技术的实现方案了:
1:ICMP实现秘密隧道
在没有阻塞ICMP数据包的网络中[可以简单地使用PING或者tracert来判断目标是否阻塞ICMP],由于ICMP与端口完全无关,所以我们可以使用ICMP来携带我们的通信,这样管理员使用netstat或者进程-端口关联程序来诊断都看不出来异常。许多软件都能够实现这一魔术般的技术,Loki是最棒的一个[通常我们称它为"low-key"],它应用于linux,bsd等各类unix系统,这个程序包括了客户端[loki]和服务端[lokid],一个黑帽子只需要在目标上种植下服务端[lokid]请注意:由于ICMP由操作系统直接处理,因此你必须是ROOT!否则安装无法完成命令格式:lokid -p -i -v l
然后在本地操作客户端[loki]
命令格式:loki -d XXX.XXX.XXX.XXX -p -i -v l -t 3
这样就达成了足够隐秘的通信,只要未阻塞ICMP包,这个方法甚至可以穿透防火墙!下面让我们来看看在简单地键入这些命令以及我们的通信过程中发生了什么:当我们在客户端输入命令时,loki将我们的命令包裹在ICMP包中,发送给服务端lokid,lokid拆开这些包,执行命令之后再将响应信息以同样的方式包裹进ICMP包内返回给客户端。在管理员眼中,这次行动是什么样子呢?
-------------------------------
黑帽子 ping 目标主机
----- ping 响应 ------------
loki lokid
-------------------------------
Internet
正如图揭示的那样,在管理员或者网络流量监测器角度看来,仅仅是发送了多次再简单不过的ping而已,他们很可能压根也想不到眼皮下貌似无辜的ICMP包正在做着黑帽子军团的最佳帮凶,不遗余力地传输着一条又一条邪恶指令,甚至黑帽子们可以简单地设置使用Blowfish算法为这一切加密!
不过这个技术将使进程清单上多出一个ROOT权限的进程,虽然它不关联端口,不如其他传统后门那么醒目,但是若你偏执地追求完美的隐蔽,那么请配合 rootkit 来实现吧!
这个工具亦可以运行的53端口,伪装为DNS查询响应信息,不过这样将开放一个端口,隐秘性下降不少,不推荐。
是的,这样确实足够隐秘,正恰似地道战一样打对方一个措手不及,不过需要注意的是,许多防火墙默认设置就是阻塞ICMP,一台WEB主机并不总是需要让浏览者不停地ping 或者tracert 。显然这个时候我们得再想别的办法。
2: HTTP实现秘密隧道
出于安全需要,他们也许不让我们ping 或者tracert,这很合理,但是通常情况下他们会禁止自己浏览网页吗?不会!多数情况下没人阻止员工浏览 www 网页[如果他们要禁止员工上班时间浏览与工作无关的网站多半也是做人工检查,毕竟禁止HTTP对人们的网络生活的影响太大了!]。So,我们为什么不能利用可爱的HTTP呢?!Reverse WWW Shell [国内未见翻译,我暂且翻译反向 WWW SHELL]这个工具在技术上实现了这点。
这个程序会把你的机器做个真正的WEB服务器,还需要真正的网页?当然没那么夸张,只要一个 80 端口就行了!和ICMP实现非常类似Reverse WWW Shell 一样也有服务端和客户端 ,在你的目标上种植上 Reverse WWW Shell 服务端,并在你本地机器上运行 Reverse WWW Shell 客户端,它将打开你机器的 80 端口,Reverse WWW Shell 服务端每隔一段时间就会与你的计算机试图连接一次[默认是60秒,不过可以更改,建议更改到15-30秒,因为15-30 秒的时间浏览者刷新页面或者换下一页比较可信]
-------- -----------------------
黑帽子 <- http请求 目标主机
----- http 响应 -> ------------
客户端 服务端
--------------------- ----------
80 端口开放 Internet 通信时随机开放
1024以上源端口
---------- ----------------
检测系统将认为:
内部人员浏览网页,正常行为
PASS!
---------------------------
正如上图所指出的,一切看上去就向是内部有人在访问一个WWW主机,正常地浏览网页罢了,这个隐秘性可算是相当高了!
3:其他协议实现
也许HTTP协议实现的地道还不能满足你的需要,因为有的企业或者组织会设定WEB访问认证,内部员工只有给出正确的用户名和密码才能通过验证而访问WWW站点,也有的企业或者组织会设定仅仅允许员工访问可信任的几个站点,这样基于HTTP协议的秘密隧道技术将无用武之地!
正如原理中解释的:基于TCP/IP协议的高层协议都满足构造秘密隧道的条件,那么我们可利用的还将有SMTP,TELNET等等!是的,我们的前辈们早已开发出来琳琅满目的各种各式的工具有反向TELNET或者FTP的,也有利用SMTP的存储转发性质的,甚至有SSH ,HTTPS等!原理基本都一样,只是在应用范围和一些技术细节上稍有不同罢了,在此就不多提及,有兴趣的同好可以在网上找找。
4:直接使用TCP/IP包头部传输数据
这个办法不同于前面那些利用一种协议嵌入另一协议的方法,它利用TCP/IP协议包中为了未来扩展需要而存在的许多空闲空间中填充数据。这个方法主要来自Craig H.Rowland的经典论文 " Covert Channels in the TCP/IP Protocol Suite", Craig H.Rowland也编制了一个工具来实现这个技术,这个工具的名称就是 "Covert_TCP"
Covert_TCP 支持在 IP identification,TCP sequence number , TCP acknowledgment number 这三段中填充数据[其实其他段也一样可以填充,不过因为这三个段在传输中一般不改变,稳定性比较好]。
Covert_TCP 虽然也有服务端和客户端之分,不过它可不是基于C/S模式的,事实上它的服务端和客户端是一样的,用参数指定使用TCP/IP包头的哪个段进行隐秘通信:
-ipid:使用 IP identification
这个模式原理上十分简单,客户端将ASCII码直接放入IP identification段,每个包携带一个组,服务器端将其取出就可以
-seq :使用 TCP sequence number
原理:第一个SYN包携带第一个字符,它取代了identification位,因为它不能合法地建立起三次握手,服务端返回RESET包;客户端再次送出SYN包,它携带第二个字符;以此类推,并无任何一个完整的TCP三次握手,并且RESET包可看作对每个SYN包的响应,因此这个方法虽然效率不是很高,但是亦有它可取之处。
-ack :使用 TCP acknowledgment number
这个方式比较复杂,在攻击发起者和目标直接还需要用到一个作为“传输中间人”的 bounce 服务器
---------- ------ -------
黑帽子 目标
Covert_TCP ----- BOUNCE -------------
客户端 服务端
---------- ------ -------
STEP 1 : 客户端发送一个SYN包到bounce 服务器,源地址是目标服务器的地址,目的地址是bounce 服务器的地址,sequence number用需要发送的数据的ASCII码替换掉。
STEP 2 : bounce 服务器收到该包后,若相应端口开放,返回SYN/ACK包;若相应端口关闭,返回RESET,这都是RFC文档定义好的规则,也就是说无论端口开放与否,bounce 服务器都将发送一个响应,而由于SYN包中的源地址是目的服务器的地址,所以bounce 服务器的响应包将发送给目的服务器,这样就达成了我们希望的:我们的信息也随着数据包发送到目的服务器了!
STEP 3:服务端将会提取这些ASCII字符写入文件。
显然这个办法是相当隐秘的,管理员几乎无从追踪这些数据包的来源,因为包的源地址显示来自bounce 服务器,这样我们的发动传输的机器被很好地隐藏了,而我们使用bounce 服务器的方式甚至可以是分布式的,想想看这将有多大的影响吧!
5:“信息地道战”技术前瞻
不仅仅是这些而已!信息隐藏技术还有很多尚未实现的技术或者未公开的技术实现方案,下面我们不妨来看看,还有些什么,不过往下看前请注意,这里没有特定的软件工具帮助你HACKING,这里只有一些也许挺“艰深”又不是很“实用”的理论,别想老想着天上掉馅饼,自己也好好开动脑子思考吧。
[1]图象隐藏技术[当今最研究最成熟的隐藏技术]:
位图填充技术:将需要隐藏数据直接填充在BMP位图之后,不过若不加密则可以使用WINHEX等软件打开查找,所以应该把需要隐藏的数据经过加密处理后填充,台湾Infosec公司出的Z-file工具就是利用这个原理。
降级技术:图象既是秘密信息又是载体,给定同样尺寸的伪装载体和秘密图象,发送者把伪装载体图象灰度[或色彩值]的4个最低BIT替换为秘密图象的4个最高BIT。解密时只要逆向一下就可以得到秘密图象,而传输时载体的质量降低一般不是肉眼能鉴别的。
水平所限制只能提这两个了,其实作为当今最研究最成熟的隐藏技术,图象隐藏技术的内涵和其在不久的未来发展前景是深不可测的。
[2]音频,视频流传输中可以隐藏入GSM电话对话而不使信号产生严重减低质量,可惜暂时技术不成熟,在此仅仅提一笔吧。
[3]操作系统和文件系统信息隐藏技术
1:操作系统隐蔽信道
在一个操作系统中,运行在高安全级别的进程1可以向硬盘写入数据,另一个运行在低安全级别的进程2能访问其文件表[也就是前面那个进程创建的文件的名字和大小],这并没有访问数据本身。于是这个情况导致了隐蔽信道:进程1通过文件名和大小向进程2传递信息。
2:文件系统中的隐藏文件
在WIN95中,FAT16格式一般使用32KB的簇,也就是按32KB给文件分配空间,若某个文件仅仅2KB,那么还有30KB的空间未使用,这样就可以在其中写入需要隐藏的数据。
而NTFS格式的硬盘中支持文件数据流,使用NTRK的cp工具可以简单地往任何文件后接上数据流,原文件大小不增加,而数据流并不随前端文件一同运行,这样亦可以很好地隐藏数据。
其实正如地道战可以用水淹来对付一样,针对各种隐藏技术也还是有对付的办法。不过这些针对隐藏的检测工具是否每个管理员都知道并且使用在自己的服务器上呢?这可就很难说了,至少笔者至今尚未在国内主机上发现检测隐藏技术的工具;而国外很多主机上都会有几种检测文件完整性的工具,这种差距导致国内安全现状实在不容乐观。管理员们可要注意了,也许就在你的机器上,黑帽子们正上演着一幕幕地道战!
网络的神奇作用吸引着越来越多的用户加入其中,正因如此,网络的承受能力也面临着越来越严峻的考验―从硬件上、软件上、所用标准上......,各项技术都需要适时应势,对应发展,这正是网络迅速走向进步的催化剂。
……