Comandos y herramientas útiles para análisis forenses en Linux y Windows
Antes de empezar el artículo, tengo que decir que no soy especialista en seguridad, no es mi campo, aunque en mi vida he tenido que levantar servidores, servicios, negocios…he tenido que crear estrategias, analizar y diseñar infraestructuras para minimizar los problemas que ha provocado un ataque, y que en gran medida no se vuelvan a repetir o tengamos una estrategia de recuperación adecuada.
Quizás de seguridad no puedo explicar gran cosa, pero creo de cómo funciona una infraestructura o los sistemas operativos que están en ella, de eso, si puedo aportar bastante. Y creo que esto tendría que ser la base de cualquier persona que derive su carrera hacia la seguridad, saber qué tipo de problemas existen en una infraestructura y como analizarlos (que al final te lo dará la experiencia, como todo).
En esta entrada vamos a hablar de comandos útiles que pueden servir en un análisis forenses tanto en Linux como en Windows (buscaremos los comandos análogos). Seguro que hay muchísimos más, y alguno no puedes usarlo en caliente y otros sí,…en fin, lo dicho, espero que os aporte algo, que para eso son todas las entradas del blog. Os dejo algún enlace relacionados en el blog:
- Hardening Máquinas Virtuales
- Common Criteria para Citrix
- Hardening Kubernetes: Pautas básicas de seguridad
- Y alguno más: Hardening
Comandos en frío de análisis forense Linux / Windows
Comandos cuando la máquina ha sido infectada y no dispones de acceso al sistema, y tienes o que montarla en otro sistema o hacer una copia de seguridad del disco para analizarlo:
Comando crear copias bit a bit en Linux / Windows
- LINUX:
- En linux tenemos “dd” que permite crear copias de disco duros o particiones. Os dejo un ejemplo:
-
12dd if=ruta_origen of=ruta_destinoEjemplo: dd if=/dev/sda of=imagedisco.dd bs=512
-
- En linux tenemos “dd” que permite crear copias de disco duros o particiones. Os dejo un ejemplo:
- WINDOWS:
- En Windows la mayoría de estos trabajos pasan por aplicaciones tipo OSForensics o Autopsy
- Podemos instalar el comando “dd” para Windows con proyectos de Github o Git, por ejemplo:
Comando para montar discos en Linux / Windows
- LINUX:
- Si necesitamos montar una imagen de un disco extraída, podemos usar el comando “mount”:
-
1mount -o ro,loop imagedisco.dd /mnt/elblogdenegu
-
- Si necesitamos montar una imagen de un disco extraída, podemos usar el comando “mount”:
- WINDOWS:
- Para montar imágenes de discos, podemos usar en Powershell “Mount-DiskImage”:
-
12Get-DiskMount-DiskImage -ImagePath PATH
-
- Para montar imágenes de discos, podemos usar en Powershell “Mount-DiskImage”:
Herramienta para recuperar datos de discos
- En esta parte os voy a recomendar para Linux / Windows la herramienta “Testdisk“. Una herramienta multiplataforma, capaz de leer casi cualquier sistema de ficheros.
Comandos en caliente de análisis forense Linux / Windows
Otro tipo de comandos, cuando trabajas en una máquina a la que tienes acceso, pero que ha sido infectada:
Comando enumerar recursos compartidos vía SAMBA en Linux / Windows
- LINUX:
- Si queremos enumerar los recursos compartidos en un sistema linux podemos usar los siguientes comandos:
- Por ejemplo, podemos buscar en la red los puertos Samba en escucha en algunos ordenadores:
-
1nmap -sS -O 192.168.2.1-10 -p 139
- De ahí extraemos los nombres Netbios:
-
1nmblookup -A 192.168.2.5 -N
- E intentar conectarnos mediante el siguiente comando:
-
1smbclient -L \\PC01 -I 192.168.2.5 -N
- Si queremos enumerar los recursos compartidos en un sistema linux podemos usar los siguientes comandos:
- WINDOWS:
- Si queremos enumerar los recursos compartidos en un sistema linux podemos usar el siguiente comando (también podemos instalar “nmap”):
-
1234# LOCALGet-SmbShare -Name "PC01"# REMOTOGet-SmbShare -CimSession "PC02"
-
- Si queremos enumerar los recursos compartidos en un sistema linux podemos usar el siguiente comando (también podemos instalar “nmap”):
Comando extraer discos sistema Linux / Windows
- LINUX:
- Si queremos extraer información de un disco en linux podemos usar el siguiente comando:
-
1fdisk /dev/sda
-
- Si queremos extraer información de un disco en linux podemos usar el siguiente comando:
- WINDOWS:
- En Windows la mayoría de estos trabajos pasan por aplicaciones tipo OSForensics o Autopsy
- Podemos instalar el comando “dd” para Windows con proyectos de Github o Git, por ejemplo:
Comando extraer lista de archivos abiertos por procesos en un sistema Linux / Windows
- LINUX:
- Si queremos extraer un listado de los archivos abiertos por procesos en linux, podemos usar el siguiente comando:
-
12lsof -i -nps aux
-
- Si queremos extraer un listado de los archivos abiertos por procesos en linux, podemos usar el siguiente comando:
- WINDOWS:
- En Windows lo podemos hacer visualmente con el administrador de tareas o mediante:
-
1234Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table ID, Name, mainWindowtitle -AutoSizeGet-Process | Select-Object Name, Id | ForEach-Object { Get-Process $_.Name | Select-Object -ExpandProperty Modules }Get-Process | Select-Object Name, Id | ForEach-Object { Get-Process $_.Id | Select-Object -ExpandProperty Modules | Select-Object FileName, ModuleName }Tasklist /V
-
- En Windows lo podemos hacer visualmente con el administrador de tareas o mediante:
Comando para extraer cadenas de caracteres en sistema Linux / Windows
- LINUX:
- Si queremos extraer cadenas de caracteres en linux, podemos usar el siguiente comando:
-
1strings
-
- Si queremos extraer cadenas de caracteres en linux, podemos usar el siguiente comando:
- WINDOWS:
- En Windows lo podemos hacer con el comando:
-
1Select-String
-
- En Windows lo podemos hacer con el comando:
Comando para calcular códigos hash en sistema Linux / Windows
- LINUX:
- Si queremos calcular códigos hash en linux, podemos usar el siguiente comando:
-
1sha256sum
-
- Si queremos calcular códigos hash en linux, podemos usar el siguiente comando:
- WINDOWS:
- En Windows lo podemos hacer con el comando:
-
1certutil -hashfile <nombre-del-archivo> sha256
-
- En Windows lo podemos hacer con el comando:
Comando extraer listado conexiones en un sistema Linux / Windows
- LINUX:
- Si queremos extraer un listado de las conexiones en linux, podemos usar el siguiente comando:
-
12netstat -rnnetstat -punta
-
- Si queremos extraer un listado de las conexiones en linux, podemos usar el siguiente comando:
- WINDOWS:
- En Windows lo podemos hacer igualmente con “NETSTAT” o mediante:
-
1Get-NetTCPConnection | Select-Object -Property *
-
- En Windows lo podemos hacer igualmente con “NETSTAT” o mediante:
Comando transmitir flujos de información en Linux / Windows
- LINUX:
- Si queremos transmitir flujos de información en Linux, sin alterarlo, podemos usar el siguiente comando:
-
1netcat
-
- Si queremos transmitir flujos de información en Linux, sin alterarlo, podemos usar el siguiente comando:
- WINDOWS:
- En Windows podríamos usar “NCAP” que forma parte de NMAP:
Comando para saber cuánto lleva el sistema arrancado Linux / Windows
- LINUX:
- Si queremos extraer información del tiempo que un sistema operativo linux lleva arrancado, podemos usar el siguiente comando:
-
1uptime
-
- Si queremos extraer información del tiempo que un sistema operativo linux lleva arrancado, podemos usar el siguiente comando:
- WINDOWS:
- En Windows generé una entrada hace poco sobre esto, y como hacerlo por Powershell:
- https://www.maquinasvirtuales.eu/powershell-comprobar-reinicio-de-maquina-y-envio-alerta/
-
1Get-WmiObject win32_operatingsystem | select csname, @{LABEL='LastBootUpTime';EXPRESSION={$_.ConverttoDateTime($_.lastbootuptime)}}
- En Windows generé una entrada hace poco sobre esto, y como hacerlo por Powershell:
Iremos ampliando la entrada poco a poco…
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?
Interesante información Raúl.
Gracias Alejandro