Proyecto de análisis automatizado de malware de Linux en varias arquitecturas de CPU.
Características
- Emulación QEMU.
- Actualmente soporta x86_64, i386, arm, mips, aarch64.
- Pequeñas imágenes construidas con buildroot.
- Análisis estático basado en Radare2.
- Análisis dinámico (comportamiento) usando módulos de kernel SystemTap – syscalls capturados, openfiles, árboles de procesos.
- Estadísticas de red y análisis de comunicación DNS, HTTP, Telnet e IRC.
- Análisis de puntos finales y configuración de listas negras.
- Escalado con celery y RabbitMQ.
- API REST | frontend.
- Extensible mediante módulos de subanálisis e imágenes personalizadas.
Comenzar con LiSa
Requisitos
Obtener el repositorio.
$ git clone https://github.com/danieluhricek/lisa
$ cd lisa
Compilar.
# docker-compose build
Ejecutar el sandbox (ubicación predeterminada: http://localhost:4242).
# docker-compose up
Configuración
MaxMind GeoLite2
Regístrate para obtener tu clave API. Utiliza la clave API en la sección de argumentos de compilación de docker-compose.yml
.
.
.
worker:
image: lisa-worker
build:
context: .
dockerfile: ./docker/worker/Dockerfile
args:
maxmind_key: YOUR_KEY
volumes:
- "./data/storage:/home/lisa/data/storage"
.
.
.
.
.
Alojamiento Web
Configura la dirección IP:puerto de tu servidor en el servicio nginx en docker-compose.yml
.
Escalabilidad
Los workers son escalables.
# docker-compose up --scale worker=10
VPN
Puedes enrutar el tráfico de malware a través de OpenVPN. Para hacerlo:
- Monta un volumen que contenga la configuración de OpenVPN (llamada config.ovpn).
- Establece la variable de entorno
VPN
en la ruta del directorio de la configuración de OpenVPN.
.
.
worker:
image: lisa-worker
build:
context: .
dockerfile: ./docker/worker/Dockerfile
environment:
- VPN=/vpn
volumes:
- "./data/storage:/home/lisa/data/storage"
- "./vpn:/vpn"
.
.
Listas negras
Las listas negras utilizadas por defecto son:
- bi_ssh_2_30d.ipset
- firehol_level3.netset
- firehol_webserver.netset
- iblocklist_abuse_zeus.netset
- normshield_all_wannacry.ipset
https://github.com/firehol/blocklist-ipsets
Si deseas utilizar otra lista negra, coloca archivos .ipset o .netset en data/blacklists
. Todas estas listas negras se fusionan durante la compilación del servicio worker
.
Añadir Nuevos Módulos de Subanálisis
El núcleo del proyecto LiSa admite 4 módulos básicos de análisis: static_analysis
, dynamic_analysis
, network_analysis
y virustotal
. Los módulos de subanálisis son basados en complementos. Para añadir un nuevo subanálisis y agregar su salida al json final, sigue estos pasos:
- Crea una clase que herede de la clase
AbstractSubAnalyzer
e implementa el métodorun_analysis()
, por ejemplo:
class NewSubAnalyzer(AbstractSubAnalyzer):
def run_analysis(self):
pass
- Actualizar lista en
lisa.config.py
:
analyzers_config = [
# core analyzers
'lisa.analysis.static_analysis.StaticAnalyzer',
'lisa.analysis.dynamic_analysis.DynamicAnalyzer',
'lisa.analysis.network_analysis.NetworkAnalyzer',
'lisa.analysis.virustotal.VirusTotalAnalyzer',
# custom
'module_of_new_analyzer.NewSubAnalyzer'
]
Ejecución de pruebas
# docker build -f ./docker/tests/Dockerfile -t lisa-tests .
# docker run lisa-tests
Funciones Próximas
- Módulo YARA: Módulo YARA para hacer coincidir patrones en la salida JSON de LiSa.
- Selección de imágenes: Más imágenes de Linux que contengan, por ejemplo, firmware de IoT.
https://github.com/danieluhricek/LiSa