- 網絡攻防實戰研究:漏洞利用與提權
- 祝烈煌
- 2189字
- 2019-11-18 15:09:26
1.6 對提權工具PR的免殺
對工具軟件的免殺有兩種方式,一種是手工免殺,另外一種是通過工具軟件直接加殼。在本節中將介紹如何使用編譯和反編譯工具對PR程序進行免殺,并使用加殼軟件直接加殼。
1.6.1 什么是PR
PR是指提權Windows跟蹤注冊表項的ACL權限提升漏洞。Windows管理規范(WMI)提供程序在沒有正確地隔離NetworkService和LocalService賬號的情況下運行的進程,同一賬號下運行的兩個獨立進程可以完全訪問對方的文件句柄、注冊表項等資源。WMI提供程序的主機進程在某些情況下會持有SYSTEM令牌,如果攻擊者可以以NetworkService或LocalService賬號訪問計算機,就可以執行代碼,探索SYSTEM令牌的WMI提供程序的主機進程。一旦攻擊者找到了SYSTEM令牌,就可以獲得SYSTEM權限的提升。
1.6.2 如何對提權工具進行免殺
1.獲取文件信息
首先我們來看PR.EXE這個樣本文件的基本信息。如圖1-50所示,使用PEiD對PR程序進行檢測,可以看到,它是用C++6.0編寫的(沒有混淆過),入口點的地址為0000476F。

圖1-50 查看PR程序基本信息
單擊“EP區段”后的“>”按鈕,如圖1-51所示,查看PR程序一共有幾個區段。

圖1-51 查看EP區段
因為文件體積比較小,所以區段也都不大,方便我們對該提權工具進行特征碼定位免殺(當然,如果有源代碼,免殺更容易實現)。
2.更改PR文件的MD5值
(1)定位并修改字符串
用C32ASM將PR文件以HEX(十六進制)方式打開,定位字符串“.DLL”,將其填充為“00”。
(2)修改PR文件,增加數字簽名
預處理完成后,對引擎逐一進行測試(同時開啟多個引擎會干擾免殺的針對性)。
3.繞過殺毒引擎
QVM人工智能引擎用于掃描檢測用戶計算機中的惡意程序。360殺毒集成了BitDefender殺毒引擎和360云查殺引擎。前者屬于常規的殺毒引擎,能夠查殺已知病毒、修復感染型病毒破壞的用戶文件;后者必須在連網狀態下使用,能夠快速響應最新的木馬病毒。QVM人工智能引擎的意義在于,它不僅能夠輔助這兩款引擎進行掃描,提高查殺率,還能在斷網狀態下發揮作用,代替云查殺引擎檢測出最新的惡意程序。具體設置可以在360殺毒的“多引擎設置”界面進行,如圖1-52所示。

圖1-52 設置殺毒引擎
4.繞過QVMII引擎
將“.DLL”填充為“00”后,如圖1-53所示,利用數字簽名添加工具以360殺毒為簽名樣本進行偽造簽名操作。

圖1-53 QVMII引擎免殺
先選擇一個帶有數字簽名的可執行文件,然后選擇需要免殺的PR程序,如圖1-54所示,對該PE文件添加數字簽名操作后,QVMII引擎已經初步免殺。然后,使用360殺毒進行查殺,如圖1-55所示,沒有病毒告警,QVMII引擎順利繞過。

圖1-54 偽造簽名

圖1-55 殺毒日志
5.對BitDefender殺毒引擎的免殺處理
BitDefender引擎的查殺主要由特征碼數據庫來完成,所以針對該引擎的免殺需要定位特征碼。定位特征碼的工具是MyCCL 3.0,通過找到的特征碼,利用C32ASM修改特征碼定位的函數。
使用BitDefender引擎進行查殺,如圖1-56所示,提示為病毒。

圖1-56 BitDefender引擎報警
使用定位工具,選擇要做免殺的123.exe文件,然后選中“復合定位”單選按鈕,其他選項保持默認值,如圖1-57所示,定位其特征碼。

圖1-57 定位特征碼
該PE文件的特征碼為000022E9_00000002,用C32ASM定位該特征碼地址即可找到該函數。如圖1-58所示,修改此處數據,因為此處的字符串不是字母,所以不能通過改變大小寫來達到免殺的目的。這里的匯編代碼是“CALL00402A80”,我們可以使用OllyDbg來修改此處的代碼,使用JMP指令將此處代碼跳轉到空白區域,從而在保證程序正常運行的情況下達到免殺的目的。

圖1-58 通過C32ASM軟件定位特征碼地址
修改后,再次使用360殺毒進行查殺,如圖1-59所示,順利通過查殺。

圖1-59 通過BitDefender殺毒引擎
6.繞過小紅傘引擎
由于小紅傘引擎是高啟發性的引擎,所以繞過難度比較大??赡苁且驗橹暗牟僮鳎P者的樣本用小紅傘進行查殺時已經達到了免殺的效果,筆者推測可能是在預處理時將已經定位的特征碼過濾了。如圖1-60所示,將引擎全部打開,然后掃描,順利通過。

圖1-60 通過5個殺毒引擎
7.程序實際運行測試
測試該PE文件是否能夠成功運行。如圖1-61所示,PR程序成功運行,未報錯。

圖1-61 實際環境測試
1.6.3 加殼軟件VMProtect Ultimate
VMProtect是新一代的軟件保護系統。將保護后的代碼放到虛擬機中運行,會使分析反編譯的代碼和破解變得極為困難。使用MAP文件或內建的反編譯引擎,可以快速選擇需要保護的代碼。與其他大部分保護程序不同,VMProtect可以修改程序的源代碼。
VMProtect可將被保護文件中的部分代碼轉換到在虛擬機(以下稱作VM)上運行的程序(以下稱作bytecode)中。同樣,可把VM當成具備命令系統的虛擬處理器,該命令系統與Intel 8086處理器所使用的完全不同。例如,VM沒有負責比較兩個操作數的命令,也沒有有條件與無條件的轉移等。因此,黑客必須開發一款特定的工具來分析與反編譯bytecode,而且相當耗時??墒?,我們也知道,沒有無法破解的保護程序,這也是我們將保護級別提高到破解費用與購買費用相當(破解費用甚至超過購買費用)的程度的原因。不管怎么樣,請記?。篤MProtect是唯一能“隱藏”主要軟件保護機制的工具。
(1)加載免殺程序
VMProtect Ultimate安裝完成后,可以直接運行VMProtect程序。如圖1-62所示,將需要實現免殺的程序直接拖入程序主界面。

圖1-62 加載免殺程序
(2)編譯程序
單擊工具欄上的三角形圖標,執行編譯。程序會自動進行編譯,編譯成功后會彈出是否運行程序的提示。如圖1-63所示,可以根據實際情況決定是否直接運行。程序會自動在被免殺程序所在目錄生成增加了“vmp.”的文件名稱,例如免殺wce142_x32.exe會生成wce142_x32.vmp.exe文件。

圖1-63 編譯程序
(3)測試程序可否正常運行
在DOS窗口直接運行wce142_x32.vmp.exe,如圖1-64所示,運行成功。

圖1-64 測試程序可否正常運行
VMProtect免殺相對簡單,但進行免殺的程序要盡量使用原程序,即未做處理的程序。對開發者編譯后的程序,VMProtect能夠很好地進行免殺,但如果程序進行處理過,在加殼后執行就可能會出錯。