文/諸葛建偉 魏克
在CERNET實際部署Kippo 蜜罐
文/諸葛建偉 魏克
COST論壇由CCERT、《中國教育網絡》雜志于2008年共同發(fā)起,采取會員制,面向個人,完全免費,以開放、平等、自由的互聯(lián)網精神運作。如需獲取COST技術論壇視頻、錄音等資料,請登錄:http://www.cost.edu.cn/。
我們在中國教育和科研計算機網中實際部署了Kippo蜜罐,本文結合我們的實際安裝部署過程,以及對捕獲數(shù)據的分析,介紹Kippo蜜罐的使用方法及其強大威力,同時也對目前互聯(lián)網上流行的SSH弱口令爆破攻擊的特性,以及控制SSH服務器后進一步攻擊的行為進行分析。最后,我們也將給出如何安全配置SSH服務的最佳實踐建議。
Kippo的安裝和使用都非常簡單,由于是完全基于Python實現(xiàn)的,Kippo目前支持各種Linux/Unix操作系統(tǒng)發(fā)行版(如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權限運行,而監(jiān)聽1024以下的22端口則需要root權限,為了使得Kippo能夠監(jiān)聽在ssh標準的端口22上,我們可以利用端口重定向技術或authbind工具。
端口重定向可利用IPTables,通過執(zhí)行“iptables -t nat-A PREROUTING -i IN_IFACE -p tcp --dport 22 -j REDIRECT --to-port 2222”,能夠將TCP 22端口的流量重定向至Kippo監(jiān)聽的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的data目錄下的userdb.txt中可以定制Kippo蜜罐模擬SSH服務的用戶名和口令,攻擊者如果使用passwd修改了口令之后,也會被自動地添加于此,之后的連接嘗試也會立即進入蜜罐之中。
Kippo蜜罐所模擬的文件系統(tǒng)也可以利用utils目錄下的createfs.py腳本工具,在一臺你所希望模擬文件系統(tǒng)列表的主機上進行運行,生成一個定制的文件系統(tǒng)目錄列表,保存于fs.pickle文件中。而文件系統(tǒng)中的文件內容,則可以拷貝至honeyfs目錄中,當攻擊者通過Kippo請求這些文件時,就會讀取到這些文件內容。
Kippo蜜罐的捕獲日志除了保存在本地log目錄之外,還可以通過Kippo源碼目錄下的dblog/mysql.py導入到MySQL數(shù)據庫中,以供分析人員進一步分析。除此之外,Dionaea蜜罐軟件的作者,“Code Machine”級人物Markus Koetter曾花了一個周末的時間,為Kippo編寫了一個xmpp日志提交模塊(dblog/xmpp.py),可以通過XMPP協(xié)議提交至一個即時通信聊天室中。利用Dionaea蜜罐中的pg_backend.py可以從即時通信聊天室中把各個Kippo蜜罐報告的日志記錄再解析出來,寫入集中的PostgresSQL數(shù)據庫中,從而可以在集中的Web界面中進行展示和分析,具體流程架構如圖2。
圖 2 Kippo蜜罐分布式部署結構
圖3 一次典型的SSH口令爆破攻擊中嘗試的用戶名
表1 SSH口令爆破攻擊中最常見的用戶名、口令及其組合
我們從2011年5月24日開始部署Kippo,至6月24日共運行一個月的時間,共捕獲到68,483次連接嘗試,有64,970次包含了口令猜測,其中315次猜測成功??诹畈聹y過程中的Top 20最常見用戶名、口令及組合見表1,所猜測的用戶名超過1萬個,但集中于root,占37%左右。對于每個用戶名所平均猜測的口令為7次左右,而對root則猜測了近8,000個不同口令。在口令爆破中,最常被猜測的口令都是一些簡短的弱口令如“123456”、“1234”、“password”等等,總共涉及的口令數(shù)有21,750個。最常見的組合是root/123456,而這也是Kippo蜜罐所缺省設置的用戶名/口令組合。
Kippo蜜罐還具有對SSH客戶端的識別能力,在捕獲的口令探測中,攻擊者所使用的SSH客戶端絕大部分(超過98%)是SSH-2.0-libssh-0.1(即大多數(shù)Linux發(fā)行版中缺省安裝的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查詢,可以發(fā)現(xiàn)該IP屬于某北京知名高校的珠海分校,之前也由于對SSH、FTP等服務的弱口令掃描而被加入SANS DShield黑名單和Fail2Ban黑名單中,可以確認該服務器頻繁地參與了遠程口令破解攻擊。
我們進一步對300多次成功猜測口令之后的控制會話進行了分析,其中73個會話進入Kippo蜜罐并鍵入了531次shell控制命令,最多的會話輸入了53個命令,持續(xù)了9分鐘。在這些會話中,攻擊者最常用的shell命令如表 2所示,包括查看當前在線用戶的“w”、退出shell的“exit”、查看服務器CPU信息的“cat /proc/cpuinfo”、查看服務器版本信息的“uname -a”、列舉當前目錄的“l(fā)s”和“l(fā)s -a”、將下載的文件修改為可執(zhí)行的“chmod +x *”、進入臨時目錄的“cd /var/tmp”、查看運行進程的“ps x”以及下載文件的“wget”。
一次典型的成功猜測SSH服務口令之后的進一步攻擊行為如圖 4所示,來自德國IP地址的攻擊者在登錄后查看了服務器信息,便從互聯(lián)網上的一個惡意文件宿主站點上下載了后綴名為“jpg”的文件,然而這并非一個圖片,而是一個攻擊工具的壓縮包,隨后攻擊者將該文件解壓縮到一個隱藏目錄.log中,切換入該目錄并執(zhí)行./go激活攻擊文件,當然Kippo蜜罐不會按照攻擊者的命令真正去發(fā)起攻擊,而是響應了一些愚弄攻擊者的消息“Shall we play a game?...”。我們對Kippo蜜罐下載到的bnc.jpg文件進行了分析,發(fā)現(xiàn)其中包含的是一個基于psybnc軟件實現(xiàn)的IRC代理服務器,攻擊者通過運行go shell腳本,將在crond中自動添加自啟動的IRC代理服務器,開放在3303端口上,并接受其他IRC僵尸程序的連接。此外軟件包中還包括了一個名為target、由Perl語言編寫的僵尸程序,該僵尸程序將連接localhost的3303端口,加入IRC頻道中,接受攻擊者控制,僵尸程序中包含了基本管理、執(zhí)行shell命令、portscan、tcpflood、udpflood、httpflood、Google Hacking搜索未打補丁的INDEXU并利用上傳漏洞上傳自身等功能。通過對該攻擊軟件包的分析,我們可以了解攻擊者在攻陷我們的“SSH服務”后,企圖在上面架設僵尸網絡的命令與控制服務器。
表2 攻擊者最常用的命令
Kippo是一款非常優(yōu)秀而且容易使用的開源SSH蜜罐軟件,使用Python編寫使其能夠運行與各種Linux、Unix和Windows操作系統(tǒng)平臺。Kippo具有發(fā)現(xiàn)并監(jiān)測SSH口令爆破攻擊及進一步的控制攻擊行為的能力,可以有效的發(fā)現(xiàn)大量針對網絡中SSH服務的攻擊行為。我們對教育網中部署Kippo蜜罐一個月所捕獲的攻擊日志進行分析,對目前流行的SSH口令爆破攻擊進行了取樣分析,給出了猜測用戶名、口令和客戶端的流行趨勢。同時也捕獲到了300多次成功的口令猜測以及其中的73個攻擊控制命令會話,對其中的典型攻擊進行深入分析發(fā)現(xiàn),攻擊者嘗試利用被“攻陷”的SSH服務器來架設IRC僵尸網絡。
針對Kippo蜜罐所揭示出的互聯(lián)網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蜜罐軟件,并將數(shù)據匯總至CERNET分布式蜜罐系統(tǒng)中,請與本文作者zhugejw@gmail.com聯(lián)系)。
(作者單位為清華大學網絡中心、CCERT應急響應組、中國蜜網項目組)