Banner Superior

InfoSecurity News
 
Año 2 - N°3 | Marzo 2006
Inicio Puntos de Vista Entrevista Hacking bajo la lupa Noticias e-fraude Las Leyes Palabras de CISO Hot vulnerabilities Foro
Contactos Staff Portal InfoSecurity Online Recomiendanos Registrarse
Estadisticas
lo sabias?
Carta de Lectores
Tips para un CISO
Capacitación
Toolbox
Agenda InfoSec
Productos
Bolsa de Trabajo
Links de Interes
Libro de Pases
Números Anteriores
HACKING BAJO LA LUPA
Detección y Evasión
Por Hernán Marcelo Racciatti
Senior Security Consultant – SIC Informática

HERNÁN MARCELO RACCIATTI

HERNÁN MARCELO RACCIATTI
Senior Security Consultant - SIC Informática

SQL Injection full analisys – Parte II (Ver parte I)

Cuando hablamos de evasión, varias son las alternativas. Entre las más comunes se encuentran:

  • Evasión básica utilizando diferentes encoders.
  • Evasión por medio de la inclusión de espacios en blanco.
  • Evasión vía fragmentación y segmentación TCP.
  • Evasión basada en la imposibilidad de detectar TODO.

Teniendo en cuenta el último punto, podemos inferir fácilmente que cualquier modificación no contemplada en una firma podría, en principio, pasar desapercibida para muchos de los IDS/IPS tradicionales.

Una de las artimañas típicas al momento de lanzar un ataque de SQL Injection, se relaciona con la posibilidad de enviar “strings de comparación verdadera” clásicos del estilo ‘OR 1=1—. Está claro que ataques de esta clase seguramente se encontrarán incluidos entre sus firmas de IDS, pero algunas modificaciones podrían eventualmente no estar presentes:

OR 'cualquiercosa' = 'cualquiercosa'
OR 'cualquiercosa' = N'cualquiercosa'

Como se percibe en el ejemplo anterior, la inserción de un caracter adicional (N), le “dice” al SQL Server que el siguiente string debe ser tratado como nvarchar.

Este hecho no altera en nada la comparación desde el punto de vista de la lógica utilizada, pero sí podría afectar la identificación por firmas, pues el string resultante ya no es el mismo. Del mismo modo, los ejemplos dispuestos a continuación también podrían tener alguna posibilidad de no alterar su IDS:

OR 'cualquiercosa' = 'cualquier'+'cosa'
OR 'cualquiercosa' LIKE 'cualquiercosa'
OR 'cualquiercosa' LIKE '%'
OR 'cualquier%' > 'a'
OR 'cualquiercosa' < 'z'
OR 'cualquiercosa' BETWEEN 'A' AND 'Z'

Cada uno de los strings luce de forma diferente respecto de firmas estáticas: aunque algunos son muy distintos entre sí, todos comprenden un “string de condición verdadera” capaz de provocar situaciones indeseadas en aplicaciones vulnerables. En rigor de verdad, lo que se muestra en estos ejemplos es que por cada firma inventada, una nueva técnica de evasión puede ser diseñada.

Por otra parte, si bien una alternativa es construir firmas genéricas, esto conlleva el crecimiento exponencial de los falsos positivos, situación que en ciertas circunstancias puede ser aún peor que la enfermedad (a menudo el OR puede ser parte de código válido; en otras circunstancias, sencillamente podría reemplazarse por su valor encodeado).

Una cuestión de Espacios y Comentarios:

Honestamente, las posibilidades son muchas y dependen bastante de la inventiva del testeador o intruso. Una técnica de evasión muy habitual se basa en la interpretación de los espacios como parte de una sentencia SQL. Si bien la mayoría de las firmas considera las combinaciones con espacios (comúnmente utilizadas), aún sigue habiendo opciones no contempladas.

En este caso me refiero a la simbolización de comentarios “like C”, utilizada por Microsoft SQL, que si bien es desconocida por gran parte de los desarrolladores SQL, se halla implementada y disponible. Veamos el ejemplo:

'/**/OR/**/1/**/=/**/1
UNION/**/SELECT …
HAVING/**/1=/**/1

En estos payloads hemos incluido varios caracteres que aunque no tienen injerencia desde el punto de vista de la lógica SQL (¡son válidos y las sentencias reales siguen siendo ejecutables!) podrían no coincidir con la firma tradicional que Usted suele incluir en la configuración de su IDS.


Conclusión

Variadas son las técnicas que pueden ser empleadas al momento de intentar la evasión de firmas, respecto de una especie de ataque en particular, como SQL Injection. Sin embargo, no todo es tan sencillo y muchos IDS/IPS seguramente ya habrán previsto las distintas alternativas, aunque si Usted ha prestado atención a estas líneas, tendrá la oportunidad de revisar la configuración de sus sistemas de detección de intrusos y verificar el modo en que este tipo de reglas se encuentran implementadas.

Por último, numerosos son los consejos que podrían brindarse a los efectos de mejorar su postura detectiva, aunque prefiero recordarle que cuando hablamos de SQL Injection, no existe mejor contramedida que las buenas prácticas de programación: nunca olvide que si una aplicación no es vulnerable, nunca deberá complicarse con cuestiones tales como detección y evasión.


Por Hernán Marcelo Racciatti
Senior Security Consultant – SIC Informática

Recomienda esta Nota a un Amigo:
Tu Nombre y Apellido:
Tu Email:
Email de tu amigo:
Nombre de tu amigo:
Apellido de tu amigo:

 

 

Banner Symantec
Banner HP
Banner 3Com
Banner Sun ComWare
Banner I-SEC
Banner ASIar
Banner ComPlus
Banner Education Center
Banner InfoSecurity

Copyright © 2006 I-Sec. Todos los derechos reservados Política de protección de Datos Personales Powered by