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的隧道慢很多。