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

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

在这篇文章中,我将扩展我的DNS排版检测帖子,并(重新)介绍DNS隧道检测。

为了使这篇博客文章有价值,并适用于防御者和威胁猎人,我们将涵盖以下内容:

1、与Bro一起设置RockNSM ELK实例。

2、为其余步骤的配置克隆GitHub存储库。

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

4、Logstash配置额外的数据,使DNS隧道检测更有效。此外,DNS的丰富添加,如IDN(即:Punycode/emoji)或如果域名是IP地址,将有助于额外的威胁搜索。

5、用于检测的Kibana可视化和仪表板。

6、测试检测方法。

7、使用添加的logstash配置进行额外的搜索/检测。

在我开始之前,我必须认识一个我上周在做尽职调查时偶然发现的博客(https://www.binorassocies.com/en/blogs/2017/10/logstash-bro-dns-tunnel.html)。

虽然我上面提到的博客有一些很好的信息,但是我仍然在写这篇文章,因为我对它进行了一些扩展,提供了关于设置、Logstash配置和一些Kibana可视化/仪表板的完整演练。

一、DNS隧道/数据泄漏的介绍

虽然有许多工具可以用于植入C2和实现数据泄漏,但DNS的使用是一种有趣的方法。一般来说,它没有被适当地控制,没有被监视,在大多数网络上都是允许的,并且大量的日志导致了巨大的覆盖流量。因此,DNS隧道是C2的一个很好的选择。

为了在技术上进行级别设置,DNS请求可以包含255个字符(如果攻击者控制DNS服务器,则包含更多)。正在泄漏的数据被编码到域的其余空闲字符中。

例子:

这里我正在执行一个查找neu5ron.com,但添加I are secret data...作为编码字符串。

JEQGC4TFEBZWKY3SMV2CAZDBORQS4LRO.neu5ron.com

类似于DNS数据泄漏的工作方式,将DNS用于C2将使用空闲字符进行来回通信(C2)。此外,由于能够使用Base 64编码,很多时候隧道将使用TXT记录。

二、为什么每个人都应该监视/控制DNS

首先,我必须先说明,即使在控制DNS时,DNS隧道仍然是非常可能的。

DNS通常作为公司/网络的一个关键优先级被忽略。然而,它的用例非常广泛——安全/预防、人力资源、威胁搜索,以及可以帮助网络取证的历史数据库(被动DNS)。

在我们深入研究检测过程之前,重要的是要强调预防不是刀枪不入的。就像在安全领域的任何事情一样,你必须权衡利弊,并向你的领导传达你的安全实现是有成本效益的。

例如,如果正确设置DNS基础设施(监视和控制)需要4个小时,并且可以防止100个小时的事件响应工作或客户/用户停机,那么您就有效地为您的公司/组织提供了经济利益。

我们已经讨论了监视方面,但是控制是另一个关键的DNS进程。如果对手能够使用他们自己的DNS服务器,他们可以有效地使用他们想要的任何域。例如,下面是使用“adobe.com”作为C2的场景。想想有多少白名单,绕过……

2.1、预防措施

以下是一些你可以考虑的预防措施:

1、考虑阻塞动态DNS,是的,甚至“APT”使用免费域

2、动态DNS的其他示例可以在这里找到1、2和3(https://threatconnect.com/blog/camerashy-infrastrucutre/)

3、下面是我编译的动态DNS域列表(https://gist.githubusercontent.com/neu5ron/8dd695d4cb26b6dcd997/raw/5c31ae47887abbff76461e11a3733f26bddd5d44/dynamic-dns.txt)

4、如果可能的话,考虑屏蔽广告

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

2.2、积极影响

1、减少用户停机时间,因为不需要从感染中重新从映像中恢复他们的机器

2、使用被动DNS可以降低事件响应、帮助台以及在清理破坏过程中涉及到的任何人的成本(时间)

3、监视和控制DNS可以防止在工作时用户访问和使用某些内容时可能出现的特定HR违规/问题。成人的内容或暴力的材料

2.3注意事项

1、管理和控制DNS需要对基础设施的管理提供额外的支持

2、如果合法的域/服务被阻塞,这可能会导致用户停机或业务影响

三、尽管DoH

即使使用HTTPs上的DNS (DoH), DNS隧道检测也与管理网络相关,因为很多时候允许DNS离开管理网络,但不允许出站HTTPs。

此外,也有可能使用JA3 + JA3S散列和一些额外的数据分析,如频率/计数,来检测DoH(https://github.com/salesforce/ja3)。

我提到这个是因为最近一些主要的DNS提供者,甚至是浏览器实现,都提供了通过TLS/HTTPs执行DNS请求的能力。

如果你有任何关于DoH的额外发现,你想添加,那么我将很高兴收到你的来信,并将相应地更新帖子。

四、一些检测方法的问题

简单地说,我想指出当前DNS隧道检测方法的一些缺陷。许多“开箱即用”的检测方法比人们想象的复杂得多。

4.1域的长度

在一周的时间内,我观察到的域的长度如下,其次是看到的次数:

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或分析是围绕域查找的长度构建的,有些甚至特别指出超过70,这将导致数百万次警告…

4.2被动DNS数据库

我强烈推荐在日志基础设施之外使用被动DNS数据库,前提是您能够负担建立和管理基础设施和(人力)资源。如果没有这个选项,您可以使用现有的SIEM/日志基础结构!

4.3机器学习

使用频率和子域唯一计数的检测方法将导致许多误报,以及使用数百个(如果不是数千个)子域的数千个广告域、内容传递网络、邮件提供者和其他合法网站。

此外,如果基于频率(时间),只是通过隧道缓慢地通信以绕过该检测机制的问题。

五、给我们看一些有用的东西

1. ELK +Bro使用RockNSM

对于这个设置,我们将使用RockNSM。下面是一些详细的演练(如果您已经熟悉span和tap,请跳到视频2)。

许多人都知道,监视基础设施是攻击者的目标,这就是为什么我选择RockNSM而不是其他ELK+Bro部署的原因,因为它的设计安全实现使用SELinux。

2. RockNSM Enrichment

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

现在将存储库上载到您的RockNSM服务器(如果您没有从服务器本身执行git克隆)。

3.额外Elasticsearch配置

在开始获取新数据之前,我们需要确保将这些新配置应用到Elasticsearch数据库中。

通过执行以下操作添加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将创建大量惟一的子域。因此,我们将在域的第1 + 2级执行聚合。

此外,我们还希望添加其他元数据,如长度和总级别(即:计算每个“.”)。

# 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可视化/仪表盘

我已经创建并共享了所有必要的Kibana可视化/仪表板,以便您自己查看和测试检测方法。

首先,我们需要导入可视化/仪表盘文件:

这可以在Kibana中执行,在登录后,进入“管理”,然后单击“保存的对象”,然后单击“导入”,并从之前收集的存储库中选择“rocknsm-add-enrichment/ Kibana /dns.json”文件。

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

这可以在Kibana中完成,登录后进入“Management”,点击“Index Patterns”,选择“bro-*”索引,点击右上角的recycle按钮(“Refresh field list”)。



6. 检测方法

我们将在第1 + 2级域上进行聚合,并寻找唯一子域的高计数。

测试是使用注入的DNS隧道PCAP在我的两个环境中执行的。我将向您展示如何在您自己的网络/设置中进行同样的操作。

执行查找的主机唯一计数的子聚合可能有助于检测。例如,一个主机在4000个子域上执行查找要比500个主机在4000个惟一子域上执行查找可疑得多。此外,域内最大总长度和最大级别上的子聚合允许我们做出更明智的决策。

7、PCAP注入实时网络

您将注意到,在这个网络中,隧道式域“chickenkiller[-]com”与具有最独特子域的域相去甚远。事实上,它的子域名少了37,424个!

结合只有1台UniqHosts执行查找和惟一子域(惟一域名)与总查找(计数)4,837 / 4,858的比率(在本例中,子域多于查找?),我们可以开始看到该域中的一些异常值。


8、PCAP注入(我的)家庭网络


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

另外,注意在这个仪表板中有一个domain_1n2n3_name的(数据表)可视化,它用于在co.uk之类的环境中进行隧道/exfil的域。

这样您就可以在唯一的1n2子域中过滤掉co.uk,但是类似于somedomain.co.uk这样的东西仍然会出现在这个可视化中。

六、如何将PCAP注入您的网络

# 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


将数据注入网络后,等待一分钟数据刷新,然后登录Kibana查看检测方法,然后进入Dashboard,选择“DNS隧道检测”。





完成后,您可以从Elasticsearch/ELK中删除“注入”数据(这样我们就不会从测试数据中持续得到假阳性)。这不会删除您拥有的任何其他数据。

您可以通过CLI或Kibana“开发工具”执行此操作,如下所示:



POST /bro-*/_delete_by_query

{

"query": {

"bool": {

"must": [

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

]

}

}

}


七. 额外的检测/狩猎

因为我们在Logstash管道中添加了额外的元数据/丰富,所以我们可以在DNS、HTTP和SSL日志中检测额外的可轻松实现的目标。

7.1检测IDN/Punycode/Emoji域

当IDN同质图攻击被用来在访问他们认为属于苹果的域名时欺骗用户时,引起了一些新闻。

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)

在您尝试仪表板和可视化之后,我希望听到您的任何反馈和建议。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容