欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

Windows内核池喷射的愉悦

来源:本站整理 作者:佚名 时间:2017-09-21 TAG: 我要投稿
   #print pools
   #find size
   size_re = re.findall(r'(\*[0-9a-f]{8} size:[ ]*)([0-9a-f]*)( previous)',pools)
   if size_re:
    print name + " objects's size in kernel: " + size_re[0][1]
#close handle
kernel32.CloseHandle(handle)
第三部门——研讨阐发
剧本将会加重咱们探求池巨细分派的工作。有了这个我会反省上面的工具:
Event
IoCompletionPort
IoCompletionReserve
Job(已定名的和未定名的)
Semaphore(已定名的和未定名的)
从这一点来说,过程是异常简略的,咱们只必要挪用相干的用户形式函数,创立一个工具,而后反省巨细。我为 WinDBG 创立了一个简短的剧本,它可以或许自动化创立上述的工具,并反省巨细,末了把它们打印进去。我把剧本上传到了这里:
https://github.com/theevilbit/kex/blob/master/kernel_objects.py
应用办法:
1.    启动 WinDBG
2.    顺次点击 Kernel debug -> Local
3.    履行敕令:.load pykd
4.    敕令:!py path_to_the_script
成果以下:
Not Named Mutex objects's size in kernel: 0x50
Named Mutex objects's size in kernel: 0x60
Job objects's size in kernel: 0x168
Job objects's size in kernel: 0x178
IoCompletionPort objects's size in kernel: 0x98
Event objects's size in kernel: 0x40
IoCompletionReserve objects's size in kernel: 0x60
Not named Semaphore objects's size in kernel: 0x48
Named Semaphore objects's size in kernel: 0x58
如许咱们就得到了一套不错的可用于内核池放射的工具。那末甚么是“kex”,它在希冀甚么呢?在后面的文章中你将看到内核中更酷的器械。
大概我应当在这个系列的开端做一些说明。我想写一些剧本,让咱们在停止 Windows 内核应用开辟的时刻更快,我的第一个剧本是用于内核池放射的。别的,假如你从来没有看过对付内核池溢出的器械,也没有用过内核池放射技巧。那末可以或许浏览:
http://trackwatch.com/windows-kernel-pool-spraying/
http://www.fuzzysecurity.com/tutorials/expDev/20.html
如今咱们已经有了一个包括内核工具巨细的列表(该剧本也能够或许在其余平台上运转,只管可以或许必要针对 x64 架构做一些改动),咱们可以或许停止自动化的放射和制作闲暇(hole)了。假如咱们晓得必要多大的闲暇的话。
根本上:
1.    一旦咱们阐发了漏洞破绽bug,就会晓得驱动程序将在内核池中分派的工具或缓冲器的巨细是若干。
2.    咱们必要节制该分派的地位,以是咱们必要在池中筹备一个给定巨细的闲暇,以便内核在那边分派新工具。
3.    假如咱们晓得巨细,就可以或许简略地盘算出甚么范例的工具利于放射,另有咱们必要开释掉若干个该工具。
4.    假如咱们晓得这些所有的器械,就可以或许停止内核放射并制作闲暇了。
咱们必要晓得该工具的信息和咱们应用溢出笼罩的池头部的信息,以后我会返来再讲的,因为在制作闲暇时其实不必要这些。我可以或许会失败,也做了一些筹备,我盼望笼罩数据也能够或许自动生成。如今,我只想依据给定的巨细去制作闲暇。以是我写了一个剧本,可以或许用于这个目标(请留意,这里是为 Win7 SP1 x86 硬编码的):
https://github.com/theevilbit/kex/blob/master/spray_helper.py
它会让你输入想要的闲暇的巨细,而后停止放射,开释空间并在 WinDBG 中表现该地区。还要留意的是,它还是应用当地内核调试器,咱们无奈设置断点,以是存在竞争前提的成绩,当咱们应用 !pool 敕令时,可以或许像其余内核过程异样在可用空间中分派。我仍旧应用当地内核调试器的缘故原由是对付今朝阶段的演示来说更简略。当我做实在的应用演示时,就必要停止长途调试了,但在这里我可以或许直接停止演示。上面是输入:
lkd> !py c:\users\csaby\desktop\spray_helper.py
Give me the size of the hole in hex: 440
Process: 8572bd40
Object location: 857e15f0
Pool page 857e15f0 region is Nonpaged pool
 857e1000 size:   40 previous size:    0  (Allocated)  Even (Protected)
 857e1040 size:   40 previous size:   40  (Allocated)  Even (Protected)
 857e1080 size:   40 previous size:   40  (Allocated)  Even (Protected)
 857e10c0 size:   40 previous size:   40  (Allocated)  Even (Protected)
 857e1100 size:   40 previous size:   40  (Allocated)  Even (Protected)
 857e1140 size:   40 previous size:   40  (Allocated)  Even (Protected)
 857e1180 size:   40 previous size:   40  (Free )  Even (Protected)
 857e11c0 size:   40 previous size:   40  (Free )  Even (Protected)
 857e1200 size:   40 previous size:   40  (Free )  Even (Protected)
 857e1240 size:   40 previous size:   40  (Free )  Even (Protected)
 857e1280 size:   40 previous size:   40  (Free )  Even (Protected)
 857e12c0 size:   40 previous size:   40  (Free )  Even (Protected)
 857e1300 size:   40 previous size:   40  (Free )  Even (Protected)

上一页  [1] [2] [3] [4] [5] [6] [7] [8]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载