Los sistemas operativos Linux llevan años siendo utilizados por profesionales en seguridad de la información por las facilidades que presenta para usuarios avanzados o por su gratuidad, entre otros factores. E independientemente de si usas distribuciones populares como Ubuntu o Fedora, otras especializadas en ciberseguridad como Kali o Parrot, o complejas como Arch u OpenSUSE, sabes que la terminal de comandos es uno de los grandes protagonistas del sistema. Sobre todo para realizar tareas relacionadas al mundo de la ciberseguridad.
Por eso, en esta publicación compartimos un listado de 11 comandos de Linux de gran utilidad para realizar distintas tareas relacionadas a seguridad de la información. Vale mencionar que esta lista no es exhaustiva, ya que existen cientos de comandos nativos y no nativos que se utilizan diariamente en este contexto.
touch/cat/grep
Se trata de tres comandos para la creación o manipulación del contenido de archivos.
En el caso de touch, permite la creación de uno o varios archivos, mientras que cat permite tanto la creación, modificación e impresión en pantalla de su contenido. Ambos son particularmente útiles para crear o modificar archivos de configuración, o visualizar y modificar archivos como scripts de manera más ágil. A su vez, son útiles para combinar con el comando grep, que permite buscar por expresiones regulares en un texto, el cual puede tomar como entrada el mostrado por cat.
Para estas combinaciones, cualesquiera sean los comandos, se requieren utilizar operadores. Más adelante profundizaremos en el uso de los más utilizados, > y | .
Por ejemplo, supongamos que en un archivo llamado “strings.txt” logramos extraer las cadenas de texto relevantes de una amenaza maliciosa y, entre ellas, algunas de las librerías que utiliza. El siguiente comando permitirá filtrar aquellas strings que terminen en “.dll”, o los nombres de las librerías usadas por la amenaza que sean librerías de Windows.
cat strings.txt | grep “*.dll”
Y obtendremos una salida como esta:
fdisk
Este comando permite crear, eliminar o modificar particiones del disco duro. Resulta particularmente útil en el caso de que tengamos varias particiones con sistemas operativos distintos, como Kali o Parrot, y deseemos administrarlas, agrandar su tamaño, eliminarlas o repararlas. Por ejemplo, el siguiente comando permite listar la tabla de particiones del disco.
fdisk -l
Y obtendremos una salida similar a la siguiente:
cmp
El comando cmp permite saber si dos archivos son distintos entre sí y, en el caso de ser archivos de texto, producirá las diferencias que encuentre.
En el mundo de la ciberseguridad esto tiene infinitas utilidades, pero sobre todo dos. En primer lugar para poder observar el código fuente de alguna aplicación que haya recibido cambios recientes que resulten en un comportamiento malicioso, tal como fue el caso de dos extensiones de navegador que fueron eliminadas de las tiendas oficiales por recibir actualizaciones que llevaban al robo de cookies de sesiones en redes sociales.
También es utilizado este comando en casos de amenazas maliciosas que se hacen pasar por instaladores o ejecutables conocidos, como aplicaciones de ofimática o videojuegos, ya que permite verificar si hay diferencias en los archivos sin necesidad de ejecutarlos. Más allá de la verificación en sí, que podría ser riesgosa si sabemos que se trata de una amenaza descargada en nuestro equipo, es una herramienta para documentar visualmente en informes que se trata de archivos distintos.
En ambos casos, el comando cmp incluye el número de línea y el byte en donde se encuentra la primer diferencia entre los dos archivos y, si son iguales, no devolverá valor.
Por ejemplo, si tenemos dos archivos llamados exec_1.o y exec_2.o, podemos ejecutar el siguiente comando para encontrar diferencias entre ellos:
cmp exec_1.o exec_2.o
Y si los archivos difieren, obtendríamos una salida similar a:
exec_1.o exec_2.o differ: char 6, line 3
dmesg
El comando dmesg (de diagnostic message) permite obtener los mensajes y alertas del kernel. Si bien esta característica no es única para profesionales en ciberseguridad, es usual configurar un entorno o herramienta que luego cause conflictos con el sistema operativo, por los recursos requeridos por estas utilidades.
El uso más común del comando es el siguiente:
dmesg -H
Nota: la flag -H modifica la salida para que sea más legible al ojo humano.
Como respuesta, obtendremos una salida similar a la siguiente:
man
Probablemente el comando man sea el más importante para conocer en el universo Linux. Este viene de manual y nos permite acceder a la información condensada sobre cada uno de los comandos que podemos utilizar en la consola: Nombre del comando, descripción corta, sintaxis de Flags, y descripción larga.
El comando man se utiliza acompañado del comando del cual queremos saber más, como por ejemplo:
man sudo
Y obtendremos una salida como esta:
Si bien la información se muestra en inglés por defecto, el siguiente comando permite descargar el adicional que permite mostrar la información de man en español, descargando el paquete correspondiente y configurándolo:
apt-get install manpages-es manpages-es-extra && dpkg-reconfigure locales
Top/htop
Tanto top como htop proveen un listado de los procesos actuales corriendo en el sistema, en tiempo real. En esta tabla se incluyen el número de proceso asignado por el sistema operativo (PID), el usuario ejecutándolo (incluyendo a root), la prioridad de ejecución, el tiempo que lleva siendo ejecutado, el uso que hace de la CPU y la memoria en porcentajes, y el comando que representa. Además, htop agrega información del sistema, como el uso de la memoria actual, y lo presenta más legible al ojo humano.
Estos comandos son de utilidad a la hora de hacer análisis dinámico de una amenaza escurridiza, para poder monitorear su actividad en el sistema y observar qué cambios está realizando. Luego, con otros comandos y funcionalidades (como ptrace) podremos explorar cada proceso en específico teniendo su PID.
Un ejemplo de salida del comando htop es el siguiente:
Es posible ejecutar los comandos con ciertos filtros y opciones que facilitarán tareas de automatización, si ese es nuestro objetivo. Para ello, sugerimos consultar la documentación propia de top, con el comando man top.
> / |
Si bien ambos no son comandos en sí, sino operadores, son ideales para el manejo de la consola en Linux. Tienen como objetivo permitir crear una línea de trabajo de manera más automática, permitiendo condensar múltiples comandos en uno.
El operador > se encarga de realizar el redireccionamiento de la salida del primer comando para poder guardarlo en algún archivo. Resulta de utilidad a la hora de guardar logs, u outputs de comandos que podrían servirnos más tarde.
Por ejemplo, si quisiéramos guardar una instantánea de los procesos que actualmente está corriendo el sistema, podríamos hacerlo con top con el siguiente comando:
top -b -n 1 > top.txt
Esto guardará en un formato adecuado (parámetro -b) el estado exacto de los procesos al momento de la ejecución (parámetros -n 1), dentro del archivo top.txt.
Ahora, ¿qué sucede si antes de guardar la salida de top deseamos hacer una búsqueda o aplicar un filtro? Deberíamos tomar la salida de top y utilizarlo como entrada en otro, para luego guardarlo. Allí es donde es de utilidad el operador |, o pipe. Este también es de redireccionamiento, pero en vez de enviar la salida de un comando a un archivo la envía como entrada para otro comando. Así como el operador >, el pipe sigue un orden de interpretación de izquierda a derecha, y este último no tiene un límite en cuanto a la cantidad de comandos que podemos relacionar.
Supongamos que queremos buscar la información de algún proceso en específico de la salida de top. Para ello, utilizaremos el comando find, un buscador de texto. Obtendremos una salida similar a la siguiente:
Esta fue la lista de comandos y operadores que seleccionamos por su utilidad para quienes trabajan en seguridad. Como dijimos antes, la lista es más extensa y esta es solo una selección de aquellos que consideramos más interesantes.
Invitamos a los y las lectoras a incluir en los comentarios otros comandos de Linux que consideran son de utilidad a la hora de trabajar en ciberseguridad.
Lectura recomendada: Herramientas de Linux para el análisis de malware