¿Que Mirar Cuando Auditamos una Base de Datos Oracle?

DragonJAR 336x280 ¿Que Mirar Cuando Auditamos una Base de Datos Oracle?

Cuando se realiza una auditoria, siempre es recomendable seguir una serie de pasos para no pasar por algo ningún detalle que pueda resultar crucial para nuestra investigación, a continuación les dejo un pequeño listado de las cosas a las que debemos echarle una ojeada cuando auditamos una base de datos oracle.

4100282916 b0e4fe2de0 o ¿Que Mirar Cuando Auditamos una Base de Datos Oracle?

1). Determinar si en la BD esta activo el modo de operación en ARCHIVELOG o NONARCHIVELOG. Si este no esta activo, la evidencia de ataque o cambios serán sobrescritos por un nuevo redo.

Se puede determinar realizando una sentencia SQL a la BD:

  • SELECT VALUE V$PARAMETER WHERE FROM NAME=’archiv_log_start';

2). Análisis de los Oracle Data Blocks, para determinar:

  • Registros eliminados
  • Localizar bloques asignados a tablas (OBJETOS DE INTERÉS)
  • Seguimiento de Objetos creados y eliminados
  • Localización de tablas eliminadas
  • Localización de Funciones eliminadas

3). Obtención del SID de la BD

4). Enumeración de usuarios

  • SELECT USERID, ACTION#, RETURNCODE, TIMESTAMP# FROM SYS.AUD$;
  • SELECT USERID, COMMENT$TEXT FROM SYS.AUD$;

5). Consultar Ataques de Fuerza bruta o Diccionario a cuentas de usuario

  • SQL> SELECT USERID, ACTION#, RETURNCODE, TIMESTAMP# FROM SYS.AUD$;
  • SELECT NAME, LCOUNT FROM USER$ WHERE LCOUNT>0;
  • SELECT NAME, LTIME FROM USER$ WHERE ASTATUS = 4;

6). Consulta de Ataques de Fuerza Bruta a la cuenta SYS

7). Consulta de intentos del exploit AUTH_ALTER_SESSION

  • SELECT USERID, ACTION#, RETURNCODE, TIMESTAMP# FROM SYS.AUD$;

8). Consulta de intentos de iniciar una sesiÛn la base de datos a travÈs de XML (XDB)

  • SELECT USERID, ACTION#, RETURNCODE, TIMESTAMP# FROM SYS.AUD$;
  • SELECT COMMENT$TEXT FROM SYS.AUD$ WHERE USERID = ‘DBSNMP';
  • SELECT TERMINAL,SPARE1,TIMESTAMP# FROM SYS.AUD$ WHERE USERID=’DBSNMP';

9). Consulta si la Auditoria esta habilitada

  • SELECT USER_ID, SESSION_ID, SAMPLE_TIME FROM SYS.WRH$_ACTIVE_SESSION_HISTORY ORDER BY SAMPLE_TIME;
  • SELECT USERID, ACTION#, RETURNCODE, TIMESTAMP# FROM SYS.AUD$;
  • SELECT USERID,ACTION#,TIMESTAMP#,LOGOFF$TIME FROM AUD$;

10). Consulta del archivo sqlnet.log,Agntsrvc.log, spfilesid.ora, o el init.ora todas las ubicaciones referentes a estos parámetros:

  • audit_file_dest        ——-> Sistema de Auditoria (ORACLE_HOME/rdbms/audit)
  • background_dump_dest    ——-> archivo alert.log y tracer de procesos ($ORACLE_HOME/admin/$ORACLE_SID/bdump)
  • core_dump_dest        ——-> archivos Oracle core dump ($ORACLE_HOME/DBS/)
  • db_recovery_file_dest    ——-> redo logs, flashback logs, y RMAN backups
  • user_dump_dest        ——-> Archivos trace debuggin procesos/usuarios (/oracle/utrc)
  • utl_file_dir        ——-> Especifica uno o m·s directorios que Oracle debe utilizar para PL/SQL archivos E/S.
  • control_files        ——-> Especifica uno o varios nombres de archivos de control de Oracle
  • db_create_file_dest    ——-> Especifica la ubicación predeterminada de archivos de datos administrados por Oracle.
  • db_create_online_log_dest_n—-> Especifica la ubicación de los redo logs y file control
  • log_archive_dest    ——-> Es aplicable solo si la BD esta en modo de ARCHIVELOG
  • log_archive_dest_n    ——-> Define hasta 10 archivos de registros logs.

11). Consulta de archivos Log Listener (ORACLE_HOME/network/admin/listener.ora) (lsnrctl status me dara la ubicación actual)

12). Revisión de los LOGS de sentencias(SQL $ORACLE_HOME/bin/LOGIN.SQL,$ORACLE_HOME/dbs/LOGIN.SQL,$ORACLE_HOME/SQLPlus/admin/glogin.sql)

13). Consultando informacion de los inicios de Sesion:

  • SELECT USER_ID, SESSION_ID, SAMPLE_TIME FROM SYS.WRH$_ACTIVE_SESSION_HISTORY

14). Consultar una lista de usuarios y roles, usuarios con función de DBA, para buscar inconsistencias,o usuarios creados por un atacante y la generación de contraseñas fuertes con la validación de los hash, cuentas bloqueadas, tiempos de password

  • SELECT USER#, NAME, ASTATUS, PASSWORD, CTIME, PTIME, LTIME FROM SYS.USER$ WHERE TYPE#=1;
  • SELECT U.NAME AS “GRANTEE”, U2.NAME AS “ROLE” FROM SYS.USER$ U,SYS.USER$ U2, SYS.SYSAUTH$ A WHERE U.USER# = A.GRANTEE# AND PRIVILEGE# = U2.USER#;

15). Consultar una lista de objetos y privilegios en el sistema

  • SELECT U.NAME AS “GRANTEE”, P.NAME AS “PRIVILEGE”, U2.NAME AS “OWNER”, O.NAME AS “OBJECT” FROM SYS.USER$ U, SYS.USER$ U2,SYS.TABLE_PRIVILEGE_MAP P, SYS.OBJ$ O, SYS.OBJAUTH$ A WHERE U.USER# =A.GRANTEE# AND A.OBJ# = O.OBJ# AND P.PRIVILEGE = A.PRIVILEGE# AND O.OWNER#=U2.USER#;
  • SQL> SELECT OBJ#, OWNER#, NAME, TYPE#, CTIME, MTIME, STIME FROM SYS.OBJ$ ORDER BY CTIME ASC;

16). Consulta de tablas eliminadas

  • SELECT U.NAME, R.ORIGINAL_NAME, R.OBJ#, R.DROPTIME, R.DROPSCN FROM SYS.RECYCLEBIN$ R, SYS.USER$ U WHERE R.OWNER#=U.USER#;

17). Consulta de Directorios, archivos datos, archivos externos, tablas externas, buscando elementos perdidos o ubicados en sitios diferentes por el atacante.

  • SELECT T.NAME AS “TABLESPACE”, D.NAME AS “FILNAME” FROM V$DATAFILE D, TS$ T WHERE T.TS#=D.TS#;
    SELECT U.NAME AS “OWNER”, O.NAME AS “DIRECTORY”, D.OS_PATH AS “PATH” FROM SYS.OBJ$ O, SYS.USER$ U, SYS.DIR$ D WHERE U.USER#=O.OWNER# AND O.OBJ#=D.OBJ#;
  • SELECT O.NAME, D.DEFAULT_DIR FROM SYS.OBJ$ O, SYS.EXTERNAL_TAB$ D WHERE D.OBJ# = O.OBJ#;

18). El Monitor del Sistema (SMON) MON_MOD$ Table

  • SELECT U.NAME AS “OWNER”, O.NAME AS “OBJECT”, M.OBJ#, M.INSERTS,M.UPDATES, M.DELETES, M.TIMESTAMP FROM SYS.MON_MODS$ M, SYS.USER$ U,SYS.OBJ$ O WHERE O.OBJ#=M.OBJ# AND U.USER#=O.OWNER#;

19). Revision de Triggers al encendido, apagado, inicio y terminacion de sesion

  • SELECT U.NAME AS “OWNER”, O.NAME AS “ENABLED_TRIGGER_NAME”,DECODE(T.TYPE#, 0, ‘BEFORE’,2, ‘AFTER’,’NOTSET’) AS “WHEN” FROM SYS.OBJ$ O, SYS.TRIGGER$ T, SYS.USER$ U WHERE O.OBJ#=T.OBJ# AND O.OWNER# = U.USER# AND ENABLED=1;
  • SELECT U.NAME AS “OWNER”, O.NAME AS “ENABLED_TRIGGER_NAME” FROM SYS.OBJ$ O, SYS.TRIGGER$ T, SYS.USER$ U WHERE O.OBJ#=T.OBJ# AND O.OWNER# = U.USER# AND ENABLED=1 AND BITAND(T.SYS_EVTS,1) = 1;
  • SELECT U.NAME AS “OWNER”, O.NAME AS “ENABLED_TRIGGER_NAME” FROM SYS.OBJ$ O, SYS.TRIGGER$ T, SYS.USER$ U WHERE O.OBJ#=T.OBJ# AND O.OWNER# = U.USER# AND ENABLED=1 AND BITAND(T.SYS_EVTS,2) = 2;
  • SELECT U.NAME AS “OWNER”, O.NAME AS “ENABLED_TRIGGER_NAME” FROM SYS.OBJ$ O, SYS.TRIGGER$ T, SYS.USER$ U WHERE O.OBJ#=T.OBJ# AND O.OWNER# = U.USER# AND ENABLED=1 AND BITAND(T.SYS_EVTS,8) = 8;
  • SELECT U.NAME AS “OWNER”, O.NAME AS “ENABLED_TRIGGER_NAME” FROM SYS.OBJ$ O, SYS.TRIGGER$ T, SYS.USER$ U WHERE O.OBJ#=T.OBJ# AND O.OWNER# = U.USER# AND ENABLED=1 AND BITAND(T.SYS_EVTS,16) = 16;

20). Consulta de librerias, que puedan estar ejecutando codigo arbitrario(malicioso)

  • SELECT U.NAME AS “OWNER”, O.NAME AS “LIBRARY”, L.FILESPEC AS “PATH” FROM SYS.LIBRARY$ L, SYS.USER$ U, SYS.OBJ$ O WHERE O.OBJ#=L.OBJ# AND O.OWNER#=U.USER#;

21). Consultas de FlashBack (nuevos privilegios, derechos asignados, nuevos objetos, objetos eliminados) entre la tabla actual y la anterior en un tiempo determinado.

  • SELECT GRANTEE#, PRIVILEGE# FROM SYS.SYSAUTH$ MINUS SELECT GRANTEE#, PRIVILEGE# FROM SYS.SYSAUTH$ AS OF TIMESTAMP(SYSDATE – INTERVAL ‘3600’ MINUTE);
  • SELECT NAME FROM SYS.OBJ$ MINUS SELECT NAME FROM SYS.OBJ$ AS OF TIMESTAMP(SYSDATE – INTERVAL ‘156’ MINUTE);
  • SELECT NAME FROM SYS.OBJ$ AS OF TIMESTAMP(SYSDATE – INTERVAL ‘156’ MINUTE) MINUS SELECT NAME FROM SYS.OBJ$;

22). Consulta de las tablas RECYLEBIN$ y OBJ$

  • SQL> SELECT MTIME, NAME, OWNER#, OBJ# FROM SYS.OBJ$ WHERE NAME LIKE ‘BIN$%';

23). Consultas la Administracion automatica Deshacer ( UNDOTBS01.DBF)

  • SELECT SEGMENT_NAME,HEADER_FILE,HEADER_BLOCK,EXTENTS,BLOCKS FROM DBA_SEGMENTS WHERE SEGMENT_NAME LIKE ‘_SYSSMU%$';

24). Consulta de los logs del Apache (Oracle Application Server)

25). ¿faltó algo? háznoslo saber en los comentarios.

Actualizado:
El usuario coco, nos comparte una serie de scripts que utiliza en su trabajo para auditar su base de datos oracle, puedes basarte en ellos para auditar tu propia DB de oracle.


Si te ha gustado el post, compartelo y ayudanos a crecer.

Unete a nuestra Fanpage Siguenos en Twitter

Autor: D7n0s4ur70

Compartir este Artículo
  • Pingback: ¿Que Mirar Cuando Auditamos una Base de Datos Oracle? | Shadow Security()

  • uno

    Muy buen post. Por aportar algo tambien son interesante las consultas de trazas, si estuvieran activadas of course con TKPROF. Con esta herramienta de Oracle desde la shell del S.O. y los parametros que trae se puede averiguar mucha informacion, consultas mas utilizadas, uso de CPU, RAM por sentencias contra la BD, etc…
    Saludos!

  • test

    EL articulo esta completamente desfazado. 90% de las veces auditar significa con respecto a controles de auditoria (que viendo el proceso el autor no tiene ni idea de esto). EN el articulo esta mezclando una auditoria por controles de seguridad y una auditoria con respecto al ambito forence (esta ultima sigue un proceso completamente distinto).

  • http://www.world-of-dino.blogspot.com Dinosaurio

    Cordial saludo,

    Esto sono mas a resentimiento o patadas de abogado que de alguien con un comentario constructivo. Pero en fin el POST original lo puedes encontrar aqui

    http://world-of-dino.blogspot.com/2009/11/elementos-auditar-en-oracle.html

    En donde especifico la labor que estaba ejecutando en una entidad publica de mi Pais, de la cual no voy a traer a colacion y me imagino que su vasto conocimiento le permitira comprender el por que no presento evidencias de lo mismo.

    En fin, todo esto no es nada nuevo, son simplemente una recopilacion de buenas practicas de auditoria, procedimientos forenses y de buenas practicas de seguridad, que me permiten conocer el estado actual de la BD, su sistema de auditoria, de control, seguimiento y recopilacion de evidencias.

    Para su informacion auditoria no es hacer un checklist y decir “No conformidad” palabra magica de los auditores XDDD

    Y lo inivito a q analice detalladamente la definicion y fundamentos de la Auditoria en especial la Iformatica y el tip orientado a la BD.

    Mejro dicho para ahorrarle el trabajo le cito a quien lo sabe todo “Wikipedia”
    XDD

    “La auditoría informática es el proceso de recoger, agrupar y evaluar evidencias para determinar si un sistema de información salvaguarda el activo empresarial, mantiene la integridad de los datos, lleva a cabo eficazmente los fines de la organización, utiliza eficientemente los recursos, y cumple con las leyes y regulaciones establecidas. También permiten detectar de forma sistemática el uso de los recursos y los flujos de información dentro de una organización y determinar qué información es critica para el cumplimiento de su misión y objetivos, identificando necesidades, duplicidades, costes, valor y barreras, que obstaculizan flujos de información eficientes.

    Auditar consiste principalmente en estudiar los mecanismos de control que están implantados en una empresa u organización, determinando si los mismos son adecuados y cumplen unos determinados objetivos o estrategias, estableciendo los cambios que se deberían realizar para la consecución de los mismos. Los mecanismos de control pueden ser directivos, preventivos, de detección, correctivos o de recuperación ante una contingencia.

    Los objetivos de la auditoría Informática son:

    * El control de la función informática
    * El análisis de la eficiencia de los Sistemas Informáticos
    * La verificación del cumplimiento de la Normativa en este ámbito
    * La revisión de la eficaz gestión de los recursos informáticos.”

    Aun mas,

    “Auditoría de las bases de datos: Controles de acceso, de actualización, de integridad y calidad de los datos.”

    Y si me equivoque YO, entonces definitivamente se equivocaron los expertos y GuruS de estos temas, por que esto no es nada nuevo!!.

    Bytes

    Dino

    PD: Cuando se desea concluir construtivamente se hace con Bases y Fundamentos no con simples supuestos!!.

  • http://itfreekzone.blogspot.com d3m4s1@d0v1v0

    Muy interesante post, todavía no tuve tiempo de meter manos en DBs Oracle, pero espero hacerlo pronto y este artículo me va a servir.
    Saludos!

  • Coco

    Les dejo unos script que utilice en mi trabajo. Obviamente analicen antes de ejecutarlos.
    http://www.megaupload.com/?d=A7ATMXMD