
Escáner de entropía para Linux para detectar binarios empaquetados o cifrados relacionados con malware. Encuentra archivos maliciosos y procesos de Linux y proporciona salida con hashes criptográficos.
sandfly-entropyscan es una utilidad para escanear rápidamente archivos o procesos en ejecución e informar sobre su entropía (medida de aleatoriedad) y si son un ejecutable de tipo ELF de Linux/Unix. Algunos malware para Linux están empaquetados o cifrados y muestran una entropía muy alta. Esta herramienta puede encontrar rápidamente archivos y procesos ejecutables de alta entropía que a menudo son maliciosos.
La entropía es una medida de aleatoriedad. Para datos binarios, 0.0 significa no aleatorio y 8.0 es perfectamente aleatorio. Un buen cifrado se parece a ruido blanco y estará cerca de 8.0. Una buena compresión elimina datos redundantes, lo que hace que parezca más aleatorio que si estuviera descomprimido y generalmente será 7.7 o más.
Muchos ejecutables de malware están empaquetados para evitar la detección y dificultar la ingeniería inversa. La mayoría de los binarios estándar de Linux no están empaquetados porque no intentan ocultar lo que son. Buscar archivos de alta entropía es una buena forma de encontrar programas que podrían ser maliciosos solo por tener estos dos atributos: alta entropía y ser ejecutables.
Uso de sandfly-entropyscan:
-csv
genera resultados en formato CSV (nombre de archivo, ruta, entropía, elf_file [true|false], MD5, SHA1, SHA256, SHA512)
-delim
cambia el delimitador predeterminado para archivos CSV de "," por uno que elijas ("|", etc.)
-dir string
nombre del directorio a analizar
-file string
ruta completa a un único archivo para analizar
-proc
verifica procesos en ejecución (por defecto solo verifica ELF)
-elf
solo verifica ejecutables ELF
-entropy float
muestra cualquier archivo/proceso con entropía mayor o igual a este valor (0.0 min - 8.0 max, por defecto 0 para mostrar todos los archivos)
-version
muestra la versión y sale
Buscar cualquier archivo que sea ejecutable bajo /tmp:
sandfly-entropyscan -dir /tmp -elf
Buscar ejecutables de alta entropía (7.7 y superior) a menudo empaquetados o cifrados bajo /var/www:
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
Genera entropía y hashes criptográficos de todos los procesos en ejecución en formato CSV:
sandfly-entropyscan -proc -csv
Buscar cualquier proceso con una entropía superior a 7.7 que indique que probablemente está empaquetado o cifrado:
sandfly-entropyscan -proc -entropy 7.7
Generar entropía y valores hash criptográficos de todos los archivos bajo /bin y generar salida en formato CSV (por ejemplo, para guardar y comparar hashes):
sandfly-entropyscan -dir /bin -csv
Escanear un directorio para todos los archivos (ELF o no) con entropía mayor a 7.7: (potencialmente una gran lista de archivos comprimidos, png, jpg, archivos objeto, etc.)
sandfly-entropyscan -dir /path/to/dir -entropy 7.7
Verificar rápidamente un archivo y generar entropía, hashes criptográficos y mostrar si es ejecutable:
sandfly-entropyscan -file /dev/shm/suspicious_file
Realiza controles puntuales en sistemas donde creas que hay un problema de malware. O puedes automatizar el escaneo para obtener una salida si encontramos algo con alta entropía en un lugar inesperado. O simplemente marcar cualquier archivo ejecutable de tipo ELF que esté en algún lugar extraño (por ejemplo, en /tmp o en el directorio HTML de un usuario). Por ejemplo:
¿Apareció un binario de alta entropía bajo el directorio /var/www del sistema? Podría ser que alguien haya colocado un dropper de malware en tu sitio web:
sandfly-entropyscan -dir /var/www -elf -entropy 7.7
Configura una tarea cron para escanear tus directorios /tmp, /var/tmp y /dev/shm en busca de cualquier tipo de archivo ejecutable, ya sea de alta entropía o no. Los archivos ejecutables bajo directorios tmp pueden ser frecuentemente un dropper de malware.
sandfly-entropyscan -dir /tmp -elf
sandfly-entropyscan -dir /var/tmp -elf
sandfly-entropyscan -dir /dev/shm -elf
Configura otro cron o barrido de seguridad automatizado para hacer controles puntuales en tus sistemas en busca de binarios altamente comprimidos o cifrados que se estén ejecutando:
sandfly-entropyscan -proc -entropy 7.7
git clone https://github.com/sandflysecurity/sandfly-entropyscan.git
go build
./sandfly-entropyscan
Hay algunos scripts de compilación básicos que compilan para varias plataformas. Puedes usarlos o modificarlos según convenga. Para respondedores de incidentes, puede ser útil tener binarios precompilados listos en tu equipo de investigación.
build.sh - Compila para el sistema operativo actual en el que lo ejecutas.
Usamos un método simple para determinar si un archivo puede ser de tipo ejecutable ELF. Podemos detectar archivos en formato ELF para múltiples plataformas. Incluso si el malware tiene binarios dropper para Intel/AMD, MIPS y Arm, aún podremos detectarlos a todos.
Es posible marcar un binario legítimo que tenga alta entropía debido a cómo fue compilado, o porque fue empaquetado por razones legítimas. Otros archivos como .zip, .gz, .png, .jpg también tienen una entropía muy alta porque son formatos comprimidos. La compresión elimina la redundancia en un archivo, lo que hace que parezca más aleatorio y tenga mayor entropía.
En Linux, es posible que algunos tipos de bibliotecas (archivos .so) sean marcados si escaneas directorios de bibliotecas.
Sin embargo, según nuestra experiencia, los binarios ejecutables que también tienen alta entropía a menudo son maliciosos. Esto es especialmente cierto si los encuentras en áreas donde normalmente no deberían estar los ejecutables (como nuevamente directorios tmp o html).
El cálculo de entropía requiere leer todos los bytes del archivo y contabilizarlos para obtener un número final. Puede consumir mucha CPU y E/S de disco, especialmente en sistemas de archivos muy grandes o archivos muy grandes. El programa tiene un límite interno: no calculará entropía en ningún archivo de más de 2 GB, ni intentará calcular entropía en ningún archivo que no sea de tipo regular (por ejemplo, no intentará calcular entropía en dispositivos como /dev/zero).
Luego calculamos los hashes MD5, SHA1, SHA256 y SHA512. Cada uno de estos requiere recorrer el archivo también. Es una velocidad razonable en sistemas modernos, pero si estás recorriendo un sistema de archivos muy grande, puede llevar algo de tiempo completarlo.
Si le dices al programa que solo busque archivos ELF, los cálculos de entropía/hash no ocurrirán a menos que sea un tipo ELF, lo que ahorrará mucho tiempo (por ejemplo, ignorará archivos masivos de bases de datos que no son ejecutables).
Si deseas automatizar este programa, es mejor que no recorra todo el sistema de archivos raíz a menos que quieras específicamente eso. Un enfoque dirigido será más rápido y más útil para controles puntuales. Además, usa la bandera ELF, ya que reducirá drásticamente los tiempos de búsqueda al procesar solo tipos de archivos ejecutables.
Para los respondedores de incidentes, ejecutar sandfly-entropyscan contra todo el directorio raíz "/" puede ser una buena idea solo para obtener rápidamente una lista de candidatos probablemente empaquetados a investigar. Esto aumentará el uso de CPU y E/S de disco. Sin embargo, probablemente no te importe en ese punto, ya que la máquina ha estado minando criptomonedas durante 598 horas cuando los administradores se dieron cuenta.
Nuevamente, usa la bandera ELF para llegar a los ejecutables candidatos problemáticos e ignorar el ruido.
Hay un script llamado scripts/testfiles.sh que creará dos archivos. Uno estará lleno de datos aleatorios y el otro no será aleatorio en absoluto. Cuando ejecutes el script, creará los archivos y ejecutará sandfly-entropyscan en modo de detección de ejecutables. Deberías ver dos archivos. Uno con entropía muy alta (en o cerca de 8.0) y uno lleno de datos no aleatorios que debería tener 0.00 para baja entropía. Ejemplo:
./testfiles.sh
Creando archivo ejecutable de alta entropía aleatorio en el directorio actual.
Creando archivo ejecutable de baja entropía en el directorio actual.
high.entropy.test, entropy: 8.00, elf: true
low.entropy.test, entropy: 0.00, elf: true
También puedes cargar la utilidad upx y comprimir un ejecutable y ver qué valores devuelve.
Sandfly Security produce una plataforma de detección de endpoints y respuesta a incidentes (EDR) sin agente para Linux. Las comprobaciones automatizadas de entropía son solo una de las miles de cosas que buscamos para encontrar intrusos sin cargar ningún software en tus endpoints Linux.
Obtén una licencia gratuita y aprende más a continuación:
https://www.sandflysecurity.com @SandflySecurity