论网络劫持
2018-01-04任雁军王艳付春会
任雁军 王艳 付春会
摘要:该文给出了网络劫持的定义和分类,分别对常见的网络劫持进行了原理分析并提出了相应的反制措施。
关键词:劫持;TCP/IP;IMSI;IMEI ;SSID;AP;ARP;DNS;DLL;会话;嗅探
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2018)30-0046-02
1 引言
当今社会互联网已经渗透人类日常生活的各个方面,人们对网络的依赖越来越强:网游、网聊、网购、网恋等,但是互联网在带给人们便利和帮助的同时也带来了诸如、病毒、木马等负面的东西,所以形形色色的信息泄露、账号被盗、个人电脑或移动终端系统感染病毒或被特洛伊木马控制等事件层出不穷,在诸多的网络事件中攻击者经常使用“劫持”(hijack)技术作为攻击的手段,比如针对手机用户的“伪基站劫持”、针对移动终端的“伪AP劫持”“会话劫持”“DNS劫持”“网站劫持”等。
2 网络劫持分类
网络劫持泛指在网络环境中攻击者利用技术手段强制占据某节点或某对象一定的控制权,致使被控制对象执行非常态的指令动作的一类网络攻击形式。
众所周知,互联网赖以发展的基础就是TCP/IP协议族,而TCP/IP协议族由四个层次组成:网络接口层、网络层、传输层、应用层,所以各种网络劫持按照原理和作用也分别属于四个层次。网络接口层劫持常见的有:伪基站劫持、伪AP劫持等。网络层劫持常见的有:ARP劫持等。传输层劫持常见的有:会话劫持等。应用层劫持常见的有:DNS劫持、网站劫持、Dll劫持等。
3 常见网络劫持分析及应对
3.1 伪基站劫持
众所周知,公用移动通信中的重要组成部分是基站,移动终端比如手机的无线信号都是通过基站发射和接收的,基站都是由通信运营商委托建设的,不是运营商建设,不以让用户通信为目的假基站,就是伪基站。伪基站劫持就是利用这种假的基站在网络借口层实现劫持移动终端(主要是手机)的一种攻击方法。
伪基站劫持的工作原理是:首先侦测到附近某基站的频率点,然后用远远大于真基站的功率发射同频的仿真广播控制信号,这时在其频率覆盖范围内处于待机状态的手机就会向其提出小区更新请求,此时“伪基站”就会伪装成真基站对这些手机进行鉴权、接收和控制,在整个鉴权过程中需要手机提供IMSI(国际移动用户识别码)和IMEI(国际移动设备身份码)等专属身份信息。之后就可以假冒运营商或其他用户给被劫持的手机发送恶意代码、垃圾短信或对手机用户进行监听定位等恶意行为了!整个劫持过程持续约10秒左右,用户很难察觉到异常。
伪基站的组成非常简单,通常由一台笔记本电脑、一台发射器、一根天线即可,但是它的危害却是严重的,它可以破坏通信网络,侵犯公民的通信自由、通信隐私,甚至可能被利用来实施诈骗、间谍等其他活动。
从技术层面上能有效遏制基站劫持的可行的办法是:完善移动网络的位置登记流程,鉴权过程中不光有网络对终端的鉴权,还应该有终端对网络的反向鉴权,所幸的是这种反向鉴权已经应用到WCDMA等网络中,而从普通用户的角度来讲也可以安装相应的防护软件如“手机安全先锋”就能有效拦截伪基站发送的垃圾信息并友好提示用户,帮助用户识别非法短信内容,避免受害。
3.2 伪AP劫持
AP是(Wireless) Access Point的缩写,即(无线)访问接入点, 是使用无线设备(手机等移动设备及笔记本电脑等)用户进入有线网络的接入点,在一般的公共场所(公园、机场、酒店等)都会提供这样的接入点(也叫WIFI热点)供大家接入Intenet,每个WIFI热点都有一个SSID(Service Set Identifier)可以理解为这个无线局域网的名称,伪AP劫持就是建立一个虚假的AP而达到劫持无线设备的攻击形式,也是发生在网络接口层的劫持。
伪AP的工作原理:例如某机场AP的SSID为AirPT,首先将伪AP的SSID也改名为AirPT,诱骗附近的移动设备接入,接着就可以给被劫设备植入恶意代码或利用嗅探工具捕获数据包,通过分析数据可以得到诸如邮箱密码、银行账号等敏感信息等。
对付这种劫持最有效的办法就是:慎入不明WIFI热点及公共AP!同时手机加装360手机卫士之类的防护软件防止恶意代码的入侵。
3.3 ARP劫持
ARP是地址解析协议(Address Resolution Protocol)的縮写,是将IP地址转化成物理地址的协议,这个协议在设计之初就存在漏洞即没有任何验证功能,所以导致了ARP劫持攻击又叫ARP欺骗的产生,当某网段遭ARP劫持攻击时,往往由于攻击者发出的大量数据包致使网速不稳定,甚至网络瘫痪。
ARP劫持原理:前提是攻击者事先获得了某网段中的一台主机的控制权,网段中每台主机与网关都维护一张ARP缓存表,攻击者通过向目标主机和网关发送相应的ARP响应数据修改其缓存表,以欺骗双方,从而影响目标主机与网关之间的数据流向达到攻击目的,这是发生在网络层的劫持。
遏制APR劫持的办法:(1)建议使用杀毒软件清除病毒如趋势科技SysClean工具。(2)由器和主机进行MAC地址及IP绑定。(3)ARP防火墙(例如AntiArp)软件抵御ARP攻击
3.4 会话劫持
两台主机间的一次通讯称为一次“会话”,例如用Telnet登录某台主机,就是一次Telnet“会话”;用浏览器访问某个网站,也是一次HTTP“会话”,可见在一次正常的网络会话中,一般只有主对双方参与。而话劫持(Session Hijack)就是指攻击者作为第三方也参与到一次正常的会话过程中,并联合使用嗅探和欺骗等技术,在正常数据包中插入恶意数据,或者监听双方的会话,甚至代替某一方主机接管会话的攻击方法。这是发生在传输层的劫持。
3.4.1 防范会话劫持的方法
(1)安装杀毒软件并及时更新病毒库进行实时检测。(2)正确使用防火墙并采用有效的访问控制措施:比如限制入网的连接、拒绝假冒本地地址从互联网上发来的数据包等。(3)使用数据加密,可以使用Kerberos或者IPsec工具,用SSH工具替代FTP和Telnet等。
4 DNS劫持
DNS劫持又叫域名劫持,指攻击者利用其他攻击手段(比如劫持了路由器或域名服务器等),篡改了某个域名的解析结果,使得指向该域名的IP变成了另一个IP,导致对相应网址的访问被劫持到另一个不可达的或者假冒的网址,从而实现非法窃取用户信息或者破坏正常网络服务的目的。这是发生在应用层的劫持。
DNS劫持的防范措施:
(1)使用安全可靠的DNS服务器做域名解析:下面是两组非常安全的DNS地址:8.8.8.8;8.8.4.4;114.114.114.114;114.114.115.115。
(2)使用OpenDNS网站免费提供的DNS服务器,或者使用你的ISP提供的DNS服务器。
5 DLL劫持
动态链接库(Dynamic Link Library或者Dynamic-link library,缩写为DLL),是Windows操作系统使用的一种共享函数库的方式,这些库函数一般用DLL作为扩展名,只有当可执行文件调用到DLL内的函数时,系统才会把DLL文件加载到存储器内,DLL文件本身的结构也是可执行文件,Windows提供的DLL文件中包含了许多函数和资源,一般放在系统目录(如: C:\Winows\System)下。
当Windows加载一个可执行文件时,加载器会先将其中的可执行模块映射到该进程的地址空间中,并通过分析可执行模块的输入表,并找出所需的DLL,同时也将它们映射到进程的地址空间中。
由于输入表中只包含了DLL名而没有包含它的路径名,所以加载器必须在磁盘上查找并加载DLL文件。顺序是:首先尝试从当前程序所在的目录加载,其次在Windows系统目录中查找并加载,最后在环境变量中指定的各个目录下查找并加载。利用这个特点,攻击者先在当前目录下伪造一个同名的DLL让系统优先调用,这个假的DLL含有相同的输出表,每个输出函数最后都会转向真正的系统DLL,只是这个假DLL在被调用时会先做一些攻击者预定的操作而后再转向真正的系统DLL,这个过程就叫DLL劫持。这种方法一般对除kernel32.dll、 ntdll.dll等核心动态库以外的DLL都有效,如网络应用程序中常用到的ws2_32.dll、游戏程序中常用的d3d8.dll及大部分应用程序都会调用的lpk.dll等,这些DLL都有可能可被劫持,显然这也是发生在应用层的劫持。
预防DLL劫持的办法:
(1)在调用LoadLibrary、LoadLibraryEx、CreateProcess及ShellExecute等涉及到模块加载的函数时,指定DLL加载的完整路径。
(2)使用Manifests文件或DLL重定向,可确保应用程序使用正确的DLL。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\KnownDLLs中设置的是调用系统DLL的首要查找目录。
(3)HKLM\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode的值设為1即可开启DLL安全搜索模式,搜索顺序中当前目录就排在系统目录之后了。
(4)使用空参数调用SetDllDirectory,可实现从搜索列表中取消当前目录。
6 总结
除了上面介绍的几种网络劫持外,还有许多种类的劫持如:网页劫持、跨站脚本劫持、3389端口劫持等,就如同在现实生活中的强盗可能会劫持人、劫持车、也可能会劫持轮船甚至劫持飞机一样,在虚拟与现实混杂的网络世界中将要发生的劫持事件、劫持方式、甚至劫持种类注定也会是层出不穷的,可以说有网络的地方就会有漏洞,也就会有劫持!对于使用网络的每个人来说,无论你是资深的专家,还是普通的个人,大家所面临的威胁是同等的,如果你能做到:
(1)养成良好的使用习惯:不访问不良网站。
(2)如果你是个程序员还需要养成严谨细致的编程习惯,减少漏洞的产生。
(3)选择适当的防护措施,比如安装防火墙、杀毒软件,并经常更新。
(4)经常给你的系统及应用软件打补丁。
那么你基本上就能远离恶性的网络劫持了!
【通联编辑:代影】