【www.gbppp.com--经典美文】
Loadrunner中的IP欺骗的设置以及误区
一. 什么是IP欺骗?
做什么事首先要问个为什么,如果知道为什么了,即使不知道如何做,简单,google it,答案总会找得到,google.cn不行,google.com总行,来自全球的搜索结果,总会有帮助。
IP spoof即IP 电子欺骗,我们可以说是一台主机设备冒充另外一台主机的IP地址,与其它设备通信,从而达到某种目的技术。 IP是网络层的一个非面向连接的协议, IP数据包的主要内容由源IP地址,目地IP地址,所传数据构成,IP的任务就是根据每个数据报文的目的地址,路由完成报文从源地址到目的地址的传送。至于报文在传送过程中是否丢失或出现差错,IP不会考虑,那是TCP的事。对IP来讲,源设备与目的设备没有什么关系,它们是相互独立的。IP包只是根据数据报文中的目的地址发送,因此借助高层协议的应用程序来伪造IP地址是比较容易实现的。
二. 为什么要设置IP欺骗?
对于某些服务器,是根据IP来分配资源,当某个IP地址访问频繁或者访问量过大时,服务器会拒绝访问,或者让你输入验证码,当然也有可能是来避免搜索引擎robot的任意爬取。
网上还有些言论是说使用更多的IP来模拟较真实的用户使用环境,来测试负载均衡技术的处理能力,但是我始终想不明白这跟那个有什么关系,如果服务器可以接受同一IP大量访问,负载均衡不照样起作用,照样可以被测试到吗?(私人观点,意见可以保留)
三. 设置前的准备工作
1. 要有局域网的环境,因为只能设置局域网内的网段;
2. 本地的IP设置不能为“自动获取”,必须指定一个静态IP。
四. 如何设置
第一步:
运行Mercury LoadRunner- Tools-IP Wizard
第二步:
选择create new setting,点击“下一步”
此时出现的页面是让输入服务器的IP地址,Loadrunner通过该地址更新路由表。
客户端计算机上添加新的IP地址后,服务器需要将该地址添加到路由表,以便能够识别返回到客户端的路由。如果服务器和客户端具有相同的子网掩码、IP 类和网络,则不需要修改服务器的路由表。如果客户端和服务器计算机之间有一个路由器,则服务器需要识别经过该路由器的路径。确保将以下路由添加到服务器路由表:从 Web 服务器到路由器的路由,以及从路由器到负载生成器计算机上的所有 IP 地址的路由。
第三步:
在输入web服务器地址的页面中输入地址后,直接点击“下一步”
进入IP添加页面,点击“add”进行添加
第四步:
在from ip 输入框中输入起始ip,在Number to输入框中输入ip地址的位数,输入正确的子网掩码,选中“verify that new ip addresses are not already used”,点击“ok”,此时IP Wizard会自动按照设置生成IP地址,并且将已经占用的IP列出。
第五步:
确认可用IP地址列表内容后,点击“ok”,此时IP Wizard提示需要重新启动计算机,点击“save as”保存IP列表,点击“ok”,重新启动计算机。
注:当保存IP地址列表后,下次启用IP欺骗时直接选择load previous setting from.....
第六步:
启用IP欺骗
选中Tools下的Expert mode,启动专家模式Expert mode,再点击Tools下的options,在Genearl选项卡中设置以线程方式或进程方式进行性能测试,这个选项一定要与当前场景的模式相匹配,也就是说使用本地虚拟IP测试时需要选中线程方式,使用负载生成器使用虚拟IP测试时需要选中进程方式。
在controller中,选择 Scenario-〉Enable IP Spoofer,此项设置允许使用IP欺骗。
第七步:
验证IP欺骗是否有效
方法一
计算机重新启动后,在运行行中输入:CMD,在DOS命令提示符窗口中输入:IPCONFIG,此时便可看到虚拟的IP地址均已经被启用;
方法二
在脚本的Action()部分增加如下代码:
char * ip=lr_get_vuser_ip();
if(ip)
lr_vuser_status_message("The ip address is %s",ip);
else
lr_vuser_status_message("IP spoofing disabled");
然后通过控制器设置并运行场景,日志中可以看到IP地址。
第八步:
这一部很重要,如果不做这一步,很多IP地址就被占用了,可能你们网管跟你闹上了呵呵。打开IP Wizard,选择restore original settings释放所有虚拟IP。
五.误区及答疑
这么简单的功能操作步骤哪里有误区呢,常见的下面需要2点:
1、和Generator搞混。以为添加多个IP后,需要添加多个IP对应的Generator才可以使用。(同一个Generator只需要以其某一个IP添加到Generator列表中即可以使用其它的IP。)
2、在上一个错误基础上,对于同一个脚本,创建多个Vuser执行组,然后以不同IP选择同一个物理Generator来执行。( 实际上,在场景中除非需要在这个Generator上运行多个不同脚本,否则没有必要多次以不同IP选择。)
其实只要记住两个要素即可使用这个功能:
1、 用IP wizard 添加多个IP;
2、在Controller中通过Enable IP Spoofing。
而在使用IP欺骗功能上应该注意三点:
1、虚拟IP是同一个Generator上的多个IP,这种分配过程由Controller自动来进行;
2、对于同一个Generator,你模拟的用户数量多于IP数量时,将会发生IP重复的现象,
否则将随机分配不同的IP。
3、对于同一个Generator,以其某一个IP添加到Generator中即可,不需要用不同的IP添加多次。
Q/A:
1.自己本地的IP地址不在虚拟IP段内,有影响吗?
答:没有
2.是否需要配置多个load generator来对应不同的虚拟IP呢?
答:不用,这个过程是generator自己完成的。
3.不同的generator是否都需要设置IP spoof呢?
答:Definitely Yes,不然的话不设IP欺骗的那台只会使用一个本地的IP执行。
4.虚拟用户数和虚拟IP数量上有什么关系呢?
答:如果虚拟用户数大于IP数量时,每个用户会得到不同的IP,否则,会有IP重复的现象。
5. 还有别的办法添加虚拟IP吗?
条条大路通罗马,试试这个。
在一台机上虚拟的IP跨网段的处理,可通过在服务器端添加路由来实现。
例:
服务器IP:192.168.0.1
测试机IP:192.168.0.206
测试机上添加的虚拟IP: 192.168.10.1~128
那么在服务器端执行以下命令:
route add 192.168.10.0 mask 255.255.255.0 192.168.0.206
本教程由 大漠飞鹰 编写 ,帖子名称为“LRIP欺骗设置和有效性验证”,相应的地址是:
颜色说明:补充内容为青绿色背景
Ip欺骗的相关帖子
设置IP欺骗的原因
1、 当某个IP的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候
通过IP欺骗可以增加访问频率和访问量,以达到压力测试的效果。
2、 某些服务器配置了负载均衡,使用同一个IP不能测出系统的实际性能。LR中的IP
欺骗通过调用不同的IP,可很大程度上的模拟实际使用中多IP访问和并测试服务器均衡处理的能力。
多IP地址的设置
IP地址的设置较为简单,可直接在本地连接中增加IP,或者通过LR自带的工具“IP wizard”设置,当然也可以使用其它软件设置。唯一需要注意的就是注意设置的IP的有效性。
“选项”中的IP设置
使用“选项”对话框中的“常规”选项卡,可以选择IP地址模式。只有在专家模式下操作 Controller 时,才显示该选项卡。
要设置常规专家模式设置,请执行下列操作:
1. 选择“工具”>“选项”。将显示“选项”对话框。选择“常规”选项卡。
2. 选择多个 IP 地址模式。
需要注意的是,这里的IP地址模式和运行时设置中的常规设置的不同,会导致IP欺骗失效。具体该怎么设置,这里就不讲了,很简单的东西。
启用IP欺骗
从 Controller 启用多个 IP 地址
定义多个 IP 地址后,您就可以设置一个选项,让 Controller 使用该功能。 要从 Controller 启用多个 IP 地址,请执行下列操作:
在 Controller“设计”视图中,选择“场景”>“启用 IP 欺骗器”。
注意:必须在连接到负载生成器之前选择该选项。如果是在连接了负载生成器之后启动的,只需将负载生成器断开(disconnect)再连接(connect)就可以了。 IP欺骗功能验证
IP欺骗已经设置了,但是是不是有效呢?通常会有这样的疑问。下面我们通过一个简单的试验,来验证是否有效。
在脚本的Action()部分增加如下代码:(根据自己的测试要求,我将这段代码放在init中) char * ip=lr_get_vuser_ip(); if(ip) else lr_vuser_status_message("IP spoofing disabled"); lr_vuser_status_message("The ip address is %s",ip);
然后通过控制器设置并运行场景,在Controller's Vuser 窗口中,大家可以看到如下的结果:
IP欺骗测试实例(补充内容)
测试的起源是由帖子“winsocket协议下的IP欺骗报9017错误”开始的,帖子的地址是:
问题:测试winsocket通信协议的两个服务器 通讯服务器和应用服务器 一个应用服务器可
以和指定的(IP:Port)多个通讯服务器相连接 应用服务器之间会自动重连 创建连接的间隔是10秒 通讯服务器建立侦听 等待应用服务器的连接
测试方法:使用IP欺骗进行测试 首先使用ip wizard在本机建立了几个IP 重启机器后IP生效 然后将之前录制的通讯服务器脚本中的port相应更改保存 使用vuser genorator回放成功 然后将脚本加入到场景 总是提示vuser_init.c(25): Error : Timeout expired while trying to accept connection. Error code : 9017 但有时可以连接成功 于是在vuser_init中添加 lrs_set_accept_timeout()函数 在lrs_create_socket中忽略9017错误 但还是出现连接不成功 报9017的错误 请各位指教
初始化代码如下:
vuser_init()
{
lrs_startup(257);
lrs_set_accept_timeout(180,0);【ip欺骗】
while(lrs_create_socket("socket0", "TCP", "LocalHost=5500", "Backlog=5", LrsLastArg)==9017);
lrs_accept_connection("socket0", "socket1");
return(0);
}
问题解决过程(有待优化)
过程一:
基于是录制的winsocket之间的通信,我将其中一个脚本在场景中运行,其generator为192.168.0.120,然后将另一个脚本在Virtual user generator中执行,执行的日志可能会出现下面这种情况:
Virtual User Script started
Starting action vuser_init.
vuser_init.c(14): lrs_startup(257)
vuser_init.c(17): lrs_set_accept_timeout(240, 0) vuser_init.c(20): lrs_create_socket(socket1, TCP, ...)
vuser_init.c(20): Error : socket1 - Address already in use. Error code : 10048.
我认为是和之前场景中运行的socket有相同的handler所致,于是在vuser_init()中开始先创建并关闭几个socket,改变socket handler的值。编译执行,不再出现10048错误。于是将脚本加入到场景中并使用generator为192.168.0.121执行此脚本。这时,192.168.0.120和192.168.0.121会出现同时运行的情况,尽管不是每次执行场景时都是这样。
int handler1=0;
vuser_init()
{
lrs_startup(257);
设置IP欺骗的原因
1、 当某个IP的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候通过IP欺骗可以增加访问频率和访问量,以达到压力测试的效果。
2、 某些服务器配置了负载均衡,使用同一个IP不能测出系统的实际性能。LR中的IP欺骗通过调用不同的IP,可很大程度上的模拟实际使用中多IP访问和并测试服务器均衡处理的能力。
多IP地址的设置
IP地址的设置较为简单,可直接在本地连接中增加IP,或者通过LR自带的工具“IP wizard”设置,当然也可以使用其它软件设置。唯一需要注意的就是注意设置的IP的有效性。
“选项”中的IP设置
使用“选项”对话框中的“常规”选项卡,可以选择IP地址模式。只有在专家模式下操作 Controller 时,才显示该选项卡。
要设置常规专家模式设置,请执行下列操作:
1. 选择“工具”>“选项”。将显示“选项”对话框。选择“常规”选项卡。
2. 选择多个 IP 地址模式。
需要注意的是,这里的IP地址模式和运行时设置中的常规设置的不同,会导致IP欺骗失效。具体该怎么设置,这里就不讲了,很简单的东西。【ip欺骗】
启用IP欺骗
从 Controller 启用多个 IP 地址
定义多个 IP 地址后,您就可以设置一个选项,让 Controller 使用该功能。 要从 Controller 启用多个 IP 地址,请执行下列操作:
在 Controller“设计”视图中,选择“场景”>“启用 IP 欺骗器”。 注意:必须在连接到负载生成器之前选择该选项。
IP欺骗功能验证
IP欺骗已经设置了,但是是不是有效呢?通常会有这样的疑问。下面我们通过一个简单的试验,来验证是否有效。
然后通过控制器设置并运行场景,在Controller's Vuser 窗口中,大家可以看到如下的结果: 在脚本的Action()部分增加如下代码: char * ip=lr_get_vuser_ip(); if(ip) else lr_vuser_status_message("IP spoofing disabled"); lr_vuser_status_message("The ip address is %s",ip);
如何使用LoadRunner的IP欺骗做性能测试
一、 使用场景
在使用LoadRunner做性能测试的过程中,有时候我们会遇到这种场景,被测试的服务器对发送消息的客户端的IP有限制,服务器为了节省资源,同一时刻只允许一个IP一个连接。而LoadRunner默认情况下都是使用同一个IP与服务器进行通讯,直接在Loadrunner上运行多个用户则会失败。
还有两种场景,一是服务器对访问的IP做过了优化处理,对于同一个IP的客户端信息,做了缓存,以优化吞吐量。另一个是服务器只对消息头中的IP做处理而不是消息体中的IP做处理,这样就使消息体中的IP字段参数化失去了意义。
以上几种情况,就到了我们使用IP欺骗的时候了。
二、 使用环境
LoadRunner11及更早的版本的IP欺骗可以在XP或者Windows Server2008的机器上使用,无法在Win7的机器上使用。这个可能是Win7禁用了IP欺骗。无论怎么配置,从LoadRunner上显示的是IP欺骗功能使用正常,但抓到的IP包永远都是某个固定IP。所以在使用IP欺骗之前,一定要先搞清楚这个操作系统版本支持不支持。由于环境有限,目前我所知道的就是Win7不支持,XP和2008支持。
三、 使用方法
1. 添加IP
在开始菜单中打开LoadRunner目录下的IP Wizard
在IP向导里选择第一项Create new setting,下一步
在下面的文本框中输入服务器的IP地址,该选项为可选项,以便自动添加到服务器的
路由。如果到服务器需要经过路由器,则这一步需要添加,如果可以直达,这步可以省略。
也可以在cmd里面手工添加路由。
在下面的界面点击Add,下一步
在下图中输入IP地址段,这里的ABC类地址段是为了简化输入设置的,不会做地址段校验。需要注意的是,如果选择C类最多只能模拟255个地址,如果需要更多地址,就要选择A类或B类地址。
输入完后,向导会将要生成的IP列表展示出来,点击完成。
此时可以选择将设置的IP保存起来,然后在下次使用IP欺骗时,直接选择Load Previous Setting,导入保存的地址。点击OK,系统会自动添加这些IP。
在CMD里面检查生成的IP是否正确。【ip欺骗】
添加完毕后,请使用ping –S命令测试添加的IP与服务器是否正常通讯。
IP欺骗(IP Spoofer)
1.需要使用ip欺骗的原因:
①当某个IP的访问过于频繁或者访问量过大时,服务器会拒绝访问请求,这时通过IP欺骗可以增加访问频率和访问量,以达到压力测试的效果。
②某些服务器配置了负载均衡,使用同一个IP不能测出系统的实际性能。LR中的IP欺骗通过调用不同的IP,可以很大程度上模拟实际使用中多IP访问,测试服务器均衡处理的能力。
③有一些网站会限制同一个用户同一个IP 的登录。为了更加真实的模拟实际情况,LoadRunner允许运行的虚拟用户使用不 同的IP 访问同一网站。
④如果服务器对用户的IP有限制(安全原因),启用IP欺骗。设置IP欺骗应该注意:1.测试负载机应该使用静态IP;2.在选择测试负载机之前开启IP欺骗开关
注意:
①IP Spoofer在连接Load Generators之前启用;
②要使用IP欺骗,各个Load Generators机器必须使用固定的IP,不能使用动态IP; ③需要真实的IP地址作为ip欺骗的ip地址段,也就是说虚拟的这些ip要能够ping通服务器;
④IP欺骗是使用局域网真实地址对服务器欺骗,所以此处从网管那里申请来的IP是要还的,不能长期占用,否则后果很严重。
⑤IP欺骗不能在WIN7系统上使用,可能WIN7禁用了IP欺骗,无论如何设置,从Loadrunner上显示的IP欺骗功能使用正常,但抓到的IP包永远是某个固定IP;可以在XP和Windows Server2008上使用。
2. 使用loadrunner进行IP欺骗的注意事项:
①本地的IP设置不能为“自动获取”,必须指定一个静态IP,如果本地是动态获取IP,在运行HP LoadRunner ---->Tools ---->IP Wizard时会弹出提示:
②所添加的IP只能是局域网内的网段:只能添加192段,127段,10段IP地址,且是与压力机在同一个网段内。(一般需要网管空余一部分IP做压力测试使用)
3. IP欺骗的设置方式
下面进入正式的配置过程:
第一步:
create new setting 创建新的设置
当第一次使用IP欺骗或已经释放了添加的IP时,就需要选择这一项创建新有设置。 Load previous settings fro 读取IP列表文件
从以前设置的IP地址列表中读取IP地址。
Restore original setting 释放已经设置的IP
释放已经添加的IP 地址(因为使用IP欺骗会占用大量的IP资源,可能会造成其他机器没有IP可用的情况,使用该项可以恢复到原来状况)。
这里选择默认项:create new setting (创建新的设置) ,点击“下一步”。
第二步:
让输入服务器的IP地址,Loadrunner通过该地址更新路由表。
客户端计算机上添加新的IP地址后,服务器需要将该地址添加到路由表,以便能够识别返回到客户端的路由:
如果服务器和客户端具有相同的子网掩码、IP 类和网络即客户端到服务器端不经过路由,则不需要修改服务器的路由表,这一步可以忽略;
如果客户端和服务器计算机之间有一个路由器,则服务器需要识别经过该路由器的路径。确保将以下路由添加到服务器路由表:从 Web 服务器到路由器的路由,以及从路由器到负载生成器计算机上的所有 IP 地址的路由,则这一步需要添加服务器的IP地址。
这里可以不做任何添加,点击“下一步”。
第三步:
默认显示本机的IP 地址,当然,我们还需要添加更多的IP 。点击“Add”,进入IP添加页面。
第四步:
Class C、Class B、Class A 表示我们要使用是的A类、B类还是C类IP地址。don't use any of these 不要使用任何,它会把默认的IP与子网掩码清空。
(C类最多只能模拟255 个IP,如果你的需要更多,那么就需要使用A 类或B类) from ip 输入框中输入起始ip
Number to 输入框中输入ip地址的个数,也就是说我们需要成多少个用于欺骗的IP (我上面的配置是从110开始,按顺序生成5个)
Submask根据IP类型输入正确的子网掩码
选中“verify that new ip addresses are not already used”,点击“OK”。
此时IP Wizard会自动按照设置生成IP地址,并且将已经占用的IP列出,点击“完成” 第五步:
点击“save as”按钮,可以将我们设置的IP 保存成一个文件,以后再设置的时候,是在第一步里,我们可以选择第二个选项(Load previous settings fro),从文件导入IP 。 点击“ok”,IP Wizard开始帮我们生成IP 。
设置的虚拟IP生效后,此时使用ping会发现都能ping通,并且本机的IP也会被改成了第一个虚拟IP地址。确认虚拟IP是否都生效的方法:在命令窗口输入ipconfig/all,命令验证:
黑客攻击的常用方法剖析(2)
IP欺骗攻击
由于TCP/IP本身有着不安全的地方,即使是很好的实现了协议,也可以对TCP/IP网络进行攻击。这些攻击包括序列号欺骗、路由攻击、源地址欺骗和授权欺骗。下面介绍IP欺骗攻击方法,这种攻击是建立在攻击者的计算机(包括路由)是连接在Internet上的。这里的攻击方法是针对TCP/IP本身的缺陷的,而不是某一具体的实现。事实上,IP欺骗不是进攻的结果,而是进攻的手段,进攻实际上是信任关系的破坏。
1.IP欺骗原理
所谓IP欺骗,无非就是伪造他人的IP地址,其实质就是让一台计算机来扮演另一台计算机,借以达到蒙混过关的目的。
IP欺骗利用了主机之间正常信任关系来发动的。所谓信任关系就是网络上的两台计算机X和Y,Y可以利用远程登录工具,无需要口令验证就可以登录到X主机上,而登录的基础是X对Y主机IP的验证。即X是否对Y的提供服务是基于对主机Y的IP地址的信任。 既然X、Y之间的信任关系是基于IP地址建立起来的,那么假如能够冒充Y的IP地址,就可以使rlogin登录上X,而不需要任何口令的验证。——这就是IP欺骗的最根本的理论依据。 具体的攻击过程:
(1)目标主机已选定,比如X。其次,信任模型已被发现,并找到了一个被目标主机信任是主机,比如Y。
(2)一旦发现被信任的主机,为了伪装它,往往要使其丧失工作能力。由于攻击者将要代替真正的被信任主机,所以它必须确保真正被信任的主机不能接收到任何有效的网络数据,否则将会被揭穿。
(3)使得被信任的主机(Y)丧失工作能力后,伪装成被信任的主机,同时建立起与目标主机基于地址验证的应用连接。如果成功,黑客可以使用一种简单的命令放置一个系统后门,以进行非授权操作。
这就是IP欺骗攻击的全过程。
攻击过程听起来很完美,但实际上却要有很多工作要做。
虽然可以通过编程的方法随意改变发出的包的IP地址,但TCP协议对IP进行了进一步的封装(TCP协议是一种相对可靠的协议),不会让黑客轻易得逞。
下面来看一下一次正常的TCP/IP会话的过程:
由于TCP是面向连接的协议,所以双方在正式传输数据以前,需要用“三次握手”来建立一个稳定的连接。
假设A、B两台主机进行通信,B首先发送带有SYN(是Synchronize,同步序列编号)标志的数据段通知A需要建立TCP连接,TCP的可靠性就是由数据包的多位控制字来提供。其中最重要的是数据序列SYN和数据确认标志ACK。B将TCP报头中的SYN设为自己本次连接的初始值(ISN)。
A收到B的SYN包后,会发送给B一个带有SYN+ACK标志的数据段,告知自己的ISN,并确认B发送来的 第一个数据段,将ACK
设置成为B的SYN+1。
B确认收到A的SYN+ACK数据包,将ACK设置成为A的SYN+1。
A收到B的ACK后,连接成功后,双方就可以正式传输数据了。 综上所述,TCP/IP会话的过程分为这样简单的3步:
(1)B发送带有SYN标志的数据段通知A需要建立TCP连接;
(2)A收到B的SYN包后,发送给B一个带有SYN+ACK标志的数据段,告知自己的ISN;
(3)B发送ACK给A,连接成功建立。
了解上述过程,就很容易向想到:假如要冒充B对A进行攻击,就要先要使用B的IP地址发送SYN标志给A,但是当A收到后,它并不会把SYN+ACK发送到攻击者的主机,而是发送到真正的B上去,这时攻击就“露馅”了。因为A根本没有发送过SYN请求。所以如果要冒充B,首先要让B失去工作能力。
但是这还不够,最难的是要对A进行攻击,必须要知道A使用的ISN。(TCP使用的ISN是一个32位的计数器,从0到4294967295)
TCP为每一个连接选择一个初始序号ISN。为了防止因为延迟、重传等扰乱三次握手,ISN不能随便选取,不同的系统有不同的算法。因此,理解TCP如何分配ISN以及ISN随时间变化的规律,对于成功攻击IP欺骗攻击是很重要的。
ISN每秒增加128000,如果有连接出现,每次连接将把计数器的值增加为64000。这使得用于表示ISN的32位计数器在没有连接情
况下没9.32小时复位一次。
假设黑客已经使用某种方法,能预测出ISN,那么他就可以将ACK序号发送给主机A,这时连接就建立了。
2.使主机B瘫痪并猜测出主机A的ISN
(1)使被信任的主机B瘫痪
由于攻击者将要代替真正的被信任的主机,他必须确保被信任的主机不能收到任何有效的网络数据,否则将会被揭穿。有许多方法可以作到这些。下面仅讨论一种方法,即“TCPSYN淹没”。
建立TCP连接的第1步就是客户端向服务器发送SYN请求。通常服务器将向客户端发送SYN/ACK。客户端是由IP地址确定的。客户端随后向服务器发送ACK信号,然后传送数据就开始了。黑客用来发出这些请求的源地址是使用一个合法但是虚假的IP地址。而受攻击的主机往往会向该IP地址发送响应。与此同时IP包会通知受攻击主机的TCP:该主机不可达到,但是不幸的是TCP会认为是一种暂时的错误,并继续尝试连接,直至确信无法连接。但已经耗费了大量宝贵的时间,这段宝贵的空闲时间就是黑客进行攻击目标主机的时间。
(2)猜测目标主机A的ISN
要对目标主机进行攻击,必须知道目标主机使用的数据包序列号。如何进行预测?
攻击者首先与被攻击的一端口(比如端口25)建立起正常的连接。通常,这个过程被重复若干次,并将目标主机最后发送的ISN存
储起来。然后还需要估计他的主机与被信任主机之间的往返时间,这个时间是通过多次统计平均计算出的。往返时间对估计下一个ISN是非常重要的。(前面已经提到每秒钟ISN增加128000,每次连续增加64000。因此就可以估计ISN的大小是128000乘以往返时间的一半,如果此时目标主机刚刚建立了一个连接,那么再加上64000)
一旦估计出了ISN的大小,就可以进行攻击了。当黑客的虚假的TCP数据包进入目标主机时,如果估计的序列号是正确的,进入的数据将被放置在目标机的缓冲区中。但是实际攻击过程中一般没有那么幸运,若估计的序列号小于正确值,那么将被放弃;若估计的序列号大于正确值,并且在缓冲区大小之内,那么该数据将被认为是一个未来的数据;若估计的序列号大于正确值,并且不在缓冲区之内,TCP将会放弃它并返回一个期望获得的数据序列号。
因此,IP欺骗攻击的步骤为:
(1)首先使被信任的主机的网络暂时瘫痪,以免对攻击造成干扰;
(2)然后连接到目标机的某个端口来猜测ISN基值和增加规律;
(3)接下来把源地址伪装成被信任主机,发送带有SYN标志的数据段请求连接。
(4)然后,黑客等待目标机发送SYN+ACK包给已经瘫痪的被信任主机,因为黑客这时看不到这个包。
(5)最后再次伪装成被信任主机向目标主机发送ACK,此时发送的数据段带有预测的目标主机ISN+1。
本文来源:http://www.gbppp.com/jd/444278/
推荐访问:ip欺骗攻击 ip欺骗工具