吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 8848|回复: 3
收起左侧

[调试逆向] OSX被动Fuzz框架

[复制链接]
看雪iOS小组 发表于 2016-12-29 22:07

1. 这是什么?本框架基于内核模式中的被动 inlinehook机制,主要用于fuzzingOSX内核漏洞。
简单来说,这是一个典型的内核驱动,它inline-hook了与IOKit框架和内核服务相关的导入API。
如果内核发生了crash,你可以收集内核dump文件来重现漏洞。
你可以关注我的twitter:@flyic (of moony li) 来获得更多详细信息。
我们将会在东京的PacSec2016(10.26/10.27) 大会上,进行“Activefuzzing as complementary for passive fuzzing”的主题演讲,这之后,才会公布相关源代码。
PacSec Applied Security Conference: Tokyo, Japan
这个被动fuzzing框架是基于fG! 所写的针对OSX平台的
“the_flying_circus”Rootkit。在此特别感谢fG!
(A Mountain Lion rootkit for Phrack#69! Copyright (c) fG!, 2012, 2013 - reverser@put.as - Reverse Engineering and Security for fun and pleasure!  All rights reserved.)


2.运行要求
原则上,这个被动fuzzing框架支持Mac Pro/Air上的普遍OSX版本。
根据我们的经验,从10.11到10.11.6的内核版本对被动fuzzing几乎没有干扰。
这个框架已在Mac Pro,10.11.6,KDK_10.11.6_15G31.kdk上测试。


3.如何使用?
重要提示:
运行内核驱动会导致内核突然崩溃,使得你失去所有的数据。请自行承担使用这个内核驱动的风险。


3.1 快速开始
如果你只是为了好玩而尝试这个被动fuzz,请按照这样快速操作:
a.      加载快速被动fuzz的驱动
sh-3.2#chown -R root:wheel ./quick-pasive_kernel_fuzz.kext
sh-3.2# kextutil ./quick-pasive_kernel_fuzz.kext
b.      quick-pasive_kernel_fuzz会在内核模块中出现
sh-3.2#kextstat
然后你就会在内核模块列表中看到这个驱动


3.2使用ThunderBolt线进行调试的完整调试
这个开始引导适用于任何运行MacOSX系统的机器(例如:MacPro,MacAir, Mac Mini)
这个方案要求需要另外一台被调试用的OSX机器和额外的ThunderBolt线。
ⅰ.在被调试的OSX机器上

a.      准备KDK和nvram
Ⅰ.下载KDK_10.11.6_15G31.kdk(以这个KDK为例)并且安装在你的Mac电脑上。

Ⅱ.将kernel.development拷贝到系统目录文件夹并且同步内核缓存
sh-3.2#cp -fr
/Library/Developer/KDKs/KDK_10.11.6_15G31.kdk/System/Library/Kernels/kernel.development*/System/Library/Kernels/
sh-3.2# kextcache -invalid /
sh-3.2# reboot

Ⅲ.设置用以调试的启动参数
sh-3.2# nvram boot-args="debug=0x566kdp_match_name=firewire fwkdp=0x8000 pmuflags=1 kext-dev-mode=1  -v"
sh-3.2# reboot
b.加载用来被动fuzzing的内核驱动
sh-3.2# chown -R root:wheel./pasive_kernel_fuzz.kext
sh-3.2# kextutil ./pasive_kernel_fuzz.kext
c.你的Mac可能会在等待进一步调试时发生内核崩溃

ⅱ.在OSX主机上:

重要提示:
请保持ThunderBolt始终连接在两台机子上,因为即插即用(PnP)机制不支持已崩溃的内核。

a.准备KDK

1.下载KDK_10.11.6_15G31.kdk(以这个KDK为例)并且安装在你的Mac上。
这个步骤不是必须的,但是我们强烈建议这样做。在接下来的步骤中调用lldb,lldb会在调试主机和被调试机间匹配*.dSYM符号文件。否则,在你的调试过程中,符号信息不会显示。

b.调试已崩溃的目标机

Ⅰ.启动fwkdp服务
flyic-pro:pasive_kernel_fuzz.kext root1$ fwkdp

Ⅱ.lldb 调试
sh-3.2# cd/Library/Developer/KDKs/KDK_10.11.6_15G31.kdk/System/Library/Kernels
sh-3.2# lldb ./kernel.development
(lldb) kdp-remote localhost
The debugger would wait until the targetmachine  crashes, and then you can typeany command for debugging including collect core dump file.

3.3 使用有线局域网进行完整调试
因为只有老式的OSX机器支持有线局域网(例如:旧的MacMini),所以这种类型的调试并不普遍。

等待被完善。

译者:银雁冰
编辑:凌迟



免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
nshk + 1 + 1 热心回复!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

wsbz112 发表于 2017-9-6 01:25
运行内核驱动会导致内核突然崩溃,这个怎么解决~
Tath 发表于 2017-9-21 14:25 来自手机
头像被屏蔽
yyspawn 发表于 2018-9-12 07:05
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-4-26 02:00

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表