lunes, septiembre 17, 2007

Hacking Hardened Oracle Databases

A principios de Septiembre se realizaron las conferencias Hack In The Box en Malasia y allí se impartió una presentación digna de estudiarse con toda la atención. La sesión se llamó Hacking Hardened Oracle Databases o como hackear bases de datos fortificadas. La presentación la realizó Alexander Kornbrust y en 59 diapositivas hace un recorrido “de flipar” sobre fallos en Oracle. Os resumo la sesión, porque después de leerla 3 veces, los fallos son la caña.

Sección 1: Basic Stuff

En la primera parte de la sesión se centra en lo que ya está arreglado o es conocido, por eso de que siempre hay alguien por ahí con el Oracle sin parchear ¿o no? En el mundo real, por desgracia, se encuentran Listeners de versiones 8i y 9i inseguros, contraseñas no fortificadas, bases de datos sin parchear y paquetes PL/SQL de terceros con fallos de seguridad. Esperemos que esto empiece a cambiar y desde hace 1 año y medio Oracle está empezando a preocuparse en serio y de verdad por esta situación, pero este tipo de cambios no es fácil y más cuando tu producto está tan extendido y con una variedad de versiones brutal en producción.

Comienza con un resumen de los comandos básicos para logar permisos, roles, crear usuarios, objetos, etc… y sobre cuál es el panorama en las instalaciones de Oracle en las empresas. En este panorama recorre la lista de herramientas utilizadas para atacar bases de datos Oracle, que tenéis en la lista siguiente:

- checkpwd: Fastest Oracle dictionary password cracker
- orabf: Fastest Oracle Brute Force cracker
- Tnscmd: Control unprotected TNS Listener without Oracle Client
- sidguess: Fastest Oracle dictionary password cracker
- Oracle Assessment Kit: Useful tools, e.g. To exploit the alter session bug
- Oracle Instant Client: Oracle Instant Client
- Oracle SQL Developer: GUI Tool for Oracle in Java
- Backtrack 2: Linux Live CD with many Oracle Security Tools

Hasta la diapo 15 la sesión continúa haciendo ejemplos con estas herramientas y con exploits parcheados por Oracle durante el último año.

Sección 2: Oracle Hardened

Esta sección comienza con una pregunta ¿Qué pasa si Oracle está parcheado a la última versión, con contraseñas fortificadas, los usuarios funcionan con los menores privilegios y las características de Oracle están configuradas?

- Ataque a los scripts de login del DBA : La idea es inyectar comandos que se ejecuten en el script de login de los usuarios dba. Estos comandos están generalmente almacenados en un ficherito que descansa en la estación de trabajo del DBA así que plantea como posibilidad modificar esos ficheros (vía USB, acceso a la máquina, etc…) y conseguir meter códigos en los ficheros login.sql, glogin.sql, o en los mismos scripts de inicio de herramientas como TOAD, que son comunes en los entornos Oracle.

- Shellcode en Objetos de la base de datos: Esta es la parte más curiosa de toda la sesión. Se aprovecha de la posibilidad de crear nombres de objetos utilizando el entrecomillado del nombre. Aprovechándose de esta función inyecta:

o Código Javascript en el nombre del objeto con lo que es posible ejecutar código en aplicaciones clientes a través de comandos inyectados en el nombre.

o Código SQL para realizar elevaciones de privilegios.

o Código SQL para borrar objetos de otros usuarios. Este es especialmente divertido. El funcionamiento es sencillo. Tenemos el usuario ramón con su tabla llamada dinero. El usuario pepe quiere borrar la tabla dinero de ramon (ramon.dinero), para ello se crea la tabla “ramon.dinero” (que realmente se llamará pepe.ramon.dinero, pero de forma abreviaba será llamada por ramon.dinero. Este objeto va al diccionario de datos con lo que estará referenciado en la vista user_tables. Bien, al hacer una llamada SQL con el siguiente comando:

Select ‘delete from’||table_name||’;’
from user_tablas where username like ‘%pepe%’ ;

Se cepilla la tabla original de ramon.dinero. En palabras del Gran Ford Fairlane: Increibleble.

o Código SQL para crear usuarios DBA mediante la inyección en el nombre de un role. Brutal.

- Inyecciónes de código en scripts que usen el comando host para ejecutar código en el servidor sobre el que corre Oracle.

Sección 3: Recomendaciones de Seguridad

La presentación termina dando consejos para mitigar estos posibles ataques, y ofrece una genial: A la hora de generar scripts no confíes en los datos que te da el usuario ni en los datos que te da la base de datos. También recomienda filtrar los caracteres utilizados en la creación de objetos

Sección 4: Audit & Antiforensic.

En esta parte analiza cómo es posible saltarse la auditoría y borrar los pasos de un atacante para no dejar información a un posible auditor del sistema. Esta reportado el bug a Oracle y no hace público el exploit, pero da muuuchas pistas sobre los fallos.

Sección 5: Transparent Data Encryption

La idea de esta parte es que esta opción que provee Oracle permite a un usuario cifrar sus tablas, por lo que si alguien realiza una escalada de privilegios puede cifrar las tablas de otros usuarios o aplicaciones y dejarles jodidos. Así que si no lo estás usando, deshabilita esta función.

Sección 6: Database Vault

Termina la sesión con una recomendación. Database Vault, es un producto aparte que añade seguridad a las bases de datos Oracle. Este producto está pensado para el cumplimiento de regulaciones en bases de datos críticas y previene ataques internos. Esta opción puede ser atacada desde el sistema operativo, por lo que hay que tener cuidado con el acceso a la máquina.

En fin, que la presentación es un punto de vista divertido y útil sobre la seguridad de bases de datos Oracle. La tienes disponible en la siguiente URL:

Hacking Hardened Oracle Databases

Saludos de Lunes!

6 comentarios:

asdsdadasdsadasdas dijo...

Gracias por el miniresumen traducido, se agradece.

Un comentario del punto 6, donde dice:

"Sección 6: Database Vault

Termina la sesión con una recomendación. Database Vault, es un producto aparte que añade seguridad a las bases de datos Oracle. Este producto está pensado para el cumplimiento de regulaciones en bases de datos críticas y previene ataques internos. Esta opción puede ser atacada desde el sistema operativo, por lo que hay que tener cuidado con el acceso a la máquina."

¿No tiene esto poco sentido? Porque preocuparse de que puedan cifrar las tablas para joder a otros usuarios, si ya te han cogido superusuario. Es como si te entra un ladron en casa por la puerta y decides cerrar la ventana para que no entre por ahi. Una vez dentro ya estas jodido

Anónimo dijo...

querido maligno:
¿te das cuenta de que esto es casi porno duro?
Hay pocas cosas tan excitantes como este tema. A ver si un día te animas y sueltas un par de secretillos, que seguro que sabes bastantes.

Salud

Anónimo dijo...

Hola,

Creo que se te ha olvidado comentar una noticia importante sobre spectra de hoy:

http://www.elmundo.es/navegante/2007/09/17/tecnologia/1190015018.html

Un saludo.

Anónimo dijo...

Este tio es un crack, y yo que creia que todos los expertos en seguridad odiaban WordPress con toda su alma y nos sale este. http://blog.red-database-security.com/

Chema Alonso dijo...

@thesur, la ultima opción consiste en atacar al sistema operativo para convertirte en supuerusario. Son matices, aunque entiendo tu comentario.

@jennajameson, bonito nombre... ¿de que me suena?...

@imparable,....me gusta estar más informado cuando publico algo sobre esos temas, estoy esperando a que me pasen más info. Sé que ha habido algún cambio al final.

@mario, pues no se si de servidores de blog entiende, pero de oracle entiende bien este pájaro. La presentación la he impreso, leido y subrayado, me han encantado algunos de sus trucos.

Anónimo dijo...

http://diegocg.blogspot.com/2007/09/porque-la-comisin-europea-tiene-la-razn.html

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares