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

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

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

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

1支示、與Bro一起設(shè)置RockNSM ELK實例炭懊。

2票渠、為其余步驟的配置克隆GitHub存儲庫翩活。

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

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

5魂毁、用于檢測的Kibana可視化和儀表板。

6出嘹、測試檢測方法席楚。

7、使用添加的logstash配置進行額外的搜索/檢測税稼。

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

雖然我上面提到的博客有一些很好的信息郎仆,但是我仍然在寫這篇文章只祠,因為我對它進行了一些擴展,提供了關(guān)于設(shè)置扰肌、Logstash配置和一些Kibana可視化/儀表板的完整演練抛寝。

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

雖然有許多工具可以用于植入C2和實現(xiàn)數(shù)據(jù)泄漏,但DNS的使用是一種有趣的方法盗舰。一般來說晶府,它沒有被適當(dāng)?shù)乜刂疲瑳]有被監(jiān)視钻趋,在大多數(shù)網(wǎng)絡(luò)上都是允許的川陆,并且大量的日志導(dǎo)致了巨大的覆蓋流量。因此爷绘,DNS隧道是C2的一個很好的選擇书劝。

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

例子:

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

JEQGC4TFEBZWKY3SMV2CAZDBORQS4LRO.neu5ron.com

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

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

首先,我必須先說明镣衡,即使在控制DNS時霜定,DNS隧道仍然是非常可能的廊鸥。

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

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

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

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

2.1顾彰、預(yù)防措施

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

1、考慮阻塞動態(tài)DNS胃碾,是的涨享,甚至“APT”使用免費域

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

3厕隧、下面是我編譯的動態(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峦朗、減少用戶停機時間建丧,因為不需要從感染中重新從映像中恢復(fù)他們的機器

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

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

2.3注意事項

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

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

三迄埃、盡管DoH

即使使用HTTPs上的DNS (DoH)疗韵, DNS隧道檢測也與管理網(wǎng)絡(luò)相關(guān),因為很多時候允許DNS離開管理網(wǎng)絡(luò)侄非,但不允許出站HTTPs蕉汪。

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

我提到這個是因為最近一些主要的DNS提供者叠赦,甚至是瀏覽器實現(xiàn)驹马,都提供了通過TLS/HTTPs執(zhí)行DNS請求的能力。

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

四泳姐、一些檢測方法的問題

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

4.1域的長度

在一周的時間內(nèi)缎患,我觀察到的域的長度如下,其次是看到的次數(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

因為我見過一些SIEMs或分析是圍繞域查找的長度構(gòu)建的阎肝,有些甚至特別指出超過70挤渔,這將導(dǎo)致數(shù)百萬次警告…

4.2被動DNS數(shù)據(jù)庫

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

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

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

此外稽鞭,如果基于頻率(時間)鸟整,只是通過隧道緩慢地通信以繞過該檢測機制的問題。

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

1. ELK +Bro使用RockNSM

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

許多人都知道,監(jiān)視基礎(chǔ)設(shè)施是攻擊者的目標疹娶,這就是為什么我選擇RockNSM而不是其他ELK+Bro部署的原因伴栓,因為它的設(shè)計安全實現(xiàn)使用SELinux。

2. RockNSM Enrichment

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

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

3.額外Elasticsearch配置

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

通過執(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配置

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

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

此外痕貌,我們還希望添加其他元數(shù)據(jù),如長度和總級別(即:計算每個“.”)糠排。

# 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可視化/儀表板,以便您自己查看和測試檢測方法超升。

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

這可以在Kibana中執(zhí)行,在登錄后室琢,進入“管理”乾闰,然后單擊“保存的對象”,然后單擊“導(dǎo)入”盈滴,并從之前收集的存儲庫中選擇“rocknsm-add-enrichment/ Kibana /dns.json”文件涯肩。

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

這可以在Kibana中完成巢钓,登錄后進入“Management”病苗,點擊“Index Patterns”,選擇“bro-*”索引症汹,點擊右上角的recycle按鈕(“Refresh field list”)硫朦。



6. 檢測方法

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

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

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

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

您將注意到旺矾,在這個網(wǎng)絡(luò)中蔑鹦,隧道式域“chickenkiller[-]com”與具有最獨特子域的域相去甚遠。事實上箕宙,它的子域名少了37,424個!

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


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


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

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

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

六、如何將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查看檢測方法,然后進入Dashboard翘簇,選擇“DNS隧道檢測”撬码。





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

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



POST /bro-*/_delete_by_query

{

"query": {

"bool": {

"must": [

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

]

}

}

}


七. 額外的檢測/狩獵

因為我們在Logstash管道中添加了額外的元數(shù)據(jù)/豐富彻犁,所以我們可以在DNS叫胁、HTTP和SSL日志中檢測額外的可輕松實現(xiàn)的目標。

7.1檢測IDN/Punycode/Emoji域

當(dāng)IDN同質(zhì)圖攻擊被用來在訪問他們認為屬于蘋果的域名時欺騙用戶時袖裕,引起了一些新聞曹抬。

domain.is_idn:true OR domain.has_non_ascii:true

7.2檢測SSL或HTTP中的IP地址域

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

7.3檢測SSL或HTTP中無效的IP或域

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

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末谤民,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子疾宏,更是在濱河造成了極大的恐慌张足,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件坎藐,死亡現(xiàn)場離奇詭異为牍,居然都是意外死亡,警方通過查閱死者的電腦和手機岩馍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門碉咆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蛀恩,你說我怎么就攤上這事疫铜。” “怎么了双谆?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵壳咕,是天一觀的道長席揽。 經(jīng)常有香客問我,道長谓厘,這世上最難降的妖魔是什么幌羞? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮竟稳,結(jié)果婚禮上属桦,老公的妹妹穿的比我還像新娘。我一直安慰自己他爸,他們只是感情好地啰,可當(dāng)我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著讲逛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪岭埠。 梳的紋絲不亂的頭發(fā)上盏混,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機與錄音惜论,去河邊找鬼许赃。 笑死,一個胖子當(dāng)著我的面吹牛馆类,可吹牛的內(nèi)容都是我干的混聊。 我是一名探鬼主播,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼乾巧,長吁一口氣:“原來是場噩夢啊……” “哼句喜!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起沟于,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤咳胃,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后旷太,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體展懈,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年供璧,在試婚紗的時候發(fā)現(xiàn)自己被綠了存崖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡睡毒,死狀恐怖来惧,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吕嘀,我是刑警寧澤违寞,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布贞瞒,位于F島的核電站,受9級特大地震影響趁曼,放射性物質(zhì)發(fā)生泄漏军浆。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一挡闰、第九天 我趴在偏房一處隱蔽的房頂上張望乒融。 院中可真熱鬧,春花似錦摄悯、人聲如沸赞季。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽申钩。三九已至,卻和暖如春瘪阁,著一層夾襖步出監(jiān)牢的瞬間撒遣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工管跺, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留义黎,地道東北人。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓豁跑,卻偏偏與公主長得像廉涕,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子艇拍,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,514評論 2 348

推薦閱讀更多精彩內(nèi)容