Retos GNU/Linux (Bandit)
Introduccion
Este mini-curso usa el wargame Bandit de OverTheWire como practica guiada para reforzar:
- Conexion remota por SSH usando un puerto no estandar.
- Navegacion en el sistema de archivos y lectura de archivos.
- Habitos de seguridad basicos (verificacion de huella, no publicar credenciales).
Al final de esta seccion deberias poder pasar de Bandit Nivel 0 a Nivel 1 (sin spoilers del password del Nivel 1).
Bandit esta pensado para principiantes: avanzas por niveles, y cada nivel te entrega informacion para entrar al siguiente.
Informacion oficial: https://overthewire.org/wargames/bandit/
Informacion de SSH (Bandit)
| Dato | Valor |
|---|---|
| Host | bandit.labs.overthewire.org |
| Port | 2220 |
| Usuario | bandit0 .. bandit34 |
| Password inicial | bandit0 |
Mapa de niveles (Bandit)
Este es el listado oficial de niveles (en el sitio, la pagina del nivel N explica el salto N-1 -> N).
- Inicio: Nivel 0
- Nivel 0 -> Nivel 1
- Nivel 1 -> Nivel 2
- Nivel 2 -> Nivel 3
- Nivel 3 -> Nivel 4
- Nivel 4 -> Nivel 5
- Nivel 5 -> Nivel 6
- Nivel 6 -> Nivel 7
- Nivel 7 -> Nivel 8
- Nivel 8 -> Nivel 9
- Nivel 9 -> Nivel 10
- Nivel 10 -> Nivel 11
- Nivel 11 -> Nivel 12
- Nivel 12 -> Nivel 13
- Nivel 13 -> Nivel 14
- Nivel 14 -> Nivel 15
- Nivel 15 -> Nivel 16
- Nivel 16 -> Nivel 17
- Nivel 17 -> Nivel 18
- Nivel 18 -> Nivel 19
- Nivel 19 -> Nivel 20
- Nivel 20 -> Nivel 21
- Nivel 21 -> Nivel 22
- Nivel 22 -> Nivel 23
- Nivel 23 -> Nivel 24
- Nivel 24 -> Nivel 25
- Nivel 25 -> Nivel 26
- Nivel 26 -> Nivel 27
- Nivel 27 -> Nivel 28
- Nivel 28 -> Nivel 29
- Nivel 29 -> Nivel 30
- Nivel 30 -> Nivel 31
- Nivel 31 -> Nivel 32
- Nivel 32 -> Nivel 33
- Nivel 33 -> Nivel 34
Objetivos por nivel (resumen, sin spoilers)
Este resumen toma el Level Goal oficial y lo deja en una sola linea por salto.
Este anexo evita publicar writeups completos.
Casos de uso: - Usar Bandit como practica guiada sin exponer soluciones. - Mantener tus notas completas solo en local.
Cuando aplicar: - Para niveles posteriores al 0 -> 1, usa la pagina oficial del nivel como fuente principal.
| Salto | Objetivo (resumen) | Pagina oficial |
|---|---|---|
| 0 -> 1 | Password en readme en el home de bandit0. |
https://overthewire.org/wargames/bandit/bandit1.html |
| 1 -> 2 | Password en un archivo llamado - en el home. |
https://overthewire.org/wargames/bandit/bandit2.html |
| 2 -> 3 | Password en un archivo llamado --spaces in this filename-- en el home. |
https://overthewire.org/wargames/bandit/bandit3.html |
| 3 -> 4 | Password en un archivo oculto dentro del directorio inhere. |
https://overthewire.org/wargames/bandit/bandit4.html |
| 4 -> 5 | Password en el unico archivo legible (human-readable) dentro de inhere. |
https://overthewire.org/wargames/bandit/bandit5.html |
| 5 -> 6 | Password en algun archivo bajo inhere con propiedades especificas (size/owner, etc.). |
https://overthewire.org/wargames/bandit/bandit6.html |
| 6 -> 7 | Password en algun lugar del servidor con propiedades especificas (owner/group/size, etc.). | https://overthewire.org/wargames/bandit/bandit7.html |
| 7 -> 8 | Password en data.txt, junto a la palabra millionth. |
https://overthewire.org/wargames/bandit/bandit8.html |
| 8 -> 9 | Password en data.txt: la unica linea que aparece una sola vez. |
https://overthewire.org/wargames/bandit/bandit9.html |
| 9 -> 10 | Password en data.txt: una de pocas strings legibles, precedida por varios =. |
https://overthewire.org/wargames/bandit/bandit10.html |
| 10 -> 11 | Password en data.txt con contenido codificado en base64. |
https://overthewire.org/wargames/bandit/bandit11.html |
| 11 -> 12 | Password en data.txt con ROT13 (a-z/A-Z rotados 13). |
https://overthewire.org/wargames/bandit/bandit12.html |
| 12 -> 13 | Password en data.txt: es un hexdump de un archivo comprimido repetidas veces. |
https://overthewire.org/wargames/bandit/bandit13.html |
| 13 -> 14 | Password en /etc/bandit_pass/bandit14 (solo lo lee bandit14); debes usar una clave privada para entrar. |
https://overthewire.org/wargames/bandit/bandit14.html |
| 14 -> 15 | Obtener el password enviando el password actual a localhost:30000. |
https://overthewire.org/wargames/bandit/bandit15.html |
| 15 -> 16 | Obtener el password enviando el password actual a localhost:30001 via SSL/TLS. |
https://overthewire.org/wargames/bandit/bandit16.html |
| 16 -> 17 | Encontrar el puerto correcto en 31000-32000 y enviar el password actual para obtener credenciales. |
https://overthewire.org/wargames/bandit/bandit17.html |
| 17 -> 18 | Comparar passwords.old vs passwords.new: la linea cambiada es el password. |
https://overthewire.org/wargames/bandit/bandit18.html |
| 18 -> 19 | Password en readme, pero .bashrc te desloguea al entrar por SSH. |
https://overthewire.org/wargames/bandit/bandit19.html |
| 19 -> 20 | Usar un binario setuid en el home para obtener el password del nivel. | https://overthewire.org/wargames/bandit/bandit20.html |
| 20 -> 21 | Binario setuid que se conecta a localhost:<puerto> y reenvia una linea; debes usarlo para obtener el password. |
https://overthewire.org/wargames/bandit/bandit21.html |
| 21 -> 22 | Revisar /etc/cron.d/ para ver que comando se ejecuta automaticamente. |
https://overthewire.org/wargames/bandit/bandit22.html |
| 22 -> 23 | Igual: analizar cron en /etc/cron.d/ y el comando ejecutado. |
https://overthewire.org/wargames/bandit/bandit23.html |
| 23 -> 24 | Igual: analizar cron en /etc/cron.d/ y el comando ejecutado. |
https://overthewire.org/wargames/bandit/bandit24.html |
| 24 -> 25 | Daemon en localhost:30002 pide password + pin de 4 digitos. |
https://overthewire.org/wargames/bandit/bandit25.html |
| 25 -> 26 | Entrar a bandit26: su shell no es bash; debes entenderlo y escapar. |
https://overthewire.org/wargames/bandit/bandit26.html |
| 26 -> 27 | Ya con shell: obtener el password de bandit27 rapido. |
https://overthewire.org/wargames/bandit/bandit27.html |
| 27 -> 28 | Repo git via SSH en /home/bandit27-git/repo; password de bandit27-git es el mismo del usuario. |
https://overthewire.org/wargames/bandit/bandit28.html |
| 28 -> 29 | Repo git via SSH en /home/bandit28-git/repo. |
https://overthewire.org/wargames/bandit/bandit29.html |
| 29 -> 30 | Repo git via SSH en /home/bandit29-git/repo. |
https://overthewire.org/wargames/bandit/bandit30.html |
| 30 -> 31 | Repo git via SSH en /home/bandit30-git/repo. |
https://overthewire.org/wargames/bandit/bandit31.html |
| 31 -> 32 | Repo git via SSH en /home/bandit31-git/repo. |
https://overthewire.org/wargames/bandit/bandit32.html |
| 32 -> 33 | Escape adicional (despues de git). | https://overthewire.org/wargames/bandit/bandit33.html |
| 33 -> 34 | Ver instrucciones del nivel final en la pagina oficial. | https://overthewire.org/wargames/bandit/bandit34.html |
Alternativas cuando te atascas (sin spoilers)
Si te quedas bloqueado en un nivel, estas son las alternativas recomendadas por OverTheWire.
1) Manual (man pages)
- 1
-
man ls explica opciones, formatos de salida y ejemplos; presiona
qpara salir. - 2
-
man ssh ayuda a entender flags como
-p,-i,-o. - 3
- man 5 crontab abre la documentacion del formato de crontab (seccion 5).
2) Help para built-ins del shell
- 1
- help cd muestra ayuda de un comando built-in (no siempre tiene man page).
- 2
- help export ayuda con variables de entorno (util en niveles con scripts).
3) Buscar y validar hipotesis
- Si ya sabes el nombre del comando pero no recuerdas el uso, busca:
"<comando> example". - Si el nivel menciona un concepto (ej: “base64”, “strings”, “cron”), busca el concepto y vuelve al manual.
4) Comunidad
- Si sigues atascado, puedes unirte al chat oficial: https://overthewire.org/information/chat.html
Nota para VMs: error “broken pipe” en SSH (modo NAT)
En algunas VMs, SSH puede fallar con un error tipo “broken pipe” cuando el adaptador de red esta en NAT.
La recomendacion de OverTheWire es agregar IPQoS throughput a /etc/ssh/ssh_config.
Modificar configuracion SSH en un servidor real puede cortar conexiones.
Lo que podria salir mal: - Dejar SSH con configuracion invalida o no deseada.
Como prevenirlo: 1. Aplica esto solo en tu VM de laboratorio. 2. Mantiene una sesion abierta mientras pruebas. 3. Si no funciona, cambia el adaptador a modo Bridged.
Ejemplo (VM Ubuntu Server LTS):
BASH
- 1
- cp crea un backup de la configuracion del cliente SSH.
- 2
-
tee -a agrega
IPQoS throughputpara evitar problemas de QoS en NAT. - 3
- grep -n verifica que la linea quedo escrita.
Comandos que puedes necesitar
En este salto (Nivel 0 -> Nivel 1) normalmente basta con:
ls,cd,cat,file,du,find
Las contrasenas no se guardan automaticamente y pueden cambiar. Si no las registras, tendras que empezar de nuevo.
Crea un archivo de notas local para usuarios y passwords.
Casos de uso: - Guardar como te conectaste (host, puerto, usuario). - Registrar como resolviste cada nivel sin publicar la respuesta.
Cuando aplicar: - Cada vez que completes un nivel.
No publiques passwords ni writeups completos de niveles.
Lo que podria salir mal: - Te banean del juego. - Compartes credenciales que cambian o que otros estan usando.
Como prevenirlo: 1. Escribe tus notas en tu maquina local. 2. En documentacion publica, usa placeholders como **PASSWORD_NIVEL_1**.
Reto: Bandit Nivel 0 -> Nivel 1
Objetivo del nivel
La contrasena para el siguiente nivel esta en un archivo llamado readme ubicado en tu directorio de inicio. Una vez que la encuentres, inicia sesion como bandit1 por SSH (puerto 2220) y continua el juego.
En SSH no se muestra lo que escribes cuando te pide password. Esto es normal.
Datos de conexion (Nivel 0)
- Host:
bandit.labs.overthewire.org - Puerto:
2220 - Usuario:
bandit0 - Password inicial:
bandit0
Errores comunes al conectarte por SSH
Un error tipico es escribir host:puerto (esto no define el puerto, se interpreta como parte del hostname).
BASH
1$ ssh bandit0@bandit.labs.overthewire.org:2220
ssh: Could not resolve hostname bandit.labs.overthewire.org:2220: Name or service not known- 1
-
ssh no acepta
host:puertoen ese formato; debes pasar el puerto con-p.
BASH
1$ ssh bandit0@bandit.labs.overthewire.org:2220
ssh: Could not resolve hostname bandit.labs.overthewire.org:2220: nodename nor servname provided, or not known- 1
-
ssh en macOS muestra el mismo problema: el
:2220se vuelve parte del hostname.
POWERSHELL
1PS> ssh bandit0@bandit.labs.overthewire.org:2220
ssh: Could not resolve hostname bandit.labs.overthewire.org:2220: No such host is known.- 1
-
ssh en Windows (OpenSSH) tambien interpreta
:2220como parte del nombre del host.
Conexion correcta (puerto 2220)
BASH
1$ ssh -p 2220 bandit0@bandit.labs.overthewire.org
The authenticity of host '[bandit.labs.overthewire.org]:2220 (51.21.210.216)' can't be established.
ED25519 key fingerprint is SHA256:C2ihUBV7ihnV1wUXRb4RrEcLfXC5CXlhmAAM/urerLY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
bandit0@bandit.labs.overthewire.org's password:- 1
-
ssh -p define el puerto remoto; aqui
2220.
BASH
1$ ssh -p 2220 bandit0@bandit.labs.overthewire.org
The authenticity of host '[bandit.labs.overthewire.org]:2220 ([51.21.210.216]:2220)' can't be established.
ED25519 key fingerprint is SHA256:C2ihUBV7ihnV1wUXRb4RrEcLfXC5CXlhmAAM/urerLY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
bandit0@bandit.labs.overthewire.org's password:- 1
- ssh -p es la forma correcta de usar un puerto no estandar en macOS.
POWERSHELL
1PS> ssh -p 2220 bandit0@bandit.labs.overthewire.org
The authenticity of host '[bandit.labs.overthewire.org]:2220 (51.21.210.216)' can't be established.
ED25519 key fingerprint is SHA256:C2ihUBV7ihnV1wUXRb4RrEcLfXC5CXlhmAAM/urerLY.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
bandit0@bandit.labs.overthewire.org's password:- 1
- ssh -p tambien funciona igual en Windows con OpenSSH.
Ejemplos Practicos Multi-SO
No aceptes huellas (fingerprints) a ciegas en servidores reales.
Lo que podria salir mal: - Ataque de tipo Man-in-the-Middle.
Como prevenirlo: 1. Verifica la huella publicada por el proveedor/infra. 2. Si cambia inesperadamente, detente y valida con el administrador.
Dentro del servidor: encontrar el password del Nivel 1
Una vez dentro como bandit0, tu objetivo es leer el archivo readme en el home.
BASH
1bandit0@bandit:~$ ls
readme- 1
-
ls lista el contenido del directorio actual; aqui ves el archivo
readme.
BASH
1bandit0@bandit:~$ file readme
readme: ASCII text- 1
- file identifica el tipo de archivo; en este caso es texto plano.
BASH
1bandit0@bandit:~$ du -h readme
4.0K\treadme- 1
- du -h muestra el tamano del archivo de forma legible.
BASH
1bandit0@bandit:~$ find ~ -maxdepth 1 -type f -name readme
/home/bandit0/readme- 1
-
find sirve para ubicar archivos por nombre; aqui busca
readmeen tu home.
BASH
1 bandit0@bandit:~$ cat readme
**PASSWORD_NIVEL_1**- 1
-
cat imprime el contenido de
readme; guarda ese valor en tus notas como password del Nivel 1.
Entrar al Nivel 1
Cuando ya tengas el password, sales y te conectas como bandit1.
BASH
1bandit0@bandit:~$ exit
logout
Connection to bandit.labs.overthewire.org closed.- 1
- exit cierra tu sesion SSH actual.
BASH
1$ ssh -p 2220 bandit1@bandit.labs.overthewire.org
bandit1@bandit.labs.overthewire.org's password:- 1
-
ssh -p repite el patron, cambiando el usuario a
bandit1.
Si ves “Permission denied”
Si escribes mal el password, SSH te lo dira.
BASH
1$ ssh -p 2220 bandit0@bandit.labs.overthewire.org
bandit0@bandit.labs.overthewire.org's password:
Permission denied, please try again.- 1
- Permission denied casi siempre significa password incorrecto (o usuario equivocado).
Solucion (oculta): Nivel 0 -> Nivel 1
Objetivo: leer ~/readme y usar ese valor como password para bandit1.
BASH
1$ ssh -p 2220 bandit0@bandit.labs.overthewire.org
bandit0@bandit.labs.overthewire.org's password:- 1
-
ssh -p conecta al puerto
2220con el usuariobandit0.
BASH
1bandit0@bandit:~$ cat ~/readme
**PASSWORD_NIVEL_1**- 1
-
cat imprime el contenido del archivo
readmedel home; ese es el password del siguiente nivel.
BASH
1bandit0@bandit:~$ exit
logout
Connection to bandit.labs.overthewire.org closed.- 1
-
exit cierra la sesion actual para reconectarte como
bandit1.
BASH
1$ ssh -p 2220 bandit1@bandit.labs.overthewire.org
bandit1@bandit.labs.overthewire.org's password:- 1
- ssh -p repite el patron con el usuario del siguiente nivel.
Mini-guia para tus notas (local)
Una forma simple es guardar un archivo de texto en tu equipo.
BASH
- 1
- mkdir -p crea una carpeta para tus notas.
- 2
- printf agrega una linea al archivo de notas.
- 3
- cat verifica el contenido guardado.
BASH
- 1
- mkdir -p crea una carpeta para tus notas.
- 2
- printf agrega una linea al archivo de notas.
- 3
- cat verifica el contenido guardado.
POWERSHELL
- 1
- New-Item crea la carpeta de notas en PowerShell.
- 2
- Add-Content agrega una linea al archivo de notas.
- 3
- Get-Content verifica el contenido guardado.
Retos: Nivel 1 -> Nivel 34 (sin spoilers)
Estas secciones te dan el objetivo, los comandos tipicos y 2-3 pistas por salto.
No publiques passwords ni writeups completos.
Lo que podria salir mal: - Compartir la solucion exacta elimina el aprendizaje.
Como prevenirlo: 1. Guarda el password de cada nivel en un archivo local. 2. En tu documentacion, usa placeholders como **PASSWORD_NIVEL_2**.
Bandit Nivel 1 -> Nivel 2
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit2.html
- Objetivo: el password esta en un archivo llamado
-en el home. - Comandos tipicos:
ls,cat. - Pistas (sin spoilers):
- Un nombre que empieza con
-puede interpretarse como opcion; usa--o un prefijo como./. - Tab completion ayuda a evitar errores con nombres raros.
- Un nombre que empieza con
Bandit Nivel 2 -> Nivel 3
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit3.html
- Objetivo: el password esta en un archivo con espacios en el nombre.
- Comandos tipicos:
ls,cat. - Pistas (sin spoilers):
- Usa comillas (
"...") o escapes (\) para rutas con espacios. - El autocompletado de la terminal suele completar el nombre correctamente.
- Usa comillas (
Bandit Nivel 3 -> Nivel 4
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit4.html
- Objetivo: el password esta en un archivo oculto dentro del directorio
inhere. - Comandos tipicos:
ls,cd,cat. - Pistas (sin spoilers):
- Los archivos ocultos empiezan con
.; usa listado que muestre ocultos. - Revisa que estas realmente dentro de
inhereantes de leer.
- Los archivos ocultos empiezan con
Bandit Nivel 4 -> Nivel 5
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit5.html
- Objetivo: el password esta en el unico archivo “human-readable” dentro de
inhere. - Comandos tipicos:
ls,file,cat. - Pistas (sin spoilers):
- Usa
filepara clasificar rapidamente los archivos. - Si tu terminal queda “rara” por imprimir binarios, el sitio sugiere
reset.
- Usa
Bandit Nivel 5 -> Nivel 6
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit6.html
- Objetivo: el password esta en algun archivo bajo
inherecon propiedades especificas. - Comandos tipicos:
find,du,file,cat. - Pistas (sin spoilers):
findpuede filtrar por tamano (-size), tipo (-type f) y permisos (-readable).- Cuando identifiques candidatos, valida con
filey luego lee concat.
Bandit Nivel 6 -> Nivel 7
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit7.html
- Objetivo: el password esta en algun lugar del servidor con propiedades especificas.
- Comandos tipicos:
find,grep. - Pistas (sin spoilers):
- Filtra por usuario/grupo (
-user,-group) y por tamano (-size). - Si hay muchos “Permission denied”, redirige stderr a
/dev/null.
- Filtra por usuario/grupo (
Bandit Nivel 7 -> Nivel 8
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit8.html
- Objetivo: el password esta en
data.txt, junto a la palabramillionth. - Comandos tipicos:
grep,cat. - Pistas (sin spoilers):
- Busca la linea que contiene la palabra;
grepte da contexto rapido. - Si el archivo es grande, evita abrirlo completo; filtra.
- Busca la linea que contiene la palabra;
Bandit Nivel 8 -> Nivel 9
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit9.html
- Objetivo: el password es la unica linea en
data.txtque aparece una sola vez. - Comandos tipicos:
sort,uniq. - Pistas (sin spoilers):
uniqtrabaja bien cuando el input esta ordenado.- Busca el modo de
uniqque muestra solo lineas unicas.
Bandit Nivel 9 -> Nivel 10
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit10.html
- Objetivo: el password esta en una de las pocas strings legibles del archivo, precedida por varios
=. - Comandos tipicos:
strings,grep. - Pistas (sin spoilers):
stringsextrae texto imprimible desde binarios.- Filtra con
greppor un patron que incluya=.
Bandit Nivel 10 -> Nivel 11
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit11.html
- Objetivo: el password esta en
data.txty esta codificado en base64. - Comandos tipicos:
base64. - Pistas (sin spoilers):
- Necesitas decodificar base64 (no es cifrado).
- Si hay saltos de linea, igual suele funcionar; valida el resultado como texto.
Bandit Nivel 11 -> Nivel 12
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit12.html
- Objetivo: el password esta en
data.txtcon ROT13 aplicado. - Comandos tipicos:
tr. - Pistas (sin spoilers):
- ROT13 es una sustitucion simple;
trpuede mapear A-Z/a-z a su rotacion. - No olvides mapear mayusculas y minusculas.
- ROT13 es una sustitucion simple;
Bandit Nivel 12 -> Nivel 13
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit13.html
- Objetivo:
data.txtes un hexdump de un archivo comprimido repetidas veces. - Comandos tipicos:
xxd,file,tar,gzip,bzip2. - Pistas (sin spoilers):
- Convierte el hexdump a binario y luego usa
filepara saber que tipo de compresion hay. - Repite el ciclo: “identificar -> descomprimir -> volver a identificar” hasta llegar a texto.
- Convierte el hexdump a binario y luego usa
Bandit Nivel 13 -> Nivel 14
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit14.html
- Objetivo: leer el password de
/etc/bandit_pass/bandit14usando una clave privada (no se entrega el password directo). - Comandos tipicos:
ssh,chmod. - Pistas (sin spoilers):
- Asegura permisos de la clave (ej:
chmod 600). - Conecta usando
ssh -iy el puerto2220.
- Asegura permisos de la clave (ej:
Bandit Nivel 14 -> Nivel 15
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit15.html
- Objetivo: enviar el password actual a
localhost:30000para recibir el siguiente. - Comandos tipicos:
nc. - Pistas (sin spoilers):
- Esto ocurre dentro del servidor (ya logueado).
- Conecta a
localhost(no al host remoto) y pega el password actual.
Bandit Nivel 15 -> Nivel 16
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit16.html
- Objetivo: enviar el password actual a
localhost:30001usando SSL/TLS. - Comandos tipicos:
openssl s_client. - Pistas (sin spoilers):
ncno cifra; aqui necesitas un cliente TLS.- Verifica que estas conectando al puerto correcto en
localhost.
Bandit Nivel 16 -> Nivel 17
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit17.html
- Objetivo: encontrar el servicio correcto en
31000-32000y obtener credenciales enviando el password actual. - Comandos tipicos:
nmap,openssl s_client,ss. - Pistas (sin spoilers):
- Primero identifica que puertos estan abiertos en el rango.
- No todos los puertos hablan TLS; prueba con un cliente TLS donde corresponda.
Bandit Nivel 17 -> Nivel 18
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit18.html
- Objetivo: el password esta en
passwords.newy es la unica linea distinta frente apasswords.old. - Comandos tipicos:
diff. - Pistas (sin spoilers):
- Usa
diffpara ver cambios exactos. - Extrae solo la linea nueva (la que se agrego/cambio).
- Usa
Bandit Nivel 18 -> Nivel 19
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit19.html
- Objetivo: el password esta en
readme, pero al entrar por SSH te desloguean por.bashrc. - Comandos tipicos:
ssh,cat. - Pistas (sin spoilers):
- Puedes pedirle a
sshque ejecute un comando remoto sin iniciar un shell interactivo. - Otra alternativa es forzar un shell distinto o evitar cargar configuracion, segun el caso.
- Puedes pedirle a
Bandit Nivel 19 -> Nivel 20
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit20.html
- Objetivo: usar un binario setuid en el home para leer el password del siguiente usuario.
- Comandos tipicos:
ls,cat. - Pistas (sin spoilers):
- Revisa permisos del binario (
ls -la) y ejecutalo para ver como se usa. - El archivo de passwords suele estar en
/etc/bandit_pass/.
- Revisa permisos del binario (
Bandit Nivel 20 -> Nivel 21
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit21.html
- Objetivo: usar un binario setuid que se conecta a
localhost:<puerto>y reenvia una linea. - Comandos tipicos:
nc,tmux/screen. - Pistas (sin spoilers):
- Necesitas dos terminales: una escucha, la otra ejecuta el binario.
- Si no tienes dos sesiones, usa job control (
&,fg,bg) otmux.
Bandit Nivel 21 -> Nivel 22
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit22.html
- Objetivo: descubrir que programa corre por cron mirando
/etc/cron.d/. - Comandos tipicos:
cat,ls. - Pistas (sin spoilers):
- Lee el archivo de cron y luego sigue la ruta del script que ejecuta.
- El script normalmente deja evidencia (archivos temporales o salidas).
Bandit Nivel 22 -> Nivel 23
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit23.html
- Objetivo: analizar cron y el comando que ejecuta.
- Comandos tipicos:
cat,grep. - Pistas (sin spoilers):
- Identifica que usuario ejecuta el job y que archivos toca.
- Corre el script manualmente (sin modificarlo) para entender que imprime/crea.
Bandit Nivel 23 -> Nivel 24
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit24.html
- Objetivo: analizar cron y el comando que ejecuta.
- Comandos tipicos:
cat,bash. - Pistas (sin spoilers):
- Revisa permisos de scripts y directorios que usa el job.
- Si el job genera archivos en
/tmp, busca patrones por nombre.
Bandit Nivel 24 -> Nivel 25
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit25.html
- Objetivo: daemon en
localhost:30002pide password + pin de 4 digitos. - Comandos tipicos:
nc,bash. - Pistas (sin spoilers):
- Si no hay forma de derivar el pin, piensa en fuerza bruta controlada (0000-9999).
- Automatiza: genera intentos y filtra solo la respuesta valida.
Bandit Nivel 25 -> Nivel 26
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit26.html
- Objetivo: entrar como
bandit26, pero su shell no es bash; debes entenderlo y escapar. - Comandos tipicos:
ssh,more,vi. - Pistas (sin spoilers):
- Revisa en
/etc/passwdcual es el shell real de ese usuario. - Si caes en un paginador/editor, investiga como abrir un shell desde ahi.
- Revisa en
Bandit Nivel 26 -> Nivel 27
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit27.html
- Objetivo: con una shell funcional, obtener el password de
bandit27. - Comandos tipicos:
cat,ls. - Pistas (sin spoilers):
- Sigue el patron
/etc/bandit_pass/. - No olvides guardar el password como
**PASSWORD_NIVEL_27**en tus notas.
- Sigue el patron
Bandit Nivel 27 -> Nivel 28
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit28.html
- Objetivo: clonar un repo git via SSH y encontrar el password.
- Comandos tipicos:
git,ssh. - Pistas (sin spoilers):
- Usa
ssh://user@host:port/...o configura el puerto en la URL. - Revisa commits y contenido del repo (
git log,git show).
- Usa
Bandit Nivel 28 -> Nivel 29
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit29.html
- Objetivo: repo git via SSH; el password no siempre esta en
master. - Comandos tipicos:
git. - Pistas (sin spoilers):
- Lista ramas (
git branch -a) y revisa commits por rama. - Busca en el historial, no solo en el ultimo commit.
- Lista ramas (
Bandit Nivel 29 -> Nivel 30
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit30.html
- Objetivo: repo git via SSH; puede involucrar tags.
- Comandos tipicos:
git. - Pistas (sin spoilers):
- Lista tags (
git tag) y revisa que contienen (git show <tag>). - Explora referencias: ramas remotas, tags y commits antiguos.
- Lista tags (
Bandit Nivel 30 -> Nivel 31
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit31.html
- Objetivo: repo git via SSH; hay una accion especifica que debes realizar.
- Comandos tipicos:
git. - Pistas (sin spoilers):
- Lee el
READMEdentro del repo (a veces dice exactamente que hacer). - Puede requerir crear/modificar un archivo y hacer commit/push.
- Lee el
Bandit Nivel 31 -> Nivel 32
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit32.html
- Objetivo: repo git via SSH; sigue las instrucciones del repo.
- Comandos tipicos:
git. - Pistas (sin spoilers):
- Si hay hooks o validaciones, lee los mensajes del servidor.
- Revisa ramas/tags e historial si el password no esta a simple vista.
Bandit Nivel 32 -> Nivel 33
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit33.html
- Objetivo: escape adicional (despues de git).
- Comandos tipicos:
sh,man. - Pistas (sin spoilers):
- Si hay un programa/shell raro, prueba rutas absolutas (
/bin/bash,/bin/sh). - A veces el truco es como se interpretan mayusculas/minusculas o variables.
- Si hay un programa/shell raro, prueba rutas absolutas (
Bandit Nivel 33 -> Nivel 34
- Pagina oficial: https://overthewire.org/wargames/bandit/bandit34.html
- Objetivo: sigue las instrucciones del nivel final en la pagina oficial.
- Comandos tipicos: depende del nivel.
- Pistas (sin spoilers):
- Lee la pagina oficial completa: suele incluir notas, archivos y paths clave.
- Mantente en el patron: encontrar informacion en archivos/sistema y usarla para el siguiente salto.
Mejores practicas
| Aspecto | Recomendacion |
|---|---|
| Puerto SSH | Usa ssh -p 2220 ... (no host:puerto). |
| Seguridad | Verifica la huella cuando sea un servidor real. |
| Orden | Anota: nivel, usuario, password, comandos, resultado. |
| Etica | No publiques passwords ni soluciones completas. |
Resumen
- El puerto en SSH se especifica con
-p. - En Bandit, el Nivel 0 se trata de conectarte por SSH y leer
readme. - Guarda el password del siguiente nivel en tus notas locales y continua con
bandit1.
Referencias
- OverTheWire Bandit: https://overthewire.org/wargames/bandit/
- SSH (Wikipedia): https://en.wikipedia.org/wiki/Secure_Shell
- Manual
ssh(1): https://man.openbsd.org/ssh