如何分析攻击?Mango Markets攻击案例研究

  • Sec3dev
  • 发布于 2022-10-14 14:22
  • 阅读 26

本文深入分析了Mango Markets的攻击案例,包括攻击者的策略、账户分析以及造成的损失。它详细描述了攻击者如何利用杠杆和市场波动性进行交易,从而获得了超过1.2亿美元的加密资产。文章还介绍了调查攻击的技术手段,提供了一系列有价值的见解。

在本系列文章中,我们将对一些代表性的链上协议攻击进行深入的事后调查,并分享 sec3 核心团队用于理解攻击的技术和工具。

最近,Mango Markets 被利用,损失超过 1 亿美元;攻击者甚至提出了一项名为“偿还坏账”的 Mango DAO 提案,呼吁 Mango 国库偿还坏账,使存款人与协议对立。

攻击者的提案获得了超过 3300 万的“是”投票,使用的 MNGO 代币数量非常庞大。

主要发现(关于攻击)

攻击者通过 FTX 从两个账户中资助了超过 1000 万美元的 USDC

利用上述两个账户作为所有者,攻击者创建了两个 Mango 账户,并向每个账户存入 500 万 USDC 作为抵押物

攻击者利用 MangoAccount1 在 MNGO-PERP 中创建了一个大额多头头寸(买入数量=515717245 价格=0.0382 USDC,并使用 Mango 的 4 倍杠杆)

攻击者利用 MangoAccount2 创建了三个大型空头头寸(总卖出数量=488302109)在 MNGO-PERP 中

攻击者通过在 Serum DEX 上进行多次巨额交易,导致 MNGO 的价格大幅上涨(从 0.0382 道达到高达 0.5 USDC,增长超过 13 倍)

攻击者在 MangoAccount1MangoAccount2 之间结算了利润和损失,使 MangoAccount1 在其多头头寸上获得了超过 2 亿美元的巨额未实现利润

然后,攻击者利用 MangoAccount1 从 Mango 借入并提取了超过 1.2 亿美元的各种代币(BTC (sollet),USDT,SOL,mSOL,USDC),所有交易仅用几分钟完成

本质上,攻击者使用的办法利用了 MNGO 的波动性以及 Mango 在期货市场中的保证金和杠杆。

@ SBF_FTX 对这种方法做了一个极好的阐述

发生了什么以及如何进行调查?

要调查这次攻击,我们首先需要找到攻击者的地址和攻击交易。假设我们仅有攻击者的 Mango 账户(其有超过 -$115M 的巨大债务):https://trade.mango.markets/account?pubkey=4ND8FVPjUGGjx9VuGFuJefDWpg3THb58c277hbVRnjNa

然而,Mango 每分钟有数千笔交易,我们如何知道哪些地址属于攻击者? sec3 团队利用以下三种方法:

  1. 监测异常交易 — 在发生大额转账时发出警报(这可能表明潜在的黑客攻击)
  2. 筛选主要代币持有者(我们知道攻击者在此情况下大量持有 MNGO)
  3. 解码 Mango 账户(这些 Mango 账户的所有者就是攻击者的地址)

第三种方法是找到攻击者地址的最有效方式,因为 Mango 账户的所有者信息存储在 MangoAccount 结构体中的 第三个字段(请见下面第 1286 行):

通过解码 4ND8FVPjUGGjx9VuGFuJefDWpg3THb58c277hbVRnjNa 的账户数据,我们可以找到它的所有者是 yUJw9a2PyoqKkH47i4yEGf4WXomSHMiK7Lp29Xs2NqM(攻击者的 Account1)。

然后,我们可以检索攻击者的 Account1 所有历史交易。总共有 44 笔交易。我们可以逐一分析这些交易,从最老的开始到最新的:

时间戳(UTC) 事件
2022年10月11日 19:36:47 攻击者创建了 Account1 并从 FTX 资金注入 25K USDC,交易号 2p86o...gFUyG
2022年10月11日 19:43:03 攻击者从 FTX 向 Account1 转账 2M USDC,交易号 sq2VX...ovTCV
2022年10月11日 19:50:31 攻击者再次向 Account1 提供 3.5M USDC,交易号 4aPwY...wBiYM<br>现在 Account1 总共有 5.525M USDC
2022年10月11日 19:54:47 攻击者从 FTX 为 Account1 提供 1 SOL,交易号 cbxM5...4yg5Q<br>现在,Account1 可以签名并发送交易!
2022年10月11日 22:08:07 攻击者创建了 MangoAccount1 并向其存入 100 USDC,交易号 4MVjZ...35qCG
2022年10月11日 22:18:57 攻击者向 MangoAccount1 存入 5M USDC,交易号 3cBEK...A8unY
2022年10月11日 22:23:40 攻击者在 MNGO-PERP 市场中下达了一个期货订单,交易号 2xPS2...XHPQR<br>(数量=515717245,价格=382)
2022年10月11日 22:26:30 攻击者开始通过 Jupiter、Raydium 和 Serum 操纵 MNGO 价格。<br><br>在此交易中,使用 200K USDC 购买 1,993,371.266754 MNGO,交易号 5o2wk...HE1Km

MNGO 价格从 0.0382 涨至 0.1!

等一下,攻击者的 USDC 从哪里来?记住:攻击者在 Account1 得到 5.525M 来自 FTX,但只向 MangoAccount1 存入了 5M 作为抵押。

时间戳(UTC) 事件
2022年10月11日 22:29:27 攻击者调用 Mango: SettlePnl 以结算 MangoAccount1 的期货订单:SFVdK...cEDv1

等一下,攻击者怎么能如此轻松地结算 MangoAccount1 的订单?谁是 卖方

查阅上述交易,我们可以发现涉及三个不同的 Mango 账户(卖方)的 Mango: SettlePnl 调用:

  1. CQvKSNnYtPTZfQRQ5jkHq8q2swJyRsdQLcFcj3EmKFfX
  2. H6R2zNZMmhGoXLMGweGPP4Q9RtZ6RprVu7Hc868pJVbp
  3. C2y9bLhBn7ynkb2HhayHVpUFCSeRWJ9oqFXrKH3vBhZK

查看这些账户,我们很快意识到 CQvKSN 是攻击者的 MangoAccount2:它为总计 488302109 MNGO 创建了三个卖方头寸,通过解码 CQvKSN 的所有者,我们发现这是攻击者的 Account2J44uRJ

现在,我们可以对 Account2 的交易历史进行类似分析(总共 32 笔交易):

时间戳(UTC) 事件
2022年10月11日 19:49:47 攻击者从 FTX 向 Account2 提供 5M USDC 的资金,交易号:297Ga...P7Ftk
2022年10月11日 19:54:14 攻击者向 Account2 添加 1 SOL,交易号:2krAGf...xYsLo
2022年10月11日 22:07:26 攻击者创建了 MangoAccount2 并向其存入 1 USDC,交易号 FGL3G...5BTPm
2022年10月11日 22:19:13 攻击者向 MangoAccount2 存入 5M USDC,交易号 66AFL...C1xyC
2022年10月11日 22:24:47 攻击者在 MNGO-PERP 中创建空头头寸,交易号 2mMMv...4hf4x<br>(数量 = 261780104 价格 = 0.0382)
2022年10月11日 22:25:35 攻击者在 MNGO-PERP 中创建空头头寸,交易号 qbVq5...wM4yE<br>(数量 = 222688514 价格 = 0.0382)
2022年10月11日 22:25:51 攻击者在 MNGO-PERP 中创建空头头寸,交易号 2q2k8...d5g45<br>(数量 = 3833491 价格 = 0.0382)

现在,回到 Account1,攻击者的剩余交易都是从 Mango 提取各种代币以及在 Serum 中将 USDC 兑换为 MNGO (以提高 MNGO 价格)。

时间戳(UTC) 事件
2022年10月11日 22:34:26 攻击者将 50K USDC 交易为 100,172.209331 MNGO,使 MNGO 的价格在交易号 3SZpH...Bs5XX 中上升至 0.499 USDC (MangoAccount1 的多头头寸价格 0.0382 的 13 倍)
2022年10月11日 22:36:34 攻击者从 Mango 提取 400,000 Wrapped SOL,交易号 2J46z...spgwY
2022年10月11日 22:37:27 攻击者从 Mango 提取 361,577 Wrapped SOL,交易号 zpoYV...vWnqV
2022年10月11日 22:37:38 攻击者从 Mango 提取 798,000 Marinade 质押 SOL (mSOL),交易号 281Hw...cXdRF

这些 SOL 代币总共价值 5000 万美元。总的来说,攻击者能够通过 MangoAccount1 提取超过 1.2 亿美元的代币。

在写作时,MNGO 的价格已下降至 0.025 美元,攻击者的 Mango 账户有超过 1.15 亿美元的坏账。


关于 sec3(前身为 Soteria)

sec3 是一家安全研究公司,致力于为数百万用户准备 Solana 项目。sec3 的 Launch Audit 是一项严格的专家主导代码检查,旨在对主网级智能合约进行调查和认证;sec3 的持续审计软件平台 X-ray 与 GitHub 整合,逐步扫描拉取请求,帮助项目在部署前加强代码;而 sec3 的部署后安全解决方案 WatchTower 确保资金安全。sec3 正在为 Web3 项目构建基于技术的可扩展解决方案,以确保协议在扩展时保持安全。

要了解有关 sec3 的更多信息,请访问 https://www.sec3.dev

  • 原文链接: sec3.dev/blog/mangoexplo...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Sec3dev
Sec3dev
https://www.sec3.dev/