我的上一篇文章《Linux编程之PING的实现》里使用ICMP协议实现了PING的程序,ICMP除了实现这么一个PING程序,还有哪些不为人知或者好玩的用途?...这里我将介绍ICMP另一个很有名的黑科技:ICMP洪水攻击。...ICMP洪水攻击属于大名鼎鼎的DOS(Denial of Service)攻击的一种,一种是黑客们喜欢的攻击手段,这里本着加深自己对ICMP的理解的目的,也试着基于ICMP写一段ICMP的洪水攻击小程序...要实现ICMP的洪水攻击,需要以下三项的知识储备: DOS攻击原理 ICMP的深入理解 原始套接字的编程技巧 一、ICMP洪水攻击原理 ICMP洪水攻击是在ping的基础上形成的,但是ping程序很少能造成目的及宕机的问题...二、ICMP洪水攻击程序设计 这里我想实现一个ICMP洪水攻击的例子,这里我想采用方式二来进行设计。
由于缺乏必要的合法性检查,如果一个黑客想要被攻击的主机修改它的路由表,黑客就会发送ICMP重定向信息给被攻击的主机,让该主机按照黑客的要求来修改路由表。...在VMware虚拟环境中(Virtual Box不同)(...2)是充当网关的默认地址(通过route命令可以查看当前的网关和路由信息);所以攻击者可以冒充(...2)发出重定向包,通知受害者修改自己的网关为攻击者指定的...gw地址;如果伪造的gw是自身,可以实现中间人攻击或者DOS攻击(没有启动IP转发功能);如果是随意IP(不能到达或不负责转发),则可以导致DOS攻击。...清除路由缓存:ip route flush cache 查看路由缓存:route -n 实验环境 启动两台虚拟机,一台作为攻击者,一台作为被攻击者。...可以看到已经攻击成功了。
完整代码在文末 什么是ICMP SMURF攻击 ICMP SMURF攻击是一种DDoS攻击,利用了Internet Control Message Protocol (ICMP) 的功能和网络的特性,目的是通过大量伪造的...攻击者发送一个特殊构造的ICMP Echo Request(ping)数据包,将源IP地址设置为目标网络中的广播地址。...由于每个ICMP Echo Reply数据包都会触发目标网络上所有设备的回应,攻击者可以利用这种方式来发起分布式拒绝服务(DDoS)攻击。...跨平台支持:Libnet库可在多个操作系统和平台上使用,包括Linux、Unix、Windows等。这使得开发者能够在不同的环境中进行网络编程,并实现跨平台的网络应用程序。...-vv -i ens33 icmp 在攻击机192.168.219.128运行程序 sudo .
我们经常听到常规主流的DDOS攻击、CC攻击,SYN Flood攻击,HTTPS攻击等,刚好有客户问ICMP Flood攻击是什么?那我们今天就谈谈ICMP Flood攻击原理吧。...的网络信息流,这就是 ICMP 洪水攻击。...简单说攻击者向一个子网的广播地址发送多个ICMP Echo请求数据包。并将源地址伪装成想要攻击的目标主机的地址。...ICMP Flood攻击主要的目的使网络瘫痪,这也是最常见和最常用的网络攻击行为之一。...所以为攻击者创造了极大得便利条件。常利用ICMP攻击的操作有:利用ICMP echo数据包进行DDOS攻击;利用ICMP定向进行IP欺骗和窃听;利用ICMP的路由器信息绕过防火墙进行远程控制。
网络安全——ICMP重定向攻击 网络命令 网络工具——netwox 一、实验原理 二、设计代码 网络命令 网络不可用 $ ping ${域名} $ ping ${ip地址} $ ifconfig #lo...另外,注意观察,netwox发出的ICMP重定向包的目的IP是受害者正通信的IP,也即,netwox先抓到受害者的数据包,根据捕获包的IP地址,再构造攻击包。...二、设计代码 代码参考: #include #include #include #include #include...,需要自行定义头部,否则系统会默认生成IP地址为本机的头部,构造出来的ICMP包无法构成重定向攻击。.../ICMPAttack #必须要sudo 抓到的数据包如下:这里直接将攻击对象改成了本地主机,IP地址可能与上面对应不上。
域内主机:winserver12:1.1.1.2 攻击机IP:192.168.2.181 kali的IP -x 指定ICMP隧道连接的密码 -lp 指定要监听的本地TCP端口 -da 指定要转发的目标机的...IP -dp 指定要转发的目标机的TCP端口 -p 指定ICMP另一端机器的IP 攻击机开启隧道 ptunnel -x abc 实验过程:在跳板机执行 ptunnel -x 密码 在目标机执行: windows...-lp 1080 -da 1.1.1.2 -dp 3389 -x abc 然后使用远程连接: rdesktop -g 1440x900 -u saul -p saul 127.0.0.1:1080 linux...版本: 连接22端口 ptunnel -p x.x.x.x -lp 1080 -da x.x.x.x -dp 22 -x abc 三防御ICMP隧道攻击的方式: 1、检测同一源的ICMP数据包的流量。...总结: 这篇文章主要简单分析了一下Icmp协议的简单通信原理以及ICmp通信过程,还包含了使用icmpsh和pingtunnel这2种工具进行建立隐藏隧道进行隐蔽攻击。
ICMP ICMP用来传递差错控制,查询等信息。 ICMP Echo消息常用于诊断源和目的之间的网络连通性,同时还可以提供其他信息,如报文往返时间等。...当网络设备无法保证访问目标网络时,会自动发送ICMP目的不可达报文到发送端设备 type表示ICMP消息类型,code表示同一消息类型中的不同信息。 ICMP的一个典型应用是ping。...用户可以在ping命令中指定不同参数,如ICMP报文长度、发送ICMP报文个数、等待回复响应的超时时间等,设备根据配置的参数来构造并发送ICMP报文,进行ping测试。...如果不指定源IP地址,将采用出接口的IP地址作为ICMP echo-request报文发送的源地址。 2、-c count指定发送ICMP echo-request报文次数。...缺省值是255 4、-t timeout指定发送完ICMP echo-request后,等待ICMP echo-replay的超时时间。 Tracert ICMP的另一个典型应用是Tracert。
ICMP协议的作用:ICMP协议是IP协议的一个辅助,它可以传递差错报文以及其他信息 Ping用到的是ICMP协议,不是端口。...Capture ICMP Packets With Tcpdump 3.ICMP差错报文: ICMP差错报文,即端口不可达报文。它是ICMP目的不可达报文的一种,这种差错报文是立刻返回的。...IP数据报=IP首部+ICMP报文 =IP首部+ICMP首部+ICMP报文数据部分 =IP首部+ICMP首部+产生差错的数据报IP首部+原始IP数据报中数据的前8个字节 IP首部中包含 了协议字段,所以...Exploring TCP Connection Time_Wait in Linux 8.ping执行打印的信息 输出字节数,是64;输出目的主机的IP地址,是通过DNS协议解析来的;输出icmp_seq...Linux Tcpdump: Filter ipv6 ntp ping packets ————————————————
前言:昨天有个同学碰到发送udp包时收到destination unreachable的icmp包问题,本文简单介绍一下linux5.9中icmp包的处理流程。...icmp包 icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0); kfree_skb(skb); return 0...icmp包结构如下。 ? 收到icmp包的处理流程 我们从收到ip包开始分析。...); success = icmp_pointers[icmph->type].handler(skb);} icmp_rcv根据icmp包的信息做进一步处理。...static const struct icmp_control icmp_pointers[NR_ICMP_TYPES + 1] = { ...
重定向 ICMP重定向报文是ICMP控制报文中的一种。...回应包,目标ip:10.10.10.10 源ip: 11.11.11.11 目标mac: MAC-AR4-0/0/1 源MAC: MAC-PC2 ICMP攻击 ICMP泛洪攻击是最常用的DOS...(拒绝服务攻击)之一,顾名思义,就是对目标主机发送洪水般的ping包,使得目标主机忙于处理ping包而无能力处理其他正常请求,造成目标主机无法给其他主机提供服务,从而达到攻击的目的。...我们可以使用Kali里面的 hping3 进行 icmp 攻击 hping3 --flood -1 --rand-source --icmptype 3 --icmpcode 3 192.168.10.1...--flood 攻击模式,尽可能快的发送报文 -1 发送icmp报文 --ran-source 发送报文时,源IP为随机的IP地址 --icmptype 3 表示ICMP报文类型为目的不可达 --icmpcode
ping使用的是ICMP协议,它发送icmp回送请求消息给目的主机。ICMP协议规定:目的主机必须返回ICMP回送应答消息给源主机。如果源主机在一定时间内收到应答,则认为主机可达。...同样,IP层检查后,将有用的信息提取后交给ICMP协议,后者处理后,马上构建一个ICMP应答包,发送给主机A,其过程和主机A发送ICMP请求包到主机B一模一样。...即先由IP地址,在网络层传输,然后再根据mac地址由数据链路层传送到目的主机 三、ICMP协议: ICMP协议通过IP协议发送的,IP协议是一种无连接的,不可靠的数据包协议。...在Unix/Linux,序列号从0开始计数,依次递增。而Windows ping程序的ICMP序列号是没有规律。...ICMP协议在实际传输中数据包:20字节IP首部 + 8字节ICMP首部+ 1472字节38字节 ICMP首部一般格式: 类型(8位) 代码(8位) 检验和(16位) 首部的其余部分(32位 不同类型
我们在网络中经常会使用到ICMP协议,比如我们经常使用的用于检查网络通不通的Ping命令(Linux和Windows中均有),这个“Ping”的过程实际上就是ICMP协议工作的过程。...ICMP的作用与特点 ICMP的特点: ICMP本身是网络层的一个协议; ICMP差错报告采用路由器-源主机的模式,路由器在发现数据报传输出现错误时只向源主机报告差错原因; ICMP并不能保证所有的IP...可以知道,ping基于ICMP协议。 ICMP属于哪一层?...Exploring ICMP Port Number with Example ICMP差错报文 报告IP数据报在传输中的差错是ICMP报文最基本的功能,ICMP差错报文有如下特点: ICMP差错报文都是由路由器发送到源主机的...当路由器发送一份参数错误等的ICMP差错报文时,ICMP报文数据区始终包含产生ICMP差错报文的IP数据报的头部和其数据区的前8个字节(64位)。
所以我们就需要一种协议来完成这样的功能–ICMP协议。 ICMP协议的功能 ICMP协议的功能主要有: 1. 确认IP包是否成功到达目标地址 2....ICMP只能搭配IPv4使用,如果是IPv6的情况下, 需要是用ICMPv6 ICMP的报文格式 ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。...一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。...ICMP报头如下图所示。 如下图: 字段说明: 类型 说明 类型 占一字节,标识ICMP报文的类型,从类型值来看ICMP报文可以分为两大类。...过程: 一台主机向一个节点发送一个类型字段值为8的ICMP报文,如果途中没有异常(如果没有被路由丢弃,目标不回应ICMP或者传输失败),则目标返回类型字段值为0的ICMP报文,说明这台主机存在。
1、ICMP简介 ICMP全名为(INTERNET CONTROL MESSAGE PROTOCOL)网络控制消息协议。 ICMP的协议号为1。...ICMP报文就像是IP报文的小弟,总顶着IP报文的名头出来混。因为ICMP报文是在IP报文内部的,如图: ? 图:IP数据报 2、ICMP类型 ICMP报文主要有两大功能:查询报文和差错报文。...如果主机迟迟没有等到所有的分片报文,就会向源发送方发送一个ICMP超时报文,Code为1,表示分片重组超时了。...并向源发送方发一个ICMP源冷却报文(Type为4),告诉对方:“嘿,我这里客满了,你迟点再来。”...图:ICMP知识点思维导图 参考 http://www.rfc-editor.org/info/rfc792(RFC792)
#ctfhub 杂项 --icmp 技能树–流量分析–icmp–data 1.过滤icmp包 <img src="https://img-blog.csdnimg.cn/20200811134736342
ICMP隧道小记 一般的通信协议里,如果两台设备之间需要进行通信,肯定是需要开放端口的,但是ICMP协议不需要。...如果还是不可以的话,就只能用pip了 pip2 install impacket step 3 配置 因为icmpsh工具要代替系统本身的ping命令的应答程序,所以需要输入如下命令来关闭本地系统的ICMP...sysctl -w net.ipv4.icmp_echo_ignore_all=1 隧道利用完记得换回来1改成0就好 step 4 Run .
下面是一些基础的关于icmp协议的知识。 3.ICMP报文类型 ICMP 报文大致可分为两类:差错报文、查询报文。...—-ICMP 时间戳消息:可以向那些主机或路由器发送 ICMP 时间戳请求消息,然后通过接收 ICMP 时间戳应答消息获取时间信息。...ICMP 回显请求和 ICMP 回显应答报文是配合工作的。当源主机向目标主机发送了 ICMP 回显请求数据包后,它期待着目标主机的回答。...目标主机在收到一个 ICMP 回显请求数据包后,它会交换源、目的主机的地址,然后将收到的 ICMP 回显请求数据包中的数据部分原封不动地封装在自己的 ICMP 回显应答数据包中,然后发回给发送 ICMP...用tcpdump命令来抓取icmp的数据包 tcpdump -i eth0 icmp Filtering ICMP ICMPv6 Packets with Tcpdump Capture ICMP Packets
分析: 代码:linux-4.0.4/net/ipv4/icmp.c 1,在分析icmp之前,先分析一下:linux-4.0.4/net/ipv4/af_inet.c ?...icmp协议的handler是icmp_rcv: ? 2,icmp_echo icmp_rcv收到icmp request,回复icmp reply。 ?...或者找到ICMP_ECHO的handler,改成icmp_discard,再或者,在int icmp_rcv(struct sk_buff *skb)收到IP层传递过来包的时候,直接drop。...6,使用iptables iptables,一个运行在用户空间的应用软件,通过控制Linux内核netfilter模块,来管理网络数据包的流动与转送。...在大部分的Linux系统上面,iptables是使用/usr/sbin/iptables来操作,文件则放置在手册页(Man page)底下,可以通过 man iptables 指令获取。
ICMP报文包含在IP数据报中,IP报头在ICMP报文的最前面。一个ICMP报文包括IP报头(至少20字节)、ICMP报头(至少八字节)和ICMP报文(属于ICMP报文的数据部分)。...当IP报头中的协议字段值为1时,就说明这是一个ICMP报文。ICMP报头如下图所示。 各字段说明 类型:占一字节,标识ICMP报文的类型,目前已定义了14种,从类型值来看ICMP报文可以分为两大类。...代码:占一字节,标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型。...校验和:这是对包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错。其计算方法与在我们介绍IP报头中的校验和计算方法是一样的。...标识:占两字节,用于标识本ICMP进程,但仅适用于回显请求和应答ICMP报文,对于目标不可达ICMP报文和超时ICMP报文等,该字段的值为0。
icmp-icmpshgit clone https://github.com/inquisb/icmpsh.gitpip2 install flask(需要这个才能离线安装python2的impacket
领取专属 10元无门槛券
手把手带您无忧上云