Supremacy: 如何使用 Cruise 分析一笔交易?

区块链安全 2年前 (2022) admin
523 0 0
聚焦 Web3.0 生态系统全生命周期安全的「Supremacy安全机构」已推出面向加密社区的可视化区块链交易浏览器「Cruise」,旨在为社区开发者以及安全研究员提供有关交易详情、消息调用栈和余额变更等全面数据。目前,它支持 Ethereum、BSC 、Polygon、Arbitrum、Fantom、Optimism、Avalanche、Celo 和 Gnosis 多达 9 条主流 EVM 兼容链。

Supremacy: 如何使用 Cruise 分析一笔交易?

Link:https://cruise.supremacy.team

什么是 Cruise

Cruise 是 Supremacy 安全机构研发的一整套针对以太坊(Ethereum)及其它8大主流 EVM 兼容链的交易数据可视化分析系统,它将原子交易中涉及的交易详情、余额变更和消息调用层级关系以树状图的形式展示出来,便于分析人员梳理整笔交易的调用逻辑。
除此之外,我们正在逐步研发其它新型功能,请大家拭目以待。
如何使用

Cruise 目前共分为 5 个功能模块,它们分别是:“Search”“Transaction Information”“Balance Changes”“Customized” 以及“Call Trace” 五个部分。

以下的介绍部分通过由我们 (Supremacy)率先披露的 Rabby Swap Router 攻击事件举例说明,我们取其中一笔攻击交易:

Cruise: https://cruise.supremacy.team/detail/?tx=0xce0935010baf445e300d4d600caac7fc1fecb5ccb092cdbef57904aa7e5408b2&type=eth
Etherscan: https://etherscan.io/tx/0xce0935010baf445e300d4d600caac7fc1fecb5ccb092cdbef57904aa7e5408b2

Supremacy: 如何使用 Cruise 分析一笔交易?


Supremacy: 如何使用 Cruise 分析一笔交易?

1)Search 包含对 9 条 EVM 链的检索及解析,通过选择特定链及键入 TXN Hash,点击搜索按钮后,即可获取交易详情。

Supremacy: 如何使用 Cruise 分析一笔交易?

2)Transaction Information 涵盖交易中的详细信息,它由 “Transaction Hash”“Status”“Timestamp”“Block”“Position In Block”“From”“To“Value”“Transaction Fee”“Nonce”“Event Count”“Internal Transaction Count”“Gas Used”“Gas Price”“Max Priority”“Max Fee” 以及 “Input Data” 等 17 个部分组成,并且集成了交易所在链的区块浏览器,从而极大程度上满足了用户的使用需求。

Supremacy: 如何使用 Cruise 分析一笔交易?

3)Balance Changes 则展现了该笔原子交易中所涉及的账户地址其所持资产的变更明细。如果地址涉及某一个事件,Cruise 将会对其自动赋予 Label 标签。用户也可选择在 Customized 栏目,通过改写 JSON 原文的形式修改 Label 映射关系。资产余额采用双向计算法,绿色表示增加,红色表示减少,资产未变更则不展示。

Supremacy: 如何使用 Cruise 分析一笔交易?

4)Customized 包括 Address Mappings 与 Function Mappings 两部分,两者通过 key-value 的 JSON 格式进行映射。地址标签被用于 Balance Changes 以及 Call Trace 中的地址对象替换,便于用户理解交易调用详情。Function Mappings 则不同于以往的外部案例:“通过函数签名替换为函数名这一方式进行伪解析”(字面替换无法解析出 Calldata 原始明文),而Cruise 则是在前端进行ABI实时解码,通过 Function Mappings 的 ABI 可以解析出字面意义不明的原始内容。Tricks:修改完成后需点击框外内容使当前 Customized 生效。

Supremacy: 如何使用 Cruise 分析一笔交易?

5)Call Trace 包含了交易的完整消息调用流,实现原则即简洁直观,极大降低了使用门槛。除基础功能外,Cruise 的 Call Trace 还支持 Expand Tree Nodes (展开树节点) 这一实用功能,展开全节点的示例如下。

Supremacy: 如何使用 Cruise 分析一笔交易?

Call Trace 下拉框示意图,包含了多节点之间的层级关系。

Supremacy: 如何使用 Cruise 分析一笔交易?

示例:
* :展开所有节点。
0:展开第一个深度的第一个节点
0-0:根据“0”展开第二个深度的第一个节点
0-0-0:2:基于“0-0”扩展第三个深度的第一个到第三个节点

实例分析

在我们拿到疑似攻击的链上交易之后,可以在 Cruise 搜索 Tx Hash,这时 Cruise 会将搜索结果返回到用户的浏览器中。
我们可以通过 Transaction Information 确认交易信息,有助于我们的后续分析。

Supremacy: 如何使用 Cruise 分析一笔交易?

之后可以在 Balance Changes 列表中,迅速确认获利地址以及受害者地址,比如 Rabby Swap 攻击中的 0xb687550842a24d7fbc6aad238fd7e0687ed59d55 显然是黑客地址,而 0x97469b461d73c4f570fc4f30255edfd134227408 则是受害者地址。(0xb687…9d55地址由于已被我们标记 Label,所以直接显示为 Rabby Swap Approval Exploiter)

Supremacy: 如何使用 Cruise 分析一笔交易?

显然,这是一笔由 EOA 发起的交易调用,之后的 Call Trace 都是围绕着 0x9682…6475 地址展开的,而该地址正是黑客的攻击合约。通过攻击交易的 Call Trace 我们可以发现,攻击合约直接调用了 0x6eb211caf6d304a76efe37d9abdfaddc2d4363d1 (Rabby Swap Router) 合约,由于该合约并未开源。因此在后续的调查工作中,我们通过 OSINT 的方式找到了涉及该合约的审计报告,其中附有部分源代码:

Supremacy: 如何使用 Cruise 分析一笔交易?

通过源码中的函数实现我们可以尝试手动提取ABI,并将其填入到 Function Mappings 中进行ABI解析。

Supremacy: 如何使用 Cruise 分析一笔交易?

通过解析出来的 Call Trace,我们推测这是一个典型的任意外部调用漏洞。函数签名 0x32854cc2 对应 swap() 函数,基于可控的前提,将该函数作为入口点,传递多个恶意参数给到内部 _swap() 函数。

Supremacy: 如何使用 Cruise 分析一笔交易?

跟进 _swap() 函数可以发现,它通过 L78 中的函数 functionCallWithValue() 调用了 dexRouter(token) 地址,由于该参数是可控的,并且对 dexRouter 的 calldata 也由可控的参数组成。从而导致黑客利用了用户所授权并持有的 (QNT) ERC20 token 进行了转移操作,所以这是一个典型的任意外部调用漏洞。
综上所述,最终我们成功通过 Cruise 分析出黑客的攻击行为。
点击 “阅读原文” 可快速进入 Cruise 官网。
END

Supremacy: 如何使用 Cruise 分析一笔交易?

原文始发于微信公众号(Supremacy):Supremacy: 如何使用 Cruise 分析一笔交易?

版权声明:admin 发表于 2022年10月30日 上午8:01。
转载请注明:Supremacy: 如何使用 Cruise 分析一笔交易? | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...