第3章网 络 隐 身
学习要求:
理解IP地址欺骗技术的基本原理。
掌握MAC地址欺骗技术的基本原理,掌握相应系统配置方法和工具使用方法。
掌握各种网络地址转换技术的基本原理。
掌握代理隐藏技术的基本原理,熟悉各种代理工具的使用方法。
了解网络隐身的其他方法。
IP地址是计算机网络中任何联网设备的身份标识,MAC地址是以太网终端设备的链路层标识,所谓网络隐身就是使得目标不知道与其通信的设备的真实IP地址或MAC地址,当安全管理员检查攻击者实施攻击留下的各种痕迹时,由于标识攻击者身份的IP或MAC地址是冒充的或者不真实的,管理员无法确认或者需要花费大量精力去追踪该攻击的实际发起者。因此,网络隐身技术可以较好地保护攻击者,避免其被安全人员过早发现。常用的网络隐身技术主要包括IP地址欺骗(或IP盗用)、MAC地址欺骗(或MAC盗用)、网络地址转换、代理隐藏、账户盗用和僵尸主机等技术。
3.1IP地址欺骗
因为TCP/IP协议路由机制只检查报文目标地址的有效性,所以攻击者可以定制虚假的源IP地址,有效避免安全管理员的IP地址追踪。另外,目标的访问控制组件可能使用IP地址列表的方式来设置允许或禁止对网络服务的访问,攻击者可以盗用其他IP地址,从而绕过访问控制的设置,对目标服务实施攻击。
IP欺骗(IP Spoofing)就是利用主机间的正常信任关系,通过修改IP报文中的源地址,以绕开主机或网络访问控制,隐藏攻击者的攻击技术。IP地址欺骗的示意图如图31所示,在网络中假设有三台主机A、B、C,其中A和B可以直接通信(或者相互信任且无须认证),攻击者C冒充主机A实现与主机B通信,A可能在线也可能不在线。
图31IP欺骗示意图
当C与A在同一个局域网内,实施IP欺骗相对容易,因为攻击者可以观察B返回的报文,根据有关信息成功伪造A发出的报文。当C和A分属不同网络时,如果冒充A与B进行UDP通信,C只需要简单修改发出的IP报文的源IP地址即可。但是如果A与B建立TCP连接进行通信,C实施IP欺骗就非常困难,因为C无法获得响应报文,因此无法得知该连接的初始序列号,而TCP通信是基于报文序号的可靠传输,所以C伪造的TCP报文很大概率被拒绝,攻击欺骗成功的概率较低。
一次成功的IP欺骗通常需要三个步骤(见图32)。
图32IP欺骗实现过程
1. 使A停止工作
由于C要假冒A,C必须保证A无法收到任何有效的TCP报文,否则A会发送RST标记的报文给B,从而使得TCP连接被关闭。可以通过拒绝服务攻击、社会工程学或中间人攻击等方法使得A停止工作。
2. 猜测初始序列号
C必须知道B与A建立连接时的TCP报文的初始序列号(ISN),即第二路握手报文中的SEQ字段值。C只有在第三路握手报文中将确认号设置为ISN+1,才能通过B的验证,成功建立连接。在无法截获第二路握手报文时,如何正确猜测ISN值是欺骗成功与否的关键。
TCP的ISN使用32位计数器,通常难以猜中,但是由于某些操作系统协议栈实现时,ISN的选择存在一定规律,有的基于时间,有的随机增加,还有的固定不变,因此可以预先对某个端口进行多次连接,采样其ISN基值和变化规律,作为猜测未来连接的ISN的参考信息。当采集的信息足够对ISN进行预测时,即可开始建立假冒连接。当C发送的报文在到达B时,根据猜测ISN的不同结果,B有以下四种处理方式:
(1) ISN正确,C的报文被B成功接收。
(2) ISN小于B期望的数字,B丢弃该报文。
(3) ISN大于B期望的数字,且在B的滑动窗口内,B认为这是乱序到达的报文,将报文放入缓冲区中并等待其他报文。
(4) ISN大于B期望的数字,且超出B的滑动窗口,B将丢弃该报文并重发确认报文给A。
3. 建立欺骗连接
IP欺骗之所以能够实施是因为通信主机之间仅凭IP地址标识对方身份,并且攻击者可以正确猜测TCP连接的初始序列号(ISN)。
对于IP欺骗可采取的防范措施包括:
(1) 使用基于加密的协议如IPSec或SSH进行通信,通信时使用口令或证书进行身份验证。
(2) 使用随机化的ISN,攻击者无法猜测正常连接的序列号。
(3) 在路由器上配置包过滤策略,检测报文的源IP地址是否属于网络内部地址,如果来自外部网络的报文的源IP地址属于内部网络,那么该报文肯定是伪造的。
(4) 不要使用基于IP地址的信任机制。
3.2MAC地址欺骗
MAC地址欺骗(或MAC盗用,MAC Spoofing)通常用于突破基于MAC地址的局域网访问控制(图33),例如在交换机上限定只转发源MAC地址在预定义的访问列表中的报文,其他报文一律拒绝。攻击者只需要将自身主机的MAC地址修改为某个存在于访问列表中的MAC地址即可突破该访问限制,而且这种修改是动态的并且容易恢复。还有的访问控制方法将IP地址和MAC进行绑定,目的是使得一个交换机端口只能提供给一位付费用户的一台主机使用,此时攻击者需要同时修改自己的IP地址和MAC地址去突破这种限制。
图33基于MAC地址的访问控制
在不同的操作系统中修改MAC地址有不同的方法,其实质都是网卡驱动程序从系统中读取地址信息并写入网卡的硬件存储器,而不是实际修改网卡硬件ROM中存储的原有地址,即所谓的“软修改”,因此攻击者可以为了实施攻击临时修改主机的MAC地址,事后很容易恢复为原来的MAC地址。
在Windows中,几乎所有的网卡驱动程序都可以从注册表中读取用户指定的MAC地址,当驱动程序确定这个MAC地址有效时,就会将其编程写入网卡的硬件寄存器中,而忽略网卡原来的MAC地址。以下以Windows 7 SP1家用版为例,说明Windows系统中修改MAC地址的两种方法。一种方法是直接在网卡的“配置→高级→网络地址”菜单项中修改修改网卡地址时需要注意前三个字节表示网卡厂商,如果修改后的网卡地址不属于该厂商,修改后的地址可能会无效。系统只会设置有效的地址,所以必须检查修改后的地址是否生效。(图34),系统会自动重启网卡,修改后可以在控制台窗口中键入“ipconfig /all”命令检查网卡地址是否已成功更改,如果选择“不存在”则恢复为原有MAC地址。该方法针对有线网卡有效,但是无线网卡默认没有“网络地址”,无法使用这种方法修改。
图34网卡属性中修改网络地址
另一种方法是直接修改注册表,生成与第一种方法相同的针对无线网卡的“网络地址”设置。运行注册表编辑器(regedit.exe),在“\HKEY_LOCALMACHINE\SYSTEM\ControlSet001\Control\Class”键下搜索网卡的描述信息,定位网卡配置选项在注册表中的位置,本例中无线网卡的对应配置选项在注册表项“[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972E32511CEBFC108002BE10318}\0015”内(图35)。然后在“Ndi\params”子项下新建子项“NetworkAddress”,并新增如图36所示的所有键值,即可在无线网络连接的配置选项中生成“网络地址”菜单项,并可自由修改MAC地址。当地址修改成功后,注册表会自动在上述表项(即0015项)中增加一个“NetworkAddress”的键值(图37)。也可以将以下文本导入注册表(保存为.reg后缀的文件名),产生与图36相同的效果:
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\{4D36E972E32511CEBFC108002BE10318}\0015\Ndi\params\NetworkAddress]
"default"="000000000000"
"Optional"="1"
"ParamDesc"="网络地址"
"type"="edit"
"UpperCase"="1"
"LimitText"="12"
图35注册表中网卡的配置选项
图36新增NetworkAddress项及键值前后的网卡连接菜单项对比
……
展开