雲服務器反黑客入侵攻防實錄(二)
- 2019 年 10 月 3 日
- 筆記
4、探秘黑客蹤
4.1 寓言公寓樓
城市一角有一棟單身公寓樓,公寓有門有窗。到了晚上,主人下班回來,拿鑰匙打開門進屋,關門熄燈休息, 平時窗戶半開着,通風透氣,保持空氣清新。
一台雲服務器好比作一間單身公寓。黑客好比作不速之客,不請自來,黑客進屋有兩條路可走,一條路是開門大搖大擺進來,另一條路是翻窗進屋,多少需要一些飛檐走壁的功夫。
公寓門比較先進,使用了電子密碼鎖,需要輸入正確密碼才能開門進屋。黑客是不知道密碼的,不能進屋。
單身公寓的1605室在16樓,小明在這間公寓里住了小一年了,最近新交了一位朋友小芳,這段時間留宿在公寓。小明和新朋友上下班有早有晚,所以小明給她開了一個新賬號,設了新密碼。小明有點懶,把賬號和密碼設成一樣的了,心想16樓很少有人來,樓道有24小時監控,諒他也沒人敢私闖民宅。
過了一個月,兩人鬧彆扭,小芳就搬出去住了。小明心情不好,獨自鬱悶,忘記收回給小芳的賬號密碼。
社區附近來了一個外國流浪漢。流浪漢是一名高智商的人士,喜歡無拘無束,過着狂野不羈的生活。有一天,流浪漢在公寓樓內閑逛,走着走着就到了1605房間,看見門上有一位姑娘頭像剪影,還紋上了幾個字母“fang”,那是小明和小芳秀恩愛時留下的。流浪漢靈機一動,不是很多人拿親友名字做密碼嗎?且試一試密碼鎖。這一試不要緊,公寓門居然打開了。
於是,流浪漢住進了這間單身公寓,和小明過起了錯峰式“同居”生活。小明白天去上班,晚上回家住。流浪漢白天過來住公寓,自個兒做飯吃,吃飽了就睡,天黑前離開。後來,流浪漢不滿足了,晚上也來公寓,怕被主人小明發現,偷偷在小明喝水的杯子里放了一粒安眠藥,溶解了無影無蹤,小明喝了下了安眠藥的白開水,晚上會睡得很香、很沉。於是,晚上也是流浪漢的天下了。
如此“同居”過了一個月,小明發現了一些異常,冰箱里的雞蛋莫名其妙少了幾個,茶几上的面巾紙也用得很快,早上帶走了垃圾,晚上回來垃圾桶里又冒出啃剩下的雞腿骨。
小明把這些異常情況跟他的好朋友小清說了,小清是一位知名的私家偵探,破獲很多疑難案件。接到小明的消息,小清立刻來到小明的公寓,里里外外勘察了一遍,然後小明就去上班了。小清的目光留在公寓門上的姑娘剪影和“fang”上,似乎明白了什麼。輸入密碼,公寓門自動打開了。小清又到大樓的視頻監控室,調閱了小明公寓外的監控視頻,看到那名流浪漢每天來來往往。小清修改了公寓門密碼,又報了警。警方調查以後,發出了通緝令。
晚上,小明回來,小清把發生的一切一五一十地告訴了小明,小明大吃一驚,然後就開心地笑了,很高興能有小清這樣的偵探朋友。
4.2 查詢訪客志
前面說到,一台雲服務器好比一間單身公寓,而黑客就好比闖入公寓的流浪漢。進入公寓可以從門進,也可翻窗進來,從高層公寓的窗戶進屋,難度大一些,窗戶還拉了鋼絲網。
從門進屋,對一台雲服務器就好比遠程SSH登錄進來,雲服務器主人是管理員,也是通過SSH登錄進來的。雲服務器對外暴露的服務端口,可以接受訪問請求返迴響應,但不歡並迎不速之客從端口潛入並接管服務器。翻窗進屋,就好比攻擊雲服務器的服務端口,有漏洞的端口才能進去,所以翻窗難度很大
對於陌生人來說,從門進屋也不容易,除非知道門禁密碼或者門禁遭到破壞。
有沒有陌生人闖入雲服務器,翻一翻系統登錄日誌就清楚了。就像調閱單身公寓的視頻監控,有誰到訪一目了然。
Linux的last命令能查詢雲服務器最近的SSH登錄日誌。
# last
圖 Linux服務器的系統登錄日誌
4.3 孜孜找不同
幾年前玩過一款小遊戲,名叫找不同:兩張圖畫滿了形狀各異的物體或幾何圖形,兩張圖絕大部分相同,只有幾個形狀不同而且隱藏在兩張圖畫里。從登錄日誌里找蛛絲馬跡,有點像玩找不同的遊戲。很快找不同見效了,找到不同之處,有了新發現。
絕大多數登錄記錄的源地址是192.168.x.x,是雲數據中心局域網地址,登錄用戶是root,與管理員的日常管理習慣一致。
有一條陌生IP地址記錄引起了我的注意,登錄賬號是jira,最後退出時間是4月8日04:09到04:19,與木馬文件sd-pam的最後修改時間“Apr 8 04:19”完全吻合。
可以推斷,黑客用jira用戶登錄進系統,在10分鐘內植入木馬程序,然後揚長而去,靜靜等待“肉雞”主機傳回挖礦數據(數字貨幣)。
4.4 驚現無秘碼
黑客是怎麼知道登錄賬號和密碼的?
我們知道,SSH是應用層通信加密協議,所有通信信息都是經過高強度加密的,很難破譯,所以截獲密文再破譯的可能性幾乎為零。猜測暴力破解密碼的可能性也為零。猜測暴力破解密碼的可能性也為零。
黑客登錄賬號jira並不是管理員常用的root賬號,進一步證明賬號密碼不是破譯而來的。
還有另一種可能,密碼丟失是因為管理員疏忽大意,使用了容易猜測的簡單密碼,例如:123,123456,abc,或者密碼乾脆等於賬號。
我們來驗證一下,弱密碼的猜測是否成立。到目前為止,我還不知道賬號jira的密碼。
通過跳板機用root登錄到JIRA雲服務器。 然後,切換到另一個普通用戶jira1(該賬號登錄受限,不可遠程登錄),root用戶切換到普通用戶不用輸入密碼。接着,從普通用戶jira1切換到用戶jira,此時必須輸入jira用戶的密碼。輸入密碼jira,居然切換成功了,證明jira賬號的密碼也是jira !!!這裡我表示無語。
# ssh root@192.168.1.x
# su – jira1
$ su - jira
雲服務器有一對泄了密、形同明文的賬號和密碼,就好比公寓泄密了密碼,任由他人自由進出、來來往往。公寓被攻陷,進了流浪漢;服務器安全防線被攻破,“挖礦”的木馬程序被植入,二十四小時不停地挖數字虛擬貨幣。
4.5 緊鎖失密門
查詢系統內沒有正常進程在使用jira用戶,確認jira用戶暫時閑置無用。立即修改jira用戶密碼,並鎖定賬號。
# passwd jira # usermod -L jira
又巡視了一遍操作系統,/etc/passwd、/etc/shadow都沒有可登陸的用戶。從SSH端口攻入雲服務器的入口都被封堵。
做完這些事情之後,初步判斷系統已經安全後,我的心情才逐漸舒緩下來。
周一上班後立即與雲服務器管理員取得聯繫,系統管理團隊對雲服務器集群作了漏洞掃描和安全加固。
4.6 探尋黑客蹤
心情放鬆下來,才有空閑思考黑客從哪裡來,怎麼進來的,還做了什麼事!
查詢百度,4月8日的黑客入侵源地址來自挪威。但是,黑客並不一定藏身挪威,甚至跟挪威一點關係都沒有。因為入侵源地址可能只是一個跳板,一台受操控的“肉雞”主機而已。
此後的5月1日,又有一波黑客來襲,大白天(下午14:34到14:41)大搖大擺地在侵入的雲服務器待了6分鐘,但並沒有修改上一波黑客留下的木馬程序。5月的黑客源地址來自瑞士,他會是誰呢?是上一波黑客,回來巡視取勝的舊戰場。還是新來的“有道德的”黑客,看到有人捷足先登,悄然離去。不得而知,但一切皆有可能。
再往前看,1月10日到18日,先後有四次登錄記錄,地址來源各不相同,185.112.82.230、185.112.82.235、41.231.5.34和188.166.171.252,分別來自俄羅斯、俄羅斯、突尼斯和荷蘭。
源地址的多樣化,似乎表明黑客們可以隨意出入這台雲服務器。是什麼原因吸引黑客們蜂擁而至呢?為什麼是jira用戶,而不是別的用戶呢?
答案是端口掃描,並通過掃描獲知公開信息,進而攻擊服務器漏洞。
4.7 解讀黑客術
黑客程序掃描公網IP地址或者掃描域名的HTTP端口(80端口、8080端口),分析返回的HTML文本,經過過濾、提取候選詞,再與詞庫中的關鍵字對比。如果關鍵詞匹配,從關鍵詞關聯的應用庫提取對應的應用程序,推斷該地址的HTTP端口提供該應用服務。例如:提取到jira關鍵詞,推斷該服務器提供JIRA服務;提取到sonarqube關鍵字,推斷該服務器提供SonarQube服務,等等。
圖 HTTP服務的默認頁面暴露了具體服務
圖 HTTP服務返回的默認響應暴露了具體服務
這些通用公共應用的安裝指南,大多數會提示用戶新建同名的操作系統賬戶,例如jira、mysql和redis等,以此用戶來安裝公共應用。一些粗心的管理員,會給系統賬戶設置簡單密碼。這正是這一類黑客程序攻擊能得逞的關鍵原因之一。
互聯網上IP地址浩如煙海,為什麼偏偏是這台雲服務器呢?
比較笨的辦法是按地址段逐個IP掃描,發現IP地址上有開放的端口,再實施攻擊、破解,攻破端口後,取得系統權限,植入木馬程序。
一個國家所分配的IP地址號段是固定不變,除非有新增的IP地址號段。國家IP管理機構再給其國內的雲服務提供商分配IP地址號段,這也是固定的,甚至可以公開查詢任意一個雲服務商的IP地址號段。同一個雲服務提供商的雲安全基礎設施是共用的,有相同的護盾,也有相同的漏洞,只要在一台雲服務器上發現了漏洞,很可能其他雲服務器也有類似的漏洞。
向雲服務提供商租用虛擬服務器的內容提供商,由於安全管理制度、安全基礎軟件和安全管理團隊的共性,其管理的雲服務器集群也就有了相似的安全性和相似的漏洞。舉一反三,照貓畫虎,攻擊者攻陷一台雲服務器後,很容易擴大戰果攻擊更多雲服務器。
前文說到,黑客植入的木馬程序是“挖礦”程序。在下一集將對這個“挖礦”程序動手術,肢解程序為幾大塊,分析它內部運行機制,對外通信聯絡模式等等。
本文是作者原創作品,原文發表在公眾號 雲服務器反黑客入侵攻防實錄(二)