<span id="7ztzv"></span>
<sub id="7ztzv"></sub>

<span id="7ztzv"></span><form id="7ztzv"></form>

<span id="7ztzv"></span>

        <address id="7ztzv"></address>

            原文地址:http://drops.wooyun.org/tips/14499

            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服務器,并發送下面的某個請求,然后另起一行:

            CC服務器會根據請求的架構,響應一個ELF bot二進制。注意,這里用于連接CC服務器的TCP端口并不是bot的IRC服務器。

            p2 圖1-downloader向CC請求一個bot二進制

            p3 圖2-downloader正在連接CC

            downloader的唯一任務就是向CC服務器發送前面提到的某條命令并將響應寫入到stdout。在這個例子中,發送的命令是mips。

            p4 圖3-downloader向CC請求一個mips架構的bot

            0x03 bot分析

            在執行時,bot默認在后臺運行。使用“-d”命令運行bot時,bot會保持在前臺。一旦啟動,進程會偽裝成合法的名稱,比如“-bash” 或“-sh”。我們觀察發現,2.0和2.1版本使用的是“-bash” ,2.2版本使用的是“-sh”。

            p5 圖4-bot啟動

            接下來,函數create_daemon 會創建一個名稱是“.kpid”的文件,創建位置是下面的某個預設守護進程目錄(第一個具有寫入權限),函數還會講其PID寫入到這個文件。

            p6 圖5-守護進程文件目錄

            如果已經存在“.kpid”文件,根據文件中的PID,運行中的木馬進程就會被殺掉。然后,這個文件會被移除,接著,創建新的“.kpid”,并繼續執行。

            p7 圖6-跟蹤pid文件的創建

            0x04 連接到CC服務器


            在bot二進制中,硬編碼了一個CC服務器IP地址表。bot會隨機選擇一個地址,并通過一個硬編碼端口連接到選中的CC。不同的變種會使用不同的端口。

            p8 圖7-bot連接一個CC服務器

            如果連接成功,bot隨后會進入IRC通道。CC則會響應一條welcome信息和后續指令。bot會在受感染設備上解析并執行這些指令。

            p9 圖8-CC響應給bot的歡迎信息

            0x05 處理IRC命令


            bot可以處理多種通用的IRC命令。這些命令和函數處理程序都會以陣列的形式列出。

            p10 圖9-IRC命令

            其中最有意思的是“PRIVMSG”命令。這個命令會要求bot執行一些惡意操作,比如,flooding,下載文件,telnet掃描等。通過“PRIVMSG”發送的命令也是以靜態陣列的形式呈現。

            p11 圖10-可用的bot命令

            大部分的功能都是來自Linux/Tsunami和Linux/Gafgyt。二進制中的下列字符串與惡意行為有關。這些詳細的介紹,能讓我們知道這些字符串的作用。

            p12 圖11-flooding功能

            p13 圖12-Telnet掃描,下載文件,殺掉其他bots

            0x06 內置downloader


            我們前面提到過,Linux/Remaiten 的特別之處在于攜帶了多個小型的downloader,如果有符合受害設備架構的版本,木馬就會把相應的downloader傳輸到設備上。在執行時,downloader會聯系CC,請求一個bot二進制。

            p14 圖13-內置的有效載荷

            p15 圖14-有效載荷結構

            0x07 Telnet scanner


            p16 圖15-猜測telnet登錄憑證

            當CC發出“QTELNET” 命令時,Remaiten的telnet scanner就會啟動。分析發現,木馬作者提供的命令描述是正確的:這個telnet的確是一個增強版的Gafgyt telnet scanner。

            Telnet掃描是分階段完成的,可以歸結為:

            1. 選擇一個隨機的公共IP地址,并將其連接到端口23
            2. 嘗試用戶名/密碼組著
            3. 確定受害設備的架構
            4. 發送并執行相應的downloader

            木馬會通過執行“cat $SHELL”命令來判斷設備的架構,并解析其結果。SHELL環境變量中包含有可執行文件的路徑,這個可執行文件目前還是作為一個命令行翻譯器。如果這個文件是一個ELF可執行文件,則解析文件標頭來判斷其架構。

            p17 圖16-判斷受害平臺&檢查是否有適合該平臺的downloader

            p18 圖17-負責解析ELF標頭的部分函數

            然后,bot會選擇合適的有效載荷并發送到新的受害設備上。

            p19 圖18-負責根據設備架構選擇有效載荷的函數

            第一步是找到一個可寫入的目錄。Linux/Remaiten中有一個常用的可寫入路徑表。

            p20 圖19-downloader的保存目錄

            創建了幾個空的可執行程序:“.t”,“retrieve”和“binary”。“retrieve”文件中會包含有downloader,“binary”是從CC服務器上請求到的bot。似乎2.2版本之前都沒有使用“.t”文件。

            p21 圖20-準備傳輸和執行有效載荷

            Linux/Remaiten 采用了一種很奇怪的方式來創建空的可執行文件:木馬會復制busybox二進制(出現在大多數嵌入式設備上),然后使用>file命令做空這個二進制。

            downloader是通過telnet傳輸的,通過發出echo命令,每個字節都編碼了16進制“\x” 轉序字節。我們此前就見過有木馬利用這種技術在嵌入式Linux設備中進行傳播,比如Linux/Moose。

            p22 圖21-傳輸帶有echo的有效載荷hexstring

            傳輸完成后,downloader就會啟動并獲取完整的Linux/Remaiten有效載荷。downloader會從CC請求一個bot二進制,并將其寫入到標準輸出,而部署命令會把這個輸出重定向到“binary” 文件。最后,啟動“binary”文件,激活新的IRC bot。

            p23 圖22-執行downloader和bot

            0x08 向CC發送狀態


            在恢復telnet掃描之前,bot會向CC服務器報告其進度。bot會發送新的設備IP,正確的用戶名/密碼,以及是否感染了其他設備。如果自動感染方式失敗,僵尸網絡管理員可能會手動感染其他的設備或從不受支持的架構上收集數據?

            p24 圖23-通知CC服務器bot部署狀態

            0x09 殺掉其他bot


            還有一個很有趣的命令是“KILLBOTS”。發出這個命令后,bot會枚舉正在運行的進程,然后會根據一定的標準,主要是進程名稱,來決定是忽略還是殺掉這個進程。不同版本的bot可能會選擇不同的進程名稱。

            p25 圖24-需要殺掉的進程名稱

            p26 圖25-需要忽略的進程名稱

            Linux/Remaiten會根據進程的tty設備號,只殺掉由一個交互shell啟動的進程。另外,木馬還會向CC服務器報告都殺掉了哪些進程,這樣所或許是為了修改其進程白名單或黑名單。

            p27 圖26-bot正在殺進程

            0x0A Linux/Remaiten變更日志


            不同的bot客戶端版本之間只是稍有不同,比如,修改進程白名單和黑名單,downloader目錄有變化等等。我們有理由懷疑,各個編譯版本之間可能會有區別,即使版本號沒有變化。在我們分析過的bot中,其downloader二進制都是一樣的,但是IP地址和端口有差別。

            和Gafgyt一樣,v2.2版本仍然會通過執行wget/tftp命令來下載shell腳本,然后,由這個shell腳本下載bot二進制。在傳輸downloader之前,傳播代碼首先會嘗試這種方法。

            p28 圖27-通知CC通過wget/tftp部署bot

            shell腳本是由另一個服務器發布的,這個服務器還會負責發送Gafgyt bot。

            p29 圖28-由另一個服務器發布shell腳本

            從al.sh文件來看,這是我們首次發現針對PowerPC和SuperH等平臺的bot。雖然,有跨平臺編譯工具,但是,我們還是很驚訝攻擊者會在編譯自己的木馬時遇到問題。我們不清楚是哪臺設備運行在PowerPC或SuperH。

            p30 圖29-shell腳本下載的bot

            p31 圖30-shell腳本的開頭

            2.0版本使用的CC服務器給出了一條出乎我們預料的welcome信息:其中引用了一篇MalwareMustDie博客。

            p32 圖31-2.0版本的CC引用了MalwareMustDie博客

            或許這是為了報復MalwareMustDie 曝光Gafgyt等木馬。

            <span id="7ztzv"></span>
            <sub id="7ztzv"></sub>

            <span id="7ztzv"></span><form id="7ztzv"></form>

            <span id="7ztzv"></span>

                  <address id="7ztzv"></address>

                      亚洲欧美在线