DNS隧道和其他狩獵/ RockNSM(Bro & ELK)

來(lái)源:https://blog.perched.io/dns-tunneling-other-hunts-w-rocknsm-bro-elk-52a4486e44d0

在這篇文章中,我將擴(kuò)展我的DNS排版檢測(cè)帖子,并(重新)介紹DNS隧道檢測(cè)。

為了使這篇博客文章有價(jià)值,并適用于防御者和威脅獵人,我們將涵蓋以下內(nèi)容:

1、與Bro一起設(shè)置RockNSM ELK實(shí)例。

2、為其余步驟的配置克隆GitHub存儲(chǔ)庫(kù)。

3、添加Elasticsearch搜索(模板)映射的額外字段。

4、Logstash配置額外的數(shù)據(jù),使DNS隧道檢測(cè)更有效。此外,DNS的豐富添加,如IDN(即:Punycode/emoji)或如果域名是IP地址,將有助于額外的威脅搜索。

5、用于檢測(cè)的Kibana可視化和儀表板。

6、測(cè)試檢測(cè)方法。

7、使用添加的logstash配置進(jìn)行額外的搜索/檢測(cè)。

在我開始之前,我必須認(rèn)識(shí)一個(gè)我上周在做盡職調(diào)查時(shí)偶然發(fā)現(xiàn)的博客(https://www.binorassocies.com/en/blogs/2017/10/logstash-bro-dns-tunnel.html)。

雖然我上面提到的博客有一些很好的信息,但是我仍然在寫這篇文章,因?yàn)槲覍?duì)它進(jìn)行了一些擴(kuò)展,提供了關(guān)于設(shè)置、Logstash配置和一些Kibana可視化/儀表板的完整演練。

一、DNS隧道/數(shù)據(jù)泄漏的介紹

雖然有許多工具可以用于植入C2和實(shí)現(xiàn)數(shù)據(jù)泄漏,但DNS的使用是一種有趣的方法。一般來(lái)說(shuō),它沒有被適當(dāng)?shù)乜刂?,沒有被監(jiān)視,在大多數(shù)網(wǎng)絡(luò)上都是允許的,并且大量的日志導(dǎo)致了巨大的覆蓋流量。因此,DNS隧道是C2的一個(gè)很好的選擇。

為了在技術(shù)上進(jìn)行級(jí)別設(shè)置,DNS請(qǐng)求可以包含255個(gè)字符(如果攻擊者控制DNS服務(wù)器,則包含更多)。正在泄漏的數(shù)據(jù)被編碼到域的其余空閑字符中。

例子:

這里我正在執(zhí)行一個(gè)查找neu5ron.com,但添加I are secret data...作為編碼字符串。

JEQGC4TFEBZWKY3SMV2CAZDBORQS4LRO.neu5ron.com

類似于DNS數(shù)據(jù)泄漏的工作方式,將DNS用于C2將使用空閑字符進(jìn)行來(lái)回通信(C2)。此外,由于能夠使用Base 64編碼,很多時(shí)候隧道將使用TXT記錄。

二、為什么每個(gè)人都應(yīng)該監(jiān)視/控制DNS

首先,我必須先說(shuō)明,即使在控制DNS時(shí),DNS隧道仍然是非常可能的。

DNS通常作為公司/網(wǎng)絡(luò)的一個(gè)關(guān)鍵優(yōu)先級(jí)被忽略。然而,它的用例非常廣泛——安全/預(yù)防、人力資源、威脅搜索,以及可以幫助網(wǎng)絡(luò)取證的歷史數(shù)據(jù)庫(kù)(被動(dòng)DNS)。

在我們深入研究檢測(cè)過(guò)程之前,重要的是要強(qiáng)調(diào)預(yù)防不是刀槍不入的。就像在安全領(lǐng)域的任何事情一樣,你必須權(quán)衡利弊,并向你的領(lǐng)導(dǎo)傳達(dá)你的安全實(shí)現(xiàn)是有成本效益的。

例如,如果正確設(shè)置DNS基礎(chǔ)設(shè)施(監(jiān)視和控制)需要4個(gè)小時(shí),并且可以防止100個(gè)小時(shí)的事件響應(yīng)工作或客戶/用戶停機(jī),那么您就有效地為您的公司/組織提供了經(jīng)濟(jì)利益。

我們已經(jīng)討論了監(jiān)視方面,但是控制是另一個(gè)關(guān)鍵的DNS進(jìn)程。如果對(duì)手能夠使用他們自己的DNS服務(wù)器,他們可以有效地使用他們想要的任何域。例如,下面是使用“adobe.com”作為C2的場(chǎng)景。想想有多少白名單,繞過(guò)……

2.1、預(yù)防措施

以下是一些你可以考慮的預(yù)防措施:

1、考慮阻塞動(dòng)態(tài)DNS,是的,甚至“APT”使用免費(fèi)域

2、動(dòng)態(tài)DNS的其他示例可以在這里找到1、2和3(https://threatconnect.com/blog/camerashy-infrastrucutre/)

3、下面是我編譯的動(dòng)態(tài)DNS域列表(https://gist.githubusercontent.com/neu5ron/8dd695d4cb26b6dcd997/raw/5c31ae47887abbff76461e11a3733f26bddd5d44/dynamic-dns.txt)

4、如果可能的話,考慮屏蔽廣告

5、考慮屏蔽惡意tld(https://www.spamhaus.org/statistics/tlds/)

2.2、積極影響

1、減少用戶停機(jī)時(shí)間,因?yàn)椴恍枰獜母腥局兄匦聫挠诚裰谢謴?fù)他們的機(jī)器

2、使用被動(dòng)DNS可以降低事件響應(yīng)、幫助臺(tái)以及在清理破壞過(guò)程中涉及到的任何人的成本(時(shí)間)

3、監(jiān)視和控制DNS可以防止在工作時(shí)用戶訪問(wèn)和使用某些內(nèi)容時(shí)可能出現(xiàn)的特定HR違規(guī)/問(wèn)題。成人的內(nèi)容或暴力的材料

2.3注意事項(xiàng)

1、管理和控制DNS需要對(duì)基礎(chǔ)設(shè)施的管理提供額外的支持

2、如果合法的域/服務(wù)被阻塞,這可能會(huì)導(dǎo)致用戶停機(jī)或業(yè)務(wù)影響

三、盡管DoH

即使使用HTTPs上的DNS (DoH), DNS隧道檢測(cè)也與管理網(wǎng)絡(luò)相關(guān),因?yàn)楹芏鄷r(shí)候允許DNS離開管理網(wǎng)絡(luò),但不允許出站HTTPs。

此外,也有可能使用JA3 + JA3S散列和一些額外的數(shù)據(jù)分析,如頻率/計(jì)數(shù),來(lái)檢測(cè)DoH(https://github.com/salesforce/ja3)。

我提到這個(gè)是因?yàn)樽罱恍┲饕腄NS提供者,甚至是瀏覽器實(shí)現(xiàn),都提供了通過(guò)TLS/HTTPs執(zhí)行DNS請(qǐng)求的能力。

如果你有任何關(guān)于DoH的額外發(fā)現(xiàn),你想添加,那么我將很高興收到你的來(lái)信,并將相應(yīng)地更新帖子。

四、一些檢測(cè)方法的問(wèn)題

簡(jiǎn)單地說(shuō),我想指出當(dāng)前DNS隧道檢測(cè)方法的一些缺陷。許多“開箱即用”的檢測(cè)方法比人們想象的復(fù)雜得多。

4.1域的長(zhǎng)度

在一周的時(shí)間內(nèi),我觀察到的域的長(zhǎng)度如下,其次是看到的次數(shù):

69 characters?—?36,926,289

72 characters?—?20,965,981

75 characters?—?24,475,506

78 characters?—?694,677

93 characters?—?12,678

174 characters?—?1,309

因?yàn)槲乙娺^(guò)一些SIEMs或分析是圍繞域查找的長(zhǎng)度構(gòu)建的,有些甚至特別指出超過(guò)70,這將導(dǎo)致數(shù)百萬(wàn)次警告…

4.2被動(dòng)DNS數(shù)據(jù)庫(kù)

我強(qiáng)烈推薦在日志基礎(chǔ)設(shè)施之外使用被動(dòng)DNS數(shù)據(jù)庫(kù),前提是您能夠負(fù)擔(dān)建立和管理基礎(chǔ)設(shè)施和(人力)資源。如果沒有這個(gè)選項(xiàng),您可以使用現(xiàn)有的SIEM/日志基礎(chǔ)結(jié)構(gòu)!

4.3機(jī)器學(xué)習(xí)

使用頻率和子域唯一計(jì)數(shù)的檢測(cè)方法將導(dǎo)致許多誤報(bào),以及使用數(shù)百個(gè)(如果不是數(shù)千個(gè))子域的數(shù)千個(gè)廣告域、內(nèi)容傳遞網(wǎng)絡(luò)、郵件提供者和其他合法網(wǎng)站。

此外,如果基于頻率(時(shí)間),只是通過(guò)隧道緩慢地通信以繞過(guò)該檢測(cè)機(jī)制的問(wèn)題。

五、給我們看一些有用的東西

1. ELK +Bro使用RockNSM

對(duì)于這個(gè)設(shè)置,我們將使用RockNSM。下面是一些詳細(xì)的演練(如果您已經(jīng)熟悉span和tap,請(qǐng)?zhí)揭曨l2)。

許多人都知道,監(jiān)視基礎(chǔ)設(shè)施是攻擊者的目標(biāo),這就是為什么我選擇RockNSM而不是其他ELK+Bro部署的原因,因?yàn)樗脑O(shè)計(jì)安全實(shí)現(xiàn)使用SELinux。

2. RockNSM Enrichment

git clone https://github.com/neu5ron/rocknsm-add-enrichment

現(xiàn)在將存儲(chǔ)庫(kù)上載到您的RockNSM服務(wù)器(如果您沒有從服務(wù)器本身執(zhí)行g(shù)it克隆)。

3.額外Elasticsearch配置

在開始獲取新數(shù)據(jù)之前,我們需要確保將這些新配置應(yīng)用到Elasticsearch數(shù)據(jù)庫(kù)中。

通過(guò)執(zhí)行以下操作添加Elasticsearch映射模板:

curl -H 'Content-Type: application/json' -XPUT "http://localhost:9200/_template/bro-domain-names" -d @rocknsm-add-enrichment/elasticsearch/index-mappings/92-bro-domain-names.json;

4. 額外的Logstash配置

為了檢測(cè)DNS隧道/exfil中的模式,我們需要為一級(jí)域(即TLD)、一級(jí)+二級(jí)域(即google.com)和一級(jí)+二級(jí)+三級(jí)域(即www.google.com)添加特定的字段。

原因是,如前所述,DNS隧道/exfil將創(chuàng)建大量惟一的子域。因此,我們將在域的第1 + 2級(jí)執(zhí)行聚合。

此外,我們還希望添加其他元數(shù)據(jù),如長(zhǎng)度和總級(jí)別(即:計(jì)算每個(gè)“.”)。

# Copy logstash file to rocknsm

sudo cp rocknsm-add-enrichment/logstash/conf.d/logstash-816-domain-enrichment-filter.conf /etc/logstash/conf.d/

# Give logstash permissions for the file

sudo chown logstash:logstash /etc/logstash/conf.d/logstash-816-domain-enrichment-filter.conf

# Change permissions

sudo chmod 640 /etc/logstash/conf.d/logstash-816-domain-enrichment-filter.conf

# Restart logstash to implement new configuration

sudo systemctl restart logstash

5. Kibana可視化/儀表盤

我已經(jīng)創(chuàng)建并共享了所有必要的Kibana可視化/儀表板,以便您自己查看和測(cè)試檢測(cè)方法。

首先,我們需要導(dǎo)入可視化/儀表盤文件:

這可以在Kibana中執(zhí)行,在登錄后,進(jìn)入“管理”,然后單擊“保存的對(duì)象”,然后單擊“導(dǎo)入”,并從之前收集的存儲(chǔ)庫(kù)中選擇“rocknsm-add-enrichment/ Kibana /dns.json”文件。

其次,我們需要刷新索引:

這可以在Kibana中完成,登錄后進(jìn)入“Management”,點(diǎn)擊“Index Patterns”,選擇“bro-*”索引,點(diǎn)擊右上角的recycle按鈕(“Refresh field list”)。



6. 檢測(cè)方法

我們將在第1 + 2級(jí)域上進(jìn)行聚合,并尋找唯一子域的高計(jì)數(shù)。

測(cè)試是使用注入的DNS隧道PCAP在我的兩個(gè)環(huán)境中執(zhí)行的。我將向您展示如何在您自己的網(wǎng)絡(luò)/設(shè)置中進(jìn)行同樣的操作。

執(zhí)行查找的主機(jī)唯一計(jì)數(shù)的子聚合可能有助于檢測(cè)。例如,一個(gè)主機(jī)在4000個(gè)子域上執(zhí)行查找要比500個(gè)主機(jī)在4000個(gè)惟一子域上執(zhí)行查找可疑得多。此外,域內(nèi)最大總長(zhǎng)度和最大級(jí)別上的子聚合允許我們做出更明智的決策。

7、PCAP注入實(shí)時(shí)網(wǎng)絡(luò)

您將注意到,在這個(gè)網(wǎng)絡(luò)中,隧道式域“chickenkiller[-]com”與具有最獨(dú)特子域的域相去甚遠(yuǎn)。事實(shí)上,它的子域名少了37,424個(gè)!

結(jié)合只有1臺(tái)UniqHosts執(zhí)行查找和惟一子域(惟一域名)與總查找(計(jì)數(shù))4,837 / 4,858的比率(在本例中,子域多于查找?),我們可以開始看到該域中的一些異常值。


8、PCAP注入(我的)家庭網(wǎng)絡(luò)


顯然,相同的隧道域比其他域突出得多。

另外,注意在這個(gè)儀表板中有一個(gè)domain_1n2n3_name的(數(shù)據(jù)表)可視化,它用于在co.uk之類的環(huán)境中進(jìn)行隧道/exfil的域。

這樣您就可以在唯一的1n2子域中過(guò)濾掉co.uk,但是類似于somedomain.co.uk這樣的東西仍然會(huì)出現(xiàn)在這個(gè)可視化中。

六、如何將PCAP注入您的網(wǎng)絡(luò)

# Find interface to replay the PCAP to

sudo tcpreplay --listnics

# Make sure to use one of the NICs that is listed that is the same as one of the listening NICs in /etc/rocknsm/config.yml under "rock_monifs"

grep -A5 "rock_monifs" /etc/rocknsm/config.yml

# Convert PCAP GZ to regular PCAP for replay

editcap -F pcap rocknsm-add-enrichment/testing/dnscat2.pcap.gz rocknsm-add-enrichment/testing/dnscat2.pcap

# Replay the PCAP, replacing "enp0s8" with your interface determined above

sudo tcpreplay -i enp0s8 -p 1250 rocknsm-add-enrichment/testing/dnscat2.pcap

# You should then see output similar to this

Actual: 10000 packets (1465823 bytes) sent in 7.99 seconds

Rated: 183245.6 Bps, 1.46 Mbps, 1250.12 pps

Flows: 7 flows, 0.87 fps, 9682 flow packets, 318 non-flow

Statistics for network device: enp0s8

Successful packets:? ? ? ? 10000

Failed packets:? ? ? ? ? ? 0

Truncated packets:? ? ? ? 0

Retried packets (ENOBUFS): 0

Retried packets (EAGAIN):? 0


將數(shù)據(jù)注入網(wǎng)絡(luò)后,等待一分鐘數(shù)據(jù)刷新,然后登錄Kibana查看檢測(cè)方法,然后進(jìn)入Dashboard,選擇“DNS隧道檢測(cè)”。





完成后,您可以從Elasticsearch/ELK中刪除“注入”數(shù)據(jù)(這樣我們就不會(huì)從測(cè)試數(shù)據(jù)中持續(xù)得到假陽(yáng)性)。這不會(huì)刪除您擁有的任何其他數(shù)據(jù)。

您可以通過(guò)CLI或Kibana“開發(fā)工具”執(zhí)行此操作,如下所示:



POST /bro-*/_delete_by_query

{

"query": {

"bool": {

"must": [

{ "match": { "domain_1n2n3_name": "sirknightthe.chickenkiller.com" } }

]

}

}

}


七. 額外的檢測(cè)/狩獵

因?yàn)槲覀冊(cè)贚ogstash管道中添加了額外的元數(shù)據(jù)/豐富,所以我們可以在DNS、HTTP和SSL日志中檢測(cè)額外的可輕松實(shí)現(xiàn)的目標(biāo)。

7.1檢測(cè)IDN/Punycode/Emoji域

當(dāng)IDN同質(zhì)圖攻擊被用來(lái)在訪問(wèn)他們認(rèn)為屬于蘋果的域名時(shí)欺騙用戶時(shí),引起了一些新聞。

domain.is_idn:true OR domain.has_non_ascii:true

7.2檢測(cè)SSL或HTTP中的IP地址域

domain.ends_with_int:true AND domain_type:(ssl OR http)

7.3檢測(cè)SSL或HTTP中無(wú)效的IP或域

domain.has_dot:false AND domain_type:(ssl OR http)

在您嘗試儀表板和可視化之后,我希望聽到您的任何反饋和建議。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容