Eswlnk Blog Eswlnk Blog
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈
  • 注册
  • 登录
首页 › 攻防对抗 › DEF CON 30 CTF Quals | Teedium Wallet 复盘

DEF CON 30 CTF Quals | Teedium Wallet 复盘

Eswlnk的头像
Eswlnk
2023-07-29 17:50:42
DEF CON 30 CTF Quals | Teedium Wallet 复盘-Eswlnk Blog
智能摘要 AI
本文讨论了一道基于ARM TEE(可信执行环境)中Trusted Application的Pwnable题目,使用的是OP-TEE OS。题目涉及的漏洞出现在`serialize_tx`函数中,因未对缓冲区进行重新分配导致堆溢出,但仅能溢出4个字节。关键在于绕过OP-TEE OS和TA启用的ASLR,通过调试确定OP-TEE kernel加载基址并patch ASLR种子。利用bget allocator,攻击者通过伪造已释放堆块并修改栈上返回地址实现ROP迁移,最终获取flag。TA的ASLR机制仅影响其加载基址,其他内存区域保持固定。

ARM TEE中Trusted Application的Pwnable题目

这是一道关于ARM TEE(可信执行环境)中Trusted Application的 Pwnable 题目。在该题目中,使用的TEE OS是OP-TEE OS。下面是整体架构图:

DEF CON 30 CTF Quals | Teedium Wallet 复盘-Eswlnk Blog

源码和漏洞分析

题目的源码可以在以下链接找到:https://github.com/Nautilus-Institute/quals-2022/tree/main/teedium-wallet。

在serialize_tx函数中调用serialize_sighash时,没有对原始缓冲区进行重新分配(realloc)的操作,这可能导致堆溢出。但是,只能溢出4个固定值为1的字节。

DEF CON 30 CTF Quals | Teedium Wallet 复盘-Eswlnk Blog

作者已经提供了Exploit,因此主要记录一下调试过程。调试的难点主要在于OP-TEE OS和TA都开启了ASLR(地址空间布局随机化)。根据这个步骤,我们可以通过在tee_thread_enter_user_mode函数下断点来确定OP-TEE kernel加载基址在0xE100000处。然后,我们需要 patch 掉内核加载时的ASLR种子以便进行调试。

此外,Normal World和Secure World都有日志输出。在Secure World的日志中,可以获得TA的加载地址。为了获取日志,还需要修改QEMU的启动参数。

DEF CON 30 CTF Quals | Teedium Wallet 复盘-Eswlnk Blog

Exploit和调试过程

在启动QEMU之前,请先启动监听日志的命令 nc -z 127.0.0.1 54320 || python3 soc_term.py 54320 和 nc -z 127.0.0.1 54321 || python3 soc_term.py 54321。然后,在启动QEMU后,可以使用GDB在地址0xE101CD8处设置断点。

执行Exploit后,每次切换到TEE的用户模式时,都会在0xE101CD8处停止。第一次是ldelf,第二次是题目的TA。

从日志中获得TA的基地址后,就可以对TA进行调试了。

Exploit分析和堆管理器

TA中使用的堆管理器是bget allocator。Exploit中的利用方式是在释放堆块时伪造一个已释放的堆块,然后在合并(unlink)时将栈上的返回地址(fp)修改为输入的缓冲区,并进行ROP迁移。

当释放溢出的堆块时,由于prevfree为1,当前堆块的前一个堆块会被认为处于空闲状态。此外,由于bget使用负数表示分配的堆块大小,正数表示释放的堆块大小,因此合并完前一个堆块后,它的大小变成了一个非常大的数。

之后,在计算下一个堆块时,相当于加上了一个负数,指向了伪造的堆块。由于伪造的堆块的bsize大于0,因此会被认为后一个堆块也处于空闲状态,然后继续进行合并。

在unlink操作时,将栈上的返回地址(fp)修改为输入缓冲区,最后进行ROP迁移。

ROP调用syscall获取flag,并将其复制到输出缓冲区。

DEF CON 30 CTF Quals | Teedium Wallet 复盘-Eswlnk Blog

TA的ASLR和内存布局

在TA开启ASLR的情况下,通过观察发现只有TA本身的加载基址会变化。变化的范围由get_pad_begin确定,默认配置是(0x0-0x80)*0x1000。

E/LD:  region  0: va 0x00102000 pa 0x0e300000 size 0x002000 flags rw-s (ldelf)
E/LD:  region  1: va 0x00104000 pa 0x0e302000 size 0x00b000 flags r-xs (ldelf)
E/LD:  region  2: va 0x0010f000 pa 0x0e30d000 size 0x001000 flags rw-s (ldelf)
E/LD:  region  3: va 0x00110000 pa 0x0e30e000 size 0x004000 flags rw-s (ldelf)
E/LD:  region  4: va 0x00114000 pa 0x0e312000 size 0x001000 flags r--s
E/LD:  region  5: va 0x00115000 pa 0x0e34b000 size 0x001000 flags rw-s (stack)
E/LD:  region  6: va 0x00182000 pa 0x00001000 size 0x02a000 flags r-xs [0] # TA Code
E/LD:  region  7: va 0x001ac000 pa 0x0002b000 size 0x00e000 flags rw-s [0] # TA Data
E/LD:  region  8: va 0x00200000 pa 0x40b90c78 size 0x002000 flags rw-- (param) # 输出buffer
E/LD:  region  9: va 0x00202000 pa 0x40bbc060 size 0x006000 flags rw-- (param) # 输入buffer
本站默认网盘访问密码:1166
本站默认网盘访问密码:1166
声明:本站原创文章文字版权归本站所有,转载务必注明作者和出处;本站转载文章仅仅代表原作者观点,不代表本站立场,图文版权归原作者所有。如有侵权,请联系我们删除。
ARMCTF安全攻防对抗漏洞
0
0
Eswlnk的头像
Eswlnk
一个有点倒霉的研究牲站长
赞赏
凭证转储 | Active Directory 可逆加密
上一篇
「高危漏洞」QQ存在0day漏洞 | RCE已被曝光
下一篇

评论 (0)

请登录以参与评论
现在登录
    发表评论

猜你喜欢

  • 「漏洞资讯」CVE-2025-12914:宝塔面板曝出注入漏洞
  • 今日热点:伪Clash软件下载陷阱曝光,附防范建议
  • 漏洞资讯:Ollama 未授权访问漏洞分析与防护指南
  • 「攻防对抗」利用 fastjson 原生反序列化与动态代理突破安全限制
  • 「攻防对抗」从上传漏洞到Getshell | 一次完整的渗透过程
Eswlnk的头像

Eswlnk

一个有点倒霉的研究牲站长
1108
文章
319
评论
679
获赞

随便看看

Web Hacking Playground本地渗透测试平台
2023-02-16 0:34:23
体验新版本360网络空间测绘|因为看见,所以安全
2022-02-01 22:50:57
「运维干货」站长都想知道的Nginx安全配置分享
2022-12-07 20:11:47

文章目录

专题展示

WordPress53

工程实践37

热门标签

360 AI API CDN java linux Nginx PDF PHP python SEO Windows WordPress 云服务器 云服务器知识 代码 免费 安全 安卓 工具 开发日志 微信 微软 手机 插件 攻防 攻防对抗 教程 日志 渗透分析 源码 漏洞 电脑 破解 系统 编程 网站优化 网络 网络安全 脚本 苹果 谷歌 软件 运维 逆向
  • 首页
  • 知识库
  • 地图
Copyright © 2023-2025 Eswlnk Blog. Designed by XiaoWu.
本站CDN由 壹盾安全 提供高防CDN安全防护服务
蜀ICP备20002650号-10
页面生成用时 0.525 秒   |  SQL查询 29 次
本站勉强运行:
友情链接: Eswlnk Blog 网站渗透 倦意博客 特资啦!个人资源分享站 祭夜博客 iBAAO壹宝头条
  • WordPress142
  • 网络安全64
  • 漏洞52
  • 软件52
  • 安全48
现在登录
  • 资源
    • 精彩视频
    • 破解专区
      • WHMCS
      • WordPress主题
      • WordPress插件
    • 其他分享
    • 极惠VPS
    • PDF资源
  • 关于我
    • 论文阅读
    • 关于本站
    • 通知
    • 左邻右舍
    • 玩物志趣
    • 日志
    • 专题
  • 热议话题
    • 游戏资讯
  • 红黑
    • 渗透分析
    • 攻防对抗
    • 代码发布
  • 自主研发
    • 知识库
    • 插件
      • ToolBox
      • HotSpot AI 热点创作
    • 区块
    • 快乐屋
    • 卡密
  • 乱步
    • 文章榜单
    • 热门标签
  • 问答中心反馈