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