1. 前言
DNSChef是针对渗透测试人员和恶意软件分析师的高度可配置的DNS代理。它能够精细配置哪些DNS回复以修改或简单地代理真实响应。为了利用该工具,您必须手动配置DNS服务器以指向DNSChef。
2. 执行参数
选项参数:
-h,--help
显示帮助信息并退出
--fakedomain thesprawl.org.google.com
以逗号分隔的域名列表,将解析为上述参数中指定的FAKE值。 所有其他域名将解析为其真实值。
--truedomains thesprawl.org.google.com
以逗号分隔的域名列表,这些列表将解析为TRUE值。 所有其他域名将解析为上述参数中指定的伪造值。
假DNS记录:
--fakeip 192.0.2.1
用于匹配DNS查询的IP地址。 如果您在不指定域名的情况下使用此参数,则所有“ A”查询都会被欺骗。 如果需要定义多个IP地址,请考虑使用–file参数。
--fakeipv6 2001:db8::1
用于匹配DNS查询的IPv6地址。 如果您在不指定域名的情况下使用此参数,则将欺骗所有“ AAAA”查询。 如果需要定义多个IPv6地址,请考虑使用--file参数。
--fakemail mail.fake.com
用于匹配DNS查询的MX名称。 如果您在不指定域名的情况下使用此参数,则会欺骗所有“ MX”查询。 如果需要定义多个MX记录,请考虑使用--file参数。
--fakealias www.fake.com
用于匹配DNS查询的CNAME名称。 如果您在不指定域名的情况下使用此参数,则会欺骗所有“ CNAME”查询。 如果需要定义多个CNAME记录,请考虑使用--file参数。
--fakens ns.fake.com
用于匹配DNS查询的NS名称。 如果您在不指定域名的情况下使用此参数,则会欺骗所有“ NS”查询。 如果需要定义多个NS记录,请考虑使用--file参数。
--file FILE
指定一个文件,该文件包含用于DNS响应的DOMAIN = IP对(每行一对)的列表。 例如:google.com = 1.1.1.1将强制所有对“ google.com”的查询都解析为“ 1.1.1.1”。 IPv6地址将被自动检测。 通过将--file与其他参数组合,您甚至可以更加具体。 但是,从文件获取的数据将优先于其他数据。
可选的运行时参数:
--logfile FILE
指定一个日志文件以记录所有活动
--nameservers 8.8.8.8#53 or 4.2.2.1#53#tcp or 2001:4860:4860::8888
用逗号分隔的替代DNS服务器列表,用于处理代理请求。 名称服务器可以采用P或IP#PORT格式。 提供多个服务器时,将从列表中随机选择的服务器用于代理请求。 默认情况下,该工具在Pv4模式下运行时使用oogle的公共DNS服务器8.8.8.8,在Pv6模式下运行时使用2001:4860:4860 :: 8888。
-i 27.0.0.1 or ::1,--interface 127.0.0.1 or ::1
定义用于DNS侦听器的接口。 默认情况下,该工具将127.0.0.1用于IPv4模式和:: 1或IPv6模式。
-t,--tcp
使用TCP DNS代理而不是默认的UDP。
-6,ipv6
在IPv6模式下运行。
-p 53,--port 53
侦听DNS请求的端口号。
-q,--quiet
不显示标题。
3. 实际测试使用
3.1 网络连接
笔记本电脑无线连接某流量卡提供的wifi。
笔记本电脑的virtualbox里的kali启动,网络选择桥接模式。
笔记本电脑的热点打开。
手机安卓设备无线连接笔记本电脑的热点。
3.2 网络配置
3.2.1 检查笔记本电脑的网络信息
无线局域网适配器 WLAN:
连接特定的 DNS 后缀 . . . . . . . :
本地链接 IPv6 地址. . . . . . . . : fe80::8158:d09:dfd0:cbe5%10
IPv4 地址 . . . . . . . . . . . . : 192.168.43.168
子网掩码 . . . . . . . . . . . . : 255.255.255.0
默认网关. . . . . . . . . . . . . : 192.168.43.1
在kali启动后的网络配置中需要用到。kali的网络配置详见如下博客:
5分钟完成 Kali linux安装(基于VirtualBox)_virtualbox安装kali_晓翔仔的博客-CSDN博客
3.2.2 检查kali的网络信息,得知kali的ip是192.168.43.209
┌──(root㉿kali)-[/home/kali]
└─# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.43.209 netmask 255.255.255.0 broadcast 192.168.43.255
inet6 fe80::a00:27ff:fe22:464f prefixlen 64 scopeid 0x20<link>
ether 08:00:27:22:46:4f txqueuelen 1000 (Ethernet)
RX packets 53891 bytes 67773851 (64.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 19008 bytes 1363876 (1.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1000 (Local Loopback)
RX packets 4 bytes 240 (240.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 4 bytes 240 (240.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3.2.3 设置计算机的DNS地址为kali的地址
3.3 DNSChef启动、配置规则、测试
检查下kali里DNSChef在不在
┌──(root㉿kali)-[/home/kali]
└─# dnschef
_ _ __
| | version 0.4 | | / _|
__| |_ __ ___ ___| |__ ___| |_
/ _` | '_ \/ __|/ __| '_ \ / _ \ _|
| (_| | | | \__ \ (__| | | | __/ |
\__,_|_| |_|___/\___|_| |_|\___|_|
iphelix@thesprawl.org
(21:09:00) [*] DNSChef started on interface: 127.0.0.1
(21:09:00) [*] Using the following nameservers: 8.8.8.8
(21:09:00) [*] No parameters were specified. Running in full proxy mode
^C(21:10:01) [*] DNSChef is shutting down.
我们拿南京两所知名大学的url做测试。通过在浏览器登录学校网站时wireshak抓包(dns answer)获得两所学校的IP,分别如下
南京大学: www.nju.edu.cn 202.119.32.7
南京航空航天大学:www.nuaa.edu.cn 218.94.136.180
我们将南京大学的url和南京航空航天大学的ip 进行匹配,并写入DNS服务器。
--interface后的ip填写kali的ip。
dnschef --fakeip=218.94.136.180 --fakedomains=www.nju.edu.cn --interface 192.168.43.209 -q
在手机安卓设备上使用浏览器尝试输入两所大学的网址做测试。
观察到以下格式打印,说明DNS设置成功,DNSChef会将他处理过的域名打印出来,供分析。
proxing the response of *** 表示走的是标准DNS代理,默认是8.8.8.8,当然这是可配的。
cooking the response of *****表示是我们配置的欺骗规则,可以看到我们的DNS将南京大学的url(www.nju.edu.cn)用南京航空航天大学的ip做了响应(218.94.136.180)
而现象是: 南京航空航天大学的网站可以正常打开。而南京大学的网站无法打开。
至于为什么我们输入南京大学的url,不会显示南京航空航天大学的网址,这个可能和浏览器使用的一些安全策略有关。尚不清楚。
4.最后
本文使用kali自带的DNSChef工具做DNS欺骗,工具成功生效了。
参考
最新kali之dnschef_dnschef工具运行不反应_Vanony的博客-CSDN博客