0x01 样本对比

· 存在漏洞的WhatsApp应用程序

· 版本2.19.133

· 763ab8444e085bd26336408e72ca4de3a36034d53c3e033f8eb39d8d90997707

· 使用 9daaa009e08ac55168aeacdc34dd9c1d7a8f8a49048de949ddaf8a61997b324f  libwhatsapp.so

· https://www.apkmirror.com/apk/whatsapp-inc/whatsapp/whatsapp-2-19-133-release/whatsapp-messenger-2-19-133-android-apk-download/

· 打补丁的的WhatsApp应用程序

· 版本2.19.134

· 找不到有以下内容的APK: ee09262fa8b535b5592960ca5ab41e194f632419f8a80ef2e41d36efdbe13f88

· 使用 28dc66c34e92810ad3f0cb2f5b636773fb4d5fc5134f77b4ee986d9e1a6b4f80  com.whatsapp_2.19.134-452790_minAPI15(armeabi-v7a)(nodpi)_apkmirror.com.apk

· 使用 d054ff7bce7777a94dc8b72cb5bd8a2ab3b188bcb81fcf8aafcf5720b85036c4  libwhatsapp.so

· https://www.apkmirror.com/apk/whatsapp-inc/whatsapp/whatsapp-2-19-134-release/whatsapp-messenger-2-19-134-2-android-apk-download/

加载库的项目布局

对于那些尚未阅读@maddiestone漏洞信息的人,KTV我简单描述一下,她主要是在说两个漏洞点:

 Size check #1

· 2.19.133:0x51D30= FUN_00061e34(在Ghidra中)

· 2.19.134:0x51E34=FUN_00061d30

 Size check #2

· 2.19.133:0x52F00=FUN_00062f00

· 2.19.134:0x52D0C=FUN_00062d0c

0x02  漏洞分析

Ghidra检测到某些无法识别的函数,因此无法反汇编,我禁用了Non-Returning Functions – Discovered分析器:

Non-Returning Functions – Discovered 分析器已禁用

我以前在此分析器处于活动状态的情况下运行了分析,奇热这导致源程序和目标程序具有不同数量的不返回函数。Ghidra的版本跟踪前提条件清单将检查这些内容并发出警告。因此,请始终运行前提条件检查表!!!

由于Ghidra在返回函数后会停止工作,因此该问题特别明显。但是它只能在以下程序中检测到无法识别的函数:

0x03 版本跟踪session

在向导wizard中,可以运行一些前提条件检查。这些可以确保已经分析了足够多的二进制文件,并且还执行了一些健全性检查,例如,比较无法识别函数的数量和报告差异。应该始终运行它们并修复所有错误并查看所有警告。

在这种情况下,出现了一个警告,因为分析期间库代码有不同数量的错误:

如果希望得到原始的结果,建议尽可能多地修正警告。

0x04 运行关联器

在新的版本跟踪会话中,需要添加运行关联器。这些关联器会比较源程序和目标程序并查找匹配项,例如,Exact Function Bytes Match关联器在具有完全相同的字节模式的函数之间查找匹配项。

Ghidra的自动版本跟踪命令按照假定的顺序运行包含的关联器,一直接受匹配,但将错误匹配保持在最低限度。

自动版本跟踪

运行自动版本跟踪命令后,在匹配“大小检查”#1的同时,xise它没有被自动接受:

匹配尺寸检查#1函数

大小检查#2甚至根本不匹配:

匹配大小检查#2函数

但是,我决定运行功能参考匹配关联器,即使至少根据手册,组合功能和数据参考匹配关联器应该已经包括该关联器:

添加函数参考匹配相关器

在通过函数引用匹配相关器匹配此大小检查#2之后:

匹配大小检查#2函数

然后,我手动接受了大小检查#1和#2函数。

0x5 差异比较

Ghidra不提供图形差异视图。

函数比较窗口中的反编译视图也不会突出显示所做的更改。这两个“编译视图”只需滚动其行即可同步(通过其行号!)。

因此,唯一包含比较更改的方法是通过列表视图:

列出查看大小检查#1函数的差异

列出查看大小检查#2函数的差异

很快就会发现,通过列表视图比较补丁不如图形差异视图清晰。

0x06 Ghetto-tech图形视图比较

作为一种解决方法,我在函数之间更改了基本块的颜色,以提供Ghetto-tech图形视图:

大小检查#1源函数的Ghetto-tech图形视图

大小检查#1目标函数的Ghetto-tech图形视图

大小检查#2源函数的Ghetto-tech图形视图

大小检查#2目标函数的Ghetto-tech图形视图

如果您想进一步了解CVE-2019-3568补丁以及如何利用此漏洞,请参阅Maddie的资料。

0x07 反编译问题

最后,可以用Ghidra比较存在漏洞的两个函数。但是,如果不知道存在漏洞的函数,将很难找到它们,因为Ghidra似乎存在ARM反汇编问题,导致实际上几乎相同的函数反编译完全不同。例如:

由于只有一个程序反汇编在该b.w分支之后,因此函数变化很大。对于基本没什么区别的函数,它会产生不同的反汇编代码。

0x08 CVE-2015-8126

我之前写过一篇有关CVE-2015-8126补丁差异的文章。

可以通过运行PatchDiffCorrelator项目的一个来实现漏洞利用(视频](https://www.youtube.com/watch?v=8BH7ttwz5tg))。

使用Ghidra对WhatsApp VOIP Stack 溢出漏洞的补丁对比分析相关推荐

  1. 殊途同归的CVE-2012-0774 TrueType字体整数溢出漏洞分析

    1. 前言 官方的漏洞通报中,关于这个漏洞的信息其实很少: Integer overflow in Adobe Reader and Acrobat 9.x before 9.5.1 and 10.x ...

  2. CVE-2012-1876 Internet Exporter堆溢出漏洞分析

    文章目录 漏洞描述 IE浏览器组件介绍 分析环境 POC 漏洞分析 漏洞利用 参考资料 漏洞描述 该IE浏览器漏洞的成因在mshtml.dll这个模块的CTableLayout::CalculateM ...

  3. 20165232 缓冲区溢出漏洞实验

    缓冲区溢出漏洞实验 实验准备 实验环境需要32位的Linux系统,需要下载安装一些用于编译 32 位 C 程序的软件包,代码如下: $ sudo apt-get update$ sudo apt-ge ...

  4. Linux实验——缓冲区溢出漏洞实验

    Linux实验--缓冲区溢出漏洞实验 20125121 一.     实验描述 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况.这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代 ...

  5. 缓冲区溢出漏洞_缓冲区溢出漏洞简介

    缓冲区溢出漏洞 重点 (Top highlight) 缓冲 (Buffer) A buffer is a temporary storage, usually present in the physi ...

  6. 浅析缓冲区溢出漏洞的利用与Shellcode编写

    文章目录 前言 汇编语言 寄存器 内存堆栈 CPU指令 函数调用 缓冲区溢出 栈溢出原理 栈溢出攻击 ShellCode 总结 前言 缓冲区溢出(Buffer Overflow)是计算机安全领域内既经 ...

  7. 验证本地缓冲区溢出漏洞攻击

    Info:本篇主要是为了验证本地缓冲区溢出,这是理解缓冲区溢出攻击的第一步,有了这一步,才能更深刻的理解到什么是缓冲区漏洞攻击,从而对以后的学习奠定一定的基础(注意:以下请在linux环境下实验) 基 ...

  8. mysql信息泄露漏洞,MySQL远程信息泄漏和缓冲区溢出漏洞

    MySQL远程信息泄漏和缓冲区溢出漏洞 2006-05-10 eNet&Ciweek 3 COM_TABLE_DUMP服务器入侵 在sql/sql_base.cc的1090行: TABLE * ...

  9. CVE-2022-0185 价值$3w的 File System Context 内核整数溢出漏洞利用分析

    文章目录 1. 漏洞发现 2. 漏洞分析 3. 漏洞利用方法1-任意写篡改 `modprobe_path` 3-1 泄露内核基址 3-2 任意地址写思路 3-3 FUSE 页错误处理 3-4 完整利用 ...

  10. XCTF-攻防世界CTF平台-PWN类——1、Mary_Morton(格式化字符串漏洞、缓冲区溢出漏洞)

    目录标题 1.查看程序基本信息 2.反编译程序 3.攻击思路 (1)先利用功能2格式化字符串漏洞 (2)找到功能1的sub_400960()函数返回地址的位置 方法二 1.查看程序基本信息 Mary_ ...

最新文章

  1. 将xscj指定为当前数据库_通过网络连接数据库模式Hive的搭建过程详解
  2. 三十分钟包会——正则表达式
  3. 倒计时 2 天!「2019 嵌入式智能国际大会」全日程大公开!
  4. demo2 Kafka+Spark Streaming+Redis实时计算整合实践 foreachRDD输出到redis
  5. 【解决方案】GB28181/RTSP/Onvif/HikSDK/Ehome协议视频共享平台EasyCVR人脸识别助力打造智慧安检
  6. .net C#实现图像对比
  7. IDEA toString方法输出JSON格式
  8. Python小甲鱼课后习题 乌龟吃小鱼
  9. es 按条件查询数据总条数
  10. Quartus prime工程中各种文件的后缀及意义
  11. 技术岗面试中的一些常见问题
  12. 2014年总结——回眸过去
  13. python获取股票_python根据股票代码获取当前数据
  14. 通俗地讲解目标检测中AP指标
  15. git免密pull指定ssh密钥文件
  16. OnlyBill 简易记账软件(续)
  17. 大家玩突袭2吗?呵呵我有秘籍哟!
  18. 肇庆学院"菜鸟杯"程序设计竞赛2019(同步赛)(回顾补题)
  19. 海康威视(hikvision) demo部署
  20. JAVA学习-JDK8环境的安装与卸载

热门文章

  1. 请尝试将 `lib` 编译器选项更改为 es2015 或更高版本
  2. Gromacs 伞形采样
  3. JavaScript立即执行函数
  4. python三维非线性拟合数据_python多元非线性拟合 Python 怎么用曲线拟合数据
  5. 前端学习日记day4——图文混排
  6. 生先森依旧怀抱初心,满载爱意
  7. 修改 植物大战僵尸 存档信息
  8. VMware View中智能卡和证书身份验证
  9. 上井冲刺港交所上市:人均消费金额降幅明显,只在中国经营业务
  10. # 鸡汤贴(汇聚三观摘要)