一、流量劫持概述
1、流量劫持简介
是一种通过在应用系统中植入恶意代码、在网络中部署恶意设备、使用恶意软件等手段,控制客户端与服务端之间的流量通信、篡改流量数据或改变流量走向,造成非预期行为的网络攻击技术。如流氓软件、广告弹窗、网址跳转。 流量劫持的主要目的: 引流推广、钓鱼攻击、访问限制、侦听窃密。
2、常见流量劫持
1)DNS劫持 DNS是一项互联网服务,用于网站域名与IP地址的相互转换。 DNS劫持又称域名劫持,是指控制DNS查询解析的记录,在劫持的网络中拦截DNS请求,分析匹配请求域名,返回虚假IP信息或不做任何操作使请求无效。目的是将用户引导至非预期目标,或禁止用户访问。 一般只会发生在特定的网络范围内,大部分集中在使用默认DNS服务器上网的用户。因此我们可以通过直接访问目标IP,或设置正确的DNS来绕过DNS劫持。
2)HTTP劫持 HTTP(超文本传输协议)工作在OSI模型的应用层,用于万维网数据通信。基于C/S架构,客户端主要为浏览器,服务端为Nginx等中间件。http的request请求包括:请求头部、请求行、空行、请求数据。response请求包括:状态行、响应头、空行和响应体。
HTTP劫持发生在运营商网络节点上。对流量进行检测,当流量协议为HTTP时,进行拦截处理。劫持流程如下: (1)获取网络流量,并在其中标识出HTTP协议流量 (2)拦截服务器响应包,对响应包的内容进行篡改 (3)将篡改之后的数据包抢先于正常响应包返回给客户端 (4)客户端先接收篡改的数据包,并将后面的响应包丢弃。 上述过程可以说是TCP劫持的一部分。在常规的HTTP劫持中,攻击者一般会通过入侵源服务器,在网站内植入恶意JavaScript脚本。当用户正常访问源服务器时,被篡改的网站源码会运行跳转到指定的恶意网站。
3)链路层劫持 数据链路层介于物理层和网络层之间。最基本的服务是将源网络层的数据可靠地传输到相邻节点的目标机网络层。 链路层劫持是指攻击者在受害者至目标服务器之间,恶意植入或控制网络设备,以达到监听或篡改流量数据的目的。
(1)TCP劫持 TCP会话劫持的原理是劫持客户端与服务端已经建立的TCP通信,并伪造其中一方,以达到嗅探侦听、篡改流量数据、控制服务端的目的。 在TCP三次握手过程中双方确认数据传输正常都是基于彼此的ACK和SEQ值,无论在跨网段还是同网段内,攻击者都能伪造x与y的值,而原先的TCP连接会由于SEQ序号与ACK序号值的不匹配而断开连接。
(2)ARP劫持 ARP(地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议。ARP工作在数据链路层。网络设备之间互相通信是用mac地址而不是IP地址,arp的功能是把IP地址转换为mac地址。 ARP劫持发生在局域网中,分为两种:双向欺骗和单向欺骗。 在一次ARP劫持中,A要与网关通信,首先要使用ARP协议获取对方的mac地址,但攻击者可以不停地向A发送ARP响应包,伪造网关响应。这时A的流量将全部被攻击者捕获,A将因为错误的网关mac地址而断网。攻击者开启IP转发后,也向网关发送ARP响应包欺骗网关,伪装自己为A ,从而捕获网关到A的流量。这样A与网关通信的流量都经由攻击者捕获转发,看起来A可以正常上网,但实际上攻击者已经可以控制A与网关之间的所有流量。
3、常见攻击场景
1)DNS劫持 (1)本地DNS劫持,通过修改本地hosts文件、更改DNS设置实现攻击。 (2)路由器DNS劫持,利用弱密码、固件漏洞等,攻击路由器更改路由器DNS设置。 (3)中间人DNS攻击,通过拦截DNS查询请求,返回虚假IP。 (4)恶意DNS服务器攻击
2)HTTP劫持(关键点在于识别HTTP协议,并进行标识) (1)嗅探侦听流量,伪造HTTP响应 (2)钓鱼攻击 (3)灰产广告引流 常见场景:在通过搜索引擎访问网站时会发生跳转,但在直接访问网站时并不会跳转。这是因为攻击者在植入的恶意代码中加入了对HTTP请求头的referer内容的判断。
3)链路层劫持 (1)TCP劫持 主要目的: 嗅探侦听流量,窃密; 访问限制,重定向导致断网或者钓鱼攻击; 灰产广告引流。 主要发生在运营商层面,如用户在网上冲浪时,浏览器的右下角总会出现各种各样的小广告。 (2)ARP劫持 多用于局域网攻击。 主要目的:嗅探侦听流量,窃密; 阻断用户网络连接。
4、流量劫持防御方法
1)DNS劫持防御 (1)锁定hosts文件,不允许修改 (2)配置本地dns为自动获取,或将其设置为可信DNS服务器 (3)路由器采用强密码策略 (4)及时更新路由器固件 (5)使用加密协议进行dns查询
2)HTTP劫持防御 使用https进行数据交互。
3)链路层劫持防御 (1)TCP劫持 使用加密通信; 避免使用共享式网络。 (2)ARP劫持 避免使用共享式网络; 将IP地址与mac地址静态绑定; 使用具有arp防护功能的终端安全软件和网络设备。
二、常规处置方法
1、DNS劫持处置
1)局域网DNS劫持处置 (1)个人终端DNS劫持处置 配置静态DNS服务; 配置hosts文件,进行静态IP域名绑定,并对hosts文件加密; 对个人终端进行病毒查杀; 修改路由器等设备的弱密码; 加强安全意识,若发现劫持事件,则应第一时间联系当地运营商投诉等。 (2)企业DNS服务器劫持处置 将异常DNS服务器隔离(防止攻击者利用dns服务器进一步入侵),并启用备用DNS服务器。
2)广域网DNS劫持处置 更换DNS服务器设置。
2、HTTP劫持处置
(1)网站使用https证书,客户端使用https协议进行访问 (2)拆分HTTP请求数据包 (3)使用CSP与DOM事件进行监听防御
3、链路层劫持处置
1)TCP劫持处置 通过本地复现流量劫持事件,并捕获网络流量,将正常的TCP包与伪造的进行比对分析。 2)ARP劫持处置 将IP地址与终端MAC地址进行绑定。 (1)开启计算机本地arp防火墙 (2)定位问题主机,进行处理 (3)如为蠕虫病毒,应尽快部署全面的流量监控
三、常用命令和工具
1、nslookup命令(用于查询Internet域名服务器的程序) 交互式:
非交互式:
2、dig命令(用于查询域名信息)
3、traceroute命令(用于路由跟踪)
4、wireshark工具(网络流量捕获分析软件)
5、流量嗅探工具 如Cain、NetFuke、Ettercap,可作用在局域网范围内进行流量嗅探、获取局域网内敏感信息等。
四、技术实战指南
1、初步预判
出现以下情况,很有可能遭遇流量劫持: 1)网页带有广告或其他引流特性信息 2)浏览器经常接收到不同服务器返回的3××的重定向类HTTP状态码,并跳转至恶意页面 3)之前能正常访问的网站突然无法正常访问,或者访问出错。切换IP或DNS后可正常访问。 4)网络中存在大量异常流量,如大量ARP报文、缺失的TCP报文等。 5)无法正常上网
可通过以下方法判断当前流量劫持的类型: (1)DNS劫持:切换当前运营商网络或DNS配置时,访问恢复正常 (2)HTTP劫持:使用浏览器F12功能监听网络流量与脚本文件,观察是否发生在源服务器的本地资源 (3)链路层劫持:TCP劫持一般发生在互联网访问时,出现广告引流现象,切换运营商网络或物理配置时恢复正常;ARP劫持一般发生在局域网内,可以使用抓包工具,发现大量的ARP请求。
2、DNS劫持排查
1)排查本地信息 排查并确认hosts文件(是计算机系统中一个记录IP与域名对应关系的文件,可帮助用户快速解析域名)是否出现恶意篡改。
2)排查本地网卡DNS配置信息 在Windows系统中,打开网络连接窗口,双击以太网选项单击详细信息查看详情。通常情况下,DNS服务器为自动获取。若为手动填写,则需要检查该处内容是否为本机最初设定的地址,如果发现有改动,则可以通过网络检查服务器地址是否异常。
3)排查异常DNS服务器 使用nslookup命令,并使用server选项设置不同的DNS服务器,可解析域名。当某个DNS服务器响应与其他DNS服务器不同时,即可初步确认该DNS出现问题。
3、HTTP劫持排查
在排查前,可先检查劫持是否因为网站被恶意入侵,攻击者篡改了网站源码所致。 按F12,打开Network功能(打开时要勾选Preserve log之后在Initiator中查看Request call stack),监测网站加载的本地静态资源和外部资源,从而可判断是在哪一步发生的跳转。
4、TCP劫持排查
TCP劫持事件多为抢先回包劫持会话。如果发生劫持,使用抓包工具捕获浏览器访问的链路层流量,可发现对浏览器产生的单个请求,同时会收到2个不同的TCP响应报文,因为伪造的第一个数据包先到,所以第二个正常的TCP响应数据包被客户端忽略了(被认为是TCP重传包并被丢弃)
大部分TCP劫持被用于篡改http响应内容,投放的内容多为游戏等领域广告。攻击者一般通过旁路设备监听链路流量,实现劫持。也有的攻击者会利用攻击设备,在链路内捕获用户的正常访问流量,记录用户敏感信息,从而进行广告推广、电信诈骗等。
5、ARP劫持排查
大部分的ARP攻击都是由于蠕虫病毒造成的。 使用arp命令可查询本机arp缓存中IP地址和mac地址的对应关系、添加或删除静态对应关系等。 使用arp -a命令可查看缓存表,判断IP地址与mac地址是否存在冲突。在局域网内抓包筛选arp请求,并进行比对。
|