Está en la página 1de 8

UNIVERSIDAD FRANCISCO DE PAULA SANTANDER SEDE OCAA

Mdulo de Auditoria a Bases de Datos


Ing. Enrique Santiago, MsC, PhD(c)
Procedimiento de Auditoria al Motor de Bases de datos Oracle

1. INICIOS DE SESION

1.1 Iniciar sesin como dba en Oracle (localmente):

>sqlplus /nolog

>conn / as sysdba

2. CONSULTAS ESTRUCTURA DE LA BASE DE DATOS - GENERAL:

2.1 Consulta para conocer los productos Oracle instalados y la versin:

sql>Select * from product_component_version;

2.2 Consultar diccionario de datos:

select * from dictionary;

2.3 Listar archivos de los Table Spaces:

SQL> SELECT rpad(a.TABLESPACE_NAME,10) tablespace, rpad(a.FILE_NAME,40) fichero,


to_char(a.BYTES/1024/1024,'999.99') MB,

to_char(a.increment_by*b.value/1024/1024,'99.99') nextmb,

to_char(a.MAXBYTES/1024/1024,'9999.99') maxmb

FROM DBA_DATA_FILES a, v$parameter b

where b.name='db_block_size';

2.4 Determinar si en la BD est activo el modo de operacin en ARCHIVELOG o


NONARCHIVELOG.

SQL>SELECT VALUE FROM V$PARAMETER WHERE NAME='log_ archive_start';

Tambin puede hacerse con las siguientes consultas:

>Select log_mode from v$database;

>show parameter log_archive_start;

2.4 Obtencin del SID por defecto de la BD:

>show parameter service_names

Tambin puede buscarse dentro de algunos archivos de configuracin como por ejemplo:

Para 9i buscar el archivo:

1
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER SEDE OCAA
Mdulo de Auditoria a Bases de Datos
Ing. Enrique Santiago, MsC, PhD(c)
Procedimiento de Auditoria al Motor de Bases de datos Oracle

C:\oracle\ora92\network\admin\tnsnames.ora

El valor de (SERVICE_NAME = ORCL)

Para 11G: Ver el archivo

C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN\tnsnames.ora

El valor de (SERVICE_NAME = XE)

2.5 Procesos Corriendo a nivel de la BD y el sistema operativo, usuario del sistema operativo
y de Oracle, terminal y programa (incluye procesos en background)

>Select USERNAME, PROCESS, OSUSER, MACHINE, TERMINAL, PROGRAM, TYPE from


V$SESSION

2.6 Procesos Corriendo a nivel de la BD y el sistema operativo, que sean de usuarios de la


Base de datos que requieran intervencin humana:

select USERNAME, PROCESS, OSUSER, MACHINE, TERMINAL, PROGRAM, TYPE from V$SESSION
where OSUSER <> 'SYSTEM' and TYPE <> 'BACKGROUND';

2.7 Consultar librerias, su id, su ruta en disco y si est siendo auditada. (Permiten detectar
cdigo arbitrario/malicioso):

SQL>select obj#,filespec,audit$ from sys.library$;

2.7 Consulta de libreras y el usuario con el que son invocadas (Permiten detectar cdigo
arbitrario/malicioso)

SQL>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#;

3. CONSULTAS DE USUARIOS DE LA BASE DE DATOS

3.1 Listar usuarios de la BD:

SQL> select username,user_id,created from all_users;

Tambin pueden hacerse con:

SQL> select username from dba_users;

3.2 Enumeracin o listado de usuarios de la BD, (solo si esta estuvo activa la auditoria):

SQL>SELECT USERID, COMMENT$TEXT FROM SYS.AUD$;

2
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER SEDE OCAA
Mdulo de Auditoria a Bases de Datos
Ing. Enrique Santiago, MsC, PhD(c)
Procedimiento de Auditoria al Motor de Bases de datos Oracle

Puede obtenerse ms detalle incluyendo acciones registrada en el Audit trail asi:

SQL>SELECT USERID, ACTION#, RETURNCODE, TIMESTAMP# LOGOFF$TIME FROM SYS.AUD$;

Nota: Si no arroja registros es porque esta desactivada la auditoria.

3.3 Consultar id de usuarios, usernames, tipos, contraseas, fecha de creacin, fecha de


ejecucin procesos (detallado):

SQL> select * from sys.user$;

3.4 Consultar el status de las cuenta de usuario en Oracle:

SQL> SELECT username, account_status FROM dba_users;

USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SYSTEMADMIN OPEN
(...)
42 rows selected.

3.3 Consultar Usuarios Bloqueados:

SQL> select username,account_status from dba_users where lock_date is not null;

USERNAME ACCOUNT_STATUS
------------------------------ --------------------------------
SYSTEMADMIN LOCKED(TIMED)
(...)
9 rows selected.

3.4 Desbloquear un usuario en oracle:

SQL> alter user SYSTEMADMIN account unlock;

User altered.

3.5 Listar sesiones activas en el DBMS:

SQL> SELECT count(*) FROM v$session;

3.6 Listar Roles definidos a nivel de Base de Datos (lista todos):

SQL> SELECT role FROM dba_roles;

3
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER SEDE OCAA
Mdulo de Auditoria a Bases de Datos
Ing. Enrique Santiago, MsC, PhD(c)
Procedimiento de Auditoria al Motor de Bases de datos Oracle

3.7 Listar Roles por usuario definidos a nivel de Base de Datos: (Ejecutar como DBA)

SQL> SELECT username, granted_role FROM user_role_privs;

3.8 Listar Roles definidos a nivel de Base de Datos por usuario (solicita Username):

SQL> SELECT grantee, granted_role FROM dba_role_privs WHERE grantee=upper('&grantee')


order by grantee;

3.9 Listar Roles y Privilegios del sistema asignados a un usuario: (solicita Username):

SQL> SELECT lpad(' ', 2*level) || granted_role "User, his roles and privileges"

from ( /* THE USERS */

select null grantee,

username granted_role

from dba_users

where username like upper('%&enter_username%')

/* THE ROLES TO ROLES RELATIONS */

union select grantee, granted_role

from dba_role_privs

/* THE ROLES TO PRIVILEGE RELATIONS */

union select grantee, privilege

from dba_sys_privs

start with grantee is null

connect by grantee = prior granted_role;

3.10 Listar detalle de privilegios otorgados a los usuarios en la Base de Datos:

SQL> SELECT grantee, granted_role, admin_option, default_role from DBA_ROLE_PRIVS order


by GRANTEE;

3.11 Listar usuarios con Role de DBA (Conectarse antes como DBA):

SQL>select * from user_role_privs where granted_role=DBA;

4
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER SEDE OCAA
Mdulo de Auditoria a Bases de Datos
Ing. Enrique Santiago, MsC, PhD(c)
Procedimiento de Auditoria al Motor de Bases de datos Oracle

4 CONSULTAS DE BASE DE DATOS DE USUARIOS:

4.3 Listar tablas de la base de datos del usuario actual:

>select * from user_tables;

Tambin puede obtenerse el listado consultando la descripcin y listando la tabla siguiente:

>desc DBA_TABLES;

>select * from DBA_TABLES;

4.2 Listar las tablas de un usuario especfico:

SQL>select * from DBA_TABLES where owner='SYSTEM';

5 LISTAR CODIGO FUENTE, PROCEDIMIENTOS, FUNCIONES, PAQUETES Y DISPARADORES:

5.1 Listar el codigo fuente (Librerias, packages, procedimientos, funciones y triggers)


embebidos en la base de datos de todos los usuarios:

>select distinct name, type from all_source;

5.2 Listar el codigo fuente (Librerias, packages, procedimientos, funciones y triggers)


embebidos en la base de datos del usuario actual:

>select distinct name, type from user_source;

5.3 Listar el nombre, tipo y lneas de cdigo de la capa de lgica computacional embebidos
en la base de datos del usuario actual:

>select name, type, line, text from user_source;

5.4 Listar procedimientos almacenados:

>SELECT DISTINCT name, type FROM USER_SOURCE WHERE TYPE IN ('PROCEDURE','FUNCTION')


ORDER BY 2;

5.5 Listar disparadores del usuario actual:

>Select name,type from user_source where type=TRIGGER;

5
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER SEDE OCAA
Mdulo de Auditoria a Bases de Datos
Ing. Enrique Santiago, MsC, PhD(c)
Procedimiento de Auditoria al Motor de Bases de datos Oracle

5.6 Listar disparadores del usuario actual:

>Select owner, name, type from all_source where type=TRIGGER;

6 CONSULTAS ESTRUCTURA DE LA BASE DE DATOS - ESPECIFICA:

6.1 Listar tablas de cada usuario, tablespace al que pertence la tabla y fecha del ultimo Mtto:

>select TABLE_NAME,TABLESPACE_NAME,OWNER,LAST_ANALIZED from DBA_TABLES order by


owner;

7. MONITORIZACION DE LA BASE DE DATOS Y SUS OBJETOS:

7.1 Consultar si la Auditoria est habilitada

SQL>SELECT USER_ID, SESSION_ID, SAMPLE_TIME FROM SYS.WRH$_ACTIVE_SESSION_HISTORY


ORDER BY SAMPLE_TIME;

Nota: Si no obtiene registros indica que esta deshabilitada;

Tambien podria hacerse asi:

SQL>select name,value from v$parameter where name like 'audit_trail';

Tambien puede consultarse la propiedad audit_trail dentro de los parametros asi:

SQL>Show parameter audit_trail

Nota: el valor de respuesta en NONE si esta desactivada.

7.2 Activar la auditoria (No se hace durante el proceso de Auditoria en sitio):

alter system set audit_trail=DB scope=spfile;

7.3 Desactivar la auditoria:

alter system set audit_trail=none scope=spfile;

Nota: Para ambas situaciones (item 7.2 y 7.3) debe subir y bajar la instancia por SQLPLUS asi:

>shutdown immediate;

>startup

6
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER SEDE OCAA
Mdulo de Auditoria a Bases de Datos
Ing. Enrique Santiago, MsC, PhD(c)
Procedimiento de Auditoria al Motor de Bases de datos Oracle

7.4 Activar la auditoria para login y logout

>audit connect

7.5 activar auditoria para todos los intentos de conexion

>audit session;

7.6 Activar auditoria sobre todos los intentos fallidos

>audit session whenever not successful;

7.4 Activar auditoria sobre la modificacin de algunas tablas del usuario System

>audit insert,update on system.factura by access;

>audit insert,update on system.movcontable by access;

>audit all on system.movContable by session;

7.5 Consultar nombre de Usuario, IP/Nombre, acccion realizada, fecha de la accion en los
registros de auditoria:

SQL>select os_username,username,terminal, action_name,timestamp, comment_text from


dba_audit_trail;

7.6 Consultar datos completos de los registros de auditoria:

SQL>select * from dba_audit_trail;

7.7 Consultar usuarios que tienen contrasea en texto claro y como contrasea el mismo
nombre de usuario:

SQL>Select name, password from sys.user$ where upper(sys.user$.name)


=upper(sys.user$.password);

7.8 Consultar usuarios que tienen contrasea en protegida:

SQL>Select name, password from sys.user$ where length (sys.user$.password)>0;

7
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER SEDE OCAA
Mdulo de Auditoria a Bases de Datos
Ing. Enrique Santiago, MsC, PhD(c)
Procedimiento de Auditoria al Motor de Bases de datos Oracle

7.9 Consultar Usuarios que no tienen contrasea:

SQL>select name, password from sys.user$ minus (Select name, password from sys.user$ where
length (sys.user$.password)>0 );

7.10 Consultar Ataques de Fuerza bruta al Diccionario a cuentas de usuario (Iniciar sesin
DBA):

SQL>connect sys/clave as sysdba

>SELECT NAME, LCOUNT FROM sys.USER$ WHERE LCOUNT>0;

Y solo para versions anteriores a 11G:

>SELECT NAME, LTIME FROM sys.USER$ WHERE ASTATUS = 4;

7.11 Consulta de Ataques de Fuerza Bruta a la cuenta SYS

SQL>connect sys/clave as sysdba

SQL>SELECT NAME, LCOUNT FROM sys.USER$ WHERE LCOUNT>0 and name = UPPER(sys);

7.12 Consulta de intentos de iniciar una sesin la base de datos a traves de XML (XDB)

SQL>SELECT COMMENT$TEXT FROM SYS.AUD$ WHERE USERID = 'DBSNMP';

SQL>SELECT TERMINAL,SPARE1,TIMESTAMP# FROM SYS.AUD$ WHERE USERID='DBSNMP';

También podría gustarte