我们进一步对300多次成功猜测口令之后的控制会话进行了分析,其中73个会话进入Kippo蜜罐并键入了531次shell控制命令,最多的会话输入了53个命令,持续了9分钟。在这些会话中,攻击者最常用的shell命令如表 2所示,包括查看当前在线用户的“w”、退出shell的“exit”、查看服务器CPU信息的“cat /proc/cpuinfo”、查看服务器版本信息的“uname -a”、列举当前目录的“ls”和“ls -a”、将下载的文件修改为可执行的“chmod +x *”、进入临时目录的“cd /var/tmp”、查看运行进程的“ps x”以及下载文件的“wget”。
一次典型的成功猜测SSH服务口令之后的进一步攻击行为如图 4所示,来自德国IP地址的攻击者在登录后查看了服务器信息,便从互联网上的一个恶意文件宿主站点上下载了后缀名为“jpg”的文件,然而这并非一个图片,而是一个攻击工具的压缩包,随后攻击者将该文件解压缩到一个隐藏目录.log中,切换入该目录并执行./go激活攻击文件,当然Kippo蜜罐不会按照攻击者的命令真正去发起攻击,而是响应了一些愚弄攻击者的消息“Shall we play a game?...”。我们对Kippo蜜罐下载到的bnc.jpg文件进行了分析,发现其中包含的是一个基于psybnc软件实现的IRC代理服务器,攻击者通过运行go shell脚本,将在crond中自动添加自启动的IRC代理服务器,开放在3303端口上,并接受其他IRC僵尸程序的连接。此外软件包中还包括了一个名为target、由Perl语言编写的僵尸程序,该僵尸程序将连接localhost的3303端口,加入IRC频道中,接受攻击者控制,僵尸程序中包含了基本管理、执行shell命令、portscan、tcpflood、udpflood、httpflood、Google Hacking搜索未打补丁的INDEXU并利用上传漏洞上传自身等功能。通过对该攻击软件包的分析,我们可以了解攻击者在攻陷我们的“SSH服务”后,企图在上面架设僵尸网络的命令与控制服务器。
图 4 一次典型的SSH口令爆破攻击中尝试的弱口令
图 5 一次典型的成功攻破SSH服务后的攻击行为
Kippo是一款非常优秀而且容易使用的开源SSH蜜罐软件,使用Python编写使其能够运行与各种Linux、Unix和Windows操作系统平台。Kippo具有发现并监测SSH口令爆破攻击及进一步的控制攻击行为的能力,可以有效的发现大量针对网络中SSH服务的攻击行为。我们对教育网中部署Kippo蜜罐一个月所捕获的攻击日志进行分析,对目前流行的SSH口令爆破攻击进行了取样分析,给出了猜测用户名、口令和客户端的流行趋势。同时也捕获到了300多次成功的口令猜测以及其中的73个攻击控制命令会话,对其中的典型攻击进行深入分析发现,攻击者尝试利用被“攻陷”的SSH服务器来架设IRC僵尸网络。
针对Kippo蜜罐所揭示出的互联网SSH服务安全风险,我们建议SSH服务管理员采用如下最佳实践措施,来抵御SSH口令爆破攻击,避免自己的服务器被攻击者恶意利用。
1. 将SSH服务配置在非标准端口上,即不要绑定在TCP 22端口;
2. 部署一个SSH口令爆破防御软件,如Denyhost,fail2ban等;
3. 禁用远程的root登录;
4. 不要使用口令登录,而使用公钥证书进行代替;
5. 如果你必须要使用口令,确保它们都足够复杂;
6. 使用AllowGroups来限制只对特定组的用户开放访问;
7. 如果可能,对SSH服务使用一个Chroot的jail进行控制;
8. 使用IPtables或硬件防火墙来限制能够访问SSH服务的IP地址范围;
9. 在TCP 22端口上部署一个Kippo等SSH蜜罐(如有意部署Kippo蜜罐软件,并将数据汇总至CERNET分布式蜜罐系统中,请与本文作者zhugejw@gmail.com联系)。
(作者单位为清华大学网络中心、CCERT应急响应组、中国蜜网项目组)
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。