关键词:ARP欺骗 ICMP重定向 IP欺骗 DoS攻击
#00x1 前言
在学习网络攻防技术时如果只对各种攻击的原理和理论进行了解和学习,那么可能不到3分钟就开始拽瞌睡了,如果加上实践的反馈,那种实验成功的快感会成为你源源不断的动力,让你沉迷,让你上瘾。不过法网恢恢疏而不漏,掌握这些技能用来学习、交流、研究或者吹吹牛就行了,在你蠢蠢欲动的时候先看看《网络安全法》冷静冷静,千万不要挑战法律的底线,人在做,天在看。此文章仅提供技术的讨论和交流,对任何用于恶意攻击的违法行为概不负责。
#00x2 原理介绍
ARP欺骗
根据百度百科的定义,ARP地址解析协议是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。可通过arp -a命令查询本机ARP缓存中IP地址-->MAC地址的对应关系。具体详细介绍见ARP
址解析协议是建立在网络中各个主机互相信任的基础上的,网络上的主机可以自主发送ARP应答消息,其他主机收到应答报文时不会检测该报文的真实性就会将其记入本机ARP缓存;由此攻击者就可以向某一主机发送伪ARP应答报文,使其发送的信息无法到达预期的主机或到达错误的主机,这就构成了一个ARP欺骗。
ICMP重定向攻击
根据百度百科的定义,ICMP是Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。具体详细介绍见ICMP
ICMP重定向报文是ICMP控制报文中的一种。在特定的情况下,当路由器检测到一台机器使用非优化路由的时候,它会向该主机发送一个ICMP重定向报文,请求主机改变路由。路由器也会把初始数据包向它的目的地转发。这样攻击者可以伪造路由器给客户端发送一个ICMP重定向包,告诉客户端到达服务器的最佳路由是攻击者的机器。
IP欺骗
根据百度百科的定义,IP地址欺骗是指行动产生的IP数据包为伪造的源IP地址,以便冒充其他系统或发件人的身份。这是一种黑客的攻击形式,黑客使用一台计算机上网,而借用另外一台机器的IP地址,从而冒充另外一台机器与服务器打交道。具体详细介绍见IP欺骗
DoS攻击
根据百度百科的定义,DoS即拒绝服务,造成DoS的攻击行为被称为DoS攻击,其目的是使计算机或网络无法提供正常的服务。最常见的DoS攻击有计算机网络带宽攻击和连通性攻击。
DoS攻击是指故意的攻击网络协议实现的缺陷或直接通过野蛮手段残忍地耗尽被攻击对象的资源,目的是让目标计算机或网络无法提供正常的服务或资源访问,使目标系统服务系统停止响应甚至崩溃,而在此攻击中并不包括侵入目标服务器或目标网络设备。这些服务资源包括网络带宽,文件系统空间容量,开放的进程或者允许的连接。这种攻击会导致资源的匮乏,无论计算机的处理速度多快、内存容量多大、网络带宽的速度多快都无法避免这种攻击带来的后果。具体详细介绍见DoS攻击
#00x3 实践
不登高山,不知天之高也;不临深溪,不知地之厚也,实践是检验真理的唯一标准。本次实验是在VMware虚拟机局域网的环境下进行。话不多说,直接上图。
ARP欺骗
本次实验使用的虚拟机的IP-MAC地址映射关系如下:
ARP欺骗实验的网络拓扑图如下:
(Windows7作为攻击机,Centos作为服务器,kali linux作为客户端)
首先查看kali linux/windows 7/Centos的IP地址、MAC地址和arp的IP-MAC地址映射表,一切显示正常。
打开Cain工具,开始嗅探,发现本网段内有4台已经开启的虚拟机,嗅探时可以全局嗅探,也可以在一定网段范围内嗅探。
转到ARP,添加进行ARP欺骗的主机,点击start开始进行ARP欺骗。
此时kali linux的用户登录搭建在Centos服务器上的DVWA,在Cain工具的password栏里将监听到明文的用户名和密码。
用wireshark抓包进行分析,发现第一次kali的IP-MAC地址映射表里的Centos的MAC地址变成了Windows7的MAC地址,所以发送tcp包时先发送给了Windows7攻击机,之后Windows7会将此包发送给Centos,Centos将响应包先发送给Windows7,Windows7将响应包再发送给kali,这样Windows7在kali用户毫不知情的情况下窃取了他的通信信息。
查看三台机器上的ARP的IP-MAC地址映射表,发现kali中Centos的MAC地址变成了windows7的MAC地址,Centos中的kali的MAC地址变成了Windows7的MAC地址,而Windows7中的IP-MAC映射表是正常的。
至此,一次中间人窃听的攻击就这样成功进行了。
ICMP重定向攻击
ICMP重定向攻击的网络拓扑图如下:
(Windows7作为攻击机、Windows xp作为靶机)
查看靶机和攻击机的IP/MAC地址,并通过route print命令记录下靶机的路由表状态。
开启netwox工具进行ICMP路由重定向,依次输入5和86使用86号工具,按照工具的介绍和提示进行数据包的篡改:netwox 86 -f "tcp and host 192.168.188.130" -g 192.168.188.134 -i 192.168.188.2 -c 1
这条指令的意思是嗅探网络中来自主机192.168.188.130的TCP包,一旦出现,就以网关192.168.188.2的名义,向数据包的源地址发送一个ICMP重定向报文,使之使用192.168.188.134作为默认的路由。
打开wireshark输入过滤条件:(tcp or arp or icmp)&&ip.addr == 192.168.188.130并开始抓包。
当靶机想访问百度的IP时,攻击机会伪装成默认网关给靶机发送ICMP重定向报文,此时在靶机的终端上输入route print指令,发现靶机已经错误地将网关地址改成了攻击机地址。
至此,一次ICMP重定向攻击成功实现了。
TCP会话劫持
TCP会话劫持的网络拓扑图如下:
(kali linux作为攻击机,Windows7作为客户端,Centos作为服务器)
(注:由于某些原因我修改了虚拟机的IP地址,之前的实验不想再重做重新截图了,所以接下来的实验使用一下IP地址,实在不好意思,各位看官将就看吧)
为了构造客户端和服务器进行tcp会话的过程,我们在服务器上搭建telnet服务器,并在客户端上用telnet远程连接服务器,用攻击机对其进行监听和会话劫持。
在Centos服务器上运行netstat -an | grep 23或netstat -ntl查看23端口有没有开启,发现服务器上没有开设23号端口的telnet服务,需要搭建telnet服务器。
Centos里搭建telnet服务器的过程是:
1、检查Centos是否已经安装了以下两个安装包:telnet-server、xinetd(rpm -qa telnet-server/rpm -qa xinetd)
2、如果没有就安装:(yum install telnet-server/yum install xinetd)
3、安装完成后,将telnet服务和xinetd服务加入开机自启动(systemctl enable xinetd.service /systemctl enable telnet.socket )
4、启动两个服务(systemctl start telnet.socket/systemctl start xinetd)
5、安装完成后检查两个服务有没有开启(systemctl status telnet.scoket/systemctl status xinetd)
用windows7的telnet连接Centos,建立TCP连接。
在kali linux下运行hunt工具。
在此工具下运行1指令可以看见该局域网下的所有TCP连接,发现windows7连上了Centos服务器。
依次输入a、0,一路默认下去,实现会话监听。
此时用户windows7的输入和回应就全显示在攻击机页面了。
继续使用快捷键ctrl+c进行会话劫持,此时用户windows7被挤下线,所有的输入都不会得到响应,会话被劫持到了kali linux攻击端。
至此,TCP会话劫持成功实现,下面我们通过抓包分析整个绘画劫持的过程,抓包结果如下:
为了方便观察,设置过滤条件,只显示telnet协议的包,发现在如图所示的包处源地址的MAC地址发生了变化,大胆猜测kali linux在此处进行了TCP会话劫持。
观察这个包的上一个从192.168.188.129发出的包,将上一个包的相关信息与该包的信息比较进行验证。
可以看出939的Seq序列号应该为203,但是hunt工具伪装Windows7客户端给Centos服务器发送了一个Seq=190的包,并继续与服务器通讯,接管了会话,可以看到服务器随着kali linux攻击机而改变了自己的包的Seq、Next、Ack序号。
此时客户端Windows7并不知道自己的会话已经被劫持了,也不知道现在服务器的序列号已经发生了改变,所以当客户端想要再次发送请求时,会发送Seq为203的包,而服务器的ACK已经不再是203了,所以服务器不会再对客户端进行应答了。
这部分我的理解还有一些牵强,有兴趣的读者可以仔细了解TCP协议的相关知识,能够更好地理解会话劫持的原理,待我总结清楚后再新写一篇文章仔细分析。
DoS攻击
(攻击机Windows7,目标机Windows xp)
打开Cain工具,使用76号工具进行DoS攻击,输入IP地址和端口号,实行攻击。
此时ping Windows xp,发现没有ICMP回显,Windows xp资源已经被耗尽拒绝服务了,用wireshark进行抓包分析,发现全是Windows7发送给xp的TCP包。
DoS攻击可以利用现有网络协议中存在的缺点、可以利用现有软件和应用程序自身的漏洞,可以利用合法的服务请求耗尽服务资源,具体的原理和方法我会单列一章进行介绍,顺便附上之前编写的简易的DDoS程序。
#00x4 总结
假消息攻击:利用网络协议设计中的缺陷,通过发送伪造的数据包达到欺骗目标、从中获利的目的。
ARP欺骗的防范:网关建立静态IP/MAC对应关系,各主机建立MAC数据库;建立DHCP服务器;IDS监听网络安全。
ICMP重定向攻击的防范:修改系统和防火墙配置,拒绝接收ICMP重定向报文;在Windows 2000里可修改注册表HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\ParamentsEnableICMPRedirects REG_DWORD 0x0(默认值为0x1);通过route print命令来查看本机的路由表。
IP欺骗的防范:抛弃基于地址的信任策略;进行包过滤,只信任内部主机;利用路由器屏蔽掉所有外部希望向内部发出的连接请求;使用加密传输和验证的方法;使用随机化的初始序列号,使得TCP序列号难以猜测。
DoS攻击的防范:DDoS 必须透过网络上各个团体和使用者的共同合作,制定更严格的网络标准来解决。每台网络设备或主机都需要随时更新其系统漏洞、关闭不需要的服务、安装必要的防 毒和防火墙软件、随时注意系统安全,避免被黑客和自动化的 DDoS 程序植入攻击程序,以免成为黑客攻击的帮凶。
千里之行始于足下,懂得攻击的原理才会懂得如何防御,环境的搭建也是学习的路上必不可少的重要组成部分,在此我列出了此次实践运用到的环境和工具。
环境:VMware Workstation,Telnet server
操作系统:Kali linux,Windows7,Windows xp,Centos
工具:Cain,Hunt-1.5,Netwox539,wireshark
(注:本人是个刚起步的小菜鸡,表达能力也不强,总结得不对的地方还请大家多多包涵,欢迎大家相互交流,共同学习,一起进步,感激不尽)