STATEMENT
声明
由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
NO.1 DNS劫持
DNS查询工作原理
1、客户端发起DNS查询,首先查询本机host文件,若不存在,则请求到达DNS服务器,DNS服务器检查自身缓存,若存在则返回,若不存在则查询请求到递归解析器;
2、这时DNS服务器向根域名服务器请求查询,返回定级域名的权威域名服务器地址;
3、查询请求转向相应的顶级域的权威与服务器,得到二级域的权威域服务地址;
4、递归解析器向二级域的权威域服务器发起请求,得到A记录,即IP地址;
5、递归解析器返回结果给DNS服务器;
6、DNS服务器将结果存入自身缓存并且返回到客户端;
7、客户端得到结果并成功访问;
DNS劫持是指攻击域名解析服务器,或伪造域名解析服务器的方法,把目标网站域名解析到错误的IP地址从而实现用户无法访问目标网站的目的或者蓄意或恶意要求用户访问指定IP地址的目的。
判断方式
当切换DNS设置或者切换运营商网络之后,访问恢复正常。
排查方法
1、排查hosts文件
C:WindowsSystem32driversetc
/etc/hosts #Linux
2、排查本地网卡DNS配置
windows下:网络连接->以太网->详细信息
Linux:/etc/resolv.conf
1、首先使用nslookup查询该域名的查询结果
C:Usersowen>nslookup
默认服务器: pdns.das-security.cn
Address: 10.20.120.150
> www.baidu.com
服务器: pdns.das-security.cn
Address: 10.20.120.150
非权威应答:
名称: www.a.shifen.com
Addresses: 220.181.38.149
220.181.38.150
Aliases: www.baidu.com
2、指定google或电信的DNS服务器查询
> server 8.8.8.8
默认服务器: dns.google
Address: 8.8.8.8
> www.baidu.com
服务器: dns.google
Address: 8.8.8.8
非权威应答:
名称: www.wshifen.com
Addresses: 104.193.88.77
104.193.88.123
Aliases: www.baidu.com
www.a.shifen.com
> server 114.114.114.114
默认服务器: public1.114dns.com
Address: 114.114.114.114
> www.baidu.com
服务器: public1.114dns.com
Address: 114.114.114.114
非权威应答:
名称: www.a.shifen.com
Addresses: 14.215.177.39
14.215.177.38
Aliases: www.baidu.com
防御方法
1、锁定hosts文件不允许修改;
2、配置本地DNS为自动获取或者将其设置为可信DNS服务器;
3、路由器采用强密码策略;
4、及时更新路由器固件;
5、使用加密协议进行DNS查询。
NO.2 HTTP劫持
常规HTTP劫持中,攻击者一般会通过入侵服务器,在网站源码中植入恶意代码。当用户正常访问源服务器时,被篡改的网站源码会跳转到指定的恶意网站。
劫持手法与排查思路
01、客户端js劫持
在网页中插入js脚本,通过js进行url跳转,一般情况下,会通过js混淆加密来增加识别难度。如下:通过js劫持从搜索引擎中来的流量。
<script>var s=document.referrer;
if(s.indexOf("baidu")>0||s.indexOf("soso")>0||s.indexOf("google")>0||s.indexOf("yahoo")>0||s.indexOf("sogou")>0||s.indexOf("youdao")>0||s.indexOf("bing")>0){self.location='http://www.xxxx.com';
}</script>
排查思路:查看网页源代码或者抓包分析http流量,找到源代码中插入的js代码,删除js代码后恢复。
02、服务端代码劫持
网站源码被篡改,在首页或配置文件中引入恶意代码。如下:通过判断User-agent与Referer,进行快照劫持。
<?php
error_reporting(0);
//判断是否为百度蜘蛛,然后进行内容劫持
if(stripos($_SERVER["HTTP_USER_AGENT"],"baidu")>-1){
$file = file_get_contents('http://www.baidu.com');
echo $file;
exit;
}
//判断是否来自百度搜索,然后进行url跳转
if(stristr ($_SERVER['HTTP_REFERER'],"baidu.com")) {
Header("Location: http://www.baidu.com/");//指定跳转
exit;
}
?>
排查思路:查看网站首页引入了哪些文件,依次访问相关的文件源码,确认可疑的代码,去除包含文件后恢复。备份网站源码及文件完整性验证非常重要,可以帮助我们在上万行的代码中快速找到恶意代码。
03、nginx反向代理劫持
以前遇到过一个网站做了网页防篡改,无法通过修改网站源码劫持,攻击者通过修改nginx的配置文件,通过正则匹配url链接,配置proxy_pass代理转发实现url劫持。
location ~ /[0-9a-z]+sc {
proxy_pass https://www.xxxx.com/;
}
排查思路:总结url劫持规律,中间件配置文件也是需要关注的位置。
04、利用301重定向劫持
通过HTTP重定向实现301劫持,可以检查网站根目录下的配置文件web.config,确认是否有相关设置。
<httpRedirect enabled="true" destination="http://xxxx.com/1.php" childOnly="true" httpResponseStatus="Permanent" />
05、IIS恶意模块劫持
这种手法相对比较隐蔽,网站目录中查不到webshell和挂马页面,但使用特定的路径、Referer或者UA访问,页面会加载暗链。
排查思路:排查加载的异常dll文件,如没有签名、创建时间不匹配需重点关注。可使用火绒剑或Process Monitor协助排查。
NO.3 TCP链路劫持
TCP劫持事件多为抢先回包劫持会话。如果发生劫持使用抓包工具捕获浏览器访问的链路层流量,可发现浏览器产生的单个请求,同时会受到2个不同的TCO响应报文。因为伪造的第一个数据包先到,因此正常的TCP响应数据包被忽略了。
大部分的劫持被用于篡改HTTP响应内容,投放的内容多为游戏、色情、赌博等领域广告。攻击者一般通过旁路设备监听链路流量,实现劫持。也有的会利用攻击设备,在链路内捕获用户的正常访问流量,记录用户敏感信息,从而进行广告推广、电信诈骗。
链路劫持判断依据
TTL:表现为TCP 报的 TTL 不一致甚至抖动很大。一种情况是跟正常包的ttl相差明显;另一种情况是通过ttl来判断操作系统类型,进而间接判断数据包是否有异常。
Identification:出现不符合 RFC 标准的情况。对于给定地址和协议的ip包来说,它的identification应该是公差为1的单调递增数列。每一个IP封包都有一个16位的唯一识别码。当程序产生的数据要通过网络传送时都会被拆散成封包形式发送,当封包要进行重组的时候这个ID就是依据了。标识字段唯一地标识主机发送的每一份数据报。通常每发送一份消息它的值就会加1。
Banner信息:response中的header头比对
虽然TTL从字面上翻译,是可以存活的时间,但实际上TTL是IP数据包在计算机网络中可以转发的最大跳数。TTL字段由IP数据包的发送者设置,在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去。如果在IP包到达目的IP之前,TTL减少为0,路由器将会丢弃收到的TTL=0的IP包并向IP包的发送者发送 ICMP time exceeded消息。
防御方法
使用HTTPS
参考链接
https://www.cnblogs.com/croso/p/5285177.html
https://blog.csdn.net/qq_23936389/article/details/115301156
RECRUITMENT
招聘启事
END
长按识别二维码关注我们
本文始发于微信公众号(雷神众测):流量劫持应急响应
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论