
ThePhish: una herramienta automatizada de análisis de correos electrónicos de phishing
ThePhish es una herramienta automatizada de análisis de correos electrónicos de phishing basada en TheHive, Cortex y MISP. Es una aplicación web escrita en Python 3 y basada en Flask que automatiza todo el proceso de análisis, desde la extracción de los observables del encabezado y el cuerpo de un correo electrónico hasta la elaboración de un veredicto que es definitivo en la mayoría de los casos. Además, permite al analista intervenir en el proceso de análisis y obtener más detalles sobre el correo electrónico que se está analizando si es necesario. Para interactuar con TheHive y Cortex, utiliza TheHive4py y Cortex4py, que son los clientes Python API que permiten utilizar las REST API proporcionadas por TheHive y Cortex respectivamente.
El siguiente diagrama muestra cómo funciona ThePhish a alto nivel:
Este ejemplo pretende demostrar cómo un usuario puede enviar un correo a ThePhish para que sea analizado y cómo un analista puede analizar realmente ese correo usando ThePhish.
Un usuario puede enviar un correo a la dirección de correo electrónico que utiliza ThePhish para obtener los correos a analizar. El correo debe reenviarse como archivo adjunto en formato EML para evitar la contaminación del encabezado del correo. En este caso, el cliente de correo utilizado es Mozilla Thunderbird y la dirección de correo es una dirección de Gmail.
El analista navega a la página web de ThePhish y hace clic en el botón "List emails" para obtener la lista de correos a analizar.
Cuando el analista hace clic en el botón "Analyze" correspondiente al correo seleccionado, se inicia el análisis y su progreso se muestra en la interfaz web.
Mientras tanto, ThePhish extrae los observables (URLs, dominios, direcciones IP, direcciones de correo electrónico, archivos adjuntos y hashes de esos archivos) del correo y luego interactúa con TheHive para crear el caso.
Se crean tres tareas dentro del caso.
Luego, ThePhish comienza a añadir los observables extraídos al caso.
En este punto, el usuario es notificado por correo electrónico de que el análisis ha comenzado gracias al respondedor Mailer.
La descripción de la primera tarea permite que el respondedor Mailer envíe la notificación por correo.
Después de que se cierra la primera tarea, se inicia la segunda tarea y se ejecutan los analizadores sobre los observables. El progreso del análisis se muestra en la interfaz web mientras se ejecutan los analizadores.
El progreso del análisis también puede verse en TheHive, gracias a su transmisión en vivo.
Una vez que todos los analizadores han terminado su ejecución, se cierra la segunda tarea y se inicia la tercera; luego ThePhish calcula el veredicto. Dado que el veredicto es "malicioso", todos los observables que se encuentren como maliciosos se marcan como IoC. En este caso solo un observable se marca como IoC.
El caso se exporta entonces a MISP como un evento, con un único atributo representado por el observable mencionado.
Luego, ThePhish envía el veredicto por correo al usuario gracias al respondedor Mailer.
Finalmente, tanto la tarea como el caso se cierran. La descripción de la tercera tarea permite que el respondedor Mailer envíe el veredicto por correo. Además, el caso se ha cerrado después de cinco minutos y se ha resuelto como "Verdadero Positivo" con "Sin Impacto", lo que significa que el ataque fue detectado antes de que pudiera causar daño.
Una vez cerrado el caso, el veredicto está disponible para el analista en la interfaz web junto con el registro completo del progreso del análisis.
En este punto, el analista puede retroceder y analizar otro correo. El caso descrito anteriormente se refería a un correo de phishing, pero se puede observar un flujo de trabajo similar cuando el correo analizado se clasifica como "seguro". De hecho, el caso se cierra y el veredicto se envía por correo al usuario.
Luego, el veredicto también se muestra al analista en la interfaz web.
Por otro lado, cuando un correo se clasifica como "sospechoso", el veredicto solo se muestra al analista en la interfaz web.
En este punto, el analista necesita usar los botones en el lado izquierdo de la página para usar TheHive, Cortex y MISP para un análisis más detallado. Esto se debe a que el análisis aún no se ha completado, por lo que al usuario solo se le notifica que el análisis del correo que reenvió a ThePhish ha comenzado. De hecho, la última tarea y el caso no se han cerrado aún, ya que deben ser cerrados por el propio analista una vez que elabore un veredicto final.
El analista puede ver los informes de todos los analizadores en TheHive y Cortex y, si esto resulta insuficiente, también podría descargar el archivo EML del correo y analizarlo manualmente.
Cuando el analista termina el análisis, puede rellenar el cuerpo del correo que se enviará al usuario en la descripción de la última tarea, iniciar el respondedor Mailer, exportar el caso a MISP si el veredicto es "malicioso" haciendo clic en el botón "Export" y luego cerrar el caso.
ThePhish es una aplicación web escrita en Python 3. El servidor web está implementado usando Flask, mientras que la parte front-end de la aplicación, que es la página dinámica escrita en HTML, CSS y JavaScript, está implementada usando Bootstrap. Aparte del módulo del servidor web, la lógica back-end de la aplicación está constituida por tres módulos Python que encapsulan la lógica de la aplicación misma y una clase Python utilizada para soportar la funcionalidad de registro a través del protocolo WebSocket. Si desea ver una representación gráfica de la lógica de la aplicación, haga clic aquí. Además, hay varios archivos de configuración utilizados por los módulos mencionados que sirven para diversos propósitos.
Cuando el analista navega a la URL base de la aplicación, se carga la página web de ThePhish y se establece una conexión bidireccional con el servidor. Esto se hace utilizando la biblioteca JavaScript Socket.IO en la página web, que permite la comunicación en tiempo real, bidireccional y basada en eventos entre el navegador y el servidor. Esta conexión se establece mediante una conexión WebSocket siempre que sea posible y utilizará HTTP long polling como alternativa. Para que esto funcione, la aplicación del servidor utiliza la biblioteca Python Flask-SocketIO, que proporciona una integración Socket.IO para aplicaciones Flask. Esta conexión luego es utilizada por ThePhish para mostrar el progreso del análisis en la interfaz web.
Cada vez que el analista realiza una acción en la interfaz web, se envía una solicitud AJAX al servidor, que es una solicitud HTTP asíncrona que permite intercambiar datos con el servidor en segundo plano y actualizar la página sin recargarla. Esto permite al analista tanto visualizar la lista de correos a analizar como iniciar el análisis.
ThePhish interactúa con TheHive y Cortex gracias a TheHive4py y Cortex4py. Además, interactúa con un servidor IMAP para recuperar los correos a analizar.
Dado que la instalación y configuración de los servicios TheHive, Cortex y MISP desde cero para un entorno de producción puede no ser extremadamente sencilla, TheHive Project proporciona imágenes Docker y plantillas Docker Compose aquí para facilitar el procedimiento de instalación. Para simplificar, las plantillas proporcionadas son simples y no incluyen las opciones de configuración completas de cada imagen Docker.
Si solo desea probar ThePhish o quiere tenerlo funcionando lo más rápido posible, puede usar la plantilla Docker proporcionada en la carpeta docker, que es una versión modificada de una de las plantillas Docker proporcionadas por TheHive Project que también permite crear un contenedor de ThePhish. Para instalar ThePhish usando Docker y Docker Compose, consulte esta guía. Recomiendo encarecidamente que lo instale de esta manera al menos la primera vez que lo utilice para que pueda aprender los conceptos básicos y cómo configurarlo con una configuración mínima que debería funcionar en el primer intento. De hecho, la guía previamente enlazada también proporciona un procedimiento paso a paso para configurar las instancias de TheHive, Cortex y MISP.
Esta guía se refiere únicamente a la instalación de ThePhish, que requiere:
Para instalar, configurar e integrar las instancias de TheHive, Cortex y MISP, consulte su documentación oficial:
Es recomendable que la dirección de correo de la cual ThePhish obtiene los correos a analizar sea una dirección de Gmail, ya que es con la que más se ha probado ThePhish. Es preferible que la cuenta sea una recién creada, con el único propósito de ser utilizada por ThePhish. El procedimiento para activar la contraseña de aplicación que requiere ThePhish para conectarse al buzón y obtener los correos se explica aquí.
Este procedimiento de instalación ha sido probado en una máquina virtual con Ubuntu 20.04.3 LTS con Python 3.8 instalado y las versiones de TheHive, Cortex y MISP que se muestran en el archivo docker-compose.yml.
Una vez que TheHive, Cortex y MISP estén configurados y escuchando en una URL determinada, y la dirección de correo esté lista para usar, puede instalar y configurar ThePhish.
Clone el repositorio
$ git clone https://github.com/emalderson/ThePhish.git
Cree un entorno virtual de Python y actívelo (es una buena práctica pero no es obligatorio)
$ cd ThePhish/app
$ sudo apt install python3-venv
$ python3 -m venv venv
$ source venv/bin/activate
Instale los requisitos
$ pip install -r requirements.txt
Añada la función run_responder() al archivo api.py de TheHive4py
Para enviar correos al usuario, ThePhish utiliza el respondedor Mailer. Dado que ThePhish utiliza TheHive4py para interactuar con TheHive, se necesita una función que permita ejecutar un respondedor por su ID. Desafortunadamente, esta función aún no forma parte de TheHive4py, pero se ha realizado una solicitud de extracción para añadirla a TheHive4py (#219). Mientras se añade, debe agregarse manualmente usando el siguiente comando para que ThePhish funcione correctamente (reemplace la versión de Python en el comando si usa una versión diferente de Python):
$ (cat << _EOF_
def run_responder(self, responder_id, object_type, object_id):
req = self.url + "/api/connector/cortex/action"
try:
data = json.dumps({ "responderId": responder_id, "objectType": object_type, "objectId": object_id})
return requests.post(req, headers={"Content-Type": "application/json"}, data=data, proxies=self.proxies, auth=self.auth, verify=self.cert)
except requests.exceptions.RequestException as e:
raise TheHiveException("Responder run error: {}".format(e))
_EOF_
) | tee -a venv/lib/python3.8/site-packages/thehive4py/api.py > /dev/null
<ul class="navbar-nav text-light" id="accordionSidebar">
<li class="nav-item"><a class="nav-link active" href="/" style="max-width: 114px;" target="_blank" rel="noopener noreferrer"><img class="img-fluid" data-bss-hover-animate="bounce" src="https://raw.githubusercontent.com/emalderson/thephish/static/assets/img/logo_rounded.png" style="margin-top: 0px;margin-left: 0px;"></a></li>
<li class="nav-item"><a class="nav-link" href="http://thehive:9000" style="max-width: 114px;" target="_blank" rel="noopener noreferrer"><img class="img-fluid" data-bss-hover-animate="bounce" src="https://raw.githubusercontent.com/emalderson/thephish/static/assets/img/thehive.png" style="margin-right: 0px;margin-left: 0px;"></a></li>
<li class="nav-item"><a class="nav-link" href="http://cortex:9001" style="max-width: 114px;" target="_blank" rel="noopener noreferrer"><img class="img-fluid" data-bss-hover-animate="bounce" src="https://raw.githubusercontent.com/emalderson/thephish/static/assets/img/cortex.png" style="transform: translate(0px);"></a></li>
<li class="nav-item"><a class="nav-link" href="https://misp" style="max-width: 114px;" target="_blank" rel="noopener noreferrer"><img class="img-fluid" data-bss-hover-animate="bounce" src="https://raw.githubusercontent.com/emalderson/thephish/static/assets/img/misp.png" style="transform: translate(0px);"></a></li>
</ul>
$ python3 thephish_app.py
El servidor que se utilizará para ejecutar la aplicación es el servidor WSGI proporcionado por eventlet, ya que está listado en los requisitos. Es necesario para que el protocolo WebSocket funcione y evitar recurrir a HTTP long polling. Sin eventlet, se usará el servidor WSGI predeterminado de Flask (Werkzeug). Si desea utilizar otro servidor WSGI (por ejemplo, Gunicorn) o un proxy inverso (por ejemplo, NGINX), la documentación de Flask-SocketIO explica cómo hacerlo.
Ahora la aplicación debería ser accesible en http://localhost:8080.
⚠️ Advertencia: Si está utilizando Mozilla Firefox para usar ThePhish y por alguna razón aparece un mensaje de error durante el análisis, la solución puede encontrarse aquí.
ThePhish puede iniciar un analizador o un respondedor solo si está habilitado y configurado correctamente en Cortex. Esta parte de la documentación explica cómo habilitarlos, mientras que esta parte enumera los analizadores y respondedores disponibles con sus parámetros de configuración. Cabe señalar que, aunque muchos analizadores son gratuitos, algunos requieren acceso especial y otros necesitan una suscripción de servicio válida o una licencia de producto.
Cada analizador genera un informe en formato JSON que contiene un nivel de maliciosidad para un observable que puede ser "info", "safe", "suspicious" o "malicious". Sin embargo, aunque la estructura del informe suele seguir una convención, esta no siempre se respeta. Además, tras el análisis del código de muchos analizadores y varias pruebas, se ha encontrado que algunos analizadores contienen errores. Por esta razón, se han utilizado algunos ajustes y soluciones alternativas para obtener los niveles de maliciosidad proporcionados por estos analizadores de todos modos o para evitar que la aplicación se bloquee debido a esos errores.
Además, estos niveles no siempre representan el nivel real de maliciosidad de un observable. Dado que esto depende de cómo se hayan programado los propios analizadores, ThePhish incluye otro archivo de configuración llamado analyzers_level_conf.json, con el cual es posible crear un mapeo entre los niveles de maliciosidad reales proporcionados por cualquier analizador y los niveles decididos por el analista. Además de eso, este archivo permite al analista elegir cuáles son los tipos de observable a los que se deben aplicar estas modificaciones. El archivo debe seguir la estructura mostrada en el ejemplo aquí, usando el nombre exacto de los analizadores a configurar y con el nivel deseado a la derecha. Si un analizador no está listado en este archivo, entonces los niveles de maliciosidad que proporciona se dejan sin modificar. El archivo debe seguir la estructura mostrada en el siguiente ejemplo, usando el nombre exacto de los analizadores a configurar y con el nivel deseado a la derecha. Si un analizador no está listado en este archivo, entonces los niveles de maliciosidad que proporciona se dejan sin modificar.```json
{
"DomainMailSPFDMARC_Analyzer_1_1" : {
"dataType" : ["url", "ip", "domain", "mail"],
"levelMapping" : {
"malicious" : "suspicious",
"suspicious" : "suspicious",
"safe" : "safe",
"info" : "info"
}
},
"MISP_2_1" : {
"dataType" : ["url", "ip", "domain", "mail"],
"levelMapping" : {
"malicious" : "malicious",
"suspicious" : "malicious",
"safe" : "safe",
"info" : "info"
}
}
}
En este ejemplo, el nivel "suspicious" para el analizador *MISP_2_1* se eleva a "malicious" ya que indica que algunos observables en el correo electrónico que se está analizando actualmente ya han sido avistados en un correo analizado previamente cuyo veredicto fue "malicious". Por el contrario, el nivel "malicious" del analizador *DomainMailSPFDMARC_Analyzer_1_1* se reduce a "suspicious", ya que muchos dominios legítimos no tienen configurados registros DMARC y SPF.
Puede agregar o eliminar analizadores en este archivo a su voluntad, pero recomiendo que deje intactos los que ya están presentes en el archivo, ya que esas modificaciones han sido motivadas por muchas pruebas realizadas en una gran cantidad de correos electrónicos diferentes.
### Analizadores probados
ThePhish ha sido probado con los siguientes analizadores:
- AbuseIPDB_1_0
- AnyRun_Sandbox_Analysis_1_0
- CyberCrime-Tracker_1_0
- Cyberprotect_ThreatScore_3_0
- *DomainMailSPFDMARC_Analyzer_1_1*
- DShield_lookup_1_0
- EmailRep_1_0
- FileInfo_8_0
- Fortiguard_URLCategory_2_1
- IPinfo_Details_1_0
- **IPVoid_1_0**
- KasperskyThreatIntelligencePortal_1_0
- Maltiverse_Report_1_0
- *Malwares_GetReport_1_0*
- *Malwares_Scan_1_0*
- MaxMind_GeoIP_4_0
- MetaDefenderCloud_GetReport_1_0
- *MISP_2_1*
- NERD_1_0
- *Onyphe_Summary_1_0*
- OTXQuery_2_0
- PassiveTotal_Enrichment_2_0
- *PassiveTotal_Malware_2_0*
- PassiveTotal_Osint_2_0
- PassiveTotal_Ssl_Certificate_Details_2_0
- PassiveTotal_Ssl_Certificate_History_2_0
- PassiveTotal_Unique_Resolutions_2_0
- PassiveTotal_Whois_Details_2_0
- PhishTank_CheckURL_2_1
- **Pulsedive_GetIndicator_1_0**
- *Robtex_Forward_PDNS_Query_1_0*
- *Robtex_IP_Query_1_0*
- *Robtex_Reverse_PDNS_Query_1_0*
- Shodan_DNSResolve_1_0
- **Shodan_Host_1_0**
- **Shodan_Host_History_1_0**
- Shodan_InfoDomain_1_0
- **SpamhausDBL_1_0**
- StopForumSpam_1_0
- *Threatcrowd_1_0*
- UnshortenLink_1_2
- **URLhaus_2_0**
- Urlscan_io_Scan_0_1_0
- *Urlscan_io_Search_0_1_1*
- VirusTotal_GetReport_3_1
- VirusTotal_Scan_3_1
- Yara_2_0
Los analizadores resaltados en *cursiva* son aquellos cuyos niveles han sido modificados (pero que pueden ser anulados, aunque no es recomendable), mientras que los analizadores resaltados en **negrita** son aquellos que se manejan directamente en el código de ThePhish, ya sea porque no respetan la convención para la estructura del informe, o porque tienen errores. Además, los siguientes analizadores se manejan en el código de ThePhish para usarlos de la mejor manera posible:
- **DomainMailSPFDMARC_Analyzer_1_1**: Se inicia solo en dominios que se supone pueden enviar correos electrónicos.
- **MISP_2_1**: Se utiliza para la integración con MISP.
- **UnshortenLink_1_2**: Se inicia antes que cualquier otro analizador en una URL para permitir acortar un enlace y agregar el enlace acortado como un observable adicional.
- **Yara_2_0**: Es el único que se inicia en el archivo adjunto EML.
### Habilitar el analizador *MISP*
Para integrar Cortex con MISP, debe activar el analizador *MISP_2_1* y configurarlo con la clave de autenticación del usuario creado en MISP que Cortex utilizará para interactuar con MISP. Esto significa que se debe crear previamente una organización y un usuario con rol `sync_user` en esa organización en MISP (puede aprender cómo hacerlo y obtener la clave de autenticación [aquí (documentación de ThePhish, recomendada)](https://github.com/emalderson/ThePhish/tree/master/docker#configure-the-misp-container) o [aquí (documentación de MISP)](https://www.circl.lu/doc/misp/administration/#users).
### Habilitar el analizador *Yara*
Si desea usar el analizador *Yara_2_0*, debe crear una carpeta en la máquina donde se ejecuta Cortex que contenga:
- Las reglas Yara, donde cada regla es un archivo con la extensión `.yar`
- Un archivo llamado `index.yar`, que contiene una línea para cada regla Yara en esa carpeta que respeta esta sintaxis: `include "yara_rule_name.yar"`
Luego, debe configurar la ruta de esta carpeta en Cortex. Por ejemplo, si creó la carpeta `yara_rules` en la ruta `/opt/cortex`, entonces necesita configurar la ruta `/opt/cortex/yara_rules` en Cortex (en la interfaz web).
## Habilitar el responder *Mailer*
Para enviar los correos electrónicos a los usuarios, el responder *Mailer* debe estar habilitado y correctamente configurado. El procedimiento utilizado para habilitar un responder es idéntico al procedimiento utilizado para habilitar un analizador. Si está utilizando una dirección de Gmail, estos son los parámetros correctos a configurar:
- from: `<SuDireccionDeCorreoGmail>`
- smtp_host :`smtp.gmail.com`
- smtp_port: `587`
- smtp_user: `<SuDireccionDeCorreoGmail>`
- smtp_pwd: `<SuContraseñaDeAplicacionDeGmail>`
## Usar la lista blanca
ThePhish permite crear una lista blanca para evitar analizar observables que puedan causar falsos positivos o que el analista decida que no deben ser considerados durante el análisis. La lista blanca está contenida en un archivo llamado `whitelist.json` y está constituida por muchas listas diferentes para ofrecer una gran flexibilidad tanto en términos de tipos de observables a coincidir como de modos de coincidencia. Soporta los siguientes modos de coincidencia:
- Coincidencia exacta de cadenas para direcciones de correo electrónico, direcciones IP, URLs, dominios, nombres de archivo, tipos de archivo y hashes
- Coincidencia de regex para direcciones de correo electrónico, direcciones IP, URLs, dominios y nombres de archivo
- Coincidencia de regex para subdominios, direcciones de correo electrónico y URLs que contengan los dominios especificados
Aquí se muestra un ejemplo de juguete del archivo `whitelist.json`.```json
{
"exactMatching": {
"mail" : [],
"ip" : [
"127.0.0.1",
"8.8.8.8",
"8.8.4.4"
],
"url" : [],
"domain" : [
"adf.ly",
"paypal.com"
],
"filename" : [],
"filetype" : [
"application/pdf"
],
"hash" : []
},
"domainsInSubdomains" : [
"paypal.com"
],
"domainsInURLs" : [
"paypal.com"
],
"domainsInEmails" : [
"paypal.com"
],
"regexMatching" : {
"mail" : [],
"ip" : [
"10\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}",
"172\\.16\\.\\d{1,3}\\.\\d{1,3}",
"192\\.168\\.\\d{1,3}\\.\\d{1,3}"
],
"url" : [],
"domain" : [],
"filename" : []
}
}
Mientras que tanto las partes relacionadas con la coincidencia exacta como con la coincidencia mediante expresiones regulares se utilizan sin modificación alguna, las partes restantes se utilizan para crear tres listas adicionales de expresiones regulares. No es necesario que diseñe expresiones regulares complejas para habilitar esas funciones, solo necesita agregar los dominios a las listas correctas y ThePhish hará el resto. Por ejemplo, en el ejemplo mostrado anteriormente, no solo se filtra el dominio "paypal.com", sino que también se filtra cualquier subdominio, URL y dirección de correo electrónico que contenga el dominio "paypal.com". Estas expresiones regulares han sido diseñadas para evitar comportamientos no deseados; por ejemplo, evitan que dominios como "paypal.com.attacker.com" sean incluidos erróneamente en la lista blanca.
Nota: Si agrega un dominio bajo "domainsInSubdomains", el dominio en sí también será filtrado. Por lo tanto, agregar el mismo dominio a la lista de dominios bajo "exactMatching" es innecesario. La distinción se hace para casos en los que solo se necesita incluir el dominio en la lista blanca, no sus subdominios. Así, en este ejemplo, incluir "paypal.com" en ambas listas es redundante.
El archivo de lista blanca que se proporciona en este repositorio ya está poblado con algunos observables en lista blanca, pero es solo un ejemplo; puede (y debe) editarlo para adaptarlo a sus necesidades eliminando o agregando elementos.
ThePhish utiliza una gran característica de TheHive que es la posibilidad de exportar un caso a MISP como un evento. Esto hace posible usar el analizador MISP_2_1 para buscar una coincidencia entre un observable en un caso y un atributo de uno de esos eventos en MISP. Desafortunadamente, durante las primeras etapas de desarrollo de ThePhish, una función que permitiera hacer esto mediante API en Python aún no estaba disponible en TheHive4py. Por esta razón, se realizó una solicitud de extracción (#187) a TheHive4py para agregar dicha funcionalidad. La solicitud de extracción fue aceptada y la función export_to_misp() se agregó al hito 1.8.0 de TheHive4py.
ThePhish depende en gran medida de los analizadores proporcionados por Cortex. Para garantizar que continúen funcionando como se espera, se realizan solicitudes de extracción al repositorio que los contiene. Aquí hay una lista actualizada de dichas solicitudes de extracción:
ThePhish es un software de código abierto y gratuito publicado bajo la AGPL (Licencia Pública General Affero).
Este proyecto comenzó en 2020 y una versión temprana e incompleta del mismo se presentó como mi trabajo final para la graduación en el Cybersecurity HackAdemy organizado por la Universidad de Nápoles Federico II. Por ello, me gustaría agradecer a Roberto Celletti por la idea inicial y a mi equipo compuesto por gianpor, MrFelpon y xdinax, quienes me ayudaron en las primeras etapas del desarrollo de la aplicación con el despliegue inicial y las primeras pruebas.
Luego rediseñé completamente la herramienta en términos de funcionalidad, logotipo e interfaz de usuario, añadí soporte para Docker y escribí una documentación exhaustiva para presentarla como tesis final para mi máster en ingeniería informática en 2021 en la Universidad de Nápoles Federico II con el supervisor Simon Pietro Romano (spromano).
También me gustaría agradecer a Xavier Mertens (xme) por haber desarrollado IMAP2TheHive y publicado en GitHub, ya que ha sido la chispa inicial que llevó al desarrollo de este proyecto y del cual el código de ThePhish ha tomado inspiración.
Configuración
El archivo configuration.json es el archivo de configuración global que permite establecer los parámetros para la conexión al buzón y a las instancias de TheHive, Cortex y MISP. También permite establecer parámetros relacionados con los casos que se crearán en TheHive.
{
"imap" : {
"host" : "imap.gmail.com",
"port" : "993",
"user" : "",
"password" : "",
"folder" : "inbox"
},
"thehive" : {
"url" : "http://thehive:9000",
"apikey" : ""
},
"cortex" : {
"url" : "http://cortex:9001",
"apikey" : "",
"id" : "local"
},
"misp" : {
"id" : "MISP THP"
},
"case" : {
"tlp" : "2",
"pap" : "2",
"tags" : ["email", "ThePhish"]
}
}
Puede aprender cómo crear una organización y un usuario con rol org-admin en esa organización en TheHive y obtener su clave API aquí (documentación de ThePhish, recomendada) o aquí (documentación de TheHive). De manera similar, puede aprender cómo crear una organización y un usuario con roles read, analyze en esa organización en Cortex y obtener su clave API aquí (documentación de ThePhish, recomendada) o aquí (documentación de Cortex).
Las URL y los IDs que se establecen en este archivo deben ser los mismos que se establecen en el archivo de configuración de TheHive llamado application.conf, que contiene una parte relacionada con Cortex y una parte relacionada con MISP. Los parámetros que debe buscar son name y url en ambas partes, que corresponden a los IDs y las URL de las instancias de Cortex y MISP. Los IDs también se pueden encontrar en la ventana "Acerca de" en la interfaz web de TheHive. En la siguiente figura se muestra un ejemplo donde el ID de Cortex es la cadena local y el ID de MISP es la cadena MISP THP:
El archivo application.conf se utiliza para integrar TheHive con Cortex y MISP. Puede aprender cómo configurar la integración con Cortex aquí (documentación de ThePhish, recomendada) o aquí (documentación de TheHive), mientras que para la integración con MISP puede ir aquí (documentación de ThePhish, recomendada) o aquí (documentación de TheHive).Las URL en las que se pueden alcanzar las instancias de TheHive, Cortex y MISP también deben reemplazarse en el archivo templates/index.html para que los botones de la interfaz web puedan alcanzarlas. Para hacerlo, reemplace los últimos tres href de esta porción de código: