2012年2月7日 星期二

Tcpreplay 重寫攻擊流量

Tcpreplay 是網絡安全中一種常用的工具,對於其報文重放的功能大家都非常清楚,但是對於其能夠在重放過程中改寫報文的內容的功能應用卻不是很多……
      【IT專家網獨家】Tcpreplay是網絡安全中一種常用的工具,對於其 報文重放的功能大家都非常清楚,但是對於其能夠在重放過程中改寫報文的內容的功能應用卻不是很多,如果能夠熟練的應用 Tcpreplay的報文改寫功能就有可能使攻擊者 安全的規避的防火墻的檢測手段。針對目前很多防火墻產品並不檢測報文的載荷,只是根據規則來阻止某個協議字段來達到防範的目的,這樣通過 Tcprepaly就可以改寫敏感的報文字段,使其安全的通過防火墻的檢測。

重寫二層頭
以上圖為例,從Client端發送攻擊流 量到Server端,如果在Firewall上配置了策略,阻止了Client的MAC地址,Client端可以通過 Tcprepaly將攻擊報文的源MAC地址重寫。具體使用如下:

./tcpreplay -i eth0 -k 00:02:02:03:04:05 /tmp/1.pcap
參數-i用 來指定發送的Primary接口,-k用來指定重寫源MAC地址。通過-k指定一 個Firewall的可信MAC地址,攻擊流量就有可能瞞天過海。如果Firewall工作在transparent模式下,那?我們的攻擊流量需要重 放,目的MAC則需要改為Server的MAC,我們則可以通過命令行

./tcpreplay -i eth0 -I 00:01:02:03:04 -k 00:02:02:03:02:07 /tmp/1.pcap
亦即通過添加參數-I來重寫通過Primary端口流量的目的MAC。如果我們需要在Client的多個端口上將攻擊流量重放,那?我們則可以 通過添加參數-j來指定Secondary接口,通過參數-J來重寫Secondary接口流量的目的MAC,通過參數-K來重寫Secondary端口 的源MAC,具體應用如下:

./tcpreplay -j eth1 -J 00:01:02:03:04 -K 00:02:02:03:02:07 /tmp/1.pcap
同樣,我們也可以綜合運用以上各個參數將同一個攻擊報文在Client的不同端口上以不同的目的MAC和源MAC發送,這樣亂拳出擊,可以充分 考驗Firewall的應用,具體使用如下:

./tcpreplay -i eth0 -I 00:01:01:02:02:03 -k 00:02:02:04:04:05 -j eth1 -J 00:01:02:03:04 -K 00:02:02:03:02:07 /tmp/1.pcap
重寫三層頭
仍舊以上面的TOPO為例,如果Firewall上配置了策略阻止了特定的IP地址,Client端就可以通過Tcpreplay來重寫攻擊報 文的源與目的IP,以此來規避Firewall的規則,達到其攻擊的效果。具體的應用如下:

./tcpreplay -e 1.1.1.1:2.2.2.2 -i eth1 /tmp/2.pcap
通過參數-e來具體的指定攻擊報文的源、目的IP,以此來修改成Firewall能夠允許通過的IP地址以此來達到攻擊的目的。這在修改三層頭 中是最常用的一種方式。如果你獲得了一個pcap報文,你想把它重放給某人同時又不願意暴露自己的IP地址,那?可以利用參數-s來隨機的選用IP地址, 具體使用如下:

./tcpreplay -s 11 -i eth1 /tmp/2.pcap
其中參數-s決定了你隨機選用的IP地址,不同的seed值會導致不用的pcap報文的IP地址。Tcprepaly在再深一點的應用是可以把 報文的IP地址進行映射,類似於NAT的應用,可以將攻擊報文的IP地址映射到不用的網段,具體應用如下:

./tcpreplay -N 10.0.0.0/8:11.0.0.0/8 -i eth1 /tmp/2.pcap
其中參數-N來指定需要映射的網段。
重寫四層頭
Tcprepaly可以修改二、三層頭來修改傳輸層面的信息,同樣也可以修改四層頭來修改session層面的信息,例如我們可以修改運行在 8080端口上的HTTP的流量使其運行在80端口上,具體應用如下:

./tcpreplay -4 80:8080 -i eth1 /tmp/2.pcap
我們通過參數-4來重新映射需要重放的報文的端口號。在修改報文頭的過程中面臨一個checksum的問題,因為許多網卡支持 TCP/UDP/IP checksun的offloading,所以如果我們捕獲的流量是同一個系統產生的,則checksum就會是錯誤的,這在以後的重放中就會產生問題, 所以我們需要通過參數-F來固定checksum,在重放的過程中編輯報文時不會改變checksum的值。具體應用如下:

./tcpreplay -4 80:8080 -i eth1 -F /tmp/2.pcap
參數-F來固定checksum。
小結
靈活的運用tcpreplay的重寫功能,相信會在網絡的攻防檢測給大家帶來很大的幫助。

沒有留言: