Nota: Las siguientes instrucciones son para Python3.
Si necesita instalar Flashmingo en Python2.7, puede consultar la versión 1.0 en la pestaña Libraciones . Los pasos de instalación son esencialmente los mismos.
Instale los paquetes Python3 enumerados en requirements.txt .
Puede usar el siguiente comando: pip3 install -r requirements.txt
Si desea utilizar la funcionalidad de descompilación, necesita instalar Jython. Los usuarios de Ubuntu/Debian pueden emitir apt install jython
Clone el proyecto o descargue el archivo zip.
Flashmingo es un marco de análisis para archivos SWF. La herramienta trata automáticamente los archivos flash sospechosos y guía el proceso de análisis posterior, liberando recursos preciosos en su equipo. Puede incorporar fácilmente los módulos de análisis de Flashmingo en su flujo de trabajo.
Hasta el día de hoy, los investigadores forenses y los analistas de malware deben tratar con archivos SWF sospechosos. Si la historia se repite, la amenaza de seguridad puede ser incluso más grande más allá del final de la vida de Flash en 2020. Los sistemas continuarán admitiendo un formato de archivo heredado que ya no se actualizará con parches de seguridad. La automatización es la mejor manera de abordar este problema y aquí es donde Flashmingo puede ayudarlo. Flashmingo es un marco de análisis para procesar automáticamente archivos SWF que le permite marcar muestras de flash sospechosas y analizarlas con un esfuerzo mínimo. Se integra en varios flujos de trabajo de análisis como una aplicación independiente o una biblioteca poderosa. Los usuarios pueden extender fácilmente la funcionalidad de la herramienta a través de complementos Python personalizados.
Flashmingo está diseñado con la simplicidad en mente. Lee un archivo SWF y crea un objeto ( SWFObject ) que representa su contenido y estructura. Posteriormente, Flashmingo ejecuta una serie de complementos que actúan en este SWFObject y devuelven sus valores al programa principal.
Debajo de un diagrama obligatorio de flujo de arte ASCII:
+----------+
| |
+------------+----------->+ PLUGIN 1 +------------+
| | | | |
| | +----------+ |
| | |
| | +----------+ |
| | | | |
+---------+ | +----------->+ PLUGIN 2 +--------+ |
|SWF FILE +----------->+ FLASHMINGO | | | | |
+---------+ | | +----------+ | |
| | | |
| | | |
| | | |
| | +-----v---v-+
| | | |
| | | |
+-----+------+------------------------->+ SWFOBJECT |
^ | |
| | |
| +-----+-----+
| |
| |
| |
+---------------------------------------+
Al usar Flashmingo como biblioteca en sus propios proyectos, solo necesita cuidar dos tipos de objetos:
SWFObject (s), que representan la (s) muestra (s)Flashmingo . Esto actúa esencialmente como un arnés que conecta complementos y SWFObject . Los complementos Flashmingo se almacenan en sus propios directorios en ... lo adivinó: plugins Cuando se instancia un objeto Flashmingo , pasa por este directorio y procesa todos los manifiestos de los complementos. Si esto indica que el complemento está activo, esto está registrado para su uso posterior. A nivel de código, esto significa que se agrega un pequeño diccionario plugin_info a la lista plugins .
Los complementos se invocan a través de la API run_plugin con dos argumentos:
SWFObject Opcionalmente, la mayoría de los complementos le permiten pasar sus propios datos de usuario . Esto depende del complemento (lea la documentación) y se puede explicar más fácilmente con un ejemplo. El complemento predeterminado SuspiciousNames buscará en todas las piscinas constantes en busca de cuerdas que contengan sustras sospechosas (por ejemplo: 'desbordamiento', 'rociar', 'shell', etc.) Hay una lista de sustras comunes ya dura en el complemento para que pueda usarse as-is . Sin embargo, puede aprobar una lista de sus propias subcadenas definidas, en este caso a través del parámetro names .
Ejemplo de código:
fm = Flashmingo ()
print fm . run_plugin ( 'DangerousAPIs' , swf = swf )
print fm . run_plugin ( 'SuspiciousNames' , swf = swf , names = [ 'spooky' ])Flashmingo se envía con algunos complementos útiles de la caja:
Se proporciona un complemento de plantilla para un fácil desarrollo. Extender Flashmingo es bastante sencillo. Sigue estos simples pasos:
runEstás listo para ir :)
docs para la documentación autogenerada $ pip install sphinxcontrib-napoleon
Después de configurar Sphinx para construir sus documentos, habilite Napoleón en el archivo Sphinx Conf.py:
En conf.py , agregue Napoleón a la lista de extensiones
extensions = ['sphinxcontrib.napoleon']
Use Sphinx-APIDOC para construir su documentación de API:
$ sphinx-apidoc -f -o docs/source projectdir
Esto crea .rst archivos para que Sphinx procese
$ make html
¡Eso es todo! :)