🚀 Flujo Básico de Trabajo

Antes de memorizar comandos sueltos, entiende el flujo. Todo operador en terminal repite estos pasos cada sesión, consciente o no.

1

¿Dónde estoy y quién soy?

Ubícate con pwd e identifica tu usuario con whoami e id. En pentesting esto es lo primero que corres tras obtener acceso.

2

¿Qué hay aquí?

Examina el entorno con ls -la. Muestra archivos ocultos, permisos y propietarios. Un solo archivo con permisos mal configurados puede cambiarlo todo.

3

Navegar y operar

Muévete con cd ruta, crea con mkdir y touch, edita con nano. Aprende las rutas absolutas y relativas — marcan la diferencia en scripts.

4

Buscar con precisión

Usa find / -name archivo por nombre. Combina con grep para filtrar contenido. En reconocimiento, estos dos comandos juntos son tu escáner interno.

5

Redirigir y encadenar

Usa | para pasar salida entre comandos, > para guardar en archivo y >> para agregar. Dominar esto multiplica lo que puedes hacer con una sola línea.

6

Verificar red y permisos

Revisa interfaces con ip a, puertos con ss -tulnp y permisos críticos con find / -perm -4000 2>/dev/null para detectar binarios SUID.

🗺️ Rutas Absolutas y Relativas

LPI 2.3

Entender la diferencia entre rutas absolutas y relativas es crítico para escribir scripts que funcionen en cualquier entorno, no solo en tu máquina.

Ruta absoluta

Siempre empieza desde la raíz /. Funciona desde cualquier directorio donde estés.

cd /home/usuario/documentos

Ruta relativa

Se calcula desde donde estás ahora. Usa .. para subir y . para el directorio actual.

cd ../../etc/passwd

Directorio home (~)

El símbolo ~ es siempre un atajo a tu directorio de usuario, sin importar dónde estés.

ls ~/.ssh

Globbing (comodines)

* cualquier texto, ? un solo carácter. Potente para operar en múltiples archivos.

ls /var/log/*.log
Tip pentesting: conocer las rutas del sistema de archivos Linux (FHS) es clave. Los archivos más interesantes están en /etc/passwd, /etc/shadow, /var/log/ y /tmp/.

📄 Gestión de Archivos

Crear, copiar, mover y eliminar archivos son operaciones diarias. Conocer las opciones menos obvias te ahorra tiempo y errores.

touch

Crea un archivo vacío. Si ya existe, actualiza su timestamp de modificación.

touch archivo.txt

mkdir

Crea directorios. Con -p crea toda la ruta de una vez, sin errores si ya existe.

mkdir -p proyecto/src/lib

cp

Copia archivos o directorios. Con -r copia carpetas completas de forma recursiva.

cp -r carpeta/ backup/

mv

Mueve o renombra. Si el destino es otro nombre en el mismo directorio, simplemente renombra.

mv viejo.txt nuevo.txt

rm

Elimina archivos. Con -r borra carpetas, con -f sin confirmación. Irreversible.

rm -rf carpeta/

find

Busca por nombre, permisos, tipo o dueño. Fundamental en reconocimiento de sistemas.

find / -perm -4000 2>/dev/null
Cuidado: rm -rf / elimina todo el sistema de archivos sin confirmación. Nunca lo ejecutes en producción o sin entender bien la ruta de destino.

📝 Leer y Editar Archivos

Saber leer archivos rápido es esencial en análisis forense, revisión de logs y explotación. Cada herramienta tiene su momento ideal.

cat

Muestra el contenido completo. Útil para leer flags, configs o archivos cortos.

cat /etc/passwd

less

Navegación interactiva en archivos largos. Usa q para salir, /texto para buscar.

less /var/log/syslog

head / tail

head primeras líneas, tail -f sigue el archivo en tiempo real. Ideal para logs.

tail -f /var/log/auth.log

grep

Filtra por patrón. Con -r busca recursivo, -i ignora mayúsculas, -n muestra número de línea.

grep -rn "password" /etc/

nano

Editor simple en terminal. Ctrl+O guarda, Ctrl+X sale, Ctrl+W busca.

nano /etc/hosts

wc

Cuenta líneas, palabras y caracteres de un archivo. Útil para analizar outputs largos.

wc -l archivo.txt

⚡ Pipes y Redirección

LPI 3.2

Los pipes y la redirección son donde la terminal se vuelve poderosa. Permiten encadenar comandos y controlar el flujo de datos entre programas y archivos.

OperadorNombreFunciónEjemplo
|PipePasa la salida de un comando como entrada del siguienteps aux | grep nginx
>Redirección salidaGuarda la salida en un archivo (sobreescribe)ls -la > lista.txt
>>AppendAgrega la salida al final de un archivo existenteecho "ok" >> log.txt
<Redirección entradaToma el contenido de un archivo como entradasort < datos.txt
2>StderrRedirige los errores a un archivofind / -name x 2>/dev/null
&&AND lógicoEjecuta el segundo comando solo si el primero tuvo éxitomkdir dir && cd dir
||OR lógicoEjecuta el segundo comando si el primero fallóping host || echo "down"

Ejemplo práctico 1

Buscar procesos con un nombre específico usando pipe entre ps y grep.

ps aux | grep apache2

Ejemplo práctico 2

Encontrar los 10 archivos más grandes del sistema, ignorando errores de permiso.

find / -type f 2>/dev/null | xargs ls -s | sort -n | tail -10

Ejemplo pentesting

Buscar binarios SUID en el sistema y guardar los resultados en un archivo para analizarlos.

find / -perm -4000 2>/dev/null | tee suid.txt

🔧 Variables de Entorno

LPI 2.1

Las variables de entorno controlan el comportamiento del sistema y los programas. Conocerlas te ayuda a entender cómo funciona el shell y a escribir mejores scripts.

env / printenv

Lista todas las variables de entorno activas en la sesión actual.

env | grep PATH

echo $VARIABLE

Muestra el valor de una variable. Las variables de entorno van en mayúsculas por convención.

echo $HOME && echo $USER

export

Crea o exporta una variable para que esté disponible en procesos hijos del shell.

export MI_VAR="valor"

$PATH

Define los directorios donde el sistema busca ejecutables. Clave para entender qué comandos están disponibles.

echo $PATH

Variables útiles

$HOME directorio del usuario, $SHELL shell actual, $PWD directorio presente, $? código de salida del último comando.

echo "Salió con: $?"

unset

Elimina una variable de entorno de la sesión actual.

unset MI_VAR

📜 Scripting Básico en Bash

LPI 3.3

Un script de Bash es una lista de comandos en un archivo que el sistema ejecuta en secuencia. Automatizar tareas repetitivas es una habilidad fundamental en ciberseguridad.

Crear un script

La primera línea #!/bin/bash (shebang) le dice al sistema qué intérprete usar.

echo '#!/bin/bash' > mi_script.sh

Dar permisos y ejecutar

El script necesita permiso de ejecución antes de poder correrlo.

chmod +x mi_script.sh && ./mi_script.sh

Variables en script

Asigna sin espacios alrededor del =. Usa "$var" con comillas para evitar problemas con espacios.

NOMBRE="Hector" && echo "Hola $NOMBRE"

Condicional if

Ejecuta comandos dependiendo de una condición. Usa -f para archivos, -d para directorios.

if [ -f archivo.txt ]; then echo "existe"; fi

Bucle for

Itera sobre una lista de elementos. Muy usado para automatizar operaciones sobre múltiples archivos.

for f in *.txt; do echo "$f"; done

Código de salida $?

0 = éxito, cualquier otro valor = error. Verifica si el comando anterior funcionó.

ping -c1 host; echo "Salida: $?"
Tip: usa bash -x mi_script.sh para ejecutar un script en modo debug. Muestra cada línea antes de ejecutarla, ideal para encontrar errores.

⚙️ Información del Sistema

Conocer el estado del sistema es el primer paso en cualquier auditoría. Estos comandos te dan el contexto que necesitas.

whoami

Usuario actual. En pentesting, lo primero tras obtener acceso a una shell.

whoami

id

Muestra UID, GID y grupos. Revela si tienes privilegios o perteneces a grupos especiales.

id

uname

Información del kernel y arquitectura. Útil para buscar exploits específicos de versión.

uname -a

history

Historial de comandos ejecutados. En post-explotación puede revelar credenciales o rutas sensibles.

history | grep -i pass

df -h

Espacio disponible en disco por partición en formato legible.

df -h

man

Manual completo de cualquier comando. El mejor recurso offline del sistema.

man chmod

🧠 Gestión de Procesos

Los procesos son programas en ejecución. Saber listarlos, filtrarlos y terminarlos es esencial tanto en administración como en post-explotación.

ps

Lista procesos activos. Con aux muestra todos los del sistema con usuario, PID y comando completo.

ps aux

top / htop

Monitor en tiempo real. htop es más visual. Usa q para salir.

htop

kill

Termina un proceso por PID. Con -9 fuerza el cierre inmediato sin limpieza.

kill -9 1234

pgrep / pkill

Busca o mata procesos por nombre en lugar de PID. Más cómodo que buscar el número primero.

pkill -f nombre_proceso

🌐 Red y Conectividad

El reconocimiento de red desde dentro de un sistema es parte del flujo de trabajo en pentesting interno. Estos comandos te dan visibilidad inmediata.

ip a

Muestra interfaces de red, IPs asignadas y estado. Reemplaza al antiguo ifconfig.

ip a

ping

Verifica conectividad y mide latencia. Con -c 4 envía solo 4 paquetes.

ping -c 4 8.8.8.8

ss

Lista puertos abiertos y conexiones activas. Con -tulnp muestra servicio y proceso asociado.

ss -tulnp

curl

Realiza peticiones HTTP. Con -I solo cabeceras, con -s silencioso. Básico para interactuar con APIs.

curl -I https://target.com

wget

Descarga archivos desde internet directamente al disco. Ideal para transferir herramientas al objetivo.

wget https://url/archivo -O salida

nslookup / dig

Consulta registros DNS. dig da más detalle. Primer paso en reconocimiento pasivo de dominio.

dig +short dominio.com ANY

🔐 Permisos y Propietarios

El sistema de permisos de Linux controla quién puede leer, escribir o ejecutar cada archivo. Entenderlo es fundamental tanto para administración como para escalada de privilegios.

chmod

Modifica permisos. Acepta forma octal (755) o simbólica (u+x).

chmod 755 script.sh

chown

Cambia propietario y/o grupo de un archivo. Requiere sudo.

sudo chown user:grupo archivo

sudo

Ejecuta como administrador. Verifica qué puedes ejecutar con sudo -l.

sudo -l

find SUID

Localiza binarios con bit SUID activo — los que se ejecutan con permisos del propietario.

find / -perm -4000 2>/dev/null

Cada archivo tiene tres bloques de tres bits: Propietario · Grupo · Otros. Cada bit representa lectura (r=4), escritura (w=2) y ejecución (x=1).

BinarioOctalSimbólicoSignificado
0000---Sin ningún permiso
0011--xSolo ejecución
0102-w-Solo escritura
0113-wxEscritura + Ejecución
1004r--Solo lectura
1015r-xLectura + Ejecución
1106rw-Lectura + Escritura
1117rwxAcceso completo

🧮 Calculadora Interactiva chmod

Propietario (u)
Grupo (g)
Otros (o)
chmod 000 archivo
---------- → Sin permisos asignados

👤 Usuarios y Grupos

LPI 5.1 · 5.2

Linux distingue tres tipos de cuentas con diferentes niveles de acceso. Entender esta jerarquía es clave para comprender la superficie de ataque de un sistema.

👑

Root (UID 0)

Superusuario con control total del sistema. Puede leer, escribir y ejecutar cualquier archivo sin restricciones. El objetivo final en escalada de privilegios.

🧑‍💻

Usuario regular

Tiene acceso limitado a su propio directorio home y a recursos compartidos. Necesita sudo para tareas administrativas.

⚙️

Cuentas de sistema

Usadas por servicios y daemons (nginx, mysql, www-data). No tienen login interactivo. Su compromiso puede dar acceso a servicios críticos.

/etc/passwd

Archivo con información de todas las cuentas del sistema. Legible por todos. Contiene UID, GID, home y shell de cada usuario.

cat /etc/passwd | cut -d: -f1

/etc/shadow

Contraseñas hasheadas. Solo accesible por root. Si puedes leerlo, las contraseñas se pueden intentar crackear.

sudo cat /etc/shadow

adduser / useradd

Crea un nuevo usuario. adduser es interactivo y más amigable en distros Debian/Ubuntu.

sudo adduser nuevo_usuario

passwd

Cambia la contraseña del usuario actual o de otro usuario si eres root.

sudo passwd usuario

groups / id

Muestra los grupos a los que pertenece el usuario. El grupo sudo o wheel indica privilegios de administrador.

groups && id

su

Cambia al usuario especificado. Con su - carga también el entorno completo del usuario destino.

su - usuario
Tip pentesting: revisa siempre sudo -l tras obtener acceso. Muestra qué comandos puedes ejecutar como root sin contraseña — muchos vectores de escalada pasan por aquí.

🗂️ Tipos de Archivo

El primer carácter de ls -la indica el tipo de archivo. En un sistema Linux todo es un archivo — entender los tipos te ayuda a saber con qué estás interactuando.

-

Archivo regular

Texto, binarios, scripts. El tipo más común.
-rw-r--r-- archivo.txt

d

Directorio

Contiene otros archivos o directorios.
drwxr-xr-x carpeta/

l

Enlace simbólico

Acceso directo que apunta a otra ruta.
lrwxrwxrwx link → /ruta

c

Dispositivo chars

Datos carácter a carácter. Ej: terminales.
crw-rw-rw- /dev/tty

b

Dispositivo bloques

Discos y particiones. Datos en bloques.
brw-rw---- /dev/sda

s

Socket

Comunicación IPC entre procesos locales.
srwxrwxrwx /run/app.sock

p

Pipe (FIFO)

Canal de datos en tiempo real entre procesos.
prw-r--r-- /tmp/mififo

📦 Compresión y Archivado

LPI 3.1

Comprimir y archivar archivos es esencial para transferir datos, crear backups o empaquetar herramientas. El formato tar.gz es el más común en Linux.

tar — crear

Crea un archivo comprimido con gzip. -c crear, -v verbose, -z gzip, -f archivo.

tar -cvzf backup.tar.gz carpeta/

tar — extraer

Extrae el contenido de un archivo tar.gz en el directorio actual.

tar -xvzf backup.tar.gz

zip / unzip

Formato compatible con Windows. Útil para intercambiar archivos entre sistemas.

zip -r archivo.zip carpeta/

gzip / gunzip

Comprime o descomprime un solo archivo. Más rápido que zip para archivos grandes.

gzip archivo.txt

📥 Gestión de Paquetes (apt)

APT es el gestor de paquetes de sistemas Debian/Ubuntu/Kali. Todo lo que instalas, actualizas o eliminas pasa por aquí.

apt install

Instala un programa desde los repositorios configurados.

sudo apt install nmap -y

apt remove

Desinstala. Con --purge elimina también archivos de configuración.

sudo apt remove --purge nombre

apt update

Actualiza la lista de paquetes disponibles desde los repositorios. No instala nada aún.

sudo apt update

apt search

Busca paquetes por nombre o descripción en los repositorios.

apt search nombre

🛠️ Configuración Inicial Kali Linux

Comandos esenciales para dejar Kali listo después de una instalación fresca o cuando los repositorios dan problemas.

Reparar GPG (repos)

Arregla errores de clave GPG vencida en los repositorios oficiales de Kali.

sudo rm -rf /etc/apt/trusted.gpg.d/kali* && sudo curl -fsSL https://archive.kali.org/archive-key.asc | sudo gpg --dearmor -o /usr/share/keyrings/kali-archive-keyring.gpg && sudo apt update

Actualizar todo

Actualiza todos los paquetes instalados a sus últimas versiones disponibles.

sudo apt update && sudo apt full-upgrade -y

Limpiar sistema

Elimina paquetes huérfanos y libera espacio en disco.

sudo apt autoremove -y && sudo apt autoclean

Zona horaria

Configura la zona horaria. Ajusta según tu país de referencia.

sudo timedatectl set-timezone America/Bogota

Teclado e idioma

Configura distribución del teclado y locales del sistema.

sudo dpkg-reconfigure keyboard-configuration

Reiniciar

Reinicia el sistema para aplicar cambios del kernel u otros servicios.

sudo reboot