Linux Forensics
Utilice Trickest para construir y automatizar flujos de trabajo fácilmente con las herramientas comunitarias más avanzadas del mundo. Acceda hoy mismo:
Recopilación de Información Inicial
Información Básica
En primer lugar, se recomienda tener una USB con binarios y bibliotecas conocidos y buenos (puede simplemente obtener Ubuntu y copiar las carpetas /bin, /sbin, /lib y /lib64), luego montar la USB y modificar las variables de entorno para usar esos binarios:
Una vez que hayas configurado el sistema para usar binarios buenos y conocidos, puedes comenzar a extraer alguna información básica:
Información sospechosa
Mientras se obtiene la información básica, se debe verificar cosas extrañas como:
Los procesos de root generalmente se ejecutan con PIDS bajos, por lo que si encuentras un proceso de root con un PID alto, puedes sospechar
Verificar inicios de sesión registrados de usuarios sin shell dentro de
/etc/passwd
Verificar hashes de contraseñas dentro de
/etc/shadow
para usuarios sin shell
Volcado de memoria
Para obtener la memoria del sistema en ejecución, se recomienda usar LiME. Para compilarlo, necesitas usar el mismo kernel que está utilizando la máquina víctima.
Recuerda que no puedes instalar LiME ni nada más en la máquina víctima, ya que hará varios cambios en ella
Entonces, si tienes una versión idéntica de Ubuntu, puedes usar apt-get install lime-forensics-dkms
En otros casos, necesitas descargar LiME desde github y compilarlo con los encabezados de kernel correctos. Para obtener los encabezados de kernel exactos de la máquina víctima, simplemente copia el directorio /lib/modules/<versión del kernel>
a tu máquina, y luego compila LiME usando esos encabezados:
LiME soporta 3 formatos:
Raw (cada segmento concatenado)
Padded (igual que raw, pero con ceros en los bits derechos)
Lime (formato recomendado con metadatos)
LiME también se puede utilizar para enviar el volcado a través de la red en lugar de almacenarlo en el sistema usando algo como: path=tcp:4444
Imagen de Disco
Apagado
En primer lugar, necesitarás apagar el sistema. Esto no siempre es una opción, ya que a veces el sistema será un servidor de producción que la empresa no puede permitirse apagar.
Hay 2 formas de apagar el sistema, un apagado normal y un apagado "desenchufar". El primero permitirá que los procesos terminen como de costumbre y que el sistema de archivos se sincronice, pero también permitirá que el posible malware destruya evidencia. El enfoque de "desenchufar" puede implicar alguna pérdida de información (no se perderá mucha información ya que ya tomamos una imagen de la memoria) y el malware no tendrá oportunidad de hacer nada al respecto. Por lo tanto, si sospechas que puede haber un malware, simplemente ejecuta el comando sync
en el sistema y desenchufa.
Tomar una imagen del disco
Es importante tener en cuenta que antes de conectar tu computadora a cualquier cosa relacionada con el caso, debes asegurarte de que se va a montar como solo lectura para evitar modificar cualquier información.
Análisis previo de la imagen del disco
Crear una imagen del disco sin más datos.
Utilice Trickest para construir y automatizar flujos de trabajo fácilmente con las herramientas comunitarias más avanzadas del mundo. Obtenga acceso hoy:
Buscar Malware conocido
Archivos del Sistema Modificados
Linux ofrece herramientas para garantizar la integridad de los componentes del sistema, crucial para detectar archivos potencialmente problemáticos.
Sistemas basados en RedHat: Utilice
rpm -Va
para una verificación exhaustiva.Sistemas basados en Debian:
dpkg --verify
para verificación inicial, seguido dedebsums | grep -v "OK$"
(después de instalardebsums
conapt-get install debsums
) para identificar problemas.
Detectores de Malware/Rootkit
Lea la siguiente página para conocer herramientas que pueden ser útiles para encontrar malware:
pageMalware AnalysisBuscar programas instalados
Para buscar eficazmente programas instalados en sistemas Debian y RedHat, considere aprovechar los registros y bases de datos del sistema junto con verificaciones manuales en directorios comunes.
Para Debian, inspeccione
/var/lib/dpkg/status
y/var/log/dpkg.log
para obtener detalles sobre las instalaciones de paquetes, utilizandogrep
para filtrar información específica.Los usuarios de RedHat pueden consultar la base de datos RPM con
rpm -qa --root=/mntpath/var/lib/rpm
para listar los paquetes instalados.
Para descubrir software instalado manualmente o fuera de estos gestores de paquetes, explore directorios como /usr/local
, /opt
, /usr/sbin
, /usr/bin
, /bin
, y /sbin
. Combine listados de directorios con comandos específicos del sistema para identificar ejecutables no asociados con paquetes conocidos, mejorando su búsqueda de todos los programas instalados.
Utilice Trickest para construir y automatizar flujos de trabajo fácilmente con las herramientas comunitarias más avanzadas del mundo. Obtenga acceso hoy:
Recuperar Binarios en Ejecución Eliminados
Imagina un proceso que se ejecutó desde /tmp/exec y luego fue eliminado. Es posible extraerlo
Inspeccionar ubicaciones de inicio automático
Tareas programadas
Servicios
Rutas donde un malware podría instalarse como un servicio:
/etc/inittab: Llama a scripts de inicialización como rc.sysinit, dirigiendo posteriormente a scripts de inicio.
/etc/rc.d/ y /etc/rc.boot/: Contienen scripts para el inicio de servicios, siendo este último encontrado en versiones antiguas de Linux.
/etc/init.d/: Utilizado en ciertas versiones de Linux como Debian para almacenar scripts de inicio.
Los servicios también pueden ser activados a través de /etc/inetd.conf o /etc/xinetd/, dependiendo de la variante de Linux.
/etc/systemd/system: Un directorio para scripts del sistema y del administrador de servicios.
/etc/systemd/system/multi-user.target.wants/: Contiene enlaces a servicios que deben iniciarse en un nivel de ejecución multiusuario.
/usr/local/etc/rc.d/: Para servicios personalizados o de terceros.
~/.config/autostart/: Para aplicaciones de inicio automático específicas del usuario, que pueden ser un lugar de ocultación para malware dirigido al usuario.
/lib/systemd/system/: Archivos de unidad predeterminados de todo el sistema proporcionados por paquetes instalados.
Módulos del Kernel
Los módulos del kernel de Linux, a menudo utilizados por malware como componentes de rootkit, se cargan al inicio del sistema. Los directorios y archivos críticos para estos módulos incluyen:
/lib/modules/$(uname -r): Contiene módulos para la versión del kernel en ejecución.
/etc/modprobe.d: Contiene archivos de configuración para controlar la carga de módulos.
/etc/modprobe y /etc/modprobe.conf: Archivos para configuraciones globales de módulos.
Otras Ubicaciones de Inicio Automático
Linux emplea varios archivos para ejecutar programas automáticamente al iniciar sesión de usuario, potencialmente albergando malware:
/etc/profile.d/*, /etc/profile y /etc/bash.bashrc: Ejecutados para cualquier inicio de sesión de usuario.
~/.bashrc, ~/.bash_profile, ~/.profile y ~/.config/autostart: Archivos específicos del usuario que se ejecutan al iniciar sesión.
/etc/rc.local: Se ejecuta después de que todos los servicios del sistema se han iniciado, marcando el final de la transición a un entorno multiusuario.
Examinar Registros
Los sistemas Linux registran las actividades de los usuarios y los eventos del sistema a través de varios archivos de registro. Estos registros son fundamentales para identificar accesos no autorizados, infecciones de malware y otros incidentes de seguridad. Los archivos de registro clave incluyen:
/var/log/syslog (Debian) o /var/log/messages (RedHat): Capturan mensajes y actividades en todo el sistema.
/var/log/auth.log (Debian) o /var/log/secure (RedHat): Registran intentos de autenticación, inicios de sesión exitosos y fallidos.
Utiliza
grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log
para filtrar eventos de autenticación relevantes./var/log/boot.log: Contiene mensajes de inicio del sistema.
/var/log/maillog o /var/log/mail.log: Registra actividades del servidor de correo electrónico, útil para rastrear servicios relacionados con el correo electrónico.
/var/log/kern.log: Almacena mensajes del kernel, incluidos errores y advertencias.
/var/log/dmesg: Contiene mensajes de controladores de dispositivos.
/var/log/faillog: Registra intentos de inicio de sesión fallidos, ayudando en investigaciones de violaciones de seguridad.
/var/log/cron: Registra la ejecución de trabajos cron.
/var/log/daemon.log: Realiza un seguimiento de las actividades de los servicios en segundo plano.
/var/log/btmp: Documenta intentos de inicio de sesión fallidos.
/var/log/httpd/: Contiene registros de errores y accesos de Apache HTTPD.
/var/log/mysqld.log o /var/log/mysql.log: Registra actividades de la base de datos MySQL.
/var/log/xferlog: Registra transferencias de archivos FTP.
/var/log/: Siempre verifica los registros inesperados aquí.
Los registros del sistema y los subsistemas de auditoría de Linux pueden estar deshabilitados o eliminados en un incidente de intrusión o malware. Debido a que los registros en los sistemas Linux generalmente contienen información muy útil sobre actividades maliciosas, los intrusos rutinariamente los eliminan. Por lo tanto, al examinar los archivos de registro disponibles, es importante buscar lagunas o entradas fuera de orden que puedan ser una indicación de eliminación o manipulación.
Linux mantiene un historial de comandos para cada usuario, almacenado en:
~/.bash_history
~/.zsh_history
~/.zsh_sessions/*
~/.python_history
~/.*_history
Además, el comando last -Faiwx
proporciona una lista de inicios de sesión de usuario. Revísalo en busca de inicios de sesión desconocidos o inesperados.
Revisa archivos que pueden otorgar privilegios adicionales:
Revisa
/etc/sudoers
para privilegios de usuario no anticipados que puedan haber sido otorgados.Revisa
/etc/sudoers.d/
para privilegios de usuario no anticipados que puedan haber sido otorgados.Examina
/etc/groups
para identificar membresías o permisos de grupo inusuales.Examina
/etc/passwd
para identificar membresías o permisos de grupo inusuales.
Algunas aplicaciones también generan sus propios registros:
SSH: Examina ~/.ssh/authorized_keys y ~/.ssh/known_hosts para conexiones remotas no autorizadas.
Escritorio Gnome: Revisa ~/.recently-used.xbel para archivos accedidos recientemente a través de aplicaciones de Gnome.
Firefox/Chrome: Verifica el historial y descargas del navegador en ~/.mozilla/firefox o ~/.config/google-chrome en busca de actividades sospechosas.
VIM: Revisa ~/.viminfo para detalles de uso, como rutas de archivos accedidos e historial de búsqueda.
Open Office: Verifica el acceso a documentos recientes que puedan indicar archivos comprometidos.
FTP/SFTP: Revisa los registros en ~/.ftp_history o ~/.sftp_history para transferencias de archivos que podrían ser no autorizadas.
MySQL: Investiga ~/.mysql_history para consultas MySQL ejecutadas, revelando potencialmente actividades no autorizadas en la base de datos.
Less: Analiza ~/.lesshst para historial de uso, incluidos archivos vistos y comandos ejecutados.
Git: Examina ~/.gitconfig y el proyecto .git/logs para cambios en repositorios.
Registros USB
usbrip es un pequeño software escrito en Python 3 puro que analiza archivos de registro de Linux (/var/log/syslog*
o /var/log/messages*
dependiendo de la distribución) para construir tablas de historial de eventos USB.
Es interesante conocer todos los USB que se han utilizado y será más útil si tienes una lista autorizada de USB para encontrar "eventos de violación" (el uso de USB que no están en esa lista).
Instalación
Ejemplos
Más ejemplos e información en el github: https://github.com/snovvcrash/usbrip
Utiliza Trickest para construir y automatizar flujos de trabajo fácilmente con las herramientas comunitarias más avanzadas del mundo. Accede hoy mismo:
Revisar Cuentas de Usuario y Actividades de Inicio de Sesión
Examina los archivos /etc/passwd, /etc/shadow y los registros de seguridad en busca de nombres inusuales o cuentas creadas y utilizadas en proximidad a eventos no autorizados conocidos. Además, verifica posibles ataques de fuerza bruta a sudo. Además, revisa archivos como /etc/sudoers y /etc/groups en busca de privilegios inesperados otorgados a usuarios. Finalmente, busca cuentas sin contraseñas o con contraseñas fáciles de adivinar.
Examinar el Sistema de Archivos
Analizando Estructuras del Sistema de Archivos en Investigaciones de Malware
En investigaciones de incidentes de malware, la estructura del sistema de archivos es una fuente crucial de información, revelando tanto la secuencia de eventos como el contenido del malware. Sin embargo, los autores de malware están desarrollando técnicas para dificultar este análisis, como modificar las marcas de tiempo de los archivos o evitar el sistema de archivos para el almacenamiento de datos.
Para contrarrestar estos métodos antiforense, es esencial:
Realizar un análisis detallado de la línea de tiempo utilizando herramientas como Autopsy para visualizar las líneas de tiempo de eventos o
mactime
de Sleuth Kit para obtener datos detallados de la línea de tiempo.Investigar scripts inesperados en la variable $PATH del sistema, que podrían incluir scripts de shell o PHP utilizados por atacantes.
Examinar
/dev
en busca de archivos atípicos, ya que tradicionalmente contiene archivos especiales, pero podría contener archivos relacionados con malware.Buscar archivos o directorios ocultos con nombres como ".. " (punto punto espacio) o "..^G" (punto punto control-G), que podrían ocultar contenido malicioso.
Identificar archivos setuid root con el comando:
find / -user root -perm -04000 -print
Esto encuentra archivos con permisos elevados, que podrían ser abusados por atacantes.Revisar las marcas de tiempo de eliminación en las tablas de inodos para detectar eliminaciones masivas de archivos, lo que podría indicar la presencia de rootkits o troyanos.
Inspeccionar inodos consecutivos en busca de archivos maliciosos cercanos después de identificar uno, ya que podrían haber sido colocados juntos.
Verificar archivos modificados recientemente en directorios binarios comunes (/bin, /sbin), ya que podrían ser alterados por malware.
Ten en cuenta que un atacante puede modificar la hora para que los archivos parezcan legítimos, pero no puede modificar el inode. Si descubres que un archivo indica que fue creado y modificado al mismo tiempo que el resto de los archivos en la misma carpeta, pero el inode es inesperadamente más grande, entonces los timestamps de ese archivo fueron modificados.
Comparar archivos de diferentes versiones de sistemas de archivos
Resumen de Comparación de Versiones de Sistemas de Archivos
Para comparar versiones de sistemas de archivos y señalar cambios, utilizamos comandos simplificados de git diff
:
Para encontrar archivos nuevos, compara dos directorios:
Para contenido modificado, enumere los cambios ignorando líneas específicas:
Para detectar archivos eliminados:
Opciones de filtro (
--diff-filter
) ayudan a reducir los cambios específicos como archivos añadidos (A
), eliminados (D
), o modificados (M
).A
: Archivos añadidosC
: Archivos copiadosD
: Archivos eliminadosM
: Archivos modificadosR
: Archivos renombradosT
: Cambios de tipo (por ejemplo, archivo a enlace simbólico)U
: Archivos no fusionadosX
: Archivos desconocidosB
: Archivos rotos
Referencias
Libro: Malware Forensics Field Guide for Linux Systems: Digital Forensics Field Guides
Utiliza Trickest para construir y automatizar flujos de trabajo fácilmente con las herramientas comunitarias más avanzadas del mundo. ¡Accede hoy:
Última actualización