首页
社区
课程
招聘
[转帖]绕过ObRegisterCallbacks
发表于: 2020-11-22 07:08 4617

[转帖]绕过ObRegisterCallbacks

2020-11-22 07:08
4617

1.物理Section Map到用户空间 解析物理地址操作内存
2.修改PsProcessType/PsThreadType下_OBJECT_TYPE_INITIALIZER下RetainAccess为0x1fffff
无视抹权限 原理见ObpPreInterceptHandleCreate

 

ObpPreInterceptHandleCreate(PVOID Object, unsigned __int8 bIsKernelHandle, PACCESS_MASK AccessMask, PVOID bNeedCallPost?)

 

ObpCallPreOperationCallbacks(POBJECT_TYPE pObjectType, POB_PRE_OPERATION_INFORMATION OperationInformation, PVOID bNeedCallPost?)
效果:任意权限打开进程都是满权限
3.修改调用线程的Ethread下的PreviousMode为kernelMode 此时需注意调用创建线程会造成和创建进程会蓝屏 需要全部初始化之后在修改 另外参数需要自己检验.
修改完之后已任意权限打开进程 无视进程权限进程内存操作 包括EnumProcessModulesEx and GetModuleFileNameExA
4.注册两个obregistercallbacks 层分别在xx的上方和下方 等xx抹了之后 抹回去
5.遍历EPROCESS->HandleTable 修改GransAccess为0x1fffff
6.PsProcessType PsThreadType >> SupportsObjectCallbacks 置0 (win10 pg)
7.PsProcessType PsThreadType >> CallbackList Fink和bink改完同一个数(win10 pg maybe)
8.遍历CallbacksList替换或修改Pre Post函数
9.注入cssrss.exe lsass.exe等进程 用现有有效句柄操作内存
10.注入cssrss.exe lsass.exe 或xx进程创建进程继承句柄(创建进程的dup是ExDupHandle不走Obregistercallbacks流程) (https://github.com/Schnocker/HLeaker)
11.dup句柄(有些可以 有些不可能) (https://github.com/Schnocker/HLeaker)
12.hook ObReferenceObjectByHandle 或ObReferenceObjectByHandleWithTag(pg)
13.遍历CallbacksList UnRegistercallbacks
14.修改PsProcessType/PsThreadType下_OBJECT_TYPE_INITIALIZER下GenericMapping->GenericExecute 为0x1fffff然后Open时第一个参数填入GENERIC_EXECUTE
(0x121001 (Query limited information, Terminate, Synchronize, Read control)) (无用 只做学习使用)
15.注册表无视句柄权限注入调试dll (https://github.com/Cybellum/DoubleAgent)


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-11-22 07:09 被ugvjewxf编辑 ,原因: 转贴,两字没有显示出来
收藏
免费 1
支持
分享
最新回复 (1)
雪    币: 12363
活跃值: (5884)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
一般来说,能用ObRegisterCallbacks做保护的肯定不止单一的保护。11种方法需要驱动,然而驱动加载就被拦,除非能找到某些还没发现的驱动提权漏洞。剩下4种里面duplicatehandle回调照样拦;csrss lsass也早在n年前被拉入黑名单,各种对这两持有的句柄疯狂降权;注册表那个和消息钩子一样本质都是loadlibrary,能拦截的点也非常多,映像回调、NtOpenFile、NtMapViewOfSection等等
2020-11-22 16:11
0
游客
登录 | 注册 方可回帖
返回
//