撰写本系列文章目的在於提升资讯安全之实务能力,
并透过实作体悟到资讯安全领域的重要性,
本系列所有文章之内容皆有一定技术水平,
不得从事非法行为、恶意攻击等非法活动,
「一切不合法规之行为皆受法律所约束」,
为了避免造成公司、厂商或玩家之间困扰,
所有实作不会拿已上市产品、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( ̄▽ ̄)ブ
<<: [Day08 - React Native] 路由,使用 React Native Navigation
>>: Day8 NodeJS-libuv与Asynchonous
哇!不知不觉就到第 30 天了,来回顾一下这 30 天的旅程吧! 简单回顾 自己订的铁人赛主题是阅读...
本篇同步发文在个人Blog: 一袋.NET要扛几楼?打造容器化的ASP.NET Core网站!系列文...
今天看影片学会了env虚拟环境 突然觉得环境设定好轻松 不用在顾虑什麽版本 你要什麽版本就弄什麽版本...
tags: ItIron2021 Javascript 前言 终於迈入第10天啦! 我们昨天讲完资料...
在实际开发中,一定会需要将资料持久化,常见的持久化技术有Spring 自带的JdbcTemplate...