OS X
ROOTKITS
fG! @ SyScan360
1 OS X 内核 Rootkits (duh!).
2
3
4
改善的思考
解决一些问题
攻破Volatility
议程
5 僵尸rootkit与零日攻击
老旧
TECHNOLOGY*
*但卓越
文件系统访问
1 很容易使用虚拟文件系统函数
2
3
4
KPI提供所需一切
具备读写任何位置的能力
与所有的 OS X 版本兼容
/hydra
细节与代码
反汇编
1 集成的反汇编库
2
3
4
经diStorm测试
在线性扫描中速度快
注意一些内联数据
5 有助于找到静态函数
6
7
8
变量与结构体字段偏移
通过修改调用引用实现挂钩
动态和永不过时的rootkit.
为什么
符号
1 一些符号存在于KPI中
2
3
4
一些KPI未导出的符号比较有趣
其余的是静态的
从Lion开始需要内存扫描
如果你使用:
这是将你得到的
因为
1 进程和任务的结构是内部的
2
3
4
随着版本不断变化
我们想要访问这些结构
只需要一些特定的字段
怎么解决这个问题
* 希望你们中的一些“老家伙”看过《百战天龙》
1 试着寻找(非常)简单的函数
2
3
4
那些引用我们需要字段的函数
反汇编
检索取得偏移
Mountain Lion
Mavericks
storm/
准备 diStorm
反汇编、检索偏移
oryForensics
1
2
3
4
验证fmt 参数
小心,变量参数列表
创建/dev/mem时作出反应
挂钩 devfs_make_node
下一张幻灯片不是
十分安全
1
2
3
4
安装驱动补丁
移除rootkit和内核错误
补充
卸载rootkit
1
2
3
4
使用回调函数
IOServiceAddMatchingNotifi
cation.
对Mandiant公司的驱动失效
I/O Kit 能够通告新的驱动
1
2
3
4
Dump Ioreg注册表
查阅Mandiant公司的驱动
轮询可以作为一种解决方案
如果有效请告知.
1
2
3
4
在许多有趣的地方挂钩
建立一个模型,然后
做些邪恶的事!
滥用TrustedBSD 框架
载入策略结构体
单一策略配置
1
2
3
4
取得已载入的全部策略模块
验证函数指针是否正确
内核,信任模型或者 NULL
Volatility 寻找mac_policy_list
1
2
3
4
MAC_CHECK() 是宏指令
创建一个影子mac_policy_list
容易实现
Volatility 接管mac_policy_list
载入rootkit之前
Rootkit 已载入…
1
2
3
4
只修改内存引用
TrustedBSD 来干坏事
触发完整性检查.
没有建立任何钩子
僵尸 rootkits!
1
2
3
4
放置rootkit代码
修改内存权限和偏移
重定向执行到zombie
制造内核内存泄露
5 返回KERN_FAILURE.
1
2
3
4
人类的创造力
金钱与信息的不对称
质疑每个假设
攻击者总有更好的激励
nemo, noar, snare, saure, od, emptydir,
korn, g0sh, spico and all other
friends, everyone at COSEINC, thegrugq,
diff-t, i0nic, #osxre, Gil Dabah from
diStorm, A. Ionescu, Igor from Hex-Rays,
NSA & friends, and you for spending time
of your life listening to me .
致谢
充满无数可能的今日
我们探索不停!