在线微信:深化分析线程与进程句柄走漏缝隙(下)

访客4年前黑客工具338

在线微信:深化分析线程与进程句柄走漏缝隙(下)

PROCESS_VM_*
这涵盖了VM拜访权限的三种类型:WRITE/READ/OPERATION。前两个权限应该是不言自明的,第三个权限答应操作虚拟地址空间自身,例如批改页面维护(VirtualProtectEx)或分配内存(VirtualAllocEx)。本文不计划介绍这三种权限的排列组合情况,但我以为`PROCESS_VM_WRITE`是必要的前置条件。尽管`PROCESS_VM_OPERATION`可以令远程进程溃散,不过也会引发其他缺点,一起,它既不是通用的,也不是高雅的办法。`PROCESS_VM_READ`同上。
事实证明,`PROCESS_VM_WRITE`自身便是一个应战,我还没有找到一个通用的处理方案。乍一看,Hexacorn [12]介绍的一套破坏式注入战略似乎是完美的:它们只要求远程进程运用窗口、剪贴板注册等。既便如此,这些要求也纷歧定能得到满足。对我们来说不幸的是,其间许多都不答应跨会话拜访或扩展完整性等级。我们尽管可以对远程进程履行写操作,但仍然需求凭借其他办法来操控履行流程。
除了无法批改页面权限外,我们还无法读取或映射/分配内存。可是,仍是许多办法可以从远程进程泄露内存而不直接与它进行交互的。
例如,通过`NtQuerySystemInformation`,我们可以枚举远程进程内的一切线程,不管其IL怎么。这样,我们就可以获得一个`SYSTEM_EXTENDED_THREAD_INFORMATION`方针的列表,其间包括TEB的地址等。此外,我们还可以通过`NtQueryInformationProcess`获取远程进程PEB地址,不过,有必要具有`PROCESS_QUERY_INFORMATION`权限,这一要求会给我们带来很大的费事。为了处理这个问题,可以将`PROCESS_QUERY_INFORMATION`附加到`PROCESS_VM_WRITE`上。
实际上,我采纳的办法有点杂乱,不过,它仍是比较牢靠的。如果您现已阅读过我之前关于纤程本地存储(FLS)方面的文章[13],就会了解这种办法。如果您还没有读过这篇文章的话,无妨花点时刻读一下。
简而言之,我们可以乱用光纤和FLS来掩盖“…在纤程删去、线程退出以及开释FLS索引时”履行的回调函数。进程的主线程会不断设置纤程,因而,总是会有一个回调函数可用于掩盖(msvcrt!_freefls)。这些回调函数一般存储在PEB(FlsCallback)和TEB(FlsData)中的纤程本地存储中。通过破坏FlsCallback,我们就可以在履行纤程操作时操控系统的履行流程。
可是,因为只具有对进程的写拜访权限,所以这个进程有点费力。例如,因为我们无法分配内存,所以,我们使用一些已知空间来寄存payload。别的,PEB/TEB中的FlsCallback和FlsData变量都是指针,所以,我们也无法读取它们。
实际上,躲藏payload仍是十分简略做到的。这是因为,我们现已可以泄露PEB/T> licensingdiag.exe -cab hostshare EB地址,所以,我们实际上现已得到了两个十分健壮的原语。在查看了这两个结构之后,我发现线程本地存储(TLS)正好为我们供给了满足的空间来存储ROP Gadget和一个减肥版的payload。而TLS是嵌入在结构自身之中的,因而,我们可以直接通过偏移量找到TEB地址。如果您不熟悉TLS的话,那么我们强烈主张先参看Skywing编撰的一篇文章[14]。
不过,获得对回调函数的操控的确有点扎手,这是因为指向`_FLS_CALLBACK_INFO`结构的指针是存储在PEB(FlsCallback)中的,并且该结构是不透明的。因为我们实际上无法读取这个指针,因而,我们无法直接掩盖该指针。
我采纳的办法,是在PEB中掩盖FlsCallback指针自身,实质上便是在TLS中创立我们自己假造的`_FLS_CALLBACK_INFO`结构。这是一个十分简略的结构,实际上只要一个重要值:回调函数指针。
此外,依据FLS的文章,我们还需求操控ECX/RCX。这样,我们就可以通过跳板来履行我们的ROP payload了。不过,这要求更新`TEB-> FlsData`,可是,因为这是一个指针,所以我们很难做到。但是,就像`FlsCallback`相同,我们可以掩盖这个值并创立自己的数据结构——这倒不是什么难事。TLS缓冲区的布局如下所示:
//
// 0  ] 00000000 00000000 [STACK PIVOT] 00000000
// 16 ] 00000000 00000000 [ECX VALUE] [NEW STACK PTR]
// 32 ] 41414141 41414141 41414141 41414141
//
```
 
走运的是,恰好在`kernelbase!SwitchToFiberContext`(或Windows 7上的` kernel32!SwitchToFiber`)中有一个完美的跳板:
 
 
```
7603c415 8ba1d8000000    mov     esp,dword ptr [ecx+0D通过代码库进一步搜索,我们找到了BLE通讯的情况UUID字符串:8h]
7603c41b c20400          ret     4
归纳以上几点,我们终究得到:
eax=7603c415 ebx=7ffdf000 ecx=7ffded54 edx=00280bc9 esi=00000001 edi=7ffdee28
eip=7603c415 esp=0019fd6c ebp=0019fd84 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000202
kernel32!SwitchToFiber+0x115:
7603c415 8ba1d8000000    mov     esp,dword ptr [ecx+0D8h]
ds:0023:7ffdee2c=7ffdee30
0:000> p
eax=7603c415 ebx=7ffdf000 ecx=7ffded54 edx=00280bc9 esi=00000001 edi=7ffdee28
eip=7603c41b esp=7ffdee30 ebp=0019fd84 iopl=0         nv up ei pl nz na po nc
cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000    &nb

相关文章

子宫内膜炎可以吃泡面吗 子宫内膜炎饮食要注意

子宫内膜组织是一个独特的组织,进行每月月经周期性变化、子宫内膜炎是女性常见的疾病。女性出现子宫内膜炎之后饮食方面需要多加注意。那么子宫内膜炎可以吃泡面吗 吃泡面有什么危害?友谊长存带来相关介绍。...

求黑客找手机(黑客接单软件)

求手机怎么找黑客 1、接单com,求手机接单软件自己的分数不对劲了,虽然接单影片中张晋等主演都是合格的功夫明星。找黑客,黑客接单能自动找黑客拨成千上万个电话号码以寻找进入调制解调器连接的路径。大白鲨大...

黑客怎样盗别人的qq号,黑客怎么看网络监控,微信怎么绑定qq

信号Android歹意软件的品种愈加繁复然后运用mitmproxy进行站点克隆:$exp = $h.$payload.$f;这好像很不科学!咱们获取的是一个base64编码后的字符串。...

怎么远程偷看别人微信,远程查看工具微信聊天记录

微博新浪在很多人眼里,两个人能够在一起久远发展下去最主要的实在是信托,然则现实生活当中却让信托变得越来越难能可贵。以前的时刻可能是私拆信件是最好的方式,然则随着科技进步人们就最先变得最先磨练林林总总的...

如何悄悄监控老公手机上(如何追踪老公手机上微信)

如何悄悄监控老公手机上(如何追踪老公手机上微信)

如何悄悄监控老公手机上(如何追踪老公手机上微信)做不到。要不是能取得手机上立即拷贝到电脑上查看要不便是了解登录密码查看。除非是,你可以寻找技术专业的大神帮你,老公监控媳妇的微信语音通话算违法吗?这归属...

取消excel横向滑动,取消wps横向滑动

这篇文章主要介绍了Android中实现水平滑动(横向滑动)ListView示例,本文用自己封装一个控件的方法解决了这个需求,需要的朋友可以参考下  水平的ListView-HorizontalList...