1. Un flujo pequeño vale más que cien comandos memorizados
La terminal es una composición: orientarte, inspeccionar, filtrar, registrar y verificar. El carácter | conecta la salida estándar de un programa con la entrada del siguiente. Las comillas protegen espacios o patrones frente a la shell. Esos operadores forman parte de la shell y no cuentan como comandos adicionales.
Dato
La línea o valor que el sistema devolvió: una ruta, un PID, una dirección o un código de estado.
Inferencia
La explicación provisional. Un puerto en escucha no demuestra exposición desde Internet.
Evidencia
Dato conservado con contexto, ruta de origen, hora, permisos y una huella verificable.
Criterio de parada
Permiso denegado, objetivo fuera de alcance o efecto inesperado: no eleves privilegios por reflejo.
Preparación
Los ejemplos usan GNU/Linux y están pensados para Kali, Debian o Ubuntu actuales. Crea una instantánea de la VM. Si falta alguna utilidad, instala los paquetes desde los repositorios firmados de tu distribución. Los gestores siguientes preparan el entorno y no forman parte de los 30 comandos.
sudo apt updatesudo apt install -y man-db less file findutils grep coreutils procps iproute2 iputils-ping dnsutils curlsudo dnf install -y man-db less file findutils grep coreutils procps-ng iproute iputils bind-utils curlsudo pacman -S --needed man-db man-pages less file findutils grep coreutils procps-ng iproute2 iputils bind curlLas opciones largas que aparecen en la guía son propias de las implementaciones GNU o de los proyectos indicados. En BusyBox, macOS u otros Unix pueden cambiar: consulta man en ese sistema.
2. Contexto y archivos: comandos 01-10
Empieza siempre por responder «¿dónde estoy?» y «¿qué voy a tocar?». Esta decena reduce los errores de ruta y evita tratar una extensión, una fecha o un permiso como verdad absoluta.
pwdConfirma el directorio de trabajo antes de leer, copiar o borrar nada.
Comando 01 pwdCómo leerlo: La salida debe ser una ruta absoluta, por ejemplo /home/analista/cubix-lab.
lsLista contenido y, con -la, muestra ocultos, permisos, propietario, tamaño y fecha.
Comando 02 ls -la --time-style=long-iso ~/cubix-labCómo leerlo: La primera columna son permisos; las entradas que empiezan por punto están ocultas.
mkdirCrea el espacio de trabajo sin fallar si los directorios padre aún no existen.
Comando 03 mkdir -p ~/cubix-lab/evidenciaCómo leerlo: No muestra salida cuando tiene éxito; ls -ld ~/cubix-lab/evidencia lo confirma.
cdCambia el contexto de la shell a una ruta conocida.
Comando 04 cd ~/cubix-labCómo leerlo: Tampoco imprime al acertar: ejecuta pwd después para verificar el destino.
cpTrabaja sobre una copia y conserva las marcas de tiempo cuando son parte de la evidencia.
Comando 05 cp --preserve=timestamps /etc/os-release ~/cubix-lab/evidencia/sistema.txtCómo leerlo: El archivo de destino debe existir y mantener las fechas del original.
mvMueve o renombra; --no-clobber evita reemplazar un destino existente.
Comando 06 mv --no-clobber ~/cubix-lab/evidencia/sistema.txt ~/cubix-lab/evidencia/sistema-base.txtCómo leerlo: El nombre anterior desaparece y el nuevo aparece; si ya existía, no se sobrescribe.
rmElimina un archivo explícito; -i obliga a confirmar la decisión.
Comando 07 rm -i ~/cubix-lab/evidencia/copia-temporal.txtCómo leerlo: Responde y solo continúa si la ruta mostrada es exactamente la copia desechable.
Precaución: No uses rm -rf, comodines ni rutas construidas con variables mientras aprendes. La papelera no interviene.
findLocaliza archivos por ruta, tipo, nombre y tiempo sin depender de un índice previo.
Comando 08 find /var/log -maxdepth 2 -type f -name '*.log' -mtime -1Cómo leerlo: Cada línea es una coincidencia modificada en el último día; «Permission denied» es un límite, no un hallazgo.
fileEstima el tipo por el contenido en vez de confiar en la extensión.
Comando 09 file ~/cubix-lab/evidencia/sistema-base.txtCómo leerlo: Esperas texto ASCII o Unicode; «data» solo significa que no reconoció un formato más específico.
statObtiene tamaño, permisos y marcas de tiempo precisas de un artefacto.
Comando 10 stat --format='%n | %s bytes | %y | %a' ~/cubix-lab/evidencia/sistema-base.txtCómo leerlo: Lee nombre, tamaño, modificación y modo; una fecha por sí sola no demuestra quién cambió el archivo.
3. Leer, reducir y conservar texto: comandos 11-20
Un análisis útil rara vez consiste en volcar todo. Primero conserva la fuente; después toma una muestra, filtra, ordena, cuenta y guarda el resultado. Cada tubería debe poder explicarse de izquierda a derecha.
catMuestra archivos pequeños completos y resulta útil al encadenar salida hacia otra herramienta.
Comando 11 cat /etc/os-releaseCómo leerlo: NAME, VERSION y otros pares clave-valor describen la distribución, no necesariamente el kernel.
lessRecorre texto grande sin cargarlo entero en una pantalla ni modificarlo.
Comando 12 less /etc/servicesCómo leerlo: Usa /ssh para buscar, n para la siguiente coincidencia y q para salir.
headToma una muestra del comienzo de un archivo o flujo.
Comando 13 head -n 20 /etc/servicesCómo leerlo: Verás como máximo veinte líneas; no infieras el contenido del resto a partir de esa muestra.
tailMuestra el final, donde suelen aparecer los eventos más recientes de un registro cronológico.
Comando 14 tail -n 20 /etc/servicesCómo leerlo: Son las últimas veinte líneas del archivo, no necesariamente los últimos veinte eventos temporales.
grepFiltra líneas con un patrón y añade el número de línea para volver a la fuente.
Comando 15 grep -nE '^ssh[[:space:]]' /etc/servicesCómo leerlo: Una coincidencia confirma texto, no que el servicio SSH esté activo; para eso usarás ss.
sortOrdena líneas para comparar datos y preparar una deduplicación fiable.
Comando 16 grep -Ev '^(#|$)' /etc/services | sortCómo leerlo: La salida está ordenada según la configuración regional; aún puede contener duplicados.
uniqAgrupa líneas adyacentes repetidas; por eso normalmente recibe antes la salida de sort.
Comando 17 grep -Ev '^(#|$)' /etc/services | sort | uniq -cCómo leerlo: El número inicial indica repeticiones consecutivas, no frecuencia si omitiste ordenar.
wcCuenta líneas para medir un conjunto y detectar cambios rápidos entre capturas.
Comando 18 grep -Ev '^(#|$)' /etc/services | wc -lCómo leerlo: Obtienes un total, no el detalle; conserva también la fuente si el número servirá como evidencia.
teeMuestra un resultado y lo guarda a la vez, evitando perder contexto durante la sesión.
Comando 19 ip -brief address | tee ~/cubix-lab/evidencia/red.txtCómo leerlo: La misma salida aparece en pantalla y en red.txt; sin -a, un archivo existente se reemplaza.
sha256sumCalcula una huella para comprobar después si un artefacto cambió.
Comando 20 sha256sum ~/cubix-lab/evidencia/red.txtCómo leerlo: El hash identifica ese contenido concreto; no prueba por sí solo su origen ni su veracidad.
4. Identidad y procesos: comandos 21-24
Antes de interpretar procesos, confirma tu identidad efectiva. Los listados son fotografías: cambian mientras los observas y necesitan contexto temporal. Aquí no se mata, migra ni modifica ningún proceso.
idAclara con qué usuario, UID, grupo primario y grupos suplementarios estás operando.
Comando 21 idCómo leerlo: Compara uid, gid y groups con el alcance concedido; pertenecer a un grupo puede ampliar acceso.
chmodReduce quién puede leer o escribir un archivo de evidencia.
Comando 22 chmod 600 ~/cubix-lab/evidencia/red.txtCómo leerlo: El propietario conserva lectura y escritura; grupo y resto quedan sin permisos.
Precaución: Anota el modo anterior con stat. Si era correcto y necesitas restaurarlo, aplica explícitamente ese modo, no uno supuesto.
psToma una fotografía de procesos y los ordena por consumo de CPU.
Comando 23 ps aux --sort=-%cpuCómo leerlo: PID identifica el proceso; %CPU es una medición contextual y un valor alto aislado no demuestra actividad maliciosa.
pgrepBusca procesos por nombre y muestra PID junto a la línea de ejecución.
Comando 24 pgrep -a sshCómo leerlo: Sin salida suele significar que no encontró coincidencias; comprueba el nombre antes de concluir que no existe.
5. Red y ayuda autónoma: comandos 25-30
Separa configuración local, sockets, conectividad, DNS y aplicación. Que una capa funcione no confirma las siguientes. example.com es un dominio reservado para documentación; en un laboratorio aislado, sustitúyelo por el nombre o la IP privada autorizada.
ipResume interfaces y direcciones con la herramienta mantenida de iproute2.
Comando 25 ip -brief addressCómo leerlo: UP describe estado de la interfaz; una dirección asignada no garantiza conectividad con otro host.
ssEnumera sockets en escucha y separa TCP, UDP, direcciones y puertos numéricos.
Comando 26 ss -lntupCómo leerlo: Local Address:Port indica dónde escucha; los datos de proceso pueden faltar sin permisos suficientes.
pingComprueba localmente el intercambio ICMP y mide pérdida y tiempo de ida y vuelta.
Comando 27 ping -c 4 127.0.0.1Cómo leerlo: Cuatro respuestas y 0% de pérdida validan la pila local; un host remoto puede bloquear ICMP y seguir disponible.
digConsulta DNS y permite separar la respuesta del resolvedor de otras capas de red.
Comando 28 dig example.com A +noall +answerCómo leerlo: ANSWER muestra registros recibidos; ausencia de respuesta requiere revisar estado, servidor consultado y conectividad.
curlRealiza una solicitud controlada y, con --head, inspecciona solo las cabeceras HTTP.
Comando 29 curl --fail --silent --show-error --head https://example.com/Cómo leerlo: La primera línea contiene el estado HTTP; --fail hace que errores 400 o superiores produzcan un fallo detectable.
manConvierte la propia máquina en la referencia principal de la versión instalada.
Comando 30 man ssCómo leerlo: Busca con /LISTEN, avanza con n y sal con q; SYNOPSIS separa opciones de argumentos.
6. Ejercicio final: inventario mínimo y verificable
Ejecuta este bloque en la VM. Produce cuatro archivos dentro de ~/cubix-lab/evidencia: identidad, red, sockets y hashes. No necesita sudo; si una asociación de proceso no aparece en ss, regístralo como límite en vez de ampliar privilegios.
mkdir -p ~/cubix-lab/evidenciaid | tee ~/cubix-lab/evidencia/identidad.txtip -brief address | tee ~/cubix-lab/evidencia/red.txtss -lntup | tee ~/cubix-lab/evidencia/escucha.txtsha256sum ~/cubix-lab/evidencia/identidad.txt ~/cubix-lab/evidencia/red.txt ~/cubix-lab/evidencia/escucha.txt | tee ~/cubix-lab/evidencia/hashes.sha256sha256sum --check ~/cubix-lab/evidencia/hashes.sha256El cierre correcto muestra OK para los tres archivos. Abre cada uno con less y escribe tres conclusiones separadas: qué observaste, qué infieres y qué dato falta para confirmarlo. Si repites la captura, un hash distinto indica contenido distinto; no explica la causa del cambio.
7. Errores habituales, recuperación y checklist
Copiar sin mirar la ruta
Ejecuta pwd y ls antes de cp, mv o rm. Prefiere rutas completas en cualquier acción que cambie archivos.
Ocultar todos los errores
No envíes stderr a /dev/null por costumbre: «Permission denied» y «No such file» explican el límite.
Confundir silencio con éxito
Muchos comandos no imprimen al acertar. Verifica la ruta, el modo o el archivo producido.
Tratar salida como veredicto
Correlaciona proceso, socket y solicitud. Una coincidencia de texto rara vez basta para un hallazgo.
- Puedo explicar qué consulta o cambia cada uno de los 30 comandos.
- Sé salir de less y man con q y detener ping continuo con Ctrl+C.
- No he usado sudo para saltar un límite de alcance.
- He conservado identidad.txt, red.txt, escucha.txt y hashes.sha256.
- Los tres archivos pasan sha256sum --check sin modificaciones posteriores.
- Mis conclusiones separan observación, inferencia y dato pendiente.
Glosario
Ruta absoluta
Ruta que empieza en la raíz / y localiza un objeto sin depender del directorio actual.
Salida estándar (stdout)
Canal principal por el que un programa entrega sus resultados normales.
Error estándar (stderr)
Canal separado que un programa usa para avisos y errores de ejecución.
Tubería (pipe)
Operador | de la shell que conecta la salida de un proceso con la entrada del siguiente.
PID
Identificador numérico que Linux asigna a un proceso mientras existe.
Socket
Extremo de comunicación asociado a un protocolo, una dirección y, cuando procede, un puerto.
Proceso en escucha
Proceso con un socket preparado para aceptar tráfico entrante en una dirección y puerto.
Hash SHA-256
Huella de 256 bits usada para detectar si el contenido de un archivo ha cambiado.