★ 前言
事实上我并没有翻译Phrack 55-12,它的文字如此之少,当然必须承认其中闪烁
的智慧之光。阅读lifeline < mailto: [email protected] >的程序,它就在文章
里,然后再来看这篇文章。
★ 目录
1. IDS、Firewall的某些特性
2. LLKM能做什么
3. 一个完整的LLKM例子,简单、临时改变TCP/IP协议栈的行为
4. 获取TCP自动机状态,更改出现在网络传输线路上的TCP标志位
5. 另外一种截留本机发送报文、修改、再发送技术
6. 内核模块里设置混杂模式
7. 内核模块里文件I/O操作
8. 内核包转发的讨论
★ 正文
1. IDS、Firewall的某些特性
以snort为例,其大量IDS规则对TCP的PSH、ACK、SYN标志进行判断。比如,在
syn-flood告警中,判断短时间内出现的大量SYN包。而更多的对TCP数据区进行内容
鉴别前,判断了PSH+ACK标志。具体snort规则请参看snort源代码包中举例。
Firewall阻塞来自外部的TCP连接请求时,需要判断SYN标志。
IDS和Firewall还有个更重要的通性,对端口的敏感性。21、23、110、513等端
口都属于敏感端口,许多告警规则、阻塞规则是基于端口的。
2. LLKM能做什么
利用LLKM简单、临时改变TCP/IP协议栈的行为。考虑三种情况:
a. 更改出现在网络传输线路上的TCP标志位
b. 更改出现在网络传输线路上的端口
c. 对IP数据区(TCP协议部分)加密处理后传输
A Host ----+----- firewall -----+---- B Host
(内部) (外部)
C Host(IDS系统) D Host(普通Sniffer)
假设A和B都是我们控制的主机,在这两台主机上都加载LLKM。防火墙不允许来自
外部的任何TCP连接请求,它靠的是判断SYN标志。现在B想telnet到A,LLKM将把B到A
的SYN标志换成ACK、PSH、RST、RES1、RES2中的任意一个或者几个的组合,以能渗透
通过防火墙为原则;A上的LLKM先于正常的TCP/IP协议栈接收到这个扭曲处理了的请
求报文,按照约定好的规则逆向处理,恢复SYN标志后再交给正常的TCP/IP协议栈处
理。同样,A回送SYN+ACK到B的时候,也做一些转换,B上LLKM会恢复成正常的
SYN+ACK。对于A、B上的TCP/IP协议栈,它们意识不到发生过转换,用netstat -na看
到的还是正常的、意料中的状态。对于防火墙,意识不到已经从外部主机成功访问了