Skip to content

Auditoría de contraseñas en Oracle Database (1 de 4). Introducción y primeros pasos

Publicado por Sergio Hernando el 27 febrero 2010

TEMARIO

Auditoría de contraseñas en Oracle Database (1 de 4). Introducción y primeros pasos
Auditoría de contraseñas en Oracle Database (2 de 4). Adivinación de Oracle SID (System ID)
Auditoría de contraseñas en Oracle Database (3 de 4). Fuerza bruta sobre claves Oracle
Auditoría de contraseñas en Oracle Database (4 de 4). Ataques de diccionario sobre claves Oracle

Buenas,

He recibido durante los últimos meses alguna que otra petición para que hablara de la auditoría de productos Oracle. Me es imposible escribir entradas para cada uno de los productos de esta compañía, porque además de ser muy numerosos y complejos, algunos son sólo de aplicación en entornos muy determinados, con lo que el ejercicio sólo tendría interés para unos pocos. Hablamos de los productos y servicios tan variopintos como la gama on demand, Fusion middleware, Portal, Data mining, OLAP y dentro del mundo de aplicaciones podríamos citar la gestión centralizada de datos (MDM), sectoriales para banca, finanzas, capital humano, JD Edwards, Peoplesoft, Siebel ... la lista es demasiado larga para escribirla completa.

Sin embargo, me vienen a la mente dos productos que quizás si gocen de más popularidad. En la mayoría de corporaciones son los dos entry-level products por excelencia, y es relativamente frecuente toparse con ellos. Se trata de Oracle E-Business Suite y cómo no, de Oracle Database, la base de datos. Podríamos escribir muchísimo sobre ambos, ya que son productos extremadamente extensos y complejos, pero en esta serie de artículos sólo nos vamos a centrar en uno de los productos y en una única faceta de auditoría del mismo: contraseñas en Oracle Database.

Gama de Oracle Database

Oracle Database tiene hoy en día 4 ediciones principales, con un importante nímero de versiones en cada una:

  • Express Edition
  • Standard Edition One
  • Standard Edition
  • Enterprise Edition

Todas funcionan en Linux y Windows, si bien la versión básica no puede correr en Unix ni en 64 bits. No sabría deciros qué predomina en el mercado, ya que este es un caso donde el mero hecho de correr en un derivado Unix no garantiza mejor rendimiento. Las versiones Windows tienen una tremenda popularidad, ya que en práctica igualdad de rendimiento en lo que al motor se refiere, tienen una gran ventaja sobre los derivados Unix: Un sistema operativo Windows es, por lo general, más fácil de instalar, usar y mantener, con lo que también es más fácil (y económico) contratar a personal con nociones suficientes para el mundo Microsoft. Por otro lado, también tienen una estructura de licencias completamente distinta y potencialmente menos beneficiosa, con lo que tampoco son siempre la opción a implementar.

Las diferencias entre el producto gratuito (Express Edition) y el destinado a corporaciones (Enterprise Edition) son más que apreciables. Sinceramente he visto de todo, aunque probablemente he visto con un poco más de asiduidad Enterprise Edition corriendo en Linux o Unix. La mayor incidencia sobre el rendimiento la determinan siempre la configuración y la presencia de productos de optimización, y no el sistema operativo sobre el que corren los productos.

Para todo aquel que quiera practicar lo que aquí explicaremos recomiendo la descarga e instalación de la Oracle Database 10g Express Edition, que es gratuita y relativamente sencilla de instalar. Asumiendo que la mayoría de auditores se sienten más cómodos en Windows, emplearemos una instalación para Windows, aunque aquellos que se sientan mejor con Linux pueden optar por este formato. En esencia lo que vamos a ver es independiente (con sus matices, claro) de la plataforma. Recomiendo la instalación de estos dos productos:

  • Oracle Database 10g Express Edition (el motor de base de datos)
  • Oracle Database 10g Express Client (el software cliente)

Recomiendo a todos los que quieran instalarse estos productos que lean muy detenidamente la documentación. Todo está en la documentación, e insisto que pese a ser la versión más pequeña y simple de Oracle, la puesta en marcha y mantenimiento de la misma no es trivial.

Conectar a Oracle Database

Aunque es posible realizar pentesting en caja negra, siempre es recomendable auditar las contraseñas en caja blanca o gris, ya que el hecho de que no podamos hacer intrusión no implica que las calidades de las claves sean las mejores. En algín momento necesitaremos conectar con la base de datos para ver si podemos hacernos con los hashes de las claves, o directamente para descargarlos y ser analizados. ¿Cómo conectar con Oracle?

  • SQL*Plus. Es el producto oficial de Oracle para la línea de mandatos. Para mí, salvo que se vaya a hacer desarrollo, es el más aconsejable.
  • Oracle SQL Developer. Es un producto oficial de Oracle, adecuado para desarrolladores, ya que tiene interfaz gráfico y ayudas a la productividad.
  • Otros productos comerciales. Casi todos están enfocados al desarrollo y a la utilización gráfica. Posiblemente, PL/SQL Developer sea el más conocido, aunque no es el único.

Mi primera conexión local a Oracle

Una vez instalado podremos conectar vía Application Express (Apex) o vía línea de comandos. Apex está disponible por defecto tras la instalación en http://127.0.0.1:8080/apex/.

En el caso de la edición XE que hemos recomendado, los binarios de SQL*Plus se instalan junto a la base de datos. Suponiendo que estás en Windows:

oracle audit

Durante el proceso de instalación habrás creado contraseñas (es la misma) para las cuentas SYS y SYSTEM. Para probar si todo ha ido bien, así como para hacer ajustes de configuración, trata de conectar mediante la cuenta SYSTEM:

oracle audit

Nótese que SYSTEM es el usuario con el que conectamos, password es la clave de dicho usuario y localhost es la dirección del servidor de Oracle Database.

Conexiones en remoto

Aunque también se puede emplear SQL*Plus, es preciso contar con la definición del listener Oracle para poder hacer la conexión. Esta definición se introduce en el fichero tnsnames.ora, cuyo estándar es el siguiente:

addressname =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(Host = hostname)(Port = port))
)
(CONNECT_DATA =
(SERVICE_NAME = SID)
)
)

Como podéis ver, para conectarse a una base de datos Oracle hacen falta 3 datos: la dirección del servidor, el puerto en el cual el listener está a la escucha y por íltimo el SID (System ID) o identificador de sistema. Veremos más adelante que el SID puede ser adivinado en remoto, y como más de uno podrá imaginar, a veces nos dejanos este fichero abierto al mundo (http://www.google.com/search?&q=%22tnsnames%22+filetype%3Aora, la versión Bing disponible aquí por cortesía de Chema)

Si has instalado Oracle en una máquina virtual o en un servidor, utiliza la documentación para configurar tu fichero tnsnames.ora. Ten presente que SQL*Plus lo va a buscar en determinadas ubicaciones, con lo que si no usas las que recomienda el fabricante (ver documentación) tendrás que crear variables de enterno (ver documentación). Por defecto, XE coloca el fichero en la ruta C:\oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN, siendo sus contenidos los siguientes:

XE =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = nimoy)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = XE)
)
)

EXTPROC_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
)
)

ORACLR_CONNECTION_DATA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC_FOR_XE))
)
(CONNECT_DATA =
(SID = CLRExtProc)
(PRESENTATION = RO)
)
)

A la vista de lo anterior, ya sabéis que mi host se llama nimoy, que mi SID es XE y que el listener admite peticiones en el puerto 1521, que es el puerto por defecto.

Próxima lección

En la próxima lección veremos cómo se audita si el nombre escogido como identificador de sistema (SID), necesario para poder conectar a instancias Oracle, puede ser adivinado remotamente. Esto, como veremos, juega un papel importante en la seguridad de la instalación.

Un saludo,

Be Sociable, Share!

Categoría/s → Auditoria, Seguridad

Escribir un comentario

Note: XHTML permitido. Tu email nunca será publicado.

Suscribirse a los comentarios via RSS