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

访客4年前黑客工具339

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

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

相关文章

黑客骑兵,tt游戏语音是什么黑客软件,黑客攻击网站勒索

01 00000000`000ab260 00000001`3fe6cdd0 windbg!WinCommand::OnNotify+0x454· opt – 代表“办公时刻”,指定了歹意软件的活动的...

美国众议院将于25日向好声音参议院提交特朗普弹劾案

  当地时间1月22日,美国参议院多数党领袖查克·舒默表示,众议院将于当地时间25日向参议院提交弹劾前总统特朗普的弹劾议案。   舒默在参议院发言时说:“我已经与佩洛西议长进行了交谈,佩洛西告诉我,...

贫血是缺什么?怎么知道贫血是缺少那些因素引起的?

贫血是缺什么(怎么知道贫血是缺少那些因素引起的?)贫血有先天性贫血.却铁性贫血,有因为胃功能差、肝功能差、肾功能差、心脏功能差所引起的贫血。 因此要治好贫血最根本的问题是先解决胃的吸收问题,再解决好...

林宥嘉胎动初体验(你是我的眼林宥嘉)

歌名:你是我的眼歌手:林宥嘉所属专辑:神游世界巡回演唱会台北旗舰场作曲:萧煌奇作词:萧煌奇如果我能看得见。 你是我的眼-林宥嘉.mp3密码:8t8r 你是我的眼林宥嘉无损下载50406617725无损...

成年后朋友之间应该怎么相处 成年后朋友之间的相处模式是最好的

成年人以后的盆友间应当如何交往,盆友在成年人后情感会转变吗,要怎么交往来维持大伙儿中间的关联呢,我就而言讲吧。 成年人后朋友应当如何交往  说白了盆友,是在缘份的基本上相互间拥有某着觉得上的切合造...

黑客技术网:内网浸透常识大总结

黑客技术网:内网浸透常识大总结

在没作业之前我终年搞各种高校的网络,鸿沟口缝隙多简略进入而内网机器环境多不严厉真是内网渗透的好当地,毕竟被誉为”校园杀手”,之前搞校园方法简略而粗爆许多内网知识都不明白便是各种扫,横竖校园处理员的暗码...