0 calificaciones0% encontró este documento útil (0 votos)
3 vistas4 páginas
Este documento proporciona un plan de trabajo (PT) para revisar la seguridad de una base de datos Oracle utilizada por un banco. El PT incluye 24 pasos para auditar la configuración de seguridad y auditoría, usuarios y roles, objetos eliminados, registros de actividad, y más, utilizando consultas SQL para identificar posibles vulnerabilidades o actividad maliciosa.
Este documento proporciona un plan de trabajo (PT) para revisar la seguridad de una base de datos Oracle utilizada por un banco. El PT incluye 24 pasos para auditar la configuración de seguridad y auditoría, usuarios y roles, objetos eliminados, registros de actividad, y más, utilizando consultas SQL para identificar posibles vulnerabilidades o actividad maliciosa.
Este documento proporciona un plan de trabajo (PT) para revisar la seguridad de una base de datos Oracle utilizada por un banco. El PT incluye 24 pasos para auditar la configuración de seguridad y auditoría, usuarios y roles, objetos eliminados, registros de actividad, y más, utilizando consultas SQL para identificar posibles vulnerabilidades o actividad maliciosa.
Considere que la aplicación web de un Banco tiene la Base de Datos Oracle.
¿Qué aspectos de seguridad mínimos usted consideraría en la revisión de Base de Datos? (desarrolle a criterio). Para ello considere un PT (Plan de Trabajo) sugerido para esta revisión. Los siguientes son algunos puntos relevantes que deberían tomarse en cuenta: 1). Determinar si en la BD esta activo el modo de operación en ARCHIVELOG o NONARCHIVELOG. Si este no está 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 está 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_HOM E/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 del 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). Revisión de Triggers al encendido, apagado, inicio y terminación de sesión 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 librerías, que puedan estar ejecutando código 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 administración automática 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)