🚀 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.
¿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.
¿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.
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.
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.
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.
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.3Entender 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/documentosRuta relativa
Se calcula desde donde estás ahora. Usa .. para subir y . para el directorio actual.
cd ../../etc/passwdDirectorio home (~)
El símbolo ~ es siempre un atajo a tu directorio de usuario, sin importar dónde estés.
ls ~/.sshGlobbing (comodines)
* cualquier texto, ? un solo carácter. Potente para operar en múltiples archivos.
ls /var/log/*.log/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.txtmkdir
Crea directorios. Con -p crea toda la ruta de una vez, sin errores si ya existe.
mkdir -p proyecto/src/libcp
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.txtrm
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/nullrm -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/passwdless
Navegación interactiva en archivos largos. Usa q para salir, /texto para buscar.
less /var/log/sysloghead / tail
head primeras líneas, tail -f sigue el archivo en tiempo real. Ideal para logs.
tail -f /var/log/auth.loggrep
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/hostswc
Cuenta líneas, palabras y caracteres de un archivo. Útil para analizar outputs largos.
wc -l archivo.txt⚡ Pipes y Redirección
LPI 3.2Los 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.
| Operador | Nombre | Función | Ejemplo |
|---|---|---|---|
| | | Pipe | Pasa la salida de un comando como entrada del siguiente | ps aux | grep nginx |
| > | Redirección salida | Guarda la salida en un archivo (sobreescribe) | ls -la > lista.txt |
| >> | Append | Agrega la salida al final de un archivo existente | echo "ok" >> log.txt |
| < | Redirección entrada | Toma el contenido de un archivo como entrada | sort < datos.txt |
| 2> | Stderr | Redirige los errores a un archivo | find / -name x 2>/dev/null |
| && | AND lógico | Ejecuta el segundo comando solo si el primero tuvo éxito | mkdir dir && cd dir |
| || | OR lógico | Ejecuta 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 apache2Ejemplo 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 -10Ejemplo 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.1Las 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 PATHecho $VARIABLE
Muestra el valor de una variable. Las variables de entorno van en mayúsculas por convención.
echo $HOME && echo $USERexport
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 $PATHVariables ú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.3Un 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.shDar permisos y ejecutar
El script necesita permiso de ejecución antes de poder correrlo.
chmod +x mi_script.sh && ./mi_script.shVariables 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"; fiBucle for
Itera sobre una lista de elementos. Muy usado para automatizar operaciones sobre múltiples archivos.
for f in *.txt; do echo "$f"; doneCódigo de salida $?
0 = éxito, cualquier otro valor = error. Verifica si el comando anterior funcionó.
ping -c1 host; echo "Salida: $?"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.
whoamiid
Muestra UID, GID y grupos. Revela si tienes privilegios o perteneces a grupos especiales.
iduname
Información del kernel y arquitectura. Útil para buscar exploits específicos de versión.
uname -ahistory
Historial de comandos ejecutados. En post-explotación puede revelar credenciales o rutas sensibles.
history | grep -i passdf -h
Espacio disponible en disco por partición en formato legible.
df -hman
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 auxtop / htop
Monitor en tiempo real. htop es más visual. Usa q para salir.
htopkill
Termina un proceso por PID. Con -9 fuerza el cierre inmediato sin limpieza.
kill -9 1234pgrep / 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 aping
Verifica conectividad y mide latencia. Con -c 4 envía solo 4 paquetes.
ping -c 4 8.8.8.8ss
Lista puertos abiertos y conexiones activas. Con -tulnp muestra servicio y proceso asociado.
ss -tulnpcurl
Realiza peticiones HTTP. Con -I solo cabeceras, con -s silencioso. Básico para interactuar con APIs.
curl -I https://target.comwget
Descarga archivos desde internet directamente al disco. Ideal para transferir herramientas al objetivo.
wget https://url/archivo -O salidanslookup / 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.shchown
Cambia propietario y/o grupo de un archivo. Requiere sudo.
sudo chown user:grupo archivosudo
Ejecuta como administrador. Verifica qué puedes ejecutar con sudo -l.
sudo -lfind SUID
Localiza binarios con bit SUID activo — los que se ejecutan con permisos del propietario.
find / -perm -4000 2>/dev/nullCada archivo tiene tres bloques de tres bits: Propietario · Grupo · Otros. Cada bit representa lectura (r=4), escritura (w=2) y ejecución (x=1).
| Binario | Octal | Simbólico | Significado |
|---|---|---|---|
| 000 | 0 | --- | Sin ningún permiso |
| 001 | 1 | --x | Solo ejecución |
| 010 | 2 | -w- | Solo escritura |
| 011 | 3 | -wx | Escritura + Ejecución |
| 100 | 4 | r-- | Solo lectura |
| 101 | 5 | r-x | Lectura + Ejecución |
| 110 | 6 | rw- | Lectura + Escritura |
| 111 | 7 | rwx | Acceso completo |
🧮 Calculadora Interactiva chmod
👤 Usuarios y Grupos
LPI 5.1 · 5.2Linux 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/shadowadduser / useradd
Crea un nuevo usuario. adduser es interactivo y más amigable en distros Debian/Ubuntu.
sudo adduser nuevo_usuariopasswd
Cambia la contraseña del usuario actual o de otro usuario si eres root.
sudo passwd usuariogroups / id
Muestra los grupos a los que pertenece el usuario. El grupo sudo o wheel indica privilegios de administrador.
groups && idsu
Cambia al usuario especificado. Con su - carga también el entorno completo del usuario destino.
su - usuariosudo -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
Directorio
Contiene otros archivos o directorios.drwxr-xr-x carpeta/
Enlace simbólico
Acceso directo que apunta a otra ruta.lrwxrwxrwx link → /ruta
Dispositivo chars
Datos carácter a carácter. Ej: terminales.crw-rw-rw- /dev/tty
Dispositivo bloques
Discos y particiones. Datos en bloques.brw-rw---- /dev/sda
Socket
Comunicación IPC entre procesos locales.srwxrwxrwx /run/app.sock
Pipe (FIFO)
Canal de datos en tiempo real entre procesos.prw-r--r-- /tmp/mififo
📦 Compresión y Archivado
LPI 3.1Comprimir 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.gzzip / 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 -yapt remove
Desinstala. Con --purge elimina también archivos de configuración.
sudo apt remove --purge nombreapt update
Actualiza la lista de paquetes disponibles desde los repositorios. No instala nada aún.
sudo apt updateapt 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 updateActualizar todo
Actualiza todos los paquetes instalados a sus últimas versiones disponibles.
sudo apt update && sudo apt full-upgrade -yLimpiar sistema
Elimina paquetes huérfanos y libera espacio en disco.
sudo apt autoremove -y && sudo apt autocleanZona horaria
Configura la zona horaria. Ajusta según tu país de referencia.
sudo timedatectl set-timezone America/BogotaTeclado e idioma
Configura distribución del teclado y locales del sistema.
sudo dpkg-reconfigure keyboard-configurationReiniciar
Reinicia el sistema para aplicar cambios del kernel u otros servicios.
sudo reboot