Pentesting and Security Personal Blog

Pentesting and Security Personal Blog

Pyrebox

PyREBox es una sandbox automatizable de ingeniería inversa hecha en Python inspirada en proyectos académicos, como DECAF o PANDA. Se basa en QEMU, y su objetivo es ayudar a la ingeniería inversa proporcionando análisis dinámico y capacidades de depuración desde un perspectiva diferente. PyREBox permite inspeccionar una VM QEMU en ejecución, modificar su memoria o registros, e instrumentar su ejecución, creando scripts sencillos en python para automatizar cualquier tipo de análisis. QEMU (cuando se trabaja como un emulador de sistema completo) emula un sistema (CPU, memoria, dispositivos ...). Mediante el uso de técnicas de VMI, no requiere realizar ninguna modificación en el sistema operativo invitado, ya que obtiene información transparente de su memoria en tiempo de ejecución.

Varios proyectos académicos como DECAF, PANDA, S2E o AVATAR, han aprovechado previamente QEMU Para superar las tareas de ingeniería inversa. Estos proyectos permiten escribir plugins En C/C++, e implementar varias características avanzadas como análisis dinámico de manchas (dynamic taint analysis), ejecución simbólica,o incluso grabar y reproducir pistas de ejecución. Con PyREBox, se pretende aplicar esta tecnología en mantener el diseño simple, y en la usabilidad del sistema para los analistas de amenazas.

Documentación

La documentación de este proyecto está alojada en readthedocs.io.

Metas

  • Proporcionar una plataforma de emulación de sistema completo con una interfaz sencilla para inspeccionar el sistema huésped emulado.

  * Instrumentación de grano fino de los eventos del sistema.   Introspección de Máquina Virtual Integrada (VMI), basada en la volatilidad. No es necesario instalar ningún agente o controlador en el invitado.   * Una interfaz de shell basada en IPython.   * Un motor de scripting basado en Python, que permite integrar en los scripts cualquiera de las herramientas de seguridad basadas en este lenguaje (uno de los ecosistemas más grandes). - Tener un diseño limpio, desacoplado de QEMU. Muchos proyectos que se construyen sobre QEMU no evolucionan cuando QEMU se actualiza, faltan nuevas características y optimizaciones, así como actualizaciones de seguridad. Para lograrlo, PyREBox se implementa como un módulo independiente que puede ser compilado junto con QEMU requiriendo un conjunto mínimo de modificaciones. - Soporte para diferentes arquitecturas. Actualmente, PyREBox sólo soporta Windows para arquitecturas x86 y x86-64 bit, pero su diseño permite soportar otras arquitecturas como ARM, MIPS o PowerPC, y otros sistemas operativos también.

IPython shell

Iniciar un shell PyREBox es tan fácil como escribir el comando sh en el monitor de QEMU. Se iniciará inmediatamente una shell de IPython. Esta shell registra el historial de comandos, así como las variables definidas. Por ejemplo, puede guardar un valor y recuperarlo posteriormente en un punto diferente de la ejecución, cuando vuelva a iniciar la shell. PyREBox se aprovecha de todas las funciones disponibles en IPython, como la autocompleción, el historial de comandos, y la generación automatizada de ayuda de comandos.

PyREBox le permitirá depurar el sistema (o un proceso) de una manera bastante furtiva. A diferencia de los depuradores tradicionales que permanecen en el sistema que se está depurando (incluso modificando la memoria del proceso depurado para insertar puntos de interrupción), PyREBox permanece totalmente fuera del sistema inspeccionado, y no requiere la instalación de ningún controlador o componente en el guest

PyREBox ofrece un conjunto completo de comandos para inspeccionar y modificar el estado de la VM en ejecución. Simplemente escriba list_commands para obtener una lista completa. Puede ejecutar cualquier plugin de volatility simplemente escribiendo vol y el comando de volatility correspondiente. Para obtener una lista completa de los complementos de volatilidad disponibles, puede escribir list_vol_commands. Esta lista se genera automáticamente, por lo que también mostrará cualquier plugin de volatilidad que usted instale en la ruta volatility/ de PyREBox.

¡También puedes definir tus propios comandos! Es tan simple como declarar una función en un script y cargarla.

Si necesita algo más expresivo que un comando, puede escribir un fragmento de Python aprovechando la API. Para una descripción de la API, consulte Documentación o escriba help (api) en la shell.

Scripting

PyREBox permite cargar dinámicamente scripts que pueden registrar funciones de callback que se llaman cuando ciertos eventos ocurren, como instrucciones ejecutadas, memoria leída / escrita, procesos creados / destruidos, y así sucesivamente.

Dado que PyREBox está integrado con Volatility, le permitirá aprovechar todos los plugins de volatilidad para la memoria forense en sus scripts de python. Muchas de las herramientas de ingeniería inversa más famosas se implementan en Python o al menos tienen enlaces de Python. Nuestro enfoque permite integrar cualquiera de estas herramientas en un script.

Finalmente, dado que las devoluciones de llamada en python pueden introducir una penalización de rendimiento en eventos frecuentes tales como instrucciones ejecutadas, también es posible crear triggers. Triggers son plug-in de código nativo (desarrollado en C/C++) que se puede insertar dinámicamente en tiempo de ejecución en cualquier evento justo antes de ejecutar la devolución de llamada de Python. Esto permite limitar el número de eventos que afectan al código python, así como preprocesar valores en código nativo.

En el repositorio encontrará ejemplos de scripts que pueden ayudarle a escribir su propio código.

Instalar

Se proporciona un script de compilación. Para obtener detalles específicos acerca de las dependencias, consulte BUILD. También se proporciona un Dockerfile.

Inicio de una VM

PyREBox se basa en QEMU, por lo que para iniciar una máquina virtual con PyREBox, debe ejecutarlo exactamente como cuando inicia una máquina virtual QEMU. Un par de scripts de ejemplo se proporcionan: start_i386.sh, start_x86_64.sh, puede usarlos como ejemplo.

La única opción de monitor QEMU actualmente admitida es stdio (-monitor stdio). Podéis obtenerlo aquí:

github: https://github.com/Cisco-Talos/pyrebox.

¡Gracias por leer!

maninwire =D

Know your enemy!


Written by maninwire@gmail.com in Tools on vie 04 agosto 2017. Tags: malware, reversing, sandbox, tool, vm,