您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何進行Kris遠控木馬的簡單分析,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
分析一個遠程控制木馬,它的眾多惡意行為之一是操作注冊表,實現開機自啟動,在注冊表中程序為自己命名為Kris。
樣本類型:PE32 executable (GUI) Intel 80386, for MS Windows, UPX compressed
在國內某款知名沙箱系統中對惡意程序做自動分析,歸納出的執行流程如下:
圖1:程序的執行流程
自動分析的結果,歸納出此惡意程序有如下行為:
1.連接域名jesso.3322.org(59.42.71.178,廣東省廣州市白云區)
2.釋放名為BJ.exe的可執行程序
3.創建進程,此進程會創建互斥體,并且連接動態域名
通過PEiD檢查出該病毒被加殼,可以使用upx脫殼。本文后面分析的是利用upx對原程序脫殼后的PE文件。
圖2:通過PEiD檢測惡意程序的加殼情況
惡意程序會創建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地址的威脅情報
程序的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
惡意代碼中的函數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分支操作執行諸如: 創建新用戶并添加到管理員組、 提升進程權限、 竊取系統磁盤信息并發送給遠程主機、 竊取桌面信息并發送給遠程主機、 竊取音頻設備信息并發送給遠程主機、 擊鍵記錄器、 關閉防火墻、 刪除日志文件等危險的操作。程序本身還會有拷貝自身、延時執行、查詢系統中是否安裝安全軟件的操作,并以此來確保自身的安全,同時還會通過修改注冊表實現開機自啟動。
關于如何進行Kris遠控木馬的簡單分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。