什么是域前置

Domain Fronting,中文译名 “域前置” 或 “域名前置”,是一种用于隐藏真实C2(Command and Control)服务器IP且同时能伪装为与高信誉域名通信的技术,多用于木马受控端和控制端之间的隐蔽通信。

利用该技术,可以让受控端以为程序是在和一个高信誉域名通信,但实际上却是在和我们的C2服务器进行通信

其他知识–域名解析记录类型

1、A (Address) 记录
是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的web server上。同时也可以设置您域名的二级域名。

img

2、别名(CNAME)记录
也被称为规范名字。这种记录允许您将多个名字映射到同一台计算机。 通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为“host.mydomain.com”(A记录)。 它同时提供WWW和MAIL服务,为了便于用户访问服务。可以为该计算机设置两个别名(CNAME):WWW和MAIL。 这两个别名的全称就是“www.mydomain.com”和“mail.mydomain.com”。实际上他们都指向“host.mydomain.com”。

img

3、MX(Mail Exchanger)记录
是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据 收信人的地址后缀来定位邮件服务器。例如,当Internet上的某用户要发一封信给 user@zhongjie.com 时,该用户的邮件系统通过DNS查找zhongjie.com这个域名的MX记录,如果MX记录存在, 用户计算机就将邮件发送到MX记录所指定的邮件服务器上。

img

4、TXT记录
TXT记录一般指为某个主机名或域名设置的说明,如:
1)admin IN TXT “jack, mobile:13800138000”;
2)mail IN TXT “邮件主机, 存放在xxx ,管理人:AAA”,Jim IN TXT “contact: abc@mailserver.com“也就是您可以设置 TXT ,以便使别人联系到您。

img

5、NS记录
ns记录全称为Name Server 是一种域名服务器记录,用来明确当前你的域名是由哪个DNS服务器来进行解析的。这里的NS记录只对子域名生效。例如用户希望由12.34.56.78这台服务器解析news.mydomain.com,则需要设置news.mydomain.com的NS记录。

环境

域控制器

Windows Server 2008 R2: 192.168.184.132(NAT)

域名:wcl078.shiyan078

用户名:administrator

密码:123456@abc

配置

image-20220509095907956

image-20220509095956218

继续安装AD配置域名为wcl078.shiyan078

image-20220509100037635

创建一个域用户wcl078,密码使123456@abc

img

域成员服务器

Windows7: 192.168.184.153(NAT)

域名:wcl078.shiyan078

用户名:wcl078

密码:123456@abc

CS服务端

Ubuntu:(公网ip)

安装jdk8

apt install openjdk-8-jre-headless

CS客户端

kali: 192.168.3.78 (桥接模式,不能是NAT,不然之后用wireshark抓取流量的时候会抓到CS客户端与服务端通信的流量,因为wireshark抓的是网卡的流量,别问我为什么知道QAQ)

更换JDK

由于我的kali自带jdk11需要更换为jdk8

访问https://www.oracle.com/java/technologies/downloads/#java8,下载jdk8

img

下载后将该压缩包放到kali虚拟机中,执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 解压压缩包
tar zxvf jdk-8u331-linux-x64.tar.gz

# 将解压后的文件移动到/opt目录下
mv ./jdk1.8.0_251/ /opt/

# 然后使用update-alternatives命令进行安装
update-alternatives --install /usr/bin/java java /opt/jdk1.8.0_331/bin/java 1

update-alternatives --install /usr/bin/javac javac /opt/jdk1.8.0_331/bin/javac 1

update-alternatives --set java /opt/jdk1.8.0_331/bin/java

update-alternatives --set javac /opt/jdk1.8.0_331/bin/javac

最后使用java -version查看版本,更换成功

img

补充:若之后想切换回jdk11,执行update-alternatives --config java来选择切换

img

CS实现域前置

需要一个域名和CND,这里我是在某云注册的域名和CDN

img

这里使用站长之家的多地ping来看CDN是否生效http://ping.chinaz.com/,有不同ip即可

img

服务端cs在运行时需要加一个.profile文件,我是基于amazon.profile文件的基础上改了两个地方,将Host改为我的域名

img

img

改好后重新运行teamserver,/teamserver vpsip mima amazon.profile

之后kali客户端连接,配置监听器

img

再利用cs生成攻击命令

img

然后在受害主机win7的cmd中执行刚刚生成攻击命令,之后CS上线

img

在weblog中查看结果如下

img

在受害主机win7上使用wireshark抓包分析,过滤出ip为vpsip的,发现并没有流量,说明域前置隐藏成功

img

还可以在cmd中执行netstat查看建立的连接,并不是和我的vps建立的,也能说明CDN生效了

img

到此域前置到此部署完毕

参考

域前置攻击复现

基于国内某云的 Domain Fronting 技术实践

Kali重新安装JAVA环境

Kali中安装Java环境

拓展了解

域前置之“中外差异”