Caronte es una herramienta para analizar el flujo de la red durante eventos de ataque / defensa de captura de bandera. Vuelve a ensamblar los paquetes TCP capturados en archivos pcap para restablecer las conexiones TCP y analiza cada conexión para encontrar patrones definidos por el usuario. Los patrones se pueden definir como expresiones regulares o con reglas específicas del protocolo. Los procesos de conexión se guardan en una base de datos y se pueden visualizar con la aplicación web. También se proporciona la API REST.
propiedades
- instalación inmediata con docker-compose
- sin archivo de configuración, la configuración se puede cambiar a través de GUI o API
- Los pcaps a analizar se pueden cargar a través de
curl
, ya sea de forma local o remota o mediante la GUI- también es posible descargar los pcaps desde la GUI y ver todas las estadísticas de análisis para cada pcap
- Se pueden crear reglas para identificar conexiones que contienen ciertas cadenas
- La comparación de patrones se realiza mediante expresiones regulares (regex)
- También se admiten expresiones regulares en formatos UTF-8 y Unicode
- Las conexiones se pueden etiquetar según el tipo de servicio, identificadas por el número de puerto
- se puede asignar un color diferente a cada servicio
- Capacidad para filtrar conexiones por direcciones, puertos, dimensiones, tiempo, duración, reglas de coincidencia
- una línea de tiempo muestra estadísticas con diferentes lecturas por minuto
- Algunas de estas métricas son Conexiones_por_servicio, client_bytes_per_service, server_bytes_per_service, Duración_por servicio, reglas_coincidentes
- Con reglas_coincidentes La métrica puede ser la relación entre flag_in y flag_out
- la línea de tiempo contiene una ventana deslizante que se puede utilizar para buscar conexiones en un intervalo de tiempo específico
- Algunas de estas métricas son Conexiones_por_servicio, client_bytes_per_service, server_bytes_per_service, Duración_por servicio, reglas_coincidentes
- Búsqueda avanzada de término, término negado, expresión exacta, regex, regex negado
- las búsquedas realizadas se guardan y se pueden repetir inmediatamente
- las conexiones HTTP reconocidas se reconstruyen automáticamente
- Las solicitudes HTTP se pueden replicar a través de
curl
,fetch
ypython requests
- las respuestas HTTP comprimidas (gzip / deflate) se descomprimen automáticamente
- Las solicitudes HTTP se pueden replicar a través de
- Capacidad para exportar y ver el contenido de las conexiones en varios formatos, incluidos Hex y Base64
- El contenido JSON se muestra en un visor de árbol JSON, el código HTML se puede representar en una ventana separada
- Las ocurrencias de reglas coincidentes se resaltan en la vista de contenido de la conexión
- admite direcciones IPv4 e IPv6
- Si se asignan más direcciones a la computadora vulnerable que se va a defender, se puede usar una dirección CIDR
instalación
Hay dos formas de instalar Caronte:
- con Docker y docker-compose, la forma más rápida y sencilla
- Instale las dependencias manualmente y compile el proyecto
Ejecutar con Docker
Las únicas cosas que tienes que hacer son:
- Clonar el repositorio, usando
git clone https://github.com/eciavatta/caronte.git
- dentro de
caronte
Carpeta, ejecutardocker-compose up -d
- Espere a que la imagen se compile y abra el navegador en
http://localhost:3333
Instalación manual
Primero deben instalarse las dependencias:
A continuación, debe compilar el proyecto, que consta de dos partes:
- el backend que se puede compilar con
go mod download && go build
- la interfaz que se puede compilar con
cd frontend && yarn install && yarn build
Antes de que se ejecute Caronte, se inicia una instancia de MongoDB https://docs.mongodb.com/manual/administration/install-community/ que no tiene autenticación. Tenga cuidado de no hacer que el puerto MongoDB esté disponible en la interfaz pública.
Ejecute el binario con. fuera ./caronte
. Las opciones de configuración disponibles son:
-bind-address Dirección a la que está vinculado el servidor (estándar «0.0.0.0»)
-bind-port Puerto al que está vinculado el servidor (estándar 3333)
-db-name Nombre de la base de datos que se utilizará (estándar «caronte»)
-mongo-dirección de host de MongoDB (predeterminado «localhost»)
-puerto mongo-port de MongoDB (estándar 27017)
construcción
La configuración se lleva a cabo durante el tiempo de ejecución en el primer inicio a través de la interfaz gráfica de usuario o mediante API. Es necesario configurar:
- la
server_address
: la dirección IP de la computadora vulnerable. Debe ser la dirección de destino de todas las conexiones en los pcaps. Si cada servicio vulnerable tiene su propia IP, este parámetro también acepta una dirección CIDR. La dirección puede ser IPv4 o IPv6 - la
flag_regex
: la expresión regular que coincide con una bandera. Generalmente se proporciona en la página Reglas del concurso. auth_required
: Si es verdadero, la autenticación básica está habilitada para proteger el analizador- un opcional
accounts
Matriz que contiene las credenciales de los usuarios autorizados
documentación
El backend está escrito en el lenguaje Go y diseñado como un servicio. Proporciona la API REST utilizada por la interfaz escrita con React. La lista de API disponibles con su explicación se puede encontrar aquí: https://app.swaggerhub.com/apis-docs/eciavatta/caronte/WIP
Capturas de pantalla
A continuación se muestran algunas capturas de pantalla que muestran las principales funciones de la herramienta.
Ventana principal con lista de conexiones y contenido de transmisión
Ventana principal con línea de tiempo ampliada
Vista de reglas y servicios
Buscar y ver pcaps