当前位置导航:炫浪网>>网络学院>>编程开发>>C++教程>>C++进阶与实例

利用LLKM处理网络通信---对抗IDS、Firewall

      ★ 前言

    事实上我并没有翻译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看
    到的还是正常的、意料中的状态。对于防火墙,意识不到已经从外部主机成功访问了

共3页 首页 上一页 1 2 3 下一页 尾页 跳转到
相关内容
赞助商链接