1.ICMP 协议简介
ICMP 协议位于网络层,是网际控制报文协议,属于网络层的差错和控制报文协议,与 IP 协议、ARP 协议、RARP 协议及 IGMP 协议共同构成 TCP/IP 模型中的网络层。一般可通过 ping 抓取到此协议,ICMP 报文在 IP 帧结构的首部协议类型字段(Protocol 8bit) 的值 = 1 就说明这是一个 ICMP 报文。ICMP 报文种类有 ICMP 差错报告报文、拥塞控制报文以及 ICMP 询问报文,常用于在 IP 主机、路由器之间传递控制消息,包括报告错误、交换受限控制和状态信息等,是 IP 协议的重要组成部分,易被黑客利用发起攻击。
2.ICMP 攻击的原理
ICMP 攻击主要是通过构造大量 ICMP 数据包来发起泛洪攻击。例如,通过高速发送大量的 ICMP Echo Reply 数据包,目标网络的带宽瞬间就会被耗尽,阻止合法的数据通过网络,从而消耗目标带宽资源实现拒绝服务攻击。这种攻击会使计算机的 CPU 使用率居高不下,甚至可能导致计算机崩溃,就像黑客在一个时段内连续向计算机发出大量请求而导致 CPU 占用率太高而死机一样。
3.ICMP 攻击的类型
(1)针对带宽的 DoS 攻击,利用无用数据耗尽网络带宽,常见攻击工具有 Pingflood 等。Pingflood 等工具通过高速发送大量的 ICMP 数据包,使得目标网络的带宽被无用数据占据,合法的数据无法通过网络。这种攻击方式仅限于攻击网络带宽,单个攻击者就能发起这种攻击,而且更厉害的攻击形式,如 smurf 和 papa-smurf,可以使整个子网内的主机对目标主机进行攻击,从而扩大 ICMP 流量。
(2)针对连接的 DoS 攻击,可终止现有网络连接。针对网络连接的 DoS 攻击会影响所有的 IP 设备,因为它使用了合法的 ICMP 消息。比如 Nuke 通过发送一个伪造的 ICMP Destination Unreachable 或 Redirect 消息来终止合法的网络连接。更具恶意的攻击,如 puke 和 smack,会给某一个范围内的端口发送大量的数据包,毁掉大量的网络连接,同时还会消耗受害主机 CPU 的时钟周期。还有一些攻击使用 ICMP Source Quench 消息,导致网络流量变慢,甚至停止。Redirect 和 Router Announcement 消息被利用来强制受害主机使用一个并不存在的路由器,或者把数据包路由到攻击者的机器,进行攻击。
(3)基于重定向的路由欺骗技术,破坏路由增强窃听能力。微软的 Windows98 和 NT 系统都保持着一张已知的路由器列表,列表中位于第一项的路由器是默认路由器,如果默认路由器关闭,则位于列表第二项的路由器成为缺省路由器。缺省路由向发送者报告另一条到特定主机的更短路由,就是 ICMP 重定向。攻击者可利用 ICMP 重定向报文破坏路由,并以此增强其窃听能力。如果一台机器伪装成路由器截获所有到某些目标网络或全部目标网络的 IP 数据包,这样就形成了窃听。通过 ICMP 技术还可以抵达防火墙后的机器进行攻击和窃听。
二、ICMP 攻击的实战演练
1. 环境准备
进行 ICMP 攻击的实战演练需要准备特定的环境。我们可以使用 kali 操作系统以及 win7、win10 或 win11 等系统,在实验中,需要关掉这些系统的防火墙,并确保虚拟机内的局域网能够相互 ping 通。同时,我们将使用 kali 自带的 HPing3 程序进行攻击操作。
2. 攻击步骤
首先,运行命令hping3 --icmp --rand-source --flood 目标 IP。在执行这个命令之前,我们需要提前打开 wireshark 进行监听。当命令执行后,会抓取到大量的 ICMP 包,并且由于使用了随机源地址(--rand-source),使得源地址难以追踪。
这种攻击方式类似于一些参考资料中提到的方法。例如在 “kail2.0 下 hping3 的安装和使用 (二)_kali 安装 ping3 - CSDN 博客” 中提到了 ICMP 常用的攻击的三种方式,其中一种就是伪造 IP 的 Flood,它随意伪造一个 IP 来 flood,具有一定的隐蔽性。
在实际操作中,我们要注意这种攻击可能会对网络造成较大的影响,因此应谨慎使用,避免对正常的网络环境造成严重破坏。同时,我们也可以通过分析抓取到的 ICMP 包结构,进一步了解这种攻击的特点和行为,就像在护网行动中通过查看流量分析是否存在此类攻击行为一样。
三、ICMP 攻击的防御方法
三、ICMP 攻击的防御方法
1. 设置安全策略
禁用 ICMP 协议是一种有效的防御方法。可以通过多种方式实现,如在操作系统中进行设置。例如,在 Windows 系统中,可以使用命令 “netsh firewall set icmpsetting all disable” 在防火墙里面禁用 ICMP 协议,这样对方就无法通过 PING 来探测你的电脑。对于没有安装防火墙的情况,也可以配置系统自带的默认防火墙来预防攻击,具体步骤如下:
第一步:打开电脑桌面,右键点击 “网上邻居→属性→本地连接→属性→Internet 协议 (TCP/IP)→属性→高级→选项 - TCP/IP 筛选 - 属性”。
第二步:在 “TCP/IP 筛选” 窗口中,点击选中 “启用 TCP/IP 筛选 (所有适配器)”。然后分别在 “TCP 端口、UDP 端口和 IP 协议” 的添加框上,点击 “只允许”,后按添加按钮,然后在跳出的对话框输入端口,通常我们用来上网的端口是:80、8080,而邮件服务器的端口是:25、110,FTP 的端口是 20、21,同样将 UDP 端口和 IP 协议相关进行添加。
第三步:打开 “控制面板→管理工具→本地安全策略”,然后右击 “IP 安全策略,在本地机器” 选 “管理 IP 筛选器和 IP 筛选器操作”,在管理 IP 筛选器和 IP 筛选器操作列表中添加一个新的过滤规则,名称输入 “防止 ICMP 攻击”,然后按添加,在源地址选任何 IP 地址,目标地址选我的 IP 地址,协议类型为 ICMP,设置完毕。
第四步:在 “管理筛选器操作”,取消选中 “使用添加向导”,添加,在常规中输入名字 “Deny 的操作”,安全措施为 “阻止”。
第五步:点击 “IP 安全策略,在本地机器”,选择 “创建 IP 安全策略 - 下一步 - 输入名称为 ICMP 过滤器”,通过增加过滤规则向导,把刚刚定义的 “防止 ICMP 攻击” 过滤策略指定给 ICMP 过滤器,然后选择刚刚定义 “Deny 的操作”,然后右击 “防止 ICMP 攻击” 并启用。
2. 限制 ICMP 包数量和速度
可以使用工具如 iptables 规则将 ICMP (Ping) 流量限制为每秒特定数量的数据包。例如,“sudo iptables -A OUTPUT -p icmp -m limit --limit 5/second -j ACCEPT” 这条命令可以限制每秒只允许 5 个 ICMP 数据包通过。还可以使用 limit 模块根据不同的时间单位进行速率限制,如一分钟内限制接收特定数量的 ICMP 数据报文。
3. 特殊路由处理
对于特殊的 ICMP 包,可以编写特殊路由将其丢掉,不进行深度处理。通过这种方式,可以避免一些潜在的攻击包对网络造成影响。
4. 部署安全产品
部署抗 DDoS、在出口安装防火墙、部署入侵防御系统(IPS)等安全产品可以有效防御 ICMP 攻击。防火墙可以根据 ICMP 包的特征进行过滤,IPS 可以检测并拦截恶意的 ICMP 流量。当前主流防火墙在基本的基于五元组检查的基础上引入了状态检测,能够极大减小伪造源地址攻击的危害。
5. 配置防火墙规则
配置防火墙规则以阻止恶意的 ICMP 数据包。可以根据攻击的特征,设置防火墙规则来过滤掉伪造的 ICMP 请求或限制 ICMP 流量的频率。防火墙可以根据源 IP 地址、目标 IP 地址、ICMP 类型等信息进行过滤。一般除了出站的 ICMP Echo Request、出站的 ICMP Source Quench、进站的 TTL Exceeded 和进站的 ICMP Destination Unreachable 之外,所有的 ICMP 消息类型都应该被阻止。
6.IP 过滤和黑名单
根据流量分析结果,可以设置 IP 过滤和黑名单机制。通过阻止来自恶意 IP 地址的 ICMP 流量,可以减轻服务器的负载和防止 ICMP 攻击。黑名单可以手动维护或使用自动化工具,根据攻击行为或异常流量的特征进行更新。
7. 减少 ICMP 响应
通过配置网络设备或服务器,减少 ICMP 响应的频率。可以限制服务器发送 ICMP 回复的速率,避免对恶意 ICMP 请求的过度响应。
8. 流量清洗和反向代理
利用流量清洗和反向代理服务来过滤和清除恶意的 ICMP 流量。这些服务可以对进入服务器的流量进行检查和过滤,过滤掉异常的 ICMP 请求,并将合法的流量转发到服务器。
9. 运营商合作
与互联网服务提供商 (ISP) 合作,报告 ICMP 攻击事件并请求他们采取相应的防护措施。ISP 可以协助过滤恶意 ICMP 流量和重新路由流量,减轻攻击对网络的影响。
10. 更新和漏洞修复
及时更新网络设备、操作系统和应用程序的补丁和漏洞修复,以减少攻击者利用漏洞进行 ICMP 攻击的可能性。
11. 网络流量控制
实施网络流量控制策略,包括限制带宽、设置 QoS 策略等。这可以帮助平衡和控制网络流量,减轻 ICMP 攻击对网络带宽和性能的影响。
墨者安全 防护盾
墨者安全作为专业级别安全防护专家,在应对 Webshell 风险隐患方面展现出了卓越的能力。其拥有全面的检测机制,能够精准识别 Webshell 的各种类型和变体,无论是复杂的大马,还是隐蔽的内存马,都难逃其敏锐的监测。
墨者安全防护盾具备强大的实时监控功能,对服务器的各项活动进行 7*24 小时不间断的监视。一旦发现任何可疑的 Webshell 活动迹象,立即发出警报,并迅速采取隔离和清除措施,将风险扼杀在萌芽状态。
在防护策略上,墨者安全防护盾采用了多层次的防御体系。不仅能够在网络层面阻挡外部的恶意访问和攻击,还能深入系统内部,对服务器的文件系统、进程等进行深度检查和保护,确保 Webshell 无法植入和运行。
同时,墨者安全防护盾拥有快速的应急响应能力。当 Webshell 攻击事件发生时,专业的安全团队能够迅速介入,进行深入的分析和处理,最大程度减少攻击带来的损失,并帮助用户快速恢复服务器的正常运行。
墨者安全防护盾还注重用户教育和培训,为用户提供关于 Webshell 防范的专业知识和最佳实践,帮助用户提升自身的安全意识和防范能力,共同构建坚实的网络安全防线。