Kris遠控木馬的簡單分析
前言
本文分析一個遠端控制木馬,它的眾多惡意行為之一是操作登錄檔,實現開機自啟動,在登錄檔中程式為自己命名為Kris。
一、基本情況
樣本型別:PE32 executable (GUI) Intel 80386, for MS Windows, UPX compressed
1.1 程式基本流程
在國內某款知名沙箱系統中對惡意程式做自動分析,歸納出的執行流程如下:
圖1:程式的執行流程
自動分析的結果,歸納出此惡意程式有如下行為:
1.連線域名jesso.3322.org(59.42.71.178,廣東省廣州市白雲區)
2.釋放名為BJ.exe的可執行程式
3.建立程序,此程序會建立互斥體,並且連線動態域名
1.2 加殼資訊
通過PEiD檢查出該病毒被加殼,可以使用upx脫殼。本文後面分析的是利用upx對原程式脫殼後的PE檔案。
圖2:通過PEiD檢測惡意程式的加殼情況
1.3 登錄檔操作
惡意程式會建立HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Kris,鍵值為C:\Users\vbccsb\AppData\Local\Temp\sample.exe,此檔案為原程式將自身拷貝到這個目錄下,用於來實現開機自啟動。
惡意程式還會檢查登錄檔中是否有360safe,來判斷宿主機器中是否安裝了防毒軟體。
二、網路行為
執行惡意程式,並用wireshark抓包,發現惡意程式會發起針對jesso.3322.org的DNS查詢:
圖3:惡意程式碼的網路行為
但是後續沒有實質性的網路通訊,經查,此IP地址仍舊存活但是域名已經失效:
圖4:與C2地址的網路通訊
根據國內知名安全廠商的威脅情報顯示,域名和IP地址都是惡意的。
圖5:域名的威脅情報
圖6:IP地址的威脅情報
三、程式分析
3.1 Main函式分析
程式的Main函式位於0x0040D990,首先會通過sub_47866C函式建立BJ.exe檔案,隨後呼叫sub_40D950函式延時60秒執行此檔案。
圖7:建立BJ.exe並延時60s執行
程式會通過登錄檔檢視系統中是否安裝了360安全軟體,如果沒有安裝,那麼就呼叫sub_40D630函式,此函式用於實現開機自啟動。
圖8:通過登錄檔檢查目標系統中的360防護軟體
通過sub_40D630函式通過登錄檔項“SOFTWARE\Microsoft\Windows\CurrentVersion\Run”實現開機自啟動。
圖9:通過登錄檔實現開機自啟動
Main函式會連線遠端網址jesso.3322.org,通過sub_403300函式發起連線。
圖10:連線域名jesso.3322.org
3.2 Switch函式分析
惡意程式碼中的函式sub_40A050通過switch結構,實現了不同的惡意行為分支,即根據得到的指令,執行不同的操作。概述如下:
sub_409C00:建立新使用者並新增到管理員組 sub_408070:提升程序許可權 sub_4073E0:竊取系統磁碟資訊併發送給遠端主機 sub_4075A0:竊取桌面資訊併發送給遠端主機 sub_407760:竊取音訊裝置資訊併發送給遠端主機 sub_407920:擊鍵記錄器 sub_409320:關閉防火牆 sub_407F80:刪除日誌檔案
3.2.1 建立新使用者並新增到管理員組
sub_409C00函式實現建立新使用者並新增到管理員組的功能:
圖11:用於新增使用者並新增到管理員組的switch分支
通過呼叫函式NetUserAdd新增使用者賬戶,隨後呼叫NetLocalGroupAddMember函式,將新建的使用者新增到管理員組。
圖12:sub_409C00函式實現新增使用者並新增到管理員組的功能片段
3.2.2 提升許可權
sub_408070實現提升程序許可權的功能:
圖13:用於實現提升許可權的switch分支
通過OpenProcessToken得到程序的令牌控制代碼,隨後使用LookupPrivilegeValue查詢程序許可權,最後用AdjustTokenPrivileges函式提升許可權。
圖14:sub_408070函式用於提升程序許可權的功能片段
3.2.3 獲取驅動器和磁碟卷資訊併發送給遠端主機
sub_4073E0函式用於獲取磁碟以及驅動器的資訊併發送給遠端系統。它最終通過sub_405AC0來實現獲取磁碟資訊的功能,通過sub_403300用來實現連線遠端主機併發送資訊的功能。
圖15:用於實現獲取磁碟資訊併發送給遠端主機的switch分支
sub_405AC0函式通過呼叫GetVolumeInformation獲取磁碟卷資訊,同時通過SHGetFileInfo函式獲取檔案系統物件的資訊。
圖16:sub_405AC0函式用來獲得磁碟資訊
sub_403300函式通過一系列套接字函式實現網路通訊,將竊取的資訊傳送給遠端主機
圖17:sub_403300函式用來與遠端主機通訊
3.2.4 獲取桌面資訊併發送給遠端主機
sub_4075A0通過呼叫sub_40F780函式實現截圖功能,傳送給遠端主機的功能仍然是通過sub_403300函式實現的,與3.2.3中相同。
圖18:用於實現獲取桌面資訊併發送給遠端主機功能的switch分支
sub_40F780函式通過呼叫GetThreadDesktop得到桌面視窗所線上程,然後呼叫GetUserObjectInformation獲取特殊的視窗站和桌面物件資訊。
圖19:sub_40F780函式實現獲取桌面資訊的功能
3.2.5 竊取音訊裝置資訊併發送給遠端主機
sub_407760函式通過sub_401760函式竊取音訊裝置資訊並通過sub_403300函式來實現連線遠端主機併發送的功能,sub_403300在上面已經提到了。
圖20:用於實現竊取音訊裝置資訊的switch分支
通過呼叫waveInGetNumDevs獲得就緒的波形聲音輸入裝置的數量:
圖21:sub_401760函式獲得系統中波形聲音輸入裝置的數量
3.2.6 擊鍵記錄器
sub_407920函式會呼叫sub_40A580函式實現擊鍵記錄功能,並且呼叫sub_403300函式向遠端主機發送資訊:
圖22:用於實現擊鍵記錄器的switch分支
sub_40A580函式呼叫GetKeyState, GetAsyncKeyState, GetKeyState三個函式實現擊鍵記錄的功能。
圖23:sub_40A580函式實現擊鍵記錄功能
3.2.7 關閉防火牆
sub_409320函式通過sub_409240函式實現關閉防火牆的操作:
圖24:用於實現關閉防火牆功能的switch分支
sub_409240函式構造”cmd /c net stop sharedaccess”指令,實現關閉Internet連線共享和防火牆服務的功能:
圖25:sub_409240函式實現關閉防火牆的功能
3.2.8 刪除日誌檔案
惡意程式碼通過sub_407F80函式實現刪除日誌檔案的功能:
圖26:用於實現刪除日誌檔案功能的switch分支
程式首先通過OpenEventLog函式開啟日誌檔案,如果成功開啟,就呼叫ClearEventLog函式清除日誌檔案中的內容,最後通過CloseEventLog函式關閉日誌檔案。
圖27:sub_407F80函式實現刪除日誌的功能
四、總結
此樣本是一個簡單的遠控木馬,通過訪問C2伺服器獲取指令,然後根據Switch分支操作執行諸如: 建立新使用者並新增到管理員組、 提升程序許可權、 竊取系統磁碟資訊併發送給遠端主機、 竊取桌面資訊併發送給遠端主機、 竊取音訊裝置資訊併發送給遠端主機、 擊鍵記錄器、 關閉防火牆、 刪除日誌檔案等危險的操作。程式本身還會有拷貝自身、延時執行、查詢系統中是否安裝安全軟體的操作,並以此來確保自身的安全,同時還會通過修改登錄檔實現開機自啟動。
*本文作者:navyofficer,轉載請註明來自FreeBuf.COM