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
manticore — Strumento di esecuzione simbolica | Kitploit
Strumenti/GitHubGitHub/trailofbits/manticore
Analisi StaticaAnalisi Dinamica (Sandboxing)Reverse EngineeringFuzzingAnalisi di BinariApprendimento e FormazioneArchived
GitHubtrailofbits/manticore

manticore

Strumento di esecuzione simbolica

Vedi Repository
3.9k4971 mese 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
Sito web

⚠️ Progetto archiviato ⚠️

Questo progetto non è più sviluppato e mantenuto internamente.

Manticore


Build Status Coverage Status PyPI Version Slack Status Documentation Status Example Status LGTM Total Alerts

Manticore è uno strumento di esecuzione simbolica per l'analisi di smart contract e binari.

Caratteristiche

  • Esplorazione dei programmi: Manticore può eseguire un programma con input simbolici ed esplorare tutti gli stati possibili che può raggiungere
  • Generazione di input: Manticore può produrre automaticamente input concreti che portano a un dato stato del programma
  • Scoperta di errori: Manticore può rilevare crash e altri casi di fallimento in binari e smart contract
  • Strumentazione: Manticore fornisce un controllo granulare dell'esplorazione degli stati tramite callback di eventi e hook di istruzioni
  • Interfaccia programmatica: Manticore espone accesso programmatico al suo motore di analisi tramite un'API Python

Manticore può analizzare i seguenti tipi di programmi:

  • Smart contract Ethereum (bytecode EVM)
  • Binari Linux ELF (x86, x86_64, aarch64 e ARMv7)
  • Moduli WASM

Installazione

Nota: Si consiglia di installare Manticore in un ambiente virtuale per evitare conflitti con altri progetti o pacchetti

Opzione 1: Installazione da PyPI:

root@kitploit:~
pip install manticore

Opzione 2: Installazione da PyPI, con dipendenze aggiuntive necessarie per eseguire binari nativi:

root@kitploit:~
pip install "manticore[native]"

Opzione 3: Installazione di una build di sviluppo notturna:

root@kitploit:~
pip install --pre "manticore[native]"

Opzione 4: Installazione dal ramo master:

root@kitploit:~
git clone https://github.com/trailofbits/manticore.git
cd manticore
pip install -e ".[native]"

Opzione 5: Installazione tramite Docker:

root@kitploit:~
docker pull trailofbits/manticore

Una volta installato, lo strumento CLI manticore e l'API Python saranno disponibili.

Per un'installazione di sviluppo, consulta il nostro wiki.

Utilizzo

CLI

Manticore ha un'interfaccia a riga di comando che può eseguire un'analisi simbolica di base di un binario o di uno smart contract. I risultati dell'analisi verranno inseriti in una directory workspace che inizia con mcore_. Per informazioni sul workspace, consulta il wiki.

EVM

La CLI di Manticore rileva automaticamente che stai cercando di testare un contratto se (ad es.) il contratto ha estensione .sol o .vy. Vedi una demo.

Clicca per espandere:
root@kitploit:~
$ manticore examples/evm/umd_example.sol 
 [9921] m.main:INFO: Registered plugins: DetectUninitializedMemory, DetectReentrancySimple, DetectExternalCallAndLeak, ...
 [9921] m.e.manticore:INFO: Starting symbolic create contract
 [9921] m.e.manticore:INFO: Starting symbolic transaction: 0
 [9921] m.e.manticore:INFO: 4 alive states, 6 terminated states
 [9921] m.e.manticore:INFO: Starting symbolic transaction: 1
 [9921] m.e.manticore:INFO: 16 alive states, 22 terminated states
[13761] m.c.manticore:INFO: Generated testcase No. 0 - STOP(3 txs)
[13754] m.c.manticore:INFO: Generated testcase No. 1 - STOP(3 txs)
...
[13743] m.c.manticore:INFO: Generated testcase No. 36 - THROW(3 txs)
[13740] m.c.manticore:INFO: Generated testcase No. 37 - THROW(3 txs)
[9921] m.c.manticore:INFO: Results in ~/manticore/mcore_gsncmlgx
Manticore-verifier

Viene fornito uno strumento CLI alternativo che semplifica il testing dei contratti e permette di scrivere metodi di proprietà nello stesso linguaggio ad alto livello utilizzato dal contratto. Dai un'occhiata alla documentazione di manticore-verifier. Vedi una demo

Native

Clicca per espandere:
root@kitploit:~
$ manticore examples/linux/basic
[9507] m.n.manticore:INFO: Loading program examples/linux/basic
[9507] m.c.manticore:INFO: Generated testcase No. 0 - Program finished with exit status: 0
[9507] m.c.manticore:INFO: Generated testcase No. 1 - Program finished with exit status: 0
[9507] m.c.manticore:INFO: Results in ~/manticore/mcore_7u7hgfay
[9507] m.n.manticore:INFO: Total time: 2.8029580116271973

API

Manticore fornisce un'interfaccia di programmazione Python che può essere utilizzata per implementare potenti analisi personalizzate.

EVM

Per gli smart contract Ethereum, l'API può essere utilizzata per la verifica dettagliata di proprietà arbitrarie del contratto. Gli utenti possono impostare le condizioni iniziali, eseguire transazioni simboliche e poi rivedere gli stati scoperti per garantire che gli invarianti di un contratto siano soddisfatti.

Clicca per espandere:
root@kitploit:~
from manticore.ethereum import ManticoreEVM
contract_src="""
contract Adder {
    function incremented(uint value) public returns (uint){
        if (value == 1)
            revert();
        return value + 1;
    }
}
"""
m = ManticoreEVM()

user_account = m.create_account(balance=10000000)
contract_account = m.solidity_create_contract(contract_src,
                                              owner=user_account,
                                              balance=0)
value = m.make_symbolic_value()

contract_account.incremented(value)

for state in m.ready_states:
    print("can value be 1? {}".format(state.can_be_true(value == 1)))
    print("can value be 200? {}".format(state.can_be_true(value == 200)))

Native

È anche possibile utilizzare l'API per creare strumenti di analisi personalizzati per binari Linux. Personalizzare lo stato iniziale aiuta a evitare problemi di esplosione degli stati che si verificano comunemente quando si utilizza la CLI.

Clicca per espandere:
root@kitploit:~
# example Manticore script
from manticore.native import Manticore

m = Manticore.linux('./example')

@m.hook(0x400ca0)
def hook(state):
  cpu = state.cpu
  print('eax', cpu.EAX)
  print(cpu.read_int(cpu.ESP))

  m.kill()  # tell Manticore to stop

m.run()

WASM

Manticore può anche valutare funzioni WebAssembly su input simbolici per la validazione di proprietà o analisi generale.

Clicca per espandere:
root@kitploit:~
from manticore.wasm import ManticoreWASM

m = ManticoreWASM("collatz.wasm")

def arg_gen(state):
    # Generate a symbolic argument to pass to the collatz function.
    # Possible values: 4, 6, 8
    arg = state.new_symbolic_value(32, "collatz_arg")
    state.constrain(arg > 3)
    state.constrain(arg < 9)
    state.constrain(arg % 2 == 0)
    return [arg]


# Run the collatz function with the given argument generator.
m.collatz(arg_gen)

# Manually collect return values
# Prints 2, 3, 8
for idx, val_list in enumerate(m.collect_returns()):
    print("State", idx, "::", val_list[0])

Requisiti

  • Manticore richiede Python 3.7 o superiore
  • Manticore supporta ufficialmente l'ultima versione LTS di Ubuntu fornita da Github Actions
    • Manticore ha supporto sperimentale per EVM e WASM (ma non per binari Linux nativi) su MacOS
  • Si consiglia di eseguire con una dimensione dello stack aumentata. Questo può essere fatto eseguendo ulimit -s 100000 o passando --ulimit stack=100000000:100000000 a docker run

Compilazione di Smart Contract

  • L'analisi degli smart contract Ethereum richiede il programma solc nel tuo $PATH.
  • Manticore utilizza crytic-compile per compilare smart contract. Se hai problemi di compilazione, considera di eseguire crytic-compile direttamente sul tuo codice per facilitare l'identificazione di eventuali problemi.
  • Siamo ancora nel processo di implementazione del supporto completo per la semantica delle istruzioni EVM Istanbul, quindi alcuni opcode potrebbero non essere supportati. In caso di necessità, puoi provare a compilare con Solidity 0.4.x per evitare di generare quelle istruzioni.

Utilizzo di un solver diverso (Yices, Z3, CVC4)

Manticore si basa su un solver esterno che supporta smtlib2. Attualmente sono supportati Z3, Yices e CVC4 e possono essere selezionati tramite riga di comando o impostazioni di configurazione. Se Yices è disponibile, Manticore lo utilizzerà per impostazione predefinita. In caso contrario, ricadrà su Z3 o CVC4. Se vuoi scegliere manualmente quale solver utilizzare, puoi farlo in questo modo: manticore --smt.solver Z3

Installazione di CVC4

Per maggiori dettagli vai su https://cvc4.github.io/. Altrimenti, scarica il binario e usalo.

root@kitploit:~
    sudo wget -O /usr/bin/cvc4 https://github.com/CVC4/CVC4/releases/download/1.7/cvc4-1.7-x86_64-linux-opt
    sudo chmod +x /usr/bin/cvc4

Installazione di Yices

Yices è incredibilmente veloce. Maggiori dettagli qui https://yices.csl.sri.com/

root@kitploit:~
    sudo add-apt-repository ppa:sri-csl/formal-methods
    sudo apt-get update
    sudo apt-get install yices2

Come ottenere aiuto

Sentiti libero di passare dal nostro canale slack #manticore su Empire Hacking per aiuto nell'uso o nell'estensione di Manticore.

La documentazione è disponibile in diversi luoghi:

  • Il wiki contiene informazioni su come iniziare con Manticore e contribuire

  • Il riferimento API contiene documentazione più approfondita e dettagliata sulla nostra API

  • La directory examples contiene alcuni piccoli esempi che mostrano le caratteristiche dell'API

  • Il repository manticore-examples contiene alcuni esempi più complessi, inclusi alcuni veri problemi CTF

Se desideri segnalare un bug o richiedere una funzionalità, utilizza la nostra pagina issues.

Per domande e chiarimenti, visita la pagina discussion.

Licenza

Manticore è concesso in licenza e distribuito sotto la licenza AGPLv3. Contattaci se stai cercando un'eccezione ai termini.

Pubblicazioni

  • Manticore: A User-Friendly Symbolic Execution Framework for Binaries and Smart Contracts, Mark Mossberg, Felipe Manzano, Eric Hennenfent, Alex Groce, Gustavo Grieco, Josselin Feist, Trent Brunson, Artem Dinaburg - ASE 19

Se stai utilizzando Manticore in lavori accademici, considera di candidarti al Crytic $10k Research Prize.

Video dimostrativo da ASE 2019

Brief Manticore demo video

Integrazioni con strumenti

  • MATE: Merged Analysis To prevent Exploits
    • Mantiserve: interazione API REST con Manticore per avviare, terminare e controllare l'istanza di Manticore
    • Dwarfcore: Plugin e rilevatori da utilizzare all'interno del motore Mantiserve durante l'esplorazione
    • Esecuzione simbolica sotto-vincolata Interfaccia per esplorare simbolicamente singole funzioni con Manticore
Scarica lo strumento