在CERNET实际部署Kippo 蜜罐

2011-11-09 13:43:14诸葛建伟魏克
中国教育网络 2011年9期
关键词:蜜罐用户名口令

文/诸葛建伟 魏克

在CERNET实际部署Kippo 蜜罐

文/诸葛建伟 魏克

COST论坛由CCERT、《中国教育网络》杂志于2008年共同发起,采取会员制,面向个人,完全免费,以开放、平等、自由的互联网精神运作。如需获取COST技术论坛视频、录音等资料,请登录:http://www.cost.edu.cn/。

我们在中国教育和科研计算机网中实际部署了Kippo蜜罐,本文结合我们的实际安装部署过程,以及对捕获数据的分析,介绍Kippo蜜罐的使用方法及其强大威力,同时也对目前互联网上流行的SSH弱口令爆破攻击的特性,以及控制SSH服务器后进一步攻击的行为进行分析。最后,我们也将给出如何安全配置SSH服务的最佳实践建议。

Kippo SSH蜜罐的安装和使用

Kippo的安装和使用都非常简单,由于是完全基于Python实现的,Kippo目前支持各种Linux/Unix操作系统发行版(如Debian、CentOS、Ubuntu、FreeBSD等),也支持在Windows上进行部署。Kippo主要依赖的软件包有Python2.5+、Twisted 8.0+、PyCrypto和Zope Interface。

在Ubuntu上通过运行如下命令,就可以直接通过Kippo源码包目录中的start.sh来启动Kippo。

在Windows 7上,首先安装如下软件后,通过C:Python26scripts wistd.py -y kippo.tac就可以启动 Kippo。

在缺省配置下,Kippo是在2222端口上来模拟SSH服务,这是为了确保主机的安全,Kippo不允许以root权限运行,而监听1024以下的22端口则需要root权限,为了使得Kippo能够监听在ssh标准的端口22上,我们可以利用端口重定向技术或authbind工具。

端口重定向可利用IPTables,通过执行“iptables -t nat-A PREROUTING -i IN_IFACE -p tcp --dport 22 -j REDIRECT --to-port 2222”,能够将TCP 22端口的流量重定向至Kippo监听的2222端口。利用authbind可以直接让Kippo绑定在22端口上,省去重定向过程,因此我们推荐这种方法,具体步骤为:

在启动Kippo之后,你可以使用SSH客户端连接到蜜罐主机的Kippo端口,以缺省的root/123456用户名和口令登录后,你就可以测试Kippo了。

在运行一段时间之后,Kippo软件包的log目录下就存储了大量的log文件,记录了Kippo蜜罐所捕获的每次SSH口令猜测和进一步控制命令记录。在log/tty路径下,则记录了攻击者成功猜测Kippo配置的用户名和口令,以及登录进伪装的SSH服务之后所进行的攻击命令会话过程。利用utils目录下的playlog.py工具,可以按照捕获攻击命令的时间点逼真地恢复出当时的攻击会话场景。而在dl目录下,则记录了攻击者在Kippo中通过wget或curl等命令所下载的攻击工具文件,可供分析人员进一步对这些工具进行分析。

Kippo蜜罐的定制与日志汇总

在Kippo的data目录下的userdb.txt中可以定制Kippo蜜罐模拟SSH服务的用户名和口令,攻击者如果使用passwd修改了口令之后,也会被自动地添加于此,之后的连接尝试也会立即进入蜜罐之中。

Kippo蜜罐所模拟的文件系统也可以利用utils目录下的createfs.py脚本工具,在一台你所希望模拟文件系统列表的主机上进行运行,生成一个定制的文件系统目录列表,保存于fs.pickle文件中。而文件系统中的文件内容,则可以拷贝至honeyfs目录中,当攻击者通过Kippo请求这些文件时,就会读取到这些文件内容。

Kippo蜜罐的捕获日志除了保存在本地log目录之外,还可以通过Kippo源码目录下的dblog/mysql.py导入到MySQL数据库中,以供分析人员进一步分析。除此之外,Dionaea蜜罐软件的作者,“Code Machine”级人物Markus Koetter曾花了一个周末的时间,为Kippo编写了一个xmpp日志提交模块(dblog/xmpp.py),可以通过XMPP协议提交至一个即时通信聊天室中。利用Dionaea蜜罐中的pg_backend.py可以从即时通信聊天室中把各个Kippo蜜罐报告的日志记录再解析出来,写入集中的PostgresSQL数据库中,从而可以在集中的Web界面中进行展示和分析,具体流程架构如图2。

图 2 Kippo蜜罐分布式部署结构

图3 一次典型的SSH口令爆破攻击中尝试的用户名

表1 SSH口令爆破攻击中最常见的用户名、口令及其组合

SSH口令爆破与控制命令

我们从2011年5月24日开始部署Kippo,至6月24日共运行一个月的时间,共捕获到68,483次连接尝试,有64,970次包含了口令猜测,其中315次猜测成功。口令猜测过程中的Top 20最常见用户名、口令及组合见表1,所猜测的用户名超过1万个,但集中于root,占37%左右。对于每个用户名所平均猜测的口令为7次左右,而对root则猜测了近8,000个不同口令。在口令爆破中,最常被猜测的口令都是一些简短的弱口令如“123456”、“1234”、“password”等等,总共涉及的口令数有21,750个。最常见的组合是root/123456,而这也是Kippo蜜罐所缺省设置的用户名/口令组合。

Kippo蜜罐还具有对SSH客户端的识别能力,在捕获的口令探测中,攻击者所使用的SSH客户端绝大部分(超过98%)是SSH-2.0-libssh-0.1(即大多数Linux发行版中缺省安装的ssh命令版本),其他的SSH客户端版本还包括SSH-2.0-libssh-0.2、SSH-2.0-libssh-0.11、SSH-2.0-PuTTY_Release_0.60、OpenSSH等等。

6月24日, 我们部署的蜜罐遭遇了一次典型的SSH口令爆破攻击,攻击源IP地址为***.91.***.138,从上午7时许至9点半之间进行了超过6, 300余次口令猜测,主要尝试的用户名和弱口令,如图2和图3。对该攻击源IP进行进一步的whois查询,可以发现该IP属于某北京知名高校的珠海分校,之前也由于对SSH、FTP等服务的弱口令扫描而被加入SANS DShield黑名单和Fail2Ban黑名单中,可以确认该服务器频繁地参与了远程口令破解攻击。

我们进一步对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服务”后,企图在上面架设僵尸网络的命令与控制服务器。

表2 攻击者最常用的命令

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应急响应组、中国蜜网项目组)

猜你喜欢
蜜罐用户名口令
《护士进修杂志》投稿程序
蜜罐蚁
中外文摘(2019年20期)2019-11-13 02:57:53
高矮胖瘦
被自己撑死的蜜罐蚁
知识窗(2019年6期)2019-06-26 04:27:09
口 令
基于博弈的蜜罐和入侵检测系统最优配置策略
机智的快递员
故事会(2017年17期)2017-09-04 17:36:42
好玩的“反口令”游戏
哈密瓜:乡间蜜罐
中国三峡(2017年4期)2017-06-06 10:44:22
SNMP服务弱口令安全漏洞防范