Está en la página 1de 4

Tarea/Actividad 4: BD Oracle

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)

También podría gustarte