放木馬長驅直入 《街頭霸王5》反作弊驅動後門揭秘

2021-01-11 CSDN技術社區

以製作動作遊戲聞名世界的Capcom最近曝出烏龍事件。在Capcom出品的《街頭霸王5》一次更新中,它內置了一個用來防止玩家作弊的驅動程序Capcom.sys,然而這個反作弊驅動卻闖了大禍,剛發布不久就被曝光其實是一個高度危險的後門,它可以幫助任意程序獲得系統內核權限,當然也會被木馬病毒輕易利用,比如繞過沙箱、破壞殺毒軟體、HIPS等防護產品,完全瓦解系統安全體系。

Capcom中文名為卡普空株式會社,代表性遊戲有《生化危機》、《街頭霸王》、《鬼泣》等,可以說很多70後、80後玩家都是玩著Capcom的遊戲長大的。然而此次《街頭霸王5》的後門事件卻讓Capcom陷入窘境,為此專門致歉並發布了升級補丁。這裡360QVM團隊建議相關遊戲用戶儘快升級補丁,同時提醒各大安全廠商注意,儘快針對存在後門的Capcom.sys版本進行防禦。根據測試,目前國內外仍有大量殺毒軟體可以被惡意程序利用Capcom後門輕鬆擊潰。

以下360QVM團隊將對Capcom.sys進行深入分析,揭秘該驅動後門對系統安全造成的巨大隱患。

 

0x1 逆向分析Capcom.sys

Capcom.sys所做的就是關閉作業系統的安全機制並提升自己遊戲為管理員權限,目的在於能夠對系統上所有的文件進行操作。它預留了接口讓應用層的程序(遊戲)調用,來實現一些更高級、更自由的操作,比如防止遊戲內存修改,驗證正版用戶等。接下來開始逆向分析 Capcom.sys,看看此神奇的驅動到底做了什麼。。。

 

最關鍵的函數有如下5個:

1:關閉SMEP(Supervisor Mode Execution Protection)

 

那麼啥是SMEP呢?SMEP全稱是Supervisor Mode Execution Protection。監管模式執行保護。存在與CR4中的第20位處。

 

SMEP的引入是Intel考慮到系統安全而新增的機制。我們知道CPU提供了環權限的機制,也就是平常所說的ring0,ring3。當然還有ring1和ring2(甚至ring-1)。只不過windows作業系統只使用了2個環(ring0和ring3)。環的產生意味著權限的產生。不同環的權限等極也是不同的,環的數字越小,則權限越高。SMEP的存在就是為了防止不同環訪問不同權限的頁面而產生的。

 

在未開啟SMEP前,Supervisor Mode(ring0-2)所對應的page entry屬性可以是user或者Supervisor,也就是說page entry.u/s可以為0,也可以為1。User mode(ring-3)所對應的page entry屬性只能是user(page entry.u/s=0)。

 

在開啟SMEP後,Supervisor Mode(ring0-2)所對應的page entry.u/s只能為0。這也就意味著Supervisor Mode(ring0-2)將無法訪問User mode(ring3)的頁面。

Capcom.sys正是利用了這點,關閉了SMEP,使得ring0的模式可以訪問ring3的代碼,這裡所指的ring3的代碼也就是合法的shellcode了。不過這比shellcode更生猛,因為Capcom.sys可以直接訪問ring3的函數。

2:開啟SMEP(Supervisor Mode Execution Protection)

 

3.驅動的IOCtl通信函數(只取關鍵部分)

 

可以知道,當控制碼為0xAA012044時,代表的是32位模式,當控制碼為0xAA013044時,代表的是64位模式。此驅動樣本為64位,所以我們著重研究64位的控制碼0xAA013044即可。

4.漏洞利用函數

 

可以知道,所被調用的函數類型大致為void(*)(PVOID(*)(PUNICODE_STRING))。即該函數的第一個參數為MmGetSystemRoutineAddress的地址。

在這裡有一個非常關鍵的地方,條件判斷的第一句話,這裡猜想是Capcom為了防止此驅動濫用而設置的暗樁。所以我們構造shellcode的時候需要特別注意。

5.解密Device Name函數

// 解密設備名

// PWCHAR Funk(PWCHAR in_device_name,PWCHAR out_device_name)

_WORD *__fastcall deobfuscatetion_device_name_sub_103AC(_WORD *in_device_name, char *out_device_name)

{

_WORD *v2; // r8@1

signed __int64 v3; // rcx@1

__int16 v4; // ax@2

__int16 v5; // di@3

__int16 *v6; // rdx@3

signed __int16 v7; // r9@3

unsigned into v8; // er10@4

signed __int16 v9; // ax@5

unsigned __int16 v10; // cx@5

_WORD *v11; // rdi@16

signed __int64 v12; // rcx@16

bool v13; // zf@18

__int64 v14; // rcx@19

__int16 v15; // ax@20

__int16 v17[36]; // [sp+0h] [bp-48h]@1

v2 = in_device_name;

v3 = (char *)v17 - out_device_name;

do

{

v4 = *(_WORD *)out_device_name;

*(_WORD *)&out_device_name[v3] = *(_WORD *)out_device_name;

out_device_name += 2;

}

while ( v4 );

v5 = 0;

v6 = v17;

v7 = 21845;

if ( v17[0] )

{

while ( 1 )

{

v7 = v5 + 4 * v7;

v8 = (unsigned into)(unsigned __int16)*v6 >> 6;

if ( v8 - 1 > 2 )

break;

v9 = 0;

v10 = (((unsigned __int8)v7 ^ (unsigned __int8)*v6) - (_BYTE)v5 - (_BYTE)v8) & 0x3F;

if ( v10 >= 0xAu )

{

if ( v10 >= 0x24u )

goto LABEL_10;

v9 = v10 + 55;

}

else

{

v9 = v10 + 48;

}

if ( v10 >= 0x24u )

{

LABEL_10:

if ( v10 < 0x3Eu )

v9 = v10 + 61;

}

if ( v10 == 62 )

v9 = 46;

if ( v9 )

{

*v6 = v9;

++v6;

++v5;

if ( *v6 )

continue;

}

break;

}

}

v11 = v2;

v12 = -1i64;

do

{

if ( !v12 )

break;

v13 = *v11 == 0;

++v11;

--v12;

}

while ( !v13 );

v14 = 0i64;

do

{

v15 = v17[v14];

++v14;

v11[v14 - 2] = v15;

}

while ( v15 );

return v2;

}

這裡看的有點辣眼睛,但是我們不需要理他。因為我們可以直接使用WinObj來得知他創建的設備符號連結名為:Htsysm72FB。有了此符號連結名,我們可以使用CreateFile函數來打開它的驅動設備並且發送控制碼來利用了。。

 

至此,逆向分析到此結束,我們來總結一下:Capcom.sys初衷只是為Capcom自家人提供的一種反作弊的插件,從他的設備名字符串混淆與調用暗樁可以看出,他並不想讓別人使用它,但是這並沒有什麼用。從軟體安全角度上去看,此sys沒有加殼是被利用的最致命因素之一。攻擊者只需要繞過暗樁,即可調用它的驅動。

0x2 利用前的準備工作

基於之前的分析,我們知道了設備名稱的符號連接為Htsysm72FB,根據微軟的定義。我們需要在他前面加上\\.\。然後使用CreateFile函數來打開他的設備。

 

接著開始準備shellcode。

第一行,前8個字節是為了繞過暗樁而加入的,前8個字節需要填寫利用函數的入口地址(也就是第二行)。

第二行,實現的是CALL $+8處 等價於push第三行(利用函數的地址) && Rip=第四行(POP RAX)

第三行,為我們需要填寫的利用函數地址。

最後一行,跳向我們的利用函數地址處。

在該模板內填寫相應的內容即可。

 

最後,開始向Capcom.sys發送控制碼來利用此驅動。值得注意的是0xAA013044為64位模式,0xAA012044為32位模式。需要傳遞的shellcode為之前的模板+8處,以此來繞過暗樁。

 

0x3 基於Capcom.sys實現無籤名加載驅動

無籤名加載驅動的話題已經很老套了。

具體分析請參考j00ru的「A quick insight into the Driver Signature Enforcement「這篇文章

以及MJ0011的這篇pdf

http://www.powerofcommunity.net/poc2012/mj0011.pdf

結合兩位大牛的文章,我們知道在WIN7上,可以通過修改nt!g_CiEnabled為0來繞過,目的是讓作業系統以為你在WINPE模式中。在WIN8及以上此驗證轉移到了ci!g_CiOptions上。現在我們在WIN10 14393上做這個實驗,驗證同樣在ci!g_CiOptions。但是不同與WIN8的是,WIN10 已經把ci!g_CiOptions加入到了PatchGuard的豪華套餐中。倘若修改不還原或者修改時機恰巧撞遇PatchGuard的檢測。那麼一瞬間你將進入藍屏的節奏…關於PatchGuard,讀者可自行搜索相關內容,這裡不再展述。

1.尋找ci!g_CiOptions(Windows\System32\CI.dll)

 

可以發現,該變量存在於CipInitialize 函數中,但是此函數未導出,不過慶幸的是。CI.dll給我們導出了CiInitialize函數,改函數最後會調用CipInitialize。

 

那麼我們的思路很簡單,首先獲取導出函數地址CiInitialize,根據它找到CipInitialize函數,最後根據CipInitialize找到g_CiOptions,然後修改為8即可(由於在WIN10 14393版本上進入測試籤名模式時,該值為8)。當然得先保存一份之前的數值,便於還原。

2.注意要點

a.IRQL(中斷請求等極)

還記得sys的調用函數嗎,它的形式如下:

關閉中斷->調用Ring3利用函數->開啟中斷。

我們注意到,再執行我們的利用函數的過程中,中斷始終是處於關閉的狀態,也就是說我們的IRQL(中斷請求等極)一直處於Dispatch級別,而大多數內核函數調用的要求是IRQL==PASSIVE_LEVEL。這就會造成概率性藍屏。所以我們必須在我們的利用函數頭尾處加入_enable和_disable,來手動的配合它的流程,這樣我們就可以避免IRQL的問題了。

b.禁用KeStackAttachProcess(CR3切換)

由於該函數會切換CR3(頁目錄表基址)。並且最終返回到當前進程的CR3。而我們當前是在Ring0模式。所以顯示會發生奇妙的藍屏。。。

c.利用函數儘量簡短

因為在WIN10 14393版本上,經過測試SMEP已被加入PatchGuard豪華套餐中。所以需要儘快的將SMEP恢復,這也就意味著我們的利用函數需要儘量的簡短。當然了,時運不濟的話,可能就在那一瞬間就被檢測到了。

d.配合動態PatchGuard

一般而言,做到以上3點,加載/卸載驅動1-5次之間的藍屏機率是很小的。但是如果需要完美的話,那就要動態的幹PatchGuard了。我們知道,在WIN7以及WIN8已經有牛實現了動態幹PatchGuard並已放出,但是在WIN10上目前並沒有公開放出原始碼。不過國內已經有研究者實現了這一攻擊效果。

0x4 題外話

對於在微軟新籤名機制(具體請使用搜尋引擎搜索)下有籤名的朋友來說,這並沒有什麼用。但是如果被壞人利用了,那就比較尷尬了。因為此驅動有合法籤名,大多數殺毒軟體還沒有對其攔截,而當壞人進入內核後,那就可以想幹啥就幹啥了。

0x5 對各大安全廠商的建議

由於Capcom公司目前已經道歉,並承諾不再使用此類手段的情況來看。安全廠商完全可以把該Capcom.sys列入黑名單中,以此徹底絕殺針對該後門的一切利用。

 

聲明:CSDN登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述。

相關焦點

  • 《街頭霸王》古烈的掃把頭放下來是什麼樣子?
    去年年底的時候,博士和大家分享了文章《<街頭霸王6>或許會在2021年推出,官方消息進行了暗示》,講述了CAPCOM CUP 2019結束後,官方表示:2019年的CAPCOM CUP冠軍將自動獲得2020年比賽資格,不過2020年冠軍則不會自動晉級2021年的CAPCOM
  • phpstudy linux 面板web後門防護功能上線
    phpstudy linux 面板針對伺服器和網站做了全面的安全防護措施,儘可能地防範網站被入侵,留置後門風險,本篇文章著重介紹phpstudy linux 面板其中的一項安全功能【網站防火牆】之【GET(args)參數檢查】,將木馬風險文件阻止在Nginx或者Apache伺服器之外,確保網站運行安全
  • 《街頭霸王5》街機版全角色VT2效果一覽
    導 讀 第1頁: 展開 《街頭霸王5》街機版中每個角色都推出了VT2技能,那麼這些招式有什麼效果?
  • 其實是《街頭霸王5...
    在前段時間舉行的臺北電玩展上卡普空宣布《怪物獵人世界(Monster Hunter World)》將與《街頭霸王5街機版》進行聯動的消息。  與《地平線:黎明時分》的聯動類似,玩家在遊戲中完成指定任務能夠獲得特別素材,再用素材就能製作《街頭霸王5》中隆等人物的外觀服裝。
  • 木馬程序,計算機木馬病毒,居然是一樣的?
    目錄計算機木馬病毒木馬程序完整的木馬程序計算機木馬病毒計算機木馬病毒是指隱藏在正常程序中的一段具有特殊功能的惡意代碼,是具備破壞和刪除文件、發送密碼、記錄鍵盤和攻擊Dos等特殊功能的後門程序。木馬程序木馬程序表面上是無害的,甚至對沒有警戒的用戶還頗有吸引力,它們經常隱藏在遊戲或圖形軟體中,但它們卻隱藏著惡意。這些表面上看似友善的程序運行後,就會進行一些非法的行動,如刪除文件或對硬碟格式化。
  • 終極街頭霸王4 RELOADED中文光碟鏡像版下載發布
    下載地址:點擊進入【遊戲封面】中文名稱:終極街頭霸王4遊戲名稱:Ultra Street Fighter IV遊戲類型:格鬥遊戲製作:Capcom遊戲發行:Capcom遊戲平臺:PC上市時間:2014年08月08日官方網址:點擊進入遊民星空終極街頭霸王4專區版本說明:RELOADED光碟鏡像版【遊戲簡介】  《終極街頭霸王4》是在家用主機和大型電玩平臺獲得眾多玩家喜愛的人氣對戰格鬥遊戲
  • 漢化版PuTTY和WinSCP被安置後門 QQ電腦管家發預警並攔截
    來源: 驅動中國
  • AVG 揭露偽 「 456 遊戲 」黑幕 提醒玩家不要給木馬開後門
    來源: 驅動中國
  • 街機《街頭霸王》背景中隱藏的秘密,多年後才知道臥佛是機器人
    沙加特第一次登場是在《街頭霸王》的初代。身為泰拳帝王的他,已經站在了武學的巔峰,值得他出手的人非常少,大部分的挑戰者都被他的徒弟阿頓擊敗了。然而在這一屆的《街頭霸王》大賽中,竟然有兩個初出茅廬的小子打敗了阿頓。初代的沙加特場景雖然也是在泰國,此時背景中並沒有臥佛,或許此時不可一世的沙加特,並未有任何信仰吧!
  • 永恆之藍下載器木馬新增BlueKeep漏洞檢測代碼,未修複比例...
    永恆之藍下載器木馬新增BlueKeep漏洞檢測代碼,未修複比例高達近30% 近日,騰訊安全御見威脅情報中心監測發現,「永恆之藍下載器」木馬再次更新,新增了BlueKeep漏洞CVE-2019-0708檢測利用功能
  • 格鬥遊戲中的經典,《街頭霸王》玩家用動畫還原「背水的逆轉劇」
    這位粉絲叫做「Alain VU」,他不僅是一位動畫師,而且是《街頭霸王》系列的玩家。「Alain VU」運用自己的特長(動畫技術)還原了經典的「背水的逆轉劇」,那是一場梅原大吾與Justin Wong在「EVO 2004」中打出來的名勝負!
  • 黑掉神經網絡,騰訊朱雀實驗室首亮相:操縱神經元構造AI後門
    操縱神經元,AI 模型成為「大號木馬」如果將 AI 模型比喻為一座城,安全工作人員就是守衛城池的士兵,對流入城池的水源、食物等都有嚴密監控。但黑客修改神經元模型,就好像跳過了這一步,直接在城內「空投」了一個木馬,用意想不到的方式控制了城市,可能帶來巨大災難。
  • 剖析殺毒軟體自我保護機制與木馬對策
    本文將說明現有防毒軟體自我保護機制與木馬們的防禦對策。適合新手至高手閱讀,如果現在你正擔心你的木馬被查殺,不妨看看此文,你定會有收穫的。 前些天,看論壇上有很多人說用進程結束的方法消滅殺毒軟體來保護自己的馬兒。不知大家發現沒有,AVP和KV以及瑞星的一些進程都是無法結束的。
  • 安全大腦解析「驅動人生定向攻擊「最新動作:利用木馬控制電腦挖礦
    2018年12月14日下午,360安全大腦監測到一批攜帶永恆之藍漏洞攻擊組件的下載器木馬,該類木馬主要通過「人生日曆」等驅動人生系列產品升級組件下發。14日晚間,360公司向廠商通報了相關情況,該下發活動已停止。截止目前,該木馬累計攻擊計算機超過6萬臺計算機(僅包括通過升級組件受到攻擊的情況,不含利用漏洞的二次攻擊情況,360安全衛士帶有永恆之藍漏洞免疫功能)。
  • 《街頭霸王》春麗大姐姐的蜻蜓點水,沒錯這就是中國的輕功
    畢竟《街頭霸王4》3D之後,遊戲畫風漸漸開始肌肉化,參戰人物的身材比例更加真實的呈現在玩家面前。而春麗想要在《街霸V》這種滿屏兄貴的戰鬥中打出一片天,就必須付出一定的代價,於是粗腿就成為了春麗的標準形象。沒錯,只有如此粗壯的大腿,才能對那些腱子肉造成傷害。現在要是沒有這粗腿,可能反而會讓玩家覺得不適應了吧!春麗的經典招式在後期的版本中都得到了延續。
  • 「老虎」挖礦木馬偽裝「火爆新聞」傳播 騰訊安全率先查殺
    騰訊安全御見威脅情報中心近日監測發現一款通過社會工程騙術傳播的「老虎」挖礦木馬。攻擊者將木馬程序偽裝成「火爆新聞」、「色情內容」、「隱私資料」、「詐騙技巧」等虛假文件名,通過社交網絡發送到目標電腦,得手後植入大灰狼遠控木馬等惡意程序,竊取大量用戶個人隱私信息,中毒電腦更可能遭到遠程控制。目前,該木馬已感染超5000臺電腦。
  • 1號皮膚碎片商店更新,街頭霸王和特工魅影都是扯淡,88碎片留給心靈...
    1號皮膚碎片商店會進行正常的輪換,街頭霸王和特工魅影都是扯淡,她是真的香。韓信的街頭霸王,雖然是伴生皮,但是他的質量卻不輸史詩,也是很多高手最愛的皮膚。以前街頭霸王確實上過碎片商店,但是後面天美看他這麼熱門就沒有再上架過。之前有人爆料街頭霸王會進碎片商店,這完全是扯淡。
  • 那些年困擾 Linux 的蠕蟲、病毒和木馬
    Snakso是針對特定版本Linux內核的隱形木馬,通過擾亂TCP包在受感染機器生成的流量中注入內嵌框架,以此推送自動下載。第三隻手(2013)第三隻手(Hand of Thief)是在俄羅斯黑客論壇上出售的一款商業性質的Linux木馬生成器,曾在去年爆出時引起不小的轟動。然而,RSA研究人員不久就發現,它不像當初想像的那樣危險。
  • 《怪物獵人世界》聯動《街頭霸王》第二彈 春日野櫻技能炫酷!_遊俠...
    《怪物獵人世界(Monster Hunter World)》聯動《街頭霸王》系列活動第二彈上線,玩家通關特殊挑戰任務後可以解鎖春日野櫻這位街霸系列經典角色。
  • 十大神秘史前巨獸揭秘 霸王狗可與恐龍爭鋒
    脊龍是一種體形非常龐大、移動快速的掠食性恐龍,它的體長可達到60英尺,長著類似鱷魚的下顎能夠生長至5英尺,可以非常靈活地擺動強有力的尾部。而鄧氏魚的咬力能夠達到1.5億帕斯卡,大約每平方英寸咬力達到22000磅。