使用DNS exfiltrate文件

2021-04-01 23:49:52

曾几何时,政府审计员坚持给我坚持认为,击键记录器必须以root身份运行,否则它们无法正常运行。所以,我写了一个击键记录器,作为一个普通用户并向他展示。

他没有被逗乐。他说,我违反了政府的IT政策,通过向他展示该计划。

一段时间后,另一个审计员坚持认为,我无法将文件从他的安全飞离电脑复制到互联网上。他说他有强大的网络安全措施。所以,我写了另一个小程序,将文件从他的飞机计算机复制到互联网上。

当我向他展示了它的工作时,他也没有被逗乐,但更欣赏。

虽然我不再发布击键记录记录器源代码,但我发布了DNS-exfil源代码。

由于许多安全专业人员未能将DNS视为抵消数据的机制。 DNS也成熟,非常可靠,相对较快。

递归DNS服务器靠近最终用户。它们通常由本地网络管理员或大型提供商(如Google或CloudFlare)控制。他们及时回答来自客户计算机,手机和平板电脑的DNS查询。这是他们在这个世界的唯一目的。这允许用户快速到达example.com。

递归DNS服务器,通常,缓存答案,以便当另一个客户端询问exally.com时,随后的答案将更快,因为它将从缓存服务(如果记录的TTL尚未过期)。

递归解析器没有答案缓存时会发生什么?然后,它确实查找区域的权威DNS服务器并询问其中一个。 “嘿,xyz.example.com在哪里?"

权威DNS服务器由互联网上的人/组织控制。具有域名的任何人都有他们控件的权威DNS服务器。

SOA记录的第一个字段是域的主要权威DNS服务器。

$ dig + shoot soa facebook.coma.ns.facebook.com。 dns.facebook.com。 1617231193 14400 1800 604800 300 $ DIG + SHORT SOA Google.comns1.google.com。 dns-admin.google.com。 365995851 900 900 1800 60 $ DIG + SHORT SOA EXFIL.GO350.CON.GO350.com。 brad.go350.com。 1 7200 3600 1209600 3600

您可以使用NS替换SOA以查看比SOA记录中列出的更多权威服务器。组织通常有两个或更多。

$挖一个Xyz.example.com; <>>挖掘9.11.5-P4-5.1 + DEB10U3-DEBIAN<>>一个xyz.example.com ;;全球选项:+ CMD ;;得到了答案:;; - >>标题<< - 操作码:查询,状态:nx域,ID:39455 ;;标志:QR RD RA广告;查询:1,答案:0,权限:1,附加:1 ;;选择伪坐: EDNS:版本:0,标志:; UDP:4096 ;;问题部分:Xyz.example.com。在一个;;权限部分:example.com。 3177在soa ns.icann.org中。 noc.dns.icann.org。 2021022314 7200 3600 1209600 3600 ;;查询时间:0毫秒;;服务器:173.255.212.5#53(173.255.212.5);时间:3月31日星期三23:43:27 UTC 2021 ;; MSG大小RCVD:100

使用上面的Xyz.example.com的DIG,我们可以看到客户端计算机(在某些公司网络上)刚刚将数据XYZ发送到Internet上的某处的DNS服务器,该服务器对域example.com是权威的。

如果XYZ是客户端计算机上的某些文件的一小部分(例如/ etc / passwd)怎么办?如果用文件标记和索引发送了许多DNS查询,则何时何地?足够的DNS查询重新排序并重新组装整个文件?

发送 - 在客户端计算机上运行,​​打破文件并将其发送到DNS服务器伪装为实际DNS查询。

recv - 在DNS服务器上运行从DNS查询日志中重新组装文件。

在演示DNS-EXFIL时,我在发送之前检查文件的MD5 SUM,因此我可以将DNS服务器上的重组文件进行比较。

重新组装的文件与客户端上的原始文件相同的MD5。

当我最初编写DNS-EXFIL时,我使用了为DNS服务器绑定。但是,任何权威的DNS服务器都将执行。今天,我使用coredns,因为它更容易设置和更安全。

顶部的图片是我们花园的婴儿蜥蜴。 他正在爬上水管。