知物由學 | Windows反外掛的資料對抗

網易易盾發表於2021-11-26

只要你在電腦上玩過遊戲,那你或多或少都聽過甚至遇到過遊戲中的“戰神”——即那些開掛的惡劣使用者,他們不僅讓遊戲失去公平,影響了他人的遊戲體驗,還使遊戲本身失去了樂趣。既然外掛破壞了遊戲生態,Windows系統是怎樣防止外掛的呢?


一、前言


由於Windows作業系統程式間相對開放,不具有類似移動平臺的程式沙箱隔離機制,因此無論是外掛的種類、實現方式,還是打擊外掛的手段,都會相對複雜一些。細化地說,像一些常見的防毒軟體、輸入法、直播推流軟體均存在對外部程式的訪問、資料讀取甚至是記憶體修改的行為,若是強行將所有Hook、記憶體修改等行為都視作是惡意行為進行攔截,勢必造成大量誤報。


早期的一些原始的反外掛手段,大抵用一些檔案雜湊特徵、記憶體特徵甚至截圖的形式,去命中執行中的外掛程式,進而達到對抗的目的。值得注意的是,此類特徵不具有普遍性,要用這種方式來打擊外掛,往往會陷入被外掛開發者牽著鼻子走的境地。


而從軟體分析的角度來看,反外掛系統的誤報和漏報難以避免:為了對抗到儘可能多的攻擊者,減少漏報,勢必要覆蓋絕大部分的檢測場景,繼而衍生出誤報。


針對這個痛點,易盾端遊反外掛技術NEProtect(下文簡稱NEP)結合多年外掛對抗經驗,產出一套基於資料分析的對抗方法,從多維度監控可疑資料,減少漏報,並結合資料分析,在實施打擊前減少誤報。本文將圍繞這部分內容展開介紹。


二、可疑資料採集


在進行資料對抗之前,相關資料的採集必不可少,NEP針對不同型別的外掛,從不同維度獲取對抗需要的資訊。這裡列舉了相對典型的幾個點做簡單介紹。


01 資料修改


件修改


部分遊戲可能會將部分資料以檔案的形式儲存或載入,這種情況下檔案就很可能成為外掛製作者的突破口,因此有必要對重要檔案的狀態進行監控。


NEP可以指定保護某個檔案不被篡改,若最終檔案還是發生了篡改或存在來自外部企圖篡改檔案內容的行為,則記錄可疑


記憶體修改


修改器型別的外掛,會使用注入、Hook、找偏移、改資料、改指令等手段來實現作弊效果,因此對於遊戲內部的資料和指令都要進行保護。

  • 對遊戲相關模組中的程式碼段做實時監控,做分塊完整性校驗,若檢測到存在變化,記錄可疑

  • 對系統關鍵API做監控,若API存在被Hook等篡改行為,記錄可疑

  • 監控是否有惡意的外部程式訪問了遊戲程式,以及是否存在記憶體讀寫等行為

  • 在記憶體中插樁,若“樁”被訪問,則記錄可疑


02 程式碼注入


程式碼注入一定程度上和記憶體修改有一定的共性,但行為上可能略有不同,攻擊者可以構造一個特定的環境,讓系統去載入某一個模組或者一段二進位制流,因此要增加一些額外的檢測方式來命中這種行為。


  • 遠端執行緒注入( CreateRemoteThread、APC、 SetThreadContext 等)

  • Windows訊息Hook

  • DLL劫持

  • 子類化( SetWindowLongPtr等)

  • 異常處理

  • 反射注入

  • 核心回撥

一般來說注入實現流程如下:


知物由學 | Windows反外掛的資料對抗


03 加速器


加速器,指的是透過一些手段使遊戲整體執行速度加快的作弊方式。


  • 若系統關鍵時間相關API被篡改或Hook,記錄可疑

  • 透過不同方式獲取時間,若存在差異,記錄可疑

  • 監控部分遊戲引擎的時間介面,若存在篡改,記錄可疑

  • 透過未公開的方式獲取底層時間,記錄心跳,若存在異常,記錄可疑


04 同步器


同步器常被用於打金工作室等惡意環境,即可以透過單一人工或者結合某些掛機指令碼實現同時操作大批次賬號,進而影響遊戲的經濟體系和公平性。


同步器又可以分為軟體同步器(多視窗同步器)和硬體同步器(外部裝置,一套鍵鼠控制多臺電腦)兩種,這裡的監控項如下


  • 判斷點選事件的來源是否可信

  • 是否存在惡意的外部訪問

  • 是否存在來自硬體的鍵鼠訊息

  • 硬體裝置資訊是否合乎規範


05 多開器


如果說同步器是為了降低惡意“打金刷怪”的人力成本,那多開器對於工作室來說,就是進一步降低了裝置成本。NEP的對抗方案中,可以指定多開的數量


  • 透過底層方法獲取程式數,判斷是否超出限制以進行攔截,並記錄可疑

  • 透過不同的程式間通訊方式判斷程式數是否超出限制以進行攔截,並記錄可疑


06 模擬點選


模擬點選常被應用於掛機指令碼中,雖然對於遊戲本身的危害性不像修改器、加速器等那麼大,但對於正常玩家來說也是一種不公平的行為,且掛機指令碼在黑灰產工作室手中可以進一步降低遊戲行為的成本。因此對這類外掛無疑也需要針對性打擊。


  • 常見模擬點選依賴環境的鑑別,如大漠外掛、樂玩外掛、TS外掛、OP外掛等

  • 常見模擬點選外掛製作語言特徵的鑑別,如易語言、TC指令碼等

  • 判斷點選事件的來源是否可信

  • 若判定為高度可疑,記錄相關的點選資料,進而建立針對某一點選指令碼的外掛點選資料模型


三、可疑資料分析


從可疑資料採集這一部分,可以看出不同外掛型別之間是可以進行組合的。組合後的惡意場景對遊戲方和正常玩家來說所帶來的影響更大,因此NEP設計了一種威脅等級模型,用於區分惡意資料的權重。


01 資料鏈路


可疑資料的上報鏈路參考下圖,下文會對資料鏈路做進一步的闡述。


知物由學 | Windows反外掛的資料對抗


02 威脅等級判定


所謂威脅等級模型,大的來說,就是從上報的可疑資料中自動分析出有價值的資料,結合已有的外掛樣本模型,設立多級閾值,分析這些資料是否和一個真實的外掛樣本強相關。


而要實現自動化判斷威脅等級,這裡就需要訓練一個威脅模型,模型的資料來源分為兩部分:特徵與資料規則。其中特徵指定是已知外掛庫中的所有特徵,資料規則指的是後臺根據可疑資料提取威脅等級的判定規則。


例如威脅等級簡單分為3級,最高階為確認外掛,判定後可自動提取新的特徵和資料規則,並更新模型;


次一級為高度疑似,雖然沒有歸類到確認外掛,但是外掛的可能性較高,需要進一步排查,若人工排查後發現是確認的外掛行為,後續流程和確認外掛一致;


最後是低機率樣本,比如輸入法、投屏軟體、防毒軟體等資料。


03 人工稽核


判定過程中的人工稽核流程分為兩部分,首先是對自動提取出的新外掛特徵進行確認,進一步減少誤報;


其次是對未能提取出外掛特徵,但可疑程度較高的資料做一次篩查,提取出其中存在的外掛行為,並將有關資料提交至分析後臺,提高後續自動化的準確率。


四、結語


本文總結了易盾在Windows端遊反外掛中用到的一些對抗思路,經線上資料驗證,可以用較低的成本帶來較好的對抗效果。



相關文章