🔄 TMUX: Terminal MUltipleXer

¿Qué es TMUX?

Tmux es un multiplexor de terminal que permite ejecutar y gestionar múltiples sesiones de terminal dentro de una sola ventana. Facilita el trabajo con varias tareas simultáneas, mantener sesiones activas aunque te desconectes, y organizar tu flujo de trabajo de pentesting.

🎯 Propósito y utilidad en ciberseguridad

Casos de uso en hacking/pentesting

  • Mantener procesos de escaneo (Nmap, dirbusting) mientras trabajas en otras tareas
  • Preservar sesiones remotas en servidores comprometidos aunque pierdas conexión
  • Organizar múltiples shells en una máquina víctima
  • Documentar hallazgos mientras ejecutas herramientas simultáneamente

📋 Conceptos básicos de TMUX

Tmux organiza su estructura en tres niveles jerárquicos:

graph TD
    A[Sesiones] --> B[Ventanas]
    B --> C[Paneles]
    
    style A fill:#4c9df5,stroke:#333,stroke-width:2px
    style B fill:#f5ad4c,stroke:#333,stroke-width:2px
    style C fill:#f56c4c,stroke:#333,stroke-width:2px
  • Sesión: Entorno independiente con su propio conjunto de ventanas
  • Ventana: Similar a una pestaña en un navegador
  • Panel: Divisiones dentro de una ventana (splits)

Tecla de prefijo

La mayoría de comandos en tmux requieren primero pulsar el prefijo (por defecto Ctrl+b). En esta guía se asume que ese es tu prefijo.


🔰 Primeros pasos con TMUX

Instalación

# Debian/Ubuntu/Kali
sudo apt install tmux
 
# Arch
sudo pacman -S tmux
 
# macOS
brew install tmux

Comandos esenciales

AcciónComandoDescripción
Iniciar tmuxtmuxCrea e inicia una nueva sesión
Iniciar con nombretmux new -s hacksessionCrea sesión con nombre específico
Listar sesionestmux lsMuestra todas las sesiones activas
Conectarse a sesióntmux attach -t hacksessionConecta a una sesión existente
DesconectarsePrefijo + dDesconecta de la sesión actual (detach)
Matar sesióntmux kill-session -t hacksessionElimina una sesión específica

Flujo básico

  1. Crea sesión: tmux new -s enum
  2. Ejecuta comandos, organiza ventanas/paneles
  3. Desconecta con Ctrl+b d sin interrumpir procesos
  4. Reconecta más tarde: tmux attach -t enum

🪟 Gestión de ventanas y paneles

Manejo de paneles (splits)

Paneles

Los paneles permiten dividir una ventana en múltiples secciones, ideal para monitorear varias herramientas simultáneamente.

# Después de presionar el prefijo (Ctrl+b):
% # Divide el panel verticalmente (izquierda/derecha)
" # Divide el panel horizontalmente (arriba/abajo)
AcciónAtajoDescripción
División verticalPrefijo + %Crea panel a la derecha
División horizontalPrefijo + "Crea panel abajo
Navegar entre panelesPrefijo + ←↑→↓Moverse con flechas
Cerrar panelexit o Ctrl+dCierra el panel actual
Redimensionar panelPrefijo + Ctrl+←↑→↓Ajustar tamaño
Maximizar/restaurar panelPrefijo + zEnfoca un panel
Ver diseños predefinidosPrefijo + SpaceCicla entre layouts

Gestión de ventanas

Ventanas

Similar a pestañas en un navegador, útil para separar contextos de trabajo (reconocimiento, explotación, post-explotación).

AcciónAtajoDescripción
Nueva ventanaPrefijo + cCrea ventana nueva
Cambiar entre ventanasPrefijo + n/pSiguiente/anterior
Ir a ventana específicaPrefijo + 0-9Salto directo por número
Renombrar ventanaPrefijo + ,Cambiar nombre
Listar ventanasPrefijo + wMuestra todas las ventanas
Buscar ventanaPrefijo + fBusca por contenido

💻 Ejemplos prácticos para hacking

Ejemplo 1: Múltiples escaneos en una máquina objetivo

graph TB
    subgraph "Sesión: recon"
    A["Ventana 1: Target"]
    A -->|Panel 1| B[Nmap completo]
    A -->|Panel 2| C[Enumeración HTTP]
    A -->|Panel 3| D[Monitor tráfico]
    end

Paso a paso:

# Crear una sesión para reconocimiento
tmux new -s recon
 
# Dividir la ventana para diferentes escaneos
# Presiona Ctrl+b " para dividir horizontalmente
# Presiona Ctrl+b % para dividir verticalmente
 
# En el panel 1: Escaneo completo
nmap -sC -sV -p- -oA full_scan 10.10.10.10 --open
 
# Moverse al panel 2 (Ctrl+b ↓) y ejecutar:
gobuster dir -u http://10.10.10.10 -w /usr/share/wordlists/dirb/common.txt -o directories.txt
 
# Moverse al panel 3 (Ctrl+b →) y ejecutar:
tcpdump -i tun0 host 10.10.10.10

Ventaja

Puedes desconectarte (Ctrl+b d) y los escaneos seguirán ejecutándose en segundo plano. Luego puedes volver a conectarte con tmux attach -t recon.

Ejemplo 2: Organizando un CTF o ejercicio de penetración

# Crear sesión multipropósito para pentesting
tmux new -s pentest
 
# Crear ventanas temáticas (después de cada comando, presiona Ctrl+b c)
# Ventana 1: Reconocimiento
nmap -sS 10.10.10.0/24
 
# Ventana 2: Explotación (Ctrl+b c para crear nueva ventana)
# Dividir en paneles para listener y exploit
# Ctrl+b % para dividir verticalmente
# Panel izquierdo:
msfconsole -q
# Configuras tu exploit...
 
# Panel derecho (Ctrl+b →): 
nc -lvnp 4444
 
# Ventana 3 (Ctrl+b c): Documentación
mkdir -p ~/pentest/target_X
cd ~/pentest/target_X
nano notas.md
# Aquí documentas hallazgos mientras trabajas

🛠️ Configuración y personalización

Archivo de configuración

Tmux se configura mediante el archivo ~/.tmux.conf:

# Ejemplo de archivo tmux.conf para pentesting
 
# Cambiar prefijo a Ctrl+a (más accesible que Ctrl+b)
unbind C-b
set -g prefix C-a
bind C-a send-prefix
 
# Mejor soporte de colores para herramientas
set -g default-terminal "screen-256color"
 
# División de paneles más intuitiva
bind | split-window -h
bind - split-window -v
unbind '"'
unbind %
 
# Recarga rápida de configuración
bind r source-file ~/.tmux.conf \; display "Configuración recargada!"
 
# Historial más grande para análisis
set -g history-limit 50000
 
# Modo vi para navegación (útil para copiar logs)
setw -g mode-keys vi
 
# Sincronización de paneles (útil para comandos idénticos en múltiples hosts)
bind S setw synchronize-panes
 
# Mostrar actividad en otras ventanas
setw -g monitor-activity on
set -g visual-activity on

Para aplicar cambios:

# Desde fuera de tmux
tmux source-file ~/.tmux.conf
 
# O desde dentro de tmux
Prefijo + : 
source-file ~/.tmux.conf

🧩 Funciones avanzadas para pentesting

Copiar y pegar

Uso en pentesting

Ideal para guardar resultados, hashes, contraseñas o comandos entre diferentes paneles

  1. Entrar en modo copia: Prefijo + [
  2. Navegar con teclas o flechas
  3. Iniciar selección: Space
  4. Copiar selección: Enter
  5. Pegar: Prefijo + ]

Sincronización de paneles

Útil para ejecutar comandos idénticos en múltiples máquinas comprometidas:

# Activar sincronización
Prefijo + :
setw synchronize-panes on
 
# Desactivar
Prefijo + :
setw synchronize-panes off

Caso de uso

Cuando tienes shell en varios sistemas similares y necesitas ejecutar los mismos comandos de elevación de privilegios o exfiltración.

Scripts de automatización

Crea un archivo pentest-setup.sh para configurar tu entorno automáticamente:

#!/bin/bash
# Script para iniciar entorno de pentesting con tmux
 
# Crear sesión con ventanas predefinidas
tmux new-session -d -s pentest -n 'recon'
 
# Configurar ventana de reconocimiento
tmux send-keys -t pentest:recon 'cd ~/engagements/target' C-m
tmux send-keys -t pentest:recon 'clear' C-m
 
# Dividir para múltiples herramientas
tmux split-window -h -t pentest:recon
tmux split-window -v -t pentest:recon.1
 
# Ventana de exploit
tmux new-window -t pentest -n 'exploit'
tmux send-keys -t pentest:exploit 'msfconsole -q' C-m
 
# Ventana para pivot/post-explotación
tmux new-window -t pentest -n 'post'
 
# Ventana para notas
tmux new-window -t pentest -n 'notas'
tmux send-keys -t pentest:notas 'cd ~/engagements/target/docs && vim notas.md' C-m
 
# Volver a la primera ventana
tmux select-window -t pentest:recon
 
# Conectar a la sesión
tmux attach-session -t pentest

Para ejecutar:

chmod +x pentest-setup.sh
./pentest-setup.sh

📝 Consejos y mejores prácticas

Tips para optimizar tmux en pentesting

  • Nombra tus sesiones según el objetivo (client-X, machine-Y) para organizar mejor
  • Usa ventanas temáticas: reconocimiento, explotación, persistencia, documentación
  • Script de inicio: Automatiza la creación de tu entorno para cada pentest
  • Guarda logs: tmux capture-pane -p -S - > output.log para registrar resultados
  • Añade indicadores visuales: Para saber en qué máquina/contexto estás trabajando

Errores comunes y soluciones

Problemas habituales

  • No se puede crear una sesión: Verifica si ya existe con tmux ls
  • Problemas de permisos: chmod 700 ~/.tmux.conf para solucionar
  • Colores incorrectos: Añade set -g default-terminal "screen-256color" a tu configuración
  • “Cannot open clipboard”: Instala xclip (apt install xclip)

🔗 Recursos adicionales