
Sandbox di Reverse Engineering scriptabile in Python, un framework di strumentazione e ispezione di macchine virtuali basato su QEMU
QUESTO PROGETTO È STATO ARCHIVIATO E LA SUA CODA DI ISSUE È BLOCCATA. IL PROGETTO SARÀ MANTENUTO PUBBLICO SOLO A SCOPO DI RIFERIMENTO.
.. image:: docs/media/pyrebox_logo_light_bg.png
.. _QEMU: http://qemu.org/ .. _DECAF: https://github.com/sycurelab/DECAF .. _S2E: https://github.com/dslab-epfl/s2e .. _AVATAR: https://github.com/avatartwo .. _PANDA: https://github.com/panda-re/panda .. _Volatility: http://www.volatilityfoundation.org/ .. _BUILD: BUILD.rst .. _here: https://github.com/Cisco-Talos/pyrebox/issues .. _slides: https://github.com/Cisco-Talos/pyrebox/tree/master/docs/pyrebox_hitb_ams.pdf .. _available: https://github.com/Cisco-Talos/pyrebox/tree/master/docs/pyrebox_euskalhack.pdf .. _scripts: https://github.com/Cisco-Talos/pyrebox/tree/master/scripts .. _readthedocs.io: https://pyrebox.readthedocs.io/en/latest/ .. _questions: https://github.com/Cisco-Talos/pyrebox/issues?utf8=%E2%9C%93&q=is%3Aissue%20label%3Aquestion%20 .. _presentation: https://www.youtube.com/watch?v=F2voG87obzM .. _Contest: https://volatility-labs.blogspot.com/2017/11/results-from-5th-annual-2017-volatility.html
PyREBox è un sandbox di Reverse Engineering scriptabile in Python. Si basa su QEMU e il suo obiettivo è quello di agevolare il reverse engineering fornendo capacità di analisi dinamica e debug da una prospettiva diversa. PyREBox consente di ispezionare una VM QEMU in esecuzione, modificarne la memoria o i registri e strumentare la sua esecuzione creando semplici script in Python per automatizzare qualsiasi tipo di analisi. QEMU (quando funziona come emulatore di sistema completo) emula un intero sistema (CPU, memoria, dispositivi...). Utilizzando tecniche VMI, non richiede alcuna modifica al sistema operativo guest, poiché recupera trasparentemente le informazioni dalla sua memoria in fase di esecuzione.
Molti progetti accademici come DECAF_, PANDA_, S2E_ o AVATAR_ hanno sfruttato in precedenza la strumentazione basata su QEMU per superare le sfide del reverse engineering. Questi progetti consentono di scrivere plugin in C/C++ e implementano diverse funzionalità avanzate come l'analisi dinamica del flusso dei dati (taint analysis), l'esecuzione simbolica, o addirittura la registrazione e riproduzione di tracce di esecuzione. Con PyREBox, intendiamo applicare questa tecnologia concentrandoci sul mantenere il design semplice e sull'usabilità del sistema per gli analisti di minacce.
PyREBox ha vinto il Volatility Plugin Contest_ nel 2017!
Questo strumento è stato presentato all'HITB Amsterdam 2018. Puoi vedere le slides_ o guardare la presentazione_. È stato anche presentato alla terza edizione dell'EuskalHack Security Congress (slides disponibili_).
Ricorda di ottenere l'ultima versione di PyREBox per godere delle sue funzionalità più recenti. PyREBox è in fase di sviluppo attivo e nuove interessanti funzionalità sono ancora in arrivo! Il ramo master dovrebbe sempre contenere una versione stabile, mentre i rami dev contengono le ultime funzionalità in fase di sviluppo. Il seguente elenco di annunci si riferisce al ramo master e alla data in cui le modifiche di sviluppo sono state unite in master.
Viene fornito uno script di build. Per dettagli specifici sulle dipendenze, consultare BUILD_. Forniamo anche un Dockerfile.
La documentazione di questo progetto è ospitata su readthedocs.io_.
Se pensi di aver trovato un bug, segnalalo qui_.
Prima di creare una nuova issue, consulta le domande_ aperte in precedenza da altri utenti.
Questo programma è fornito "COSÌ COM'È" e non è garantito alcun supporto. Detto questo, per aiutarci a risolvere i tuoi problemi, includi quante più informazioni possibile per riprodurre il bug:
PyREBox si basa su QEMU, quindi per avviare una VM in PyREBox, devi eseguirlo esattamente come se stessi avviando una VM QEMU. Sono forniti un paio di script di esempio: start_i386.sh, start_x86_64.sh, puoi usarli come esempio.
L'unica opzione del monitor di QEMU attualmente supportata è stdio (-monitor stdio).