Hosts是一个没有扩展名的系统文件,其作用就是将网址域名与其对应的IP地址建立一个关联数据库,当用户在浏览器中输入一个网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应网页,如果没有找到,则系统会再将网址提交DNS域名解析服务器进行IP地址的解析,引用来源:https://baike.baidu.com/item/hosts/10474546。
0x01 hosts在渗透中的利用场景
- 1.绕过CDN云WAF安全防护(360网站卫士案例);
- 2.绕过双因素身份验证产品(Duo Security案例);
- 3.偶尔会有内网的一些重要业务IP(梭哈王老哥补充);
- 4.禁止WAF/反病毒等安全防护软件的特征/病毒库更新。
虽然在当前已控主机上的hosts文件里能看到一些内网IP解析域名,但不一定都能访问的,可能需要我们当前的IP地址在对方的白名单列表当中才能正常访问,如KaliLinux系统下的hosts.allow白名单和hosts.deny黑名单文件来限制访问,如图1-1-44。
图1-1-44 hosts文件内网解析域名
打开软件或点击更新时会与目标Web服务器上的某个文件进行版本对比,如果存在较新版本则自动安装更新。不过在禁止前得先找到更新服务器的IP和域名,然后修改目标主机上的hosts文件,或者设置Windows系统防火墙的出入站规则,如图1-1-45。
图1-1-45 D盾更新特征库数据包
0x02 Metasploit修改hosts方法
默认只有Admin/System具备hosts文件的完全控制权限,而且还有可能开启UAC限制等,Users用户只有读取和执行权限,很少有人会去修改它的默认权限,修改hosts文件前记得先备份一下!!!
(1) edit命令修改hosts
Meterpreter下的edit命令好像是直接用的vi还是vim编辑器进行编辑的,这里得注意下路径中的\双反斜杠问题,如图1-1-46。
图1-1-46 edit修改目标hosts文件
(2) echo命令修改hosts
进入cmdshell后可以通过Windows的echo命令修改目标主机的hosts文件,这里得注意下>>双大于号问题,一个>为覆盖写入,两个>为叠加写入,如图1-1-47。
图1-1-47 echo修改目标hosts文件
(3) hostsedit脚本修改hosts
这个脚本执行后会在它当前目录下自动备份一个hosts文件,两个参数,-e(单条):run hostsedit -e 127.0.0.1,google.com,-l(多条):run hostsedit -l /tmp/hostname.txt,如图1-1-48。
127.0.0.1 www.t00ls.net
127.0.0.1 www.freebuf.com
127.0.0.1 www.secpulse.com
127.0.0.1 forum.90sec.com
图1-1-48 hostsedit修改目标hosts文件
(4) inject_host模块修改hosts
可以进入到inject_host模块中执行,也可以直接在Meterpreter下执行,这个模块是hostsedit脚本的替代品,说不定以后会在哪个新版Metasploit中将该脚本删除,如图1-1-49、1-1-50。
图1-1-49 inject_host修改目标hosts文件
图1-1-50 inject_host修改目标hosts文件
(5) hosts相关的几个后渗透模块
post/linux/busybox/enum_hosts //读取/var/hosts
post/windows/gather/enum_hostfile //读取%windir%\system32\drivers\etc\hosts
post/windows/manage/remove_host //删除hosts文件中指定的域名
图1-1-51 enum_hosts读取目标hosts文件