cobaltstrike dns隧道的上线

基础

要理解cobaltstrike dns隧道的上线过程,首先要理解dns协议。

Domain Name System,dns是域名系统的缩写。默认使用的是53端口。

dns隧道使用的场景是在一个严格的内网环境,安全设备或者策略不允许其他端口出网,但是使用nslookup命令,发现可以使用dns协议,可以向外部的dns服务器发送请求,来进行外部域名解析。

外部域名解析也就是一个域名转换为IP的行为。

首先我们要了解一点dns记录的知识:

A记录: 将域名指向一个IPv4地址(例如:100.100.100.100),需要增加A记录

NS记录: NS(Name Server)记录是域名服务器记录,用来指定该域名由哪个DNS服务器来进行解析。

dns隧道连接过程

1.被控端收到命令之后,向自己记录的dns服务器请求解析域名。

2.内网dns收到请求之后找不到该域名,将请求交给权威域名服务器查询。

3.权威域名服务器向其他服务器同步请求。

4.找到对应的ip为自己的cs服务器,解析请求,实现dns数据链路传输。

dns配置

为了让靶机通过域名上线,所以我们首先要注册一个域名。

匿名邮箱注册、域名注册(省略)

域名解析记录:可以查看域名提供商的帮助文档,例如阿里云帮助文档来添加对应的域名解析记录

创建一条A记录,将域名指向teamserver的IP 例如 www.attack.com 指向 192.168.1.1

创建一条NS记录,将域名test.attack.com指向域名www.attack.com

打个比方:IP就是身份证号,域名就是名字

创建A记录的过程,就好比办身份证的时候,**将名字和身份证号绑定**的过程,于是有关部门就能够通过身份证查询到姓名。

创建NS记录,就是将身份信息录入全国联网数据库的过程。如果没有NS记录,那么即使有你的名字和身份证号,那么该如何找到你呢?所以要通过NS记录,指定一个可以提供查询服务的域名服务器。

根服务器主要用来管理互联网的主目录,最早是IPV4,全球只有13台。所以域名服务器根本无法保存世界上所有的域名和IP的记录。这是通过dns递归查询来办到的。

dns递归查询是指有一个域名1234.profiles.losenolove.com 本地dns服务器会首先向根域名服务器root server查询,root server会返回,我不知道,你去问.com服务器

管理.com域名的dns服务器会返回,我不知道,你去问管理losenolove.com域名的dns服务器

管理losenolove.com域名的dns服务器:我不知道,你去问管理profiles.losenolove.com的dns服务器

管理profiles.losenolove.com的dns服务器:域名1234.profiles.losenolove.com的ip是xxx

windows配置dns服务器

如何配置一个dns服务器,来进行域名解析。在真实渗透的时候,域名提供商会在前端页面提供域名配置的地方。在这里我们可以在本地配置dns服务器,可以更清楚地了解dns服务器对域名解析的过程。

创建一个正向区域

正向查找就是域名解析为IP,反向查找就是IP解析为域名

新建域名

设置区域名称,俗称域名

添加A记录

将域名和teamserver的IP进行绑定

新建委派

到sangforsec.com的区域中再新建一个子域,然后在子域新建一条委派,将委派到前面创建的A记录上,解析过程,dns隧道工具在访问 dnstunnel.dnssec.sangforsec.com这个域时,大致的迭代过程是这样的,它会先找到 sangforsec.com这个域,然后在这个域下,它找到了 dnssec 的这个子域,然后又在子域中发现dnstunnel.dnssec.sangforsec.com原来是一条被委派的 ns 记录,最后请求就会被交给这条 ns 记录对应的 A 记录即 ip 去处理。

A记录指向DNS服务器IP>NS记录指向A记录域名

DNS服务器尝试使用nslookup解析ns记录,可以正常解析到A记录的主机IP 上面步骤搞定后,在内网主机和公网DNS隧道服务器端配置DNS为10.100.18.30,并进行解析测试

公网区域入侵者DNS隧道服务器端-KaliMaster 内网受控主机Sangfor-4

最后使用

checkin mode dns-txt与靶机进行session交互

案例

设置ns记录(www.attackcat.com – 10.246.95.135)意思是名称服务器的ip是10.246.95.135,指定这个名称服务器进行域名解析。这个名称服务器是攻击者伪造的。受害者会向伪造的名称服务器发送域名解析请求,伪造名称服务器会将tun.attackcat.com这个域名解析为teamserver的ip。这个ns记录可以有多条,也就是说,可以有多个名称服务器来进行解析。

设置a记录 (tun.attackcat.com – 10.246.95.135)

使用nslookup www.attackcat.com查看结果0.0.0.0,说明伪造的名称服务器成功了。 如果使用nslookup www.attackcatt.com,结果会提示dns请求超时。

ns记录和a记录在dns协议中起到什么样的作用

如果dns服务器只设置了A记录,那么ping tun.attackcat.com可以找到teamserver的IP。但是要通过dns协议来进行通信,回顾一下原理。目标主机访问——内部dns服务器——内部dns服务器往root dns server请求——root dns server向下进行域名解析——伪造的name server解析域名到teamserver的IP

所以虽然内部主机可以ping通teamserver,但是不能直接与teamserver通信。要通过dns协议,让许多dns服务器来进行域名解析的方式,作为代理传递数据包。所以dns隧道速度会相比于其他协议http、https的隧道慢很多。

参考资料

  • https://www.cnblogs.com/bluestorm/p/10345334.html
  • https://www.cobaltstrike.com/help-dns-beacon
  • [工具的使用 CobaltStrike中DNS Beacon的使用](https://www.ershicimi.com/p/5817d5d237e6bafd8ed013587403a38a)
  • 内网流量规避
  • 名称服务器