近日,火絨安全實驗室截獲到一種內核級后門病毒,并將其命名為 “Pengex” 病毒。經分析,”Pengex” 以劫持用戶首頁流量牟利為目的,但是不同于其他”流量劫持”類病毒的是,它技術高明、手段兇狠,會主動攻擊國內主流的安全軟件,使他們失去內核對抗能力,這會讓電腦完全失去安全防護。詭異的是,Pengex 唯獨不攻擊并且刻意”放過”騰訊電腦管家。
“Pengex” 通過盜版系統盤和”注冊機”軟件進行傳播,并在用戶電腦中留下后門,日后可隨時植入任意病毒,因此威脅隱患極大。”Pengex” 會攻擊各種主流的殺毒軟件,包括火絨、360、金山等,導致這些軟件的驅動無法加載,因此失去在內核層對抗病毒的能力。
但有意思的是,該病毒卻唯獨刻意放過了騰訊電腦管家,它將騰訊電腦管家加入白名單中,在進行”刪除驅動回調”的操作時放過騰訊電腦管家。病毒的這種行為表明,該病毒團伙很可能是騰訊安全管家的系統盤渠道推廣服務商,火絨建議”騰訊安全管家”徹查系統盤推廣渠道。
“Pengex” 通過修改瀏覽器配置和進程啟動參數兩種方式,來劫持首頁牟利。在此過程中,病毒會按照制作者的計劃,將不同的瀏覽器指向不同的導航站。該病毒不僅攻擊安全軟件,還會攻擊其他同類病毒,以便獨占用戶電腦首頁資源牟利。據分析,該病毒劫持首頁后設置的渠道號是”oemxiazaiba2″(”下載吧”的全拼),請各大導航站關注并查證這個渠道賬號。
“火絨安全軟件”已經在第一時間更新病毒庫,可徹底查殺該病毒。火絨工程師提醒廣大用戶,如需重裝系統,務必通過正規渠道,購買正版系統,目前看來,盜版系統盤已經成為電腦病毒的重要傳播渠道。
該病毒是一個內核級后門病毒,初步懷疑該樣本主要通過第三方系統盤方式進行傳播。該樣本在系統中運行后,會造成國內主流安全軟件驅動程序無法正常加載,從而使安全軟件失去防御能力。該病毒主要對抗的安全廠商包括:火絨、360、金山等,其惡意代碼執行之后,可以執行遠端 C&C 服務器存放的任意病毒代碼。
該病毒分為兩個部分,即病毒加載器和后門病毒,下文中分為兩部分進行詳細分析。病毒結構如下圖所示:
該部分代碼主要用于對抗安全軟件查殺和進行內核對抗。加載器功能代碼分為兩個部分,先會在內存中通過虛擬映射加載一個新的 ntoskrnl 鏡像,再通過相同的方式將真正的病毒驅動加載到內存中,并且將導入的 ntoskrnl 中的函數地址指向其虛擬加載的 ntoskrnl 鏡像中的函數地址上,通過此方法可以繞過其他驅動在 ntoskrnl 中設置的內核鉤子。全局變量 is_virus_load
是一個標記,通過傳入驅動主函數中的 RegistryPath 參數是否為 NULL 判斷是否為病毒通過虛擬映射方式加載。如下圖所示:
load_fake_ntoskrnl_safe
函數會通過虛擬加載新的 ntoskrnl 鏡像,在其執行完虛擬加載邏輯之后,會與當前內存中系統加載的 ntoskrnl 模塊前 0x200 個字節數據進行比較,從而判斷自己創建的 ntoskrnl 鏡像內容是否正常。如下圖所示:
load_rootkit
函數會通過與虛擬映射 ntoskrnl 相同的方法加載真正的病毒驅動。病毒驅動的鏡像數據是被異或 0xC0 加密過的,該函數首先會將病毒數據進行解密,之后對該驅動進行映射并修復導入表和重定位數據,最后通過調用 ExQueueWorkItem
函數執行病毒驅動入口。如下圖所示:
ExQueueWorkItem
函數所傳入的 WORK_QUEUE_ITEM
結構尾部帶有附加數據,在上述調用中,附加數據存放有被加載驅動的入口點地址。如下圖所示:
該病毒執行后,會不斷地與 C&C 服務器(域名:caoduba.com 或 139.129.234.76,通訊端口:7897)進行通訊。病毒使用的域名和 IP 地址解密代碼,如下圖所示:
病毒與C&C服務器的通訊內容分為兩大類:
1) 數據請求通知
服務器在獲取到病毒請求數據的通知后,可以根據控制碼返回被請求的數據。通過網絡通訊,病毒可以進行遠程驅動模塊加載、獲取遠程動態庫注入系統進程、獲取配置數據進行流量劫持。控制碼含義,如下圖所示:
服務器可以根據通知中的控制碼獲取當前病毒的運行狀態,例如映像加載回調是否設置成功,是否已經成功劫持用戶主頁等,病毒作者可以根據這些通知得知病毒運行中可能存在的問題。控制碼含義,如下圖所示:
病毒與服務器通訊函數,如下圖所示:
下面我們根據病毒所使用的主要的控制碼對病毒功能進行詳細分析:
1) 控制碼0x2,獲取病毒執行配置數據進行流量劫持
與服務器通訊后,病毒可以獲取到劫持配置數據,數據中包括是否劫持某種瀏覽器、各個種類瀏覽器需要劫持的網址、控制病毒執行流程的執行標記。如下圖所示:
virus_proc_ctrl_code
可以控制病毒的執行執行的對抗操作流程,其所能控制的對抗操作例如:刪除其他驅動的映像加載回調和進程回調、截斷 attach 在系統網絡驅動上的設備鏈等。因為絕大部分瀏覽器首頁保護和首頁劫持都會在這些位置上做文章,所以在病毒在劫持流量的同時進行上述對抗可以一定程度上提高其劫持成功率。該變量以位段的形式規定執行流程,各個位段含義如下圖所示:
virus_proc_ctrl_code
變量控制執行流程,如下圖所示:
A. 刪除其他驅動的進程回調和映像加載回調
這種方法主要針對利用進程回調和映像加載回調相互配合劫持或保護瀏覽器啟動參數的情況,病毒先通過搜索代碼的方式在設置回調的系統函數中找到回調函數表,之后判斷回調函數所屬驅動模塊是否在白名單中,如果不在白名單中則執行刪除操作,刪除成功后想服務器發送運行狀態通知 0x10。如下圖所示:
除了刪除驅動回調外,該病毒還會通過截斷 attach 到 tcpip、AFD、tdx 驅動上設備鏈的方式,排除網絡過濾驅動對其流量劫持效果的影響。如下圖所示:
通過刪除\Registry\Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\BrowserHelperObjects
注冊表項下的所有子項來刪除所有 BHO。但當病毒發現系統中存在\REGISTRY\MACHINE\Software\Wow6432Node\Tencent\QQPCMgr
注冊表項時,則不對 BHO 文件進行清除。如下圖所示:
病毒通過將\Registry\User\
當前用戶\Software\Microsoft\Windows\CurrentVersion\InternetSettings的ProxyEnable
鍵值置為0的方法禁用網絡代理。
F. 劫持瀏覽器配置
在進行對抗操作之后,病毒使用所收到的劫持網址和相關數據嘗試對一些常用瀏覽器(IE、QQ瀏覽器、360安全瀏覽器、火狐、世界之窗)和騰訊電腦管家首頁保護的配置進行修改,從而進行流量劫持。在進行劫持操作之后,會向C&C服務器發送控制碼0x4。如下圖所示:
病毒除了會篡改瀏覽器配置外,還會通過添加自定義保護網址(自定義網址相關注冊表項均為 3rd 開頭)的方式,劫持騰訊電腦管家首頁保護網址。如下圖所示:
與上文(一)病毒加載器中病毒所使用的方法相似,只不過病毒這次用來加載的驅動模塊數據是通過C&C服務器獲取的,大致執行過程相同,其具體的驅動執行過程不再贅述。如下圖所示:
執行遠程驅動模塊代碼部分,是通過注入 winlogon.exe 進程實現的,注入部分使用了開源的 BlackBone 項目代碼。如下圖所示:
1) 通過進程回調和映像加載回調劫持瀏覽器啟動參數
除了上述介紹的病毒所使用的劫持方法外,病毒還通過注冊進程回調和映像加載回調劫持瀏覽器啟動參數進行流量劫持。如下圖所示:
除了用于進行流量劫持的映像加載回調外,病毒還注冊了一個用來進行內核對抗的映像加載回調,該回調函數不但會阻止帶有安全軟件簽名信息的驅動執行,還會攔截一些內核級流量劫持類病毒的執行。當所加載的驅動信息在黑名單中,病毒會將映像的入口點代碼替換為直接返回,從而禁止執行該映像中的邏輯代碼。如下圖所示:
UPX0
或者 .vmp0
則禁止驅動邏輯執行。如下圖所示:
文中涉及樣本SHA256:
附PDF版報告下載地址