“远古时代”的隐秘网络通信简析

之所以称为远古时代,是因为下面的分析基于2002,2003年的一个工具,有一个服务端和客户端,可以用各种协议来执行命令。

实验环境

1、两个ubuntu 16.04
2、工具:Tunnelshell 2.3

工具链接:

https://packetstormsecurity.com/search/files/?q=Tunnelshell

直接利用ip协议

被控服务器执行

1
sudo ./tunneld

控制服务器

1
sudo ./tunnel -t frag 10.10.10.2

我执行两个命令,分别是id和whoami,抓到的包如下:

这样是直接在ip层上面传数据,清晰明了,但是假如人看的话太明显了,不知道检测设备会不会直接检查ip层上面的数据层,毕竟是02,03年的工具

优点

  • 直接使用ip协议,可能检测设备不太会关注
  • 这样本地不用监听端口,增强对于本地的隐秘性

改进建议

  • 建议对传输的数据进行加密,比如aes,des都可以,密钥可以通过命令行参数设置

通过ICMP协议传输

被控端

1
sudo ./tunneld -t icmp -m echo-reply,echo

控制端

1
sudo ./tunnel -t icmp -m echo-reply,echo 10.10.10.2

我们执行命令id,查看数据包,是通过icmp的data部分传输数据

回应

其实回应命令执行结果之前,还回了个跟客户端一样的data,即执行的命令id

优点

  • icmp可能检测设备也不太会关注
  • 这样本地不用监听端口,增强对于本地的隐秘性

改进建议

  • 建议对传输的数据进行加密,比如aes,des都可以,密钥可以通过命令行参数设置

通过TCP协议传输

被控端

1
sudo  ./tunneld -t tcp -p 80,2000

控制端

1
sudo ./tunnel -t tcp -p 80,2000 10.10.10.2

同样,也是执行id命令

可以看到是通过tcp协议上的tcp payload传输数据

优点

  • 可以看到上面其实他是没有监听端口的,应该是通过抓包实现的,因为返回了RST,ACK这样的端口关闭的包,当然也像上面一样本地不用监听端口,增强对于本地的隐秘性

改进建议

  • 建议对传输的数据进行加密,比如aes,des都可以,密钥可以通过命令行参数设置

利用UDP协议

被控端

1
sudo ./tunneld -t udp -p 53,2000

控制端

1
sudo ./tunnel -t udp -p 53,2000 10.10.10.2

数据包如下:

可以看到其实是直接使用UDP协议,一些之后直接接命令或者命令执行的结果

优点

  • 可以看到上面其实是没有监听端口的,应该是通过抓包实现的,因为返回了icmp目标不可达的包,当然也像上面一样本地不用监听端口,增强对于本地的隐秘性

改进建议

  • 建议对传输的数据进行加密,比如aes,des都可以,密钥可以通过命令行参数设置

总结

其实参考文章的原作者把tcp当作http,udp利用53端口来以为是dns,其实都不太算

我们现在看到的dns是通过域名的信息来通信的,比如TXT查询记录

其实现在很多东西未来规避检测,基本都加密了,webshell管理工具也加密了,这肯定的也是现在及未来的方向,虽然工具是2003年的,但是也值得简单看看

参考

https://www.hackingarticles.in/covert-channel-the-hidden-network/

自愿打赏专区