>
典型设备:应用程序, 如FTP, SMTP , >用wpe
彻底明白的话
我暂时没这个本事
你可以在百度搜索下
wpe教程
学会多少
要看你自己造化
————————————————————
IP欺骗
IP欺骗是在服务器不存在任何漏洞的情况下,通过利用TCP/IP协议本身存在的一缺陷进行攻击的方法,这种方法具有一定的难度,需要掌握有关协议的工作原理和具体的实现方法。
一、TCP、IP协议的简单说明:
TCP/IP(传输控制协议/网际协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据传输格式以及传送方式,TCP/IP是因特网的基础协议。要想当黑客就有必要了解TCP/IP协议。
在数据传送中,可以形象的理解为有两个信封:TCP和IP信封。要送递的信息被分成若干段,每一段塞入一个TCP信封,并在该信封上记录有分段号的信息,再将TCP信封塞入IP大信封里,发送到网上。在接收端,一个TCP软件包收集信封,抽出数据,按发送关的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此TCP/IP在因特网中几乎可以无差错地传送数据。对因特网用户来说,并不需要了解网络协议的整个结构,仅需了解IP的地址格式,即可与世界各地进行网络通信。
1、TCP/IP的层次结构:
TCP/IP协议组中的协议因特网上数据的传输,提供了几乎目前上网所用到的所有服务,在TCP/IP协议组中有两种协议:
(1)网络层协议:
网络层协议管理离散计算机间的数据传输。这些协议用户注意不到,它们是个系统表层以下工作的。比如,IP协议为用户和远程计算机提供了信息包的传输方法,它是在许多信息的基础上工作的。比如机器的IP地址。在机器的IP地址和其他信息的基础上,IP确保信息包正确达到目的机器。通过这一过程,IP和其他网络层的协议一共同用于数据传输。如果没有网络工具,用户就看不到在系统里工作的机器的IP。
(2)应用层协议:
相反地,应用层协议是可以看到的。比如,文件传输协议(FTP)是可以看到的。用户为了传一个文件而请求一个和其他计算机连接,连接建立后,就开始传输文件,在传输时,用户和远程计算机的交换的一部分是能看到的。
2、TCP/IP的重要协议:
(1)地址解析协议(ARP):
在网络上进行通信的主机必须知道对方主机的硬件地址(网卡的物理地址)。地址解析协议的目的就是将IP地址映射成物理地址。这在使信息通过网络时特别重要。一个消息(或者其他数据)在发送之前,被打包到IP包里面,或适合于因特网传输信息块中,其中包括两台计算机的IP地址。 在这个包离开发送计算机前,必须找到目标的硬件地址,这就是ARP最初到达的地方。
一个ARP请求消息会在网上广播。请求由一个进程接收,它回复物理地址。这个回复消息由原先的那台发送广播消息的计算机接收,从而传输过程就开始了。
ARP的设计包括一个缓存。为了减少广播量,ARP在缓存中保存地址映射以备后用。ARP级存保存有动态项和静态项。动态项是自动加和删除的,静态项则是保留在缓存(Cache)中,直到计算机重启为止。ARP缓存总是为本地子网保留硬件广播地址(0xffffffffffffh)作为一个永久项,此项使主机能够接收ARP广播。当果看存时,该项不会显示。每条ARP缓存记录的生命周期为10分种,如果2分种未用则删除。缓存容量满时,删除最早的记录,但是,缓存也引起了安全性的问题,那就是缓存溢出。
(2)因特网控制消息协议(ICMP):
因特网控制消息协议(ICMP)用于报告错误并对IP消息进行控制。IP运用互联组管理协议(IGMP)来告诉路由器某一网络上指导组中有哪些可用主机。
以ICMP实现的最著名的网络工具是Ping。Ping通常用来判断一台远程机器是否正开着,数据包从用户的计算机发到远程计算机,这些包通常返回到用户的计算机,如果数据包没有返回到用户计算机,Ping程序就产生一个表示远程计算机关机的错误消息。
二、IP攻击中如何建立信任关系:
IP欺骗是利用了主机之间的正常信任关系来发动的,所以在介绍IP欺骗攻击之前,先说明一下什么是信任关系,信任关系是如何建立的。
在UNIX主机中,存在着一种特殊的信任关系。假设有两台主机hosta和hostb,上面各有一个帐户Tomy,在使用中会发现,在hosta上使时要输入在hosta上的相应帐户Tomy,在hostb上使用时必须输入用hostb的帐户Tomy,主机hosta和hostb把Tomy当做两个互不相关的用户,这显然有些不便。为了减少这种不便,可以在主机hosta和hostb中建立起两个帐户的相互信任关系。在hosta和hostb上Tomy的home目录中创建rhosts文件。从主机hosta上,在你的home目录中用命令echo “hostb Tomy”>~/hosts实现hosta&hostb的信任关系,这时,你从主机hostb上,你就能毫无阻碍的使用任何以r开头的远程调用命令,如:rlogin、rsh、rcp等,而无需输入口令验证就可以直接登录到hosta上。这些命令将允许以地址为基础的验证,允许或者拒绝以IP地址为基础的存取服务。这里的信任关系是基于IP的地址的。
当/etc/hostsequiv中出现一个 “+”或者$HOME/rhosts中出现 “++”时,表明任意地址的主机可以无需口令验证而直接使用r命令登陆此主机,这是十分危险的,而这偏偏又是某些管理员不重视的地方。下面我们看一下rlogin的用法。
rlogin是一个简单的/服务器程序,它的作用和telnet差不多,不同的是telnet完全依赖口令验证,而rlogin是基于信任关系的验证,其次才进行口令验证的,它使用了TCP协议进行传输。当用户从一台主机登陆到另一台主机上,并且,如果目录主机信任它,rlogin将允许在不应答口令的情况下使用目标主机上的资源,安全验证完全基于源主机的IP地址。因此,根据以上所举的例子,我们能利用rlogin来从hostb远程登陆到hosta,而且不会被提示输入口令!
三、IP欺骗的理论根据:
看到上面的说明,每一个黑客都会想到:既然hosta和hostb之间的信任关系是基于IP地址而建立起来的,那么假如能够冒充hostb的IP,就可以使用rlogin登录到hosta,而不需任何口令验证。这就是IP欺骗的最根本的理论依据。但是,事情远没有想象中那么简单!虽然可以通过编程的方法随意改变发出的包的IP地址,但TCP协议对IP进行了进一步的封装,它是一种相对可靠的协议,不会让黑客轻易得逞。下面看一下正常的TCP/IP会话的过程:
由于TCP是面向连接的协议,所以在双方正式传输数据之前,需要用“三次握手”来建立一个稳重的连接。假设还是hosta和hostb两台主机进行通信,hostb首先发送带有SYN标志的数据段通知hosta建立TCP连接,TCP的可靠性就是由数据包中的多位控制字来提供的,其中最重要的是数据序列SYN和数据确认标志ACK。B将TCP报头中的SYN设为自己本次连接中的初始值(ISN)。
当hosta收到hostb的SYN包之后,会发送给hostb一个带有SYN+ACK标志的数据段,告之自己的ISN,并确认hostb发送来的第一个数据段,将ACK设置成hostb的SYN+1。
当hostb确认收到hosta的SYN+ACK数据包后,将ACK设置成hosta的SYN+1。Hosta收到hostb的ACK后,连接成功建立,双方可以正式传输数据了。
看了这个过程,我们就很容易想到,假如想冒充hostb对hosta进行攻击,就要先使用hostb的IP地址发送SYN标志给hosta,但是当hosta收到后,并不会把SYN+ACK发送到我们的主机上,而是发送到真正的hostb上去,这时IP欺骗就失败了,因为hostb根本没发送发SYN请请。所以如果要冒充hostb,首先要让hostb失去工作能力,也就是所谓的拒绝服务攻击,设法让hostb瘫痪。
可是这样还是远远不够的,最难的就是要对hosta进行攻击,必须知道hosta使用的ISN。TCP使用的ISN是一个32位的计数器,从0到4,294,967,295。TCP为每一个连接选择一个初始序列号ISN,为了防止因为延迟、重传等扰乱三次握手,ISN不能随便选取,不同的系统有着不同的算法。理解TCP如何分配ISN以及ISN随时间的变化规律,对于成功的进行IP欺骗攻击是很重要的!ISN约每秒增加128 000,如果有连接出现,每次连接将把计数器的数值增加64,000。很显然,这使得用于表示ISN的32位计数器在没有连接的情况下每932小时复位一次。这所以这样,是因为它有利于最大程度地减少“旧有”连接的信息干扰当前连接的机会。如果初始序列号是随意选择的,那么不能保证现有序列号是不同于先前的。假设有这样一种情况,在一个路由回路中的数据包最终跳出循环,回到了“旧有”的连接,显然这会对现有连接产生干扰。预测出攻击目标的序列号非常困难,而且各个系统也不相同,在Berkeley系统,最初的序列号变量由一个常数每秒加1产生,等加到这个常数的一半时,就开始一次连接。这样,如果开始啊一个合法连接,并观察到一个ISN正在使用,便可以进行预测,而且这样做有很高的可信度。现在我们假设黑客已经使用某种方法,能预测出ISN。在这种情况下,他就可以将ACK序列号送给hosta,这时连接就建立了。
四、IP欺骗攻击过程解析:
IP欺骗由若干步骤组成,下面是它的详细步骤:
1、使被信任主机失去工作能力:
为了伪装成被信任主机而不露馅,需要使其完全失去工作能力。由于攻击者将要代替真正的被信任主机,他必须确保真正的被信任主机不能收到任何有效的网络数据,否则将会被揭穿。有许多方法可以达到这个目的(如SYN洪水攻击、TTN、Land等攻击)。现假设你已经使用某种方法使得被信任的主机完全失去了工作能力。
2、序列号取样和猜测:
前面讲到了,对目标主机进行攻击,必须知道目标主机的数据包序列号。通常如何进行预测呢?往往先与被攻击主机的一个端口(如:25)建立起正常连接。通常,这个过程被重复N次,并将目标主机最后所发送的ISN存储起来。然后还需要进行估计他的主机与被信任主机之间的往返时间,这个时间是通过多次统计平均计算出来的。往返连接增加64,000现在就可以估计出ISN的大小是128,000乘以往返时间的一半,如果此时目标主机刚刚建立过一个连接,那么再加上64 ,00。
一旦估计出ISN的大小,就开始着手进行攻击,当然你的虚假TCP数据包进入目标主机时,如果刚才估计的序列号是准确的,进入的数据将被放置在目标机的缓冲区中。但是在实际攻击过程中往往没这么幸运,如果估计序列号的小于正确值,那么将被放弃。而如果估计的序列号大于正确值,并且在缓冲区的大小之内,那么该数据被认为是一个未来的数据,TCP模块将等待其他缺少的数据。如果估计序列号大于期待的数字且不在缓冲区之内,TCP将会放弃它并返回一个期望获得的数据序列号。
你伪装成被信任的主机IP,此时该主机仍然处在瘫痪状态,然后向目标主机的513端口(rlogin)发送连接请求。目标主机立刻对连接请求作出反应,发更新SYN+ACK确认包给被信任主机,因为此时被信任主机仍然处于瘫痪状态,它当然无法收到这个包,紧接着攻击者向目标主机发送ACK数据包,该包使用前面估计的序列号加1。如果攻击者估计正确的话,目标主机将会接收该ACK。连接就正式建立起了,可以开始数据传输了。这时就可以将cat ‘++’>>~/rhosts命令发送过去,这样完成本次攻击后就可以不用口令直接登录到目标主机上了。如果达到这一步,一次完整的IP欺骗就算完成了,黑客已经在目标机上得到了一个Shell权限,接下来就是利用系统的溢出或错误配置扩大权限,当然黑客的最终目的还是获得服务器的root权限。
3、总结一下IP攻击的整个步骤:
(1)首先使被信任主机的网络暂时瘫痪,以免对攻击造成干扰;
(2)获得SN基值和增加规律;
(3)接下来把源地址伪装成被信任主机,发送带有SYN标志的数据段请求连接;
(4)发更新SYN+ACK包给已经瘫痪的主机;
(5)最后再次伪装成被信任主机向目标机发送的ACK,此时发送的数据段带有预测的目标机的ISN+1;
(6)连接建立,发送命令请求。
Tracert 工作原理
通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。
Tracert 先发送 TTL 为 1 的回应数据包,并在随后的每次发送过程将 TTL 递增 1,直到目标响应或 TTL 达到最大值,从而确定路由。通过检查中间路由器发回的“ICMP 已超时”的消息确定路由。某些路由器不经询问直接丢弃 TTL 过期的数据包,这在 Tracert 实用程序中看不到。
Tracert 命令按顺序打印出返回“ICMP 已超时”消息的路径中的近端路由器接口列表。如果使用 -d 选项,则 Tracert 实用程序不在每个 IP 地址上查询 DNS。
在下例中,数据包必须通过两个路由器(10001 和 19216801)才能到达主机 17216099。主机的默认网关是 10001,19216800 网络上的路由器的 IP 地址是 19216801。
C:\>tracert 17216099 -d
Tracing route to 17216099 over a maximum of 30 hops
1 2s 3s 2s 10,00,1
2 75 ms 83 ms 88 ms 19216801
3 73 ms 79 ms 93 ms 17216099
Trace complete
用 tracert 解决问题
可以使用 tracert 命令确定数据包在网络上的停止位置。下例中,默认网关确定 1921681099 主机没有有效路径。这可能是路由器配置的问题,或者是 192168100 网络不存在(错误的 IP 地址)。
C:\>tracert 1921681099
Tracing route to 1921681099 over a maximum of 30 hops
1 10001 reportsestination net unreachable
Trace complete
Tracert 实用程序对于解决大网络问题非常有用,此时可以采取几条路径到达同一个点。
Tracert 命令行选项
Tracert 命令支持多种选项,如下表所示。
tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout] target_name
选项
描述
-d
指定不将 IP 地址解析到主机名称。
-h maximum_hops
指定跃点数以跟踪到称为 target_name 的主机的路由。
-j host-list
指定 Tracert 实用程序数据包所采用路径中的路由器接口列表。
-w timeout
等待 timeout 为每次回复所指定的毫秒数。
target_name
目标主机的名称或 IP 地址。1、发现服务器被入侵,应立即关闭所有网站服务,暂停至少3小时。这时候很多站长朋友可能会想,不行呀,网站关闭几个小时,那该损失多大啊,可是你想想,是一个可能被黑客修改的钓鱼网站对客户的损失大,还是一个关闭的网站呢你可以先把网站暂时跳转到一个单页面,写一些网站维护的的公告。
2、下载服务器日志,并且对服务器进行全盘杀毒扫描。这将花费你将近1-2小时的时间,但是这是必须得做的事情,你必须确认黑客没在服务器上安装后门木马程序,同时分析系统日志,看黑客是通过哪个网站,哪个漏洞入侵到服务器来的。找到并确认攻击源,并将黑客挂马的网址和被篡改的黑页面截图保存下来,还有黑客可能留下的个人IP或者代理IP地址。
3、Windows系统打上最新的补丁,然后就是mysql或者sql数据库补丁,还有php以及IIS,serv-u就更不用说了,经常出漏洞的东西,还有就是有些IDC们使用的虚拟主机管理软件。
4、关闭删除所有可疑的系统帐号,尤其是那些具有高权限的系统账户!重新为所有网站目录配置权限,关闭可执行的目录权限,对和非脚本目录做无权限处理。
5、完成以上步骤后,你需要把管理员账户密码,以及数据库管理密码,特别是sql的sa密码,还有mysql的root密码,要知道,这些账户都是具有特殊权限的,黑客可以通过他们得到系统权限!
6、Web服务器一般都是通过网站漏洞入侵的,你需要对网站程序进行检查(配合上面的日志分析),对所有网站可以进行上传、写入shell的地方进行严格的检查和处理。如果不能完全确认攻击者通过哪些攻击方式进行攻击,那就重装系统,彻底清除掉攻击源。从专业的角度说,TCP的可靠保证,是它的三次握手机制,这一机制保证校验了数据,保证了他的可靠性。而UDP就没有了,所以不可靠。不过UDP的速度是TCP比不了的,而且UDP的反应速度更快,QQ就是用UDP协议传输的,>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)