Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Depuração de Transações OnChain: 1. Ferramentas

Autor: SunSec

Os recursos online eram escassos quando comecei a aprender análise de transações OnChain. Embora lentamente, consegui reunir informações fragmentadas para realizar testes e análises.

A partir dos meus estudos, lançaremos uma série de artigos de segurança Web3 para incentivar mais pessoas a ingressarem na segurança Web3 e criar uma rede segura juntos.

Na primeira série, vamos apresentar como realizar uma análise OnChain e, em seguida, reproduziremos ataque(s) OnChain. Essa habilidade nos ajudará a entender o processo de ataque, a causa raiz da vulnerabilidade e até mesmo como o robô de arbitragem faz arbitragem!

Ferramentas podem melhorar muito a eficiência

Antes de entrar na análise, permita-me apresentar algumas ferramentas comuns. As ferramentas certas podem ajudá-lo a fazer pesquisas de forma mais eficiente.

Ferramentas de depuração de transações

Phalcon | Tx.viewer | Cruise | Ethtx | Tenderly

O Transaction Viewer é a ferramenta mais comumente usada, ele é capaz de listar o rastreamento de chamadas de função e os dados de entrada em cada função durante a transação. As ferramentas de visualização de transações são todas semelhantes; a diferença principal é o suporte de cadeia e o suporte de funções auxiliares. Eu pessoalmente uso o Phalcon e o Transaction Viewer do Sam. Se eu encontrar cadeias não suportadas, usarei o Tenderly. O Tenderly suporta a maioria das cadeias, mas a legibilidade é limitada e a análise pode ser lenta usando sua função de depuração. No entanto, é uma das primeiras ferramentas que aprendi junto com o Ethtx.

Comparação de suporte de cadeia

Phalcon: Ethereum, BSC, Cronos, Avalanche C-Chain, Polygon

Transaction viewer do Sam: Ethereum, Polygon, BSC, Avalanche C-Chain, Fantom, Arbitrum, Optimism

Cruise: Ethereum, BSC, Polygon, Arbitrum, Fantom, Optimism, Avalanche, Celo, Gnosis

Ethtx: Ethereum, Goerli testnet

Tendery: Ethereum, Polygon, BSC, Sepolia, Goerli, Gnosis, POA, RSK, Avalanche C-Chain, Arbitrum, Optimism, Fantom, Moonbeam, Moonriver

Laboratório

Vamos analisar o incidente JayPeggers - Validação Insuficiente + Reentrância como exemplo de transação TXID para dissecar.

Primeiro, uso a ferramenta Phalcon desenvolvida pela Blocksec para ilustrar. As informações básicas e as alterações de saldo da transação podem ser vistas na figura abaixo. A partir das alterações de saldo, podemos ver rapidamente quanto lucro o atacante obteve. Neste exemplo, o atacante obteve um lucro de 15,32 ETH.

210571234-402d96aa-fe5e-4bc4-becc-190bd5a78e68-2

Visualização do Fluxo de Chamadas - É uma invocação de função com informações de rastreamento e logs de eventos. Ele nos mostra a invocação da chamada, o nível de chamada de função desta transação, se foi usado um flash loan, quais projetos estão envolvidos, quais funções são chamadas e quais parâmetros e dados brutos são trazidos, etc.

圖片

O Phalcon 2.0 adicionou fluxo de fundos, e a análise de código-fonte + depuração mostra diretamente o código-fonte, os parâmetros e os valores de retorno juntamente com o rastreamento, o que é mais conveniente para análise.

image

Agora vamos experimentar o Transaction Viewer do Sam na mesma TXID. O Sam integra muitas ferramentas nele, como mostrado na imagem abaixo, você pode ver a alteração no Storage e o Gás consumido por cada chamada.

210574290-790f6129-aa82-4152-b3e1-d21820524a0a-2

Clique em Call à esquerda para decodificar os dados de entrada brutos.

圖片

Agora vamos mudar para o Tendery para analisar a mesma TXID, você pode ver as informações básicas como outras ferramentas. Mas usando a função de depuração, não é visualizado e precisa ser analisado passo a passo. No entanto, a vantagem é que você pode visualizar o código e o processo de conversão dos dados de entrada durante a depuração.

圖片

Isso pode nos ajudar a esclarecer todas as coisas que essa transação fez. Antes de escrever o POC, podemos executar um ataque de replay? Sim! Tanto o Tendery quanto o Phalcon suportam transações simuladas, você pode encontrar um botão Re-Simulate no canto superior direito na figura acima. A ferramenta preencherá automaticamente os valores dos parâmetros da transação para você, como mostrado na figura abaixo. Os parâmetros podem ser alterados arbitrariamente de acordo com as necessidades de simulação, como alterar o número do bloco, From, Gas, dados de entrada, etc.

圖片

Banco de Dados de Assinaturas Ethereum

4byte | sig.eth | etherface

Nos dados de entrada brutos, os primeiros 4 bytes são Assinaturas de Função. Às vezes, se o Etherscan ou as ferramentas de análise não conseguem identificar a função, podemos verificar as possíveis Funções por meio do Banco de Dados de Assinaturas.

O exemplo a seguir assume que não sabemos qual é a Função 0xac9650d8

圖片

Através de uma consulta no sig.eth, descobrimos que a assinatura de 4 bytes é multicall(bytes[])

圖片

Ferramentas úteis

ABI para interface | Obter ABI para contratos não verificados | Decodificador de Calldata ETH | ETHCMD - Adivinhar ABI

ABI para interface: Ao desenvolver um POC, você precisa chamar outros contratos, mas precisa de uma interface. Podemos usar essa ferramenta para ajudá-lo a gerar rapidamente as interfaces. Vá para o Etherscan para copiar o ABI e cole-o na ferramenta para ver a Interface gerada. Exemplo.

圖片 圖片

Decodificador de Calldata ETH: Se você deseja decodificar dados de entrada sem o ABI, esta é a ferramenta que você precisa. O Transaction Viewer do Sam que mencionei anteriormente também suporta a decodificação de dados de entrada.

圖片

Obter ABI para contratos não verificados: Se você encontrar um contrato que não foi verificado, pode usar essa ferramenta para tentar descobrir as assinaturas de função. Exemplo

圖片

Ferramentas de descompilação

Etherscan - descompilar bytecode | Dedaub | heimdall-rs

O Etherscan possui um recurso de descompilação embutido, mas a legibilidade do resultado geralmente é ruim. Pessoalmente, costumo usar o Dedaub, que produz um código descompilado melhor. É o meu descompilador recomendado. Vamos usar um MEV Bot sendo atacado como exemplo. Você pode tentar descompilá-lo por conta própria usando este contrato.

Primeiro, copie os Bytecodes do contrato não verificado e cole-os no Dedaub, e clique em Decompile.

截圖 2023-01-05 上午10 33 15

圖片

Se você quiser aprender mais, pode consultar os seguintes vídeos.

Recursos

samczsun's eth txn explorer and vscode extension

Vulnerabilities in DeFi by Daniel V.F.

Tenderly.co - Debug Transaction

Reversing The EVM: Raw Calldata

https://web3sec.xrex.io/

.