一、綜述
近日,火絨安全實驗室截獲到一種內核級后門病毒,并將其命名為"Pengex"病毒。經分析,"Pengex"以劫持用戶首頁流量牟利為目的,但是不同于其他"流量劫持"類病毒的是,它技術高明、手段兇狠,會主動攻擊國內主流的安全軟件,使他們失去內核對抗能力,這會讓電腦完全失去安全防護。詭異的是,Pengex唯獨不攻擊并且刻意"放過"騰訊電腦管家。
"Pengex"通過盜版系統盤和"注冊機"軟件進行傳播,并在用戶電腦中留下后門,日后可隨時植入任意病毒,因此威脅隱患極大。"Pengex"會攻擊各種主流的殺毒軟件,包括火絨、360、金山等,導致這些軟件的驅動無法加載,因此失去在內核層對抗病毒的能力。
但有意思的是,該病毒卻唯獨刻意放過了騰訊電腦管家,它將騰訊電腦管家加入白名單中,在進行"刪除驅動回調"的操作時放過騰訊電腦管家。病毒的這種行為表明,該病毒團伙很可能是騰訊安全管家的系統盤渠道推廣服務商,火絨建議"騰訊安全管家"徹查系統盤推廣渠道。
"Pengex"通過修改瀏覽器配置和進程啟動參數兩種方式,來劫持首頁牟利。在此過程中,病毒會按照制作者的計劃,將不同的瀏覽器指向不同的導航站。該病毒不僅攻擊安全軟件,還會攻擊其他同類病毒,以便獨占用戶電腦首頁資源牟利。據分析,該病毒劫持首頁后設置的渠道號是"oemxiazaiba2"("下載吧"的全拼),請各大導航站關注并查證這個渠道賬號。
"火絨安全軟件"已經在第一時間更新病毒庫,可徹底查殺該病毒。火絨工程師提醒廣大用戶,如需重裝系統,務必通過正規渠道,購買正版系統,目前看來,盜版系統盤已經成為電腦病毒的重要傳播渠道。
二、詳細分析
該病毒是一個內核級后門病毒,初步懷疑該樣本主要通過第三方系統盤方式進行傳播。該樣本在系統中運行后,會造成國內主流安全軟件驅動程序無法正常加載,從而使安全軟件失去防御能力。該病毒主要對抗的安全廠商包括:火絨、360、金山等,其惡意代碼執行之后,可以執行遠端C&C服務器存放的任意病毒代碼。
該病毒分為兩個部分,即病毒加載器和后門病毒,下文中分為兩部分進行詳細分析。病毒結構如下圖所示:
病毒整體結構圖
病毒加載器
該部分代碼主要用于對抗安全軟件查殺和進行內核對抗。加載器功能代碼分為兩個部分,先會在內存中通過虛擬映射加載一個新的ntoskrnl鏡像,再通過相同的方式將真正的病毒驅動加載到內存中,并且將導入的ntoskrnl中的函數地址指向其虛擬加載的ntoskrnl鏡像中的函數地址上,通過此方法可以繞過其他驅動在ntoskrnl中設置的內核鉤子。全局變量is_virus_load是一個標記,通過傳入驅動主函數中的RegistryPath參數是否為NULL判斷是否為病毒通過虛擬映射方式加載。如下圖所示:
加載器驅動主函數代碼
(一)虛擬加載ntoskrnl
load_fake_ntoskrnl_safe函數會通過虛擬加載新的ntoskrnl鏡像,在其執行完虛擬加載邏輯之后,會與當前內存中系統加載的ntoskrnl模塊前0x200個字節數據進行比較,從而判斷自己創建的ntoskrnl鏡像內容是否正常。如下圖所示:
檢測虛擬加載是否成功
虛擬加載ntoskrnl
(二)虛擬加載后門病毒
load_rootkit函數會通過與虛擬映射ntoskrnl相同的方法加載真正的病毒驅動。病毒驅動的鏡像數據是被異或0xC0加密過的,該函數首先會將病毒數據進行解密,之后對該驅動進行映射并修復導入表和重定位數據,最后通過調用ExQueueWorkItem函數執行病毒驅動入口。如下圖所示:
加載病毒驅動
上圖所示調用ExQueueWorkItem函數所傳入的WORK_QUEUE_ITEM結構尾部帶有附加數據,在上述調用中,附加數據存放有被加載驅動的入口點地址。如下圖所示:
執行驅動入口
內核級后門
該病毒執行后,會不斷地與C&C服務器(域名:caoduba.com或139.129.234.76,通訊端口:7897)進行通訊。病毒使用的域名和IP地址解密代碼,如下圖所示:
解密域名和IP地址
(一)病毒與C&C服務器通訊
病毒與C&C服務器的通訊內容分為兩大類:
1)數據請求通知
服務器在獲取到病毒請求數據的通知后,可以根據控制碼返回被請求的數據。通過網絡通訊,病毒可以進行遠程驅動模塊加載、獲取遠程動態庫注入系統進程、獲取配置數據進行流量劫持。控制碼含義,如下圖所示:
數據請求相關控制碼
2)運行狀態通知
服務器可以根據通知中的控制碼獲取當前病毒的運行狀態,例如映像加載回調是否設置成功,是否已經成功劫持用戶主頁等,病毒作者可以根據這些通知得知病毒運行中可能存在的問題。控制碼含義,如下圖所示:
運行狀態通知
通過上述控制命令,我們可以直觀的看到,該病毒不但可以根據遠程獲取的配置數據劫持用戶首頁,還可以根據病毒作者需求在用戶計算機中執行任意惡意代碼。又由于該病毒會阻止安全軟件驅動加載,使得安全軟件完全失去了與其進行內核對抗的能力,從而導致很難對其進行查殺。
病毒與服務器通訊函數,如下圖所示:
發送數據代碼
通訊使用TDI網絡函數,連接服務器代碼,如下圖所示:
調用TDI網絡函數鏈接服務器
發送數據、接收數據代碼類似,僅以發送數據為例。如下圖所示:
調用TDI網絡函數發送數據
(二)控制碼功能分析
下面我們根據病毒所使用的主要的控制碼對病毒功能進行詳細分析:
1)控制碼0x2,獲取病毒執行配置數據進行流量劫持
與服務器通訊后,病毒可以獲取到劫持配置數據,數據中包括是否劫持某種瀏覽器、各個種類瀏覽器需要劫持的網址、控制病毒執行流程的執行標記。如下圖所示:
下載配置
配置數據并不是通過明文存放,下載之后需要逐字節異或0xC0進行解密,數據長度共0x1CA0個字節。如下圖所示:
解密配置
下載的瀏覽器配置內容中,包括需要劫持的瀏覽器種類、各個瀏覽器所劫持的網址、需要執行哪些對抗操作、是否劫持騰訊電腦管家的首頁保護注冊表項及所劫持注冊表項內容。如下圖所示:
下載的配置內容
上圖中所示紅框所標注出的變量virus_proc_ctrl_code可以控制病毒的執行執行的對抗操作流程,其所能控制的對抗操作例如:刪除其他驅動的映像加載回調和進程回調、截斷attach在系統網絡驅動上的設備鏈等。因為絕大部分瀏覽器首頁保護和首頁劫持都會在這些位置上做文章,所以在病毒在劫持流量的同時進行上述對抗可以一定程度上提高其劫持成功率。該變量以位段的形式規定執行流程,各個位段含義如下圖所示:
位段含義
使用virus_proc_ctrl_code變量控制執行流程,如下圖所示:
virus_proc_ctrl_code相關代碼
下面我們根據上圖中所示順序依次對其所使用的對抗方法進行說明:
A.刪除其他驅動的進程回調和映像加載回調
這種方法主要針對利用進程回調和映像加載回調相互配合劫持或保護瀏覽器啟動參數的情況,病毒先通過搜索代碼的方式在設置回調的系統函數中找到回調函數表,之后判斷回調函數所屬驅動模塊是否在白名單中,如果不在白名單中則執行刪除操作,刪除成功后想服務器發送運行狀態通知0x10。如下圖所示:
刪除映像加載回調
搜索影響加載回調函數列表代碼
判斷回調地址所屬驅動模塊是否在白名單列表中
白名單中所存放字符串可以是文件名也可以是部分文件名,其中除了一些系統驅動模塊外還包括騰訊電腦管家相關驅動,因為騰訊電腦管家驅動全部包含QQPCMgr、Ts和TS字符串,所以騰訊電腦管家的全部驅動都會被放過。白名單列表如下圖所示:
白名單列表
檢測回調所屬模塊文件名
刪除進程回調的方法與刪除映像加載回調方法類似。如果執行中無法得到進程回調函數表則向C&C服務器發送控制碼0xE,如果成功注冊進程回調函數則向C&C服務器發送0x11。如下圖所示:
刪除進程回調
搜索進程回調函數列表
B.截斷attach在系統網絡驅動對象上的設備鏈
除了刪除驅動回調外,該病毒還會通過截斷attach到tcpip、AFD、tdx驅動上設備鏈的方式,排除網絡過濾驅動對其流量劫持效果的影響。如下圖所示:
截斷attach的設備鏈
C.清空hosts文件
清除hosts
D.清除BHO(BrowserHelperObjects)
通過刪除RegistryMachineSOFTWAREMicrosoftWindowsCurrentVersionExplorerBrowserHelperObjects注冊表項下的所有子項來刪除所有BHO。但當病毒發現系統中存在REGISTRYMACHINESoftwareWow6432NodeTencentQQPCMgr注冊表項時,則不對BHO文件進行清除。如下圖所示:
刪除BHO相關代碼
刪除BHO注冊表項
E.重置IE代理設置
病毒通過將RegistryUser當前用戶SoftwareMicrosoftWindowsCurrentVersionInternetSettings的ProxyEnable鍵值置為0的方法禁用網絡代理。
F.劫持瀏覽器配置
在進行對抗操作之后,病毒使用所收到的劫持網址和相關數據嘗試對一些常用瀏覽器(IE、QQ瀏覽器、360安全瀏覽器、火狐、世界之窗)和騰訊電腦管家首頁保護的配置進行修改,從而進行流量劫持。在進行劫持操作之后,會向C&C服務器發送控制碼0x4。如下圖所示:
劫持瀏覽器和騰訊管家首頁保護配置
劫持瀏覽器代碼以劫持360安全瀏覽器為例,如下圖所示:
構造360安全瀏覽器相關環境字符串
最引起我們注意的是,在劫持360安全瀏覽器首頁的同時,病毒還將渠道號設置成了"oemxiazaiba2",字母組成的后半部分為"下載吧"全拼,但由于可以獲取到的信息十分有限,我們暫時無法求證其與"下載吧"是否存在直接關系。如下圖所示:
劫持360安全瀏覽器首頁代碼
G.劫持騰訊電腦管家首頁保護網址
病毒除了會篡改瀏覽器配置外,還會通過添加自定義保護網址(自定義網址相關注冊表項均為3rd開頭)的方式,劫持騰訊電腦管家首頁保護網址。如下圖所示:
修改騰訊電腦管家首頁保護注冊表項
2)控制碼0x3,獲取遠程驅動模塊
與上文(一)病毒加載器中病毒所使用的方法相似,只不過病毒這次用來加載的驅動模塊數據是通過C&C服務器獲取的,大致執行過程相同,其具體的驅動執行過程不再贅述。如下圖所示:
加載遠程驅動模塊
虛擬加載驅動并執行入口點
3)控制碼0xA,獲取遠程驅動模塊
執行遠程驅動模塊代碼部分,是通過注入winlogon.exe進程實現的,注入部分使用了開源的BlackBone項目代碼。如下圖所示:
請求遠程動態庫
病毒會先將獲取到的動態庫數據是放到system32目錄下,之后再調用BlackBone代碼將動態庫注入到winlogon進程中執行。如下圖所示:
注入winlogon
注入winlogon
病毒中的BlackBone項目相關代碼
(三)其他劫持和對抗手段
1)通過進程回調和映像加載回調劫持瀏覽器啟動參數
除了上述介紹的病毒所使用的劫持方法外,病毒還通過注冊進程回調和映像加載回調劫持瀏覽器啟動參數進行流量劫持。如下圖所示:
病毒注冊回調
病毒在進程回調中會判斷瀏覽器種類,針對不同的瀏覽器劫持的網址鏈接可以有所不同,在檢測到需要進行劫持的進程后,將相關的劫持信息添加到劫持列表中。如下圖所示:
劫持瀏覽器進程檢測
在進程回調中記錄劫持進程信息后,在映像加載回調中將PEB中的進程參數篡改為欲劫持網址。如下圖所示:
劫持進程參數
2)通過映像加載回調攔截驅動加載
除了用于進行流量劫持的映像加載回調外,病毒還注冊了一個用來進行內核對抗的映像加載回調,該回調函數不但會阻止帶有安全軟件簽名信息的驅動執行,還會攔截一些內核級流量劫持類病毒的執行。當所加載的驅動信息在黑名單中,病毒會將映像的入口點代碼替換為直接返回,從而禁止執行該映像中的邏輯代碼。如下圖所示:
禁止執行安全軟件驅動邏輯
在判斷正在加載的映像是否屬于黑名單時,病毒先常見的內核級流量劫持病毒的文件名進行匹配,如果文件名中包含Mslmedia.sys或者mssafel.sys則會禁止其執行。之后,病毒會獲取當前映像的簽名信息與黑名單中的簽名信息進行匹配,如果包含則也會禁止其執行。黑名單中的簽名信息包括:火絨、360、金山、2345、瑞星、百度,甚至還包括ADSafe的簽名和病毒常用"上海域聯"簽名信息,但是其中依然沒有騰訊電腦管家相關簽名信息,由此我們可以推斷病毒對騰訊電腦管家是有意進行放過的,并非無意之舉。簽名信息黑名單信息,如下圖所示:
簽名黑名單
如上圖,除了主流安全軟件的簽名外,還包括有"上海域聯"的簽名信息。該簽名雖然已經過期,但是不會影響驅動正常加載,所以經常被病毒程序盜用,去年大面積爆發的"小馬激活病毒"也是盜用了"上海域聯"的簽名。相關代碼如下圖所示:
判斷是否屬于黑名單
檢測簽名信息是否在黑名單中
由于很多內核級流量劫持類病毒都使用VMProtect殼進行保護,所以病毒作者還加入了一個更加暴力的判斷方法,如果節名為UPX0或者.vmp0則禁止驅動邏輯執行。如下圖所示:
檢測節名
三、附錄
文中涉及樣本SHA256:
PDF版報告下載地址:http://down4.huorong.cn/doc/pengex.pdf