作者:
virustracker
·
2016/04/08 10:56
http://www.welivesecurity.com/2016/03/30/meet-remaiten-a-linux-bot-on-steroids-targeting-routers-and-potentially-other-iot-devices
0x00 前言
ESET的研究人員正在積極地檢測以嵌入式系統為攻擊目標的木馬,受影響的有路由器,閘道器和無線訪問點。近期,我們已經發現了一個相關的bot,這個bot整合了Tsunami(也叫作Kaiten)和Gafgyt的功能,並相較於前者做出了一些改進,提供了新的功能。這個新威脅就是Linux/Remaiten。截至目前,我們已經發現了三個版本的Linux/Remaiten,版本號分別是2.0,2.1和2.2。根據其程式碼來看,木馬作者稱之為“KTN-Remastered”或“KTN-RM”。
在本文中,我們會說明Linux/Remaiten的特殊傳播機制,新增功能,以及不同版本之間的差別。
0x01 改進後的傳播機制
Linux/Gafgyt最突出的功能就是Telnet掃描。在執行Telnet掃描時,木馬會嘗試透過網際網路埠23連線到隨機的IP地址。如果連線成功,木馬會根據內建的一份使用者名稱/密碼列表,嘗試猜測登入憑證。登入成功後,木馬會發出一個shell命令,下載多個不同架構的bot可執行檔案,並嘗試執行這些bot。這種感染方式雖然簡單,但是會產生很多干擾,因為只有一個二進位制能夠執行在當前架構下。
Linux/Remaiten透過攜帶downloader,改進了上述的傳播機制。木馬的downloader是專門針對嵌入式Linux裝置的CPU架構,比如ARM和MIPS。在透過telnet登入了受害裝置後,木馬會嘗試判斷裝置平臺,並傳輸適用於該平臺的downloader。這個downloader的任務是聯絡CC伺服器,請求適用於裝置平臺的Linux/Remaiten bot二進位制。然後,在新的受害裝置上執行bot二進位制,建立一個新的bot供攻擊者使用。
0x02 技術分析downloader
Linux/Remaiten downloader是一個小型的ELF可執行檔案,內嵌在bot二進位制中。當執行時,downloader會連線到bot的CC伺服器,併傳送下面的某個請求,然後另起一行:
- mips
- mipsel
- armeabi
- armebeabi
CC伺服器會根據請求的架構,響應一個ELF bot二進位制。注意,這裡用於連線CC伺服器的TCP埠並不是bot的IRC伺服器。
圖1-downloader向CC請求一個bot二進位制
圖2-downloader正在連線CC
downloader的唯一任務就是向CC伺服器傳送前面提到的某條命令並將響應寫入到stdout。在這個例子中,傳送的命令是mips。
圖3-downloader向CC請求一個mips架構的bot
0x03 bot分析
在執行時,bot預設在後臺執行。使用“-d”命令執行bot時,bot會保持在前臺。一旦啟動,程式會偽裝成合法的名稱,比如“-bash” 或“-sh”。我們觀察發現,2.0和2.1版本使用的是“-bash” ,2.2版本使用的是“-sh”。
圖4-bot啟動
接下來,函式create_daemon 會建立一個名稱是“.kpid”的檔案,建立位置是下面的某個預設守護程式目錄(第一個具有寫入許可權),函式還會講其PID寫入到這個檔案。
圖5-守護程式檔案目錄
如果已經存在“.kpid”檔案,根據檔案中的PID,執行中的木馬程式就會被殺掉。然後,這個檔案會被移除,接著,建立新的“.kpid”,並繼續執行。
圖6-跟蹤pid檔案的建立
0x04 連線到CC伺服器
在bot二進位制中,硬編碼了一個CC伺服器IP地址表。bot會隨機選擇一個地址,並透過一個硬編碼埠連線到選中的CC。不同的變種會使用不同的埠。
圖7-bot連線一個CC伺服器
如果連線成功,bot隨後會進入IRC通道。CC則會響應一條welcome資訊和後續指令。bot會在受感染裝置上解析並執行這些指令。
圖8-CC響應給bot的歡迎資訊
0x05 處理IRC命令
bot可以處理多種通用的IRC命令。這些命令和函式處理程式都會以陣列的形式列出。
圖9-IRC命令
其中最有意思的是“PRIVMSG”命令。這個命令會要求bot執行一些惡意操作,比如,flooding,下載檔案,telnet掃描等。透過“PRIVMSG”傳送的命令也是以靜態陣列的形式呈現。
圖10-可用的bot命令
大部分的功能都是來自Linux/Tsunami和Linux/Gafgyt。二進位制中的下列字串與惡意行為有關。這些詳細的介紹,能讓我們知道這些字串的作用。
圖11-flooding功能
圖12-Telnet掃描,下載檔案,殺掉其他bots
0x06 內建downloader
我們前面提到過,Linux/Remaiten 的特別之處在於攜帶了多個小型的downloader,如果有符合受害裝置架構的版本,木馬就會把相應的downloader傳輸到裝置上。在執行時,downloader會聯絡CC,請求一個bot二進位制。
圖13-內建的有效載荷
圖14-有效載荷結構
0x07 Telnet scanner
圖15-猜測telnet登入憑證
當CC發出“QTELNET” 命令時,Remaiten的telnet scanner就會啟動。分析發現,木馬作者提供的命令描述是正確的:這個telnet的確是一個增強版的Gafgyt telnet scanner。
Telnet掃描是分階段完成的,可以歸結為:
- 選擇一個隨機的公共IP地址,並將其連線到埠23
- 嘗試使用者名稱/密碼組著
- 確定受害裝置的架構
- 傳送並執行相應的downloader
木馬會透過執行“cat $SHELL”命令來判斷裝置的架構,並解析其結果。SHELL環境變數中包含有可執行檔案的路徑,這個可執行檔案目前還是作為一個命令列翻譯器。如果這個檔案是一個ELF可執行檔案,則解析檔案標頭來判斷其架構。
圖16-判斷受害平臺&檢查是否有適合該平臺的downloader
圖17-負責解析ELF標頭的部分函式
然後,bot會選擇合適的有效載荷併傳送到新的受害裝置上。
圖18-負責根據裝置架構選擇有效載荷的函式
第一步是找到一個可寫入的目錄。Linux/Remaiten中有一個常用的可寫入路徑表。
圖19-downloader的儲存目錄
建立了幾個空的可執行程式:“.t”,“retrieve”和“binary”。“retrieve”檔案中會包含有downloader,“binary”是從CC伺服器上請求到的bot。似乎2.2版本之前都沒有使用“.t”檔案。
圖20-準備傳輸和執行有效載荷
Linux/Remaiten 採用了一種很奇怪的方式來建立空的可執行檔案:木馬會複製busybox二進位制(出現在大多數嵌入式裝置上),然後使用>file命令做空這個二進位制。
downloader是透過telnet傳輸的,透過發出echo命令,每個位元組都編碼了16進位制“\x” 轉序位元組。我們此前就見過有木馬利用這種技術在嵌入式Linux裝置中進行傳播,比如Linux/Moose。
圖21-傳輸帶有echo的有效載荷hexstring
傳輸完成後,downloader就會啟動並獲取完整的Linux/Remaiten有效載荷。downloader會從CC請求一個bot二進位制,並將其寫入到標準輸出,而部署命令會把這個輸出重定向到“binary” 檔案。最後,啟動“binary”檔案,啟用新的IRC bot。
圖22-執行downloader和bot
0x08 向CC傳送狀態
在恢復telnet掃描之前,bot會向CC伺服器報告其進度。bot會傳送新的裝置IP,正確的使用者名稱/密碼,以及是否感染了其他裝置。如果自動感染方式失敗,殭屍網路管理員可能會手動感染其他的裝置或從不受支援的架構上收集資料?
圖23-通知CC伺服器bot部署狀態
0x09 殺掉其他bot
還有一個很有趣的命令是“KILLBOTS”。發出這個命令後,bot會列舉正在執行的程式,然後會根據一定的標準,主要是程式名稱,來決定是忽略還是殺掉這個程式。不同版本的bot可能會選擇不同的程式名稱。
圖24-需要殺掉的程式名稱
圖25-需要忽略的程式名稱
Linux/Remaiten會根據程式的tty裝置號,只殺掉由一個互動shell啟動的程式。另外,木馬還會向CC伺服器報告都殺掉了哪些程式,這樣所或許是為了修改其程式白名單或黑名單。
圖26-bot正在殺程式
0x0A Linux/Remaiten變更日誌
不同的bot客戶端版本之間只是稍有不同,比如,修改程式白名單和黑名單,downloader目錄有變化等等。我們有理由懷疑,各個編譯版本之間可能會有區別,即使版本號沒有變化。在我們分析過的bot中,其downloader二進位制都是一樣的,但是IP地址和埠有差別。
和Gafgyt一樣,v2.2版本仍然會透過執行wget/tftp命令來下載shell指令碼,然後,由這個shell指令碼下載bot二進位制。在傳輸downloader之前,傳播程式碼首先會嘗試這種方法。
圖27-通知CC透過wget/tftp部署bot
shell指令碼是由另一個伺服器釋出的,這個伺服器還會負責傳送Gafgyt bot。
圖28-由另一個伺服器釋出shell指令碼
從al.sh檔案來看,這是我們首次發現針對PowerPC和SuperH等平臺的bot。雖然,有跨平臺編譯工具,但是,我們還是很驚訝攻擊者會在編譯自己的木馬時遇到問題。我們不清楚是哪臺裝置執行在PowerPC或SuperH。
圖29-shell指令碼下載的bot
圖30-shell指令碼的開頭
2.0版本使用的CC伺服器給出了一條出乎我們預料的welcome資訊:其中引用了一篇MalwareMustDie部落格。
圖31-2.0版本的CC引用了MalwareMustDie部落格
或許這是為了報復MalwareMustDie 曝光Gafgyt等木馬。
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!