撰寫本系列文章目的在於提升資訊安全之實務能力,
並透過實作體悟到資訊安全領域的重要性,
本系列所有文章之內容皆有一定技術水平,
不得從事非法行為、惡意攻擊等非法活動,
「一切不合法規之行為皆受法律所約束」,
為了避免造成公司、廠商或玩家之間困擾,
所有實作不會拿已上市產品、Online Game 等等來作範例學習,
且部分具有深度、價值之內容,將會提升一定閱讀門檻(不對該技術做分析、解說),
請勿透過本系列文章所學,從事任何非法活動,請不要以身試法!!!
首先開始前要先說一下,
小弟我目前還屬於菜鳥階段,正不斷努力學習中,
若有發現錯誤或不妥之處還請不吝賜教。
歡迎大家多多留言,互相交流交流。
今天實作的內容僅僅是表面上的偽裝,
能做到的效果只能騙過一般人使用者,
在隱藏的技術層面上,我個人認為並沒有任何價值 XD
這開始之前,先來講一段小故事,
本人親身經歷,此生無法忘記這件趣事!
(沒時間、沒興趣的可以直接略過ㄛ)
在很久很久很久很久以前,有個普通老百姓(就是我),
在某一次的研究、破解別人寫好的外掛程式時,
發現了一樣厲害的技術,我稱它為「防封詐騙術」。
大家都知道遊戲都有「反外掛系統」,
某一次有個外掛程式聲稱:
「使用本輔助 100% 不會被鎖帳號,
原因是本輔助使用了目前最高級的隱藏技術,
能讓反外掛系統無法正常運作,能安心遊玩一整天。」
哇賽!
當下一直懷疑是真的還是假的,
於是提起勇氣打開了會被防毒軟體封殺的外掛程式,
接著打開了當時很火紅的 FPS Online Game,
竟然發現遊戲的反外掛系統還真的「沒有啟動」,
我在工作管理員真的找不到,這個變態的外掛功能均正常運作。
當時我樂極了!
因為當時很多外掛輔助通通失效,
會被反外掛系統偵測到非法活動,
我覺得就算天塌了我也在要學會這項技術,
然後把這項技術應用在我自己寫好的輔助中,
我就開始不斷測試、不斷思考,
到底這個 EXE 到底藏有什麼秘密?
我記得過了很多天我還是沒有測出來、想出來,
當時還不太會逆向、看組語,
所以都是用「邏輯」在逆向的 XD,
就是「先執行什麼,在執行什麼,在做一些什麼奇怪的事,
應該會如何如何」的方式在做逆向,
簡單說就是在搞破壞,看看會發生什麼事,
從發生的事來推斷執行邏輯。
有一次被我 Try 到了,
先正常執行遊戲,再執行外掛程式,
我發現反外掛系統原本是正常開著的狀態,
但是執行外掛程式後反外掛系統卻消失了,
隨後我立刻注意到:
反外掛系統的 Process 的 PID 竟然還存在,
但是 Process Name 卻是「svchost.exe」,
我滿頭問號????
立刻抓了一個舊版外掛程式(會被偵測的),
點了滑鼠左鍵兩下開啟這個外掛程式 EXE,
遊戲立刻關閉,跳出偵測到了外掛的訊息。
原來如此!
之所以沒看見「反外掛系統」是因為被「竄改」了!
這支外掛輔助將「反外掛系統」偽裝成了別的 Process 名稱、路徑,
藉此騙過使用外掛的使用者,使使用者相信「反外掛系統」確實沒有啟動,
藉此大賺一筆,大撈一筆防封費用。
另外之所以外掛沒有被偵測是因為使用了「其他技術」繞過反外掛系統,
還有就是當時確實有技術能讓反外掛系統「不啟動」,
注意!是真的不會啟動「反外掛程式」且能正常遊戲,
這項技術我已經確實掌握了,
之後如果有時間我也許會來寫一篇 XDD??
但可惜的是,這項技術對目前遊戲都不怎麼能用,
只有以前比較古老、沒在更新的遊戲能用。
好啦,故事結束 XD,那就開始今天的主題吧~
首先,我們知道 Process 的資訊儲存在 EProcess 中,
所以,現在來打開 WinDbg 看一下 explorer 的資訊:
!process 0 0 explorer.exe
lkd> !process 0 0 explorer.exe
PROCESS ffffe307167fb5c0
SessionId: 1 Cid: 1054 Peb: 00e3b000 ParentCid: 1040
DirBase: 10943d000 ObjectTable: ffffcf0188454580 HandleCount: 1819.
Image: explorer.exe
.process /p ffffe307167fb5c0
lkd> .process /p ffffe307167fb5c0
Implicit process is now ffffe307`167fb5c0
dt _eprocess ffffe307167fb5c0
lkd> dt _eprocess ffffe307167fb5c0
nt!_EPROCESS
+0x000 Pcb : _KPROCESS
+0x2d8 ProcessLock : _EX_PUSH_LOCK
+0x2e0 UniqueProcessId : 0x00000000`00001054 Void
+0x2e8 ActiveProcessLinks : _LIST_ENTRY [ 0x?? - 0x?? ]
--- --- --- ---
--- --- --- ---
--- --- --- ---
-->+0x3f8 Peb : 0x00000000`00e3b000 _PEB
--- --- --- ---
--- --- --- ---
--- --- --- ---
+0x82c MitigationFlags2Values : <unnamed-tag>
+0x830 PartitionObject : 0xffffe307`15e555f0 Void
dt 0x00000000`00e3b000 _PEB
或 !peb
lkd> dt _PEB 0x00000000`00e3b000
nt!_PEB
+0x000 InheritedAddressSpace : 0 ''
+0x001 ReadImageFileExecOptions : 0 ''
+0x002 BeingDebugged : 0 ''
+0x018 Ldr : 0x00007ffb`dc9ff3a0 _PEB_LDR_DATA
-->+0x020 ProcessParameters : 0x00000000`03011b50 _RTL_USER_PROCESS_PARAMETERS
+0x7a8 CloudFileFlags : 0
dt 0x00000000`03011b50 _RTL_USER_PROCESS_PARAMETERS
lkd> dt 0x00000000`03011b50 _RTL_USER_PROCESS_PARAMETERS
nt!_RTL_USER_PROCESS_PARAMETERS
+0x000 MaximumLength : 0x6f8
+0x004 Length : 0x6f8
+0x008 Flags : 0x6001
+0x00c DebugFlags : 0
+0x010 ConsoleHandle : (null)
+0x018 ConsoleFlags : 0
+0x020 StandardInput : (null)
+0x028 StandardOutput : (null)
+0x030 StandardError : (null)
+0x038 CurrentDirectory : _CURDIR
+0x050 DllPath : _UNICODE_STRING ""
+0x060 ImagePathName : _UNICODE_STRING "C:\Windows\Explorer.EXE"
+0x070 CommandLine : _UNICODE_STRING "C:\Windows\Explorer.EXE"
+0x080 Environment : 0x00000000`08adb870 Void
+0x088 StartingX : 0
+0x08c StartingY : 0
+0x090 CountX : 0
+0x094 CountY : 0
+0x098 CountCharsX : 0x65002e
+0x09c CountCharsY : 0x650078
+0x0a0 FillAttribute : 0x6c0000
+0x0a4 WindowFlags : 0x5001
+0x0a8 ShowWindowFlags : 1
+0x0b0 WindowTitle : _UNICODE_STRING "Microsoft.Windows.Explorer"
+0x0c0 DesktopInfo : _UNICODE_STRING "Winsta0\Default"
+0x0d0 ShellInfo : _UNICODE_STRING "C:\Windows\Explorer.EXE"
+0x0e0 RuntimeData : _UNICODE_STRING ""
+0x0f0 CurrentDirectores : [32] _RTL_DRIVE_LETTER_CURDIR
+0x3f0 EnvironmentSize : 0xb90
+0x3f8 EnvironmentVersion : 0xc
+0x400 PackageDependencyData : (null)
+0x408 ProcessGroupId : 0x21c
+0x40c LoaderThreads : 0
[+0x000] Length : 0x2e [Type: unsigned short]
[+0x002] MaximumLength : 0x30 [Type: unsigned short]
[+0x008] Buffer : 0x3012168 : "C:\Windows\Explorer.EXE"
嘿嘿嘿,相信大家都知道應該要改哪些地方了對吧?
既然知道目標了那就來寫個程式試試看吧 XD
執行結果:
在 WinDbg 中執行 !peb
看到的樣子:
最後整理一下邏輯:
實作起來非常簡單且有趣,
當然想要偽裝的更像目標物可能要再改一下其他的東西,
這就交給大家自己研究惹。
好了,今天就講到這,我得先去寫其他報告了~
大家若有發現哪裡寫得不好或錯誤的地方,都留個言討論一下吧 XD
那我們下期見 o( ̄▽ ̄)ブ