Skip to content

Latest commit

 

History

History
114 lines (66 loc) · 9.68 KB

File metadata and controls

114 lines (66 loc) · 9.68 KB

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

Autor: SunSec

Quando comecei a estudar análise de transações OnChain, havia poucos artigos educacionais relacionados, então tive que coletar informações por conta própria para descobrir como analisar e testar. Estamos lançando uma série de artigos de segurança Web3 para ajudar mais pessoas a se juntarem à segurança Web3 e criar uma rede segura.

Nesta primeira série, vamos apresentar como realizar análises OnChain e escrever reproduções de ataques. Essa habilidade ajudará você a analisar o processo de ataque, as razões das vulnerabilidades e até mesmo como os robôs de arbitragem funcionam!

Primeiro, as ferramentas certas

Antes de começar a análise, vou apresentar algumas ferramentas comumente usadas. As ferramentas corretas podem ajudá-lo a ser mais eficiente em sua pesquisa.

Ferramentas de depuração de transações

Phalcon | Tx.viewer | Cruise | Ethtx | Tenderly

Ferramentas como o Transaction Viewer são as mais comumente usadas e podem nos ajudar a visualizar o fluxo de chamadas de função e os parâmetros passados para cada função em uma transação que queremos analisar. Cada ferramenta é semelhante, diferindo apenas no suporte a diferentes blockchains e recursos auxiliares. Eu pessoalmente uso principalmente o Phalcon e o Transaction Viewer do Sam. Se encontrar uma blockchain não suportada, uso o Tenderly, que suporta a maioria das blockchains, mas não é tão conveniente em termos de legibilidade, exigindo uma análise mais lenta. No entanto, quando comecei a estudar análise OnChain, aprendi primeiro com o Ethtx e o Tenderly.

Comparação de suporte a blockchains

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

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

Operações práticas

Vamos usar o exemplo do evento JayPeggers - Insufficient validation + Reentrancy link e o TXID para ilustrar o uso da ferramenta Phalcon desenvolvida pela Blocksec. Na imagem abaixo, você pode ver as informações básicas da transação e as mudanças no saldo. A partir das mudanças no saldo, você pode rapidamente ter uma ideia de quanto o atacante lucrou. Neste exemplo, o atacante lucrou 15,32 ETH.

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

Invocation Flow: visualiza o fluxo de chamadas de função da transação, permitindo que saibamos quais transações foram chamadas, quais projetos estão envolvidos, quais funções foram chamadas e quais parâmetros e dados brutos foram passados.

图片

O Phalcon 2.0 adicionou recursos de análise de fluxo de fundos, depuração e análise de código-fonte, permitindo que você veja trechos de código, parâmetros e valores de retorno durante o processo de rastreamento, facilitando a análise.

image

Vamos agora usar o Transaction Viewer do Sam para ver o TXID. É semelhante ao Phalcon, mas o Sam integrou muitas ferramentas menores nele. Ao clicar no ícone de olho, você pode ver as alterações no armazenamento e o gás consumido por cada chamada.

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

Clicando na chamada mais à esquerda, você pode tentar decodificar os dados brutos de entrada.

图片

Agora, vamos usar o Tenderly para ver o TXID. Na interface do Tenderly, você também pode ver as informações básicas, mas a parte de depuração não é visual, exigindo uma análise passo a passo. No entanto, a vantagem é que você pode depurar e ver o código-fonte e o processo de conversão dos dados brutos de entrada.

图片

Até aqui, podemos ter uma ideia geral do que essa transação está fazendo. Antes de começar a escrever um PoC, você pode se perguntar se é possível reproduzir rapidamente o ataque? Sim, é possível! Você pode usar o Tenderly ou o Phalcon, que suportam a reprodução de transações simuladas. Na parte superior direita da imagem acima, há um botão "Re-Simulate", que preencherá automaticamente os parâmetros da transação. A partir dos campos na imagem, você pode alterar qualquer coisa, como o número do bloco, o remetente, o valor, os dados brutos de entrada, etc.

图片

Banco de dados de assinaturas Ethereum

4byte | sig.eth | etherface

Nos dados brutos de entrada, os primeiros 4 bytes são a assinatura da função. Às vezes, quando o Etherscan ou outras ferramentas de análise não conseguem decodificar, você pode usar o Banco de Dados de Assinaturas para verificar qual função pode ser.

Aqui está um exemplo em que não sabemos o que é 0xac9650d8 como função. 图片

Ao consultar o sig.eth, podemos ver que a assinatura de 4 bytes é multicall(bytes[]). 图片

Ferramentas úteis

ABI to interface | Get ABI for unverified contracts | ETH Calldata Decoder | ETHCMD - Guess ABI

ABI to interface: ao desenvolver um PoC e precisar chamar outros contratos, você precisa de uma interface. Essa ferramenta pode ajudá-lo a gerar rapidamente a interface desejada. Basta copiar o ABI do Etherscan e colá-lo na ferramenta para obter a interface gerada. Exemplo

图片 图片

ETH Calldata Decoder: às vezes, quando você não tem o ABI, mas deseja ver os dados brutos de entrada, pode experimentar o ETH Calldata Decoder. Como mencionado anteriormente, a ferramenta do Sam também suporta a decodificação dos dados brutos de entrada.

图片

Get ABI for unverified contracts: se você encontrar um contrato não verificado, pode usar essa ferramenta para listar as assinaturas de função existentes nesse contrato. Exemplo

图片

Ferramentas de descompilação

Etherscan-decompile bytecode | Dedaub | heimdall-rs

O Etherscan possui uma função de descompilação embutida, mas a legibilidade é um pouco comprometida. Eu pessoalmente uso o Dedaub com mais frequência, pois é mais legível. Muitas pessoas me perguntam qual ferramenta eu uso para descompilar. Vamos usar o exemplo de um MEV Bot que foi atacado link Você pode tentar descompilar você mesmo exemplo

Primeiro, copie o bytecode do contrato não verificado e cole-o no Dedaub. Em seguida, clique em "Decompile". 截图 2023-01-05 上午10 33 15

图片

Por enquanto, é isso para a primeira lição. Se você quiser aprender mais, pode consultar os recursos de aprendizado abaixo.

Recursos de aprendizado

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/ .