##0x0dnscat2介绍dnscat2是一款开源软件,使用DNS协议创建加密的C&C通道,通过预共享密钥进行身份验证;使用Shell及DNS查询类型(TXT、MX、CNAME、A、AAAA),多个同时进行的会话类似于SSH中的隧道。dnscat2的客户端是有Windows版和Linux版,服务端是用Ruby语言编写的。严格的说,dnscat2是一个命令与控制工具。 使用dnscat2隧道的模式有两种,分别是直连模式和中继模式。 如果目标内网放行所有的DNS请求,dnscat2会使用直连模式,通过UDP的53端口进行通信(不需要域名,速度快,而且看上去仍然像普通的DNS查询)。在请求日志中,所有的域名都是以 dnscat 开头的,因此防火墙可以很容易地将直连模式的通信检测出来。 如果目标内网的请求仅限于白名单服务器或指定的域,dnscat2会使用中继模式来申请一个域名,并将运行dnscat2服务端的服务器指定为受信任的DNS服务器。 DNS隧道的应用场景如下:在安全策略严格的内网环境中,常见的 C&C 通信端口会被众多安全设备所监控,该网段只允许白名单流量出站,同时其他端口都被屏蔽,传统的C&C通信无法建立。这种情况下,可以通过使用DNS建立隐蔽隧道来进行通信。 dnscat2通过DNS进行控制并执行命令。与同类工具相比,dnscat2具有如下特点: 支持多个会话 流量加密 使用密钥防止MiTM攻击 在内存中直接执行PowerShell脚本 隐蔽通信
##0x1流量分析 我们使用以下条件来筛选,选取所有192.168.157.144与192.168.157.145通信的数据包,且大小在 200 以上 ip.src eq 192.168.157.145 && ip.dst eq 192.168.157.144 && udp.length >200 明显的 dnscat2 流量特征(解析域名过长,使用 CNAME、TXT、MX 记录的查询) 导出为1.txt来进行解析 利用python来转换为字符串 按照每2个字符一组的方式转换为16进制数,再转为ASCII字符 |