freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

如何使用protobuf-inspector对Protocol Buffers进行逆向工程分析
2023-02-10 02:36:21
所属地 广西

关于Protocol Buffers

Protocol Buffers是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。现阶段官方支持C++、JAVA、Python、Objective C、C#、Ruby、PHP、JavaScript八种编程语言,还可以找到大量的几乎涵盖所有语言的第三方拓展包。

通过它,你可以定义你的数据的结构,并生成基于各种语言的代码。这些你定义的数据流可以轻松地在传递并不破坏你已有的程序。并且你也可以更新这些数据而现有的程序也不会受到任何的影响。值得一提的是,Protocol Buffers经常被简称为Protobuf。

protobuf-inspector介绍

protobuf-inspector是一款功能强大的逆向工程分析工具,该工具可以帮助广大研究人员对Protocol Buffers进行逆向工程分析。这款工具能够解析Google Protobuf编码的代码块(支持v2或v3)并且能够给用户输出格式优美的彩色内容显示。下面给出的是一个输出样例:

正如我们所看到的,工具会显示字段名以及一些详细数据,其中包含:

1、变量是否使用zig-zag编码(假设默认不使用zig-zag编码);

2、32位/64位值是整数还是浮点(默认情况下都显示);

3、签名(默认情况下自动检测);

protobuf-inspector能够在大多数情况下正确解析数据结构,当它在字段上找到嵌入的二进制数据时,它将首先尝试将其解析为消息。如果失败,它会将数据显示为字符串或十六进制转储。

它按照字段在wire格式中的编码顺序显示字段,因此除了逆向工程之外,对于那些希望熟悉wire格式或解析器开发人员的人来说,它也很有用。

工具下载

由于该工具基于Python开发,因此我们首先需要在本地设备上安装并配置好Python环境。接下来,广大研究人员可以使用下列命令将该工具源码克隆至本地:

git clone https://github.com/mildsunrise/protobuf-inspector.git

除此之外,我们也可以使用pip来安装protobuf-inspector:

pip install protobuf-inspector

工具使用

工具安装完成之后,我们就可以使用下列命令通过STDIN向工具提供Protobuf数据了:

protobuf_inspector < my-protobuf-blob

以代码库使用

from protobuf_inspector.types import StandardParser

 

parser = StandardParser()

with open('my-blob', 'rb') as fh:

   output = parser.parse_message(fh, "message")

print(output)

该工具还允许我们以第三方代码库的形式整合进其他代码中,具体使用请参考protobuf_inspector/__main__.py。

解析错误

如果你遇到了解析错误问题,解析将会终止在特定字段,但在层次结构外部不会受到影响。堆栈跟踪将打印到字段内容所在的位置,如果适用,还将打印一个hexdump,指示在该块中停止解析的位置。

如果你指定了uint32,并且找到了更大的变量,则会得到如下结果:

如果指定某个字段包含嵌入消息,但在其中发现无效数据,则会得到:

请注意,如果发生一个或多个分析错误,main.py将以非零状态退出。

许可证协议

本项目的开发与发布遵循ISC开源许可证协议。

项目地址

protobuf-inspector:【GitHub传送门

参考资料

https://developers.google.com/protocol-buffers/docs/encoding#signed-integers

https://developers.google.com/protocol-buffers

https://developers.google.com/protocol-buffers/docs/encoding

# 数据安全 # 逆向工程 # 逆向分析 # 逆向技术
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录