Resultados 1 al 4 de 4

Explotación de Windows, pasado, presente y futuro

  1. #1 Explotación de Windows, pasado, presente y futuro 
    HH Administrator Avatar de LUK
    Fecha de ingreso
    Oct 2001
    Ubicación
    SpaÑa
    Mensajes
    5.284
    Descargas
    223
    Uploads
    250
    Windows, uno de los sistemas operativos más extendidos en ordenadores personales del momento. Empezamos una serie de artículos donde iremos viendo la evolución tanto de los métodos para explotar fallos encontrados en el sistema, como de las protecciones para prevenir estos fallos y evitar sus consecuencias.

    Esta saga de artículos está basada en otra recopilación, pero modificada y adaptada a otro estilo. ¿Preparados para recordar tiempos pasados? ¡Seguro que a más de uno le saldrá la vena romántica!

    Aviso que puede que me deje cosas, algunas importantes. Por ello, lo digo de antemano y pido disculpas desde ya. Ahora, ¡a disfrutarlo!

    Nos centraremos en el sistema operativo de Microsoft, pero para ello tendremos que tratar temas que no están exclusivamente relacionados con él. Para comenzar vamos a ver una breve historia de los buffer overflow, y lo que han significado desde sus inicios.

    Hace algún tiempo, en 1988, el gusano Morris empezó a extenderse por Internet, y tuvo mucha cobertura en los medios de comunicación de la época. Fue el primer gusano conocido en explotar vulnerabilidades de desbordamiento de buffer para propagarse, concretamente explotaba fallos conocidos en Unix sendmail, Finger y rsh/rexec, además de contraseñas débiles.

    Poco después, en 1996, Elias Levy (Aleph One) escribió Smashing The Stack For Fun And Profit para Phrack issue #49, documento mítico y de referencia para muchos.

    Por otro lado, tres años más tarde Matt Conover escribía el primer artículo detallado acerca de heap overflow. Al año siguiente, Solar Designer publicaría el primer exploit genérico para Windows basado en un heap overflow (Netscape exploit).

    En esta época, los sistemas operativos contaban con pocas protecciones de memoria y una pobre validación en la entrada de datos. El uso de una función vulnerable era suficiente para abusar de la memoria (normalmente en la pila) y tomar el control del flujo del programa, con lo que un atacante podría ejecutar su propio código.

    Era algo que traía de cabeza a los desarrolladores de sistemas operativos. En 1996, Casper Dik escribió un parche que modificaba en tiempo de ejecución la imagen del kernel para que la pila no tuviese permisos de ejecución en Solaris 2.4 a 2.5.1. Poco después Solar Designer escribió algo parecido para Linux.

    Cerca del año 2000, Solar Designer volvía con algo nuevo, ataques return-to-libc. Se trataba de usar funciones cargadas en memoria para saltar la protección que hacía la pila no ejecutable, así podía usar funciones como system() (para ejecutar un comando), pero por otro lado tenía el inconveniente de que no podría usar shellcodes avanzados.



    Nos quedamos en el año 2000 con:
    ¡En el próximo artículo entraremos de lleno en el año 2000!

    Sobre las referencias y fuentes, están todas an el tercer post (última parte), así como la recopilación original.
    [][][] LUK [][][]
    hackhispano.com
    Citar  
     

  2. #2 Parte 2/3 
    HH Administrator Avatar de LUK
    Fecha de ingreso
    Oct 2001
    Ubicación
    SpaÑa
    Mensajes
    5.284
    Descargas
    223
    Uploads
    250
    Continuamos con esta serie de artículos, y nos metemos en el año 2000. Empezamos con Windows 2000, a partir del cual vienen cosas muy interesantes.

    Podríamos llamar a esta época la edad de oro de los desarrolladores de exploits ya que, desgraciadamente, Microsoft olvidó implementar una protección contra buffer overflow en sus sistemas. Los ataques clásicos funcionaban genial, y vemos en muy contadas ocasiones vulnerabilidades complejas, aunque la explotación en sí no era complicada.

    Debido a estas pobres protecciones nos encontramos con virus (gusanos) de los que se habló bastante en su momento, y tuvieron una fuerte repercusión.

    Por ejemplo, el gusano Sasser, que explotaba un fallo en LSASS; SQL Slammer, que utilizaba otro fallo en SQL Server; u el conocidísimo Blaster que explotaba un fallo en el servicio DCOM RPC, y además incluía un mensaje dedicado:

    billy gates why do you make this possible ? Stop making money
    and fix your software!!


    También tenemos exploits clásicos y muy funcionales:
    • DCOM RCP exploit por flashsky (de xfocus).
    • MS Windows (RPC DCOM) exploit por HD Moore (Metasploit).
    • Kill Bill exploit por Alexander Sotirov.
    • MS Windows Plug-and-Play exploit por houseofdabus.
    Además nos encontramos con algunas herramientas gráficas, como el conocido SMBdie que podía producir un cuelgue inmediato en cualquier sistema vulnerable.



    Acerca de stack overflows clásicos hay algunos papers muy buenos y muy bien documentados:
    También tenemos algunos sobre heap overflows clásicos:
    Si cambiamos de área, hay un extenso trabajo en cuanto a vulnerabilidades basadas en el propio kernel de Windows (ya no tan clásicas):
    Después de todo esto, volvemos al área de trabajo del usuario con ¡protecciones de memoria!

    Debido a todos los abusos del sistema que hemos visto antes (tanto gusanos, como ténicas de explotación), Microsoft decide implementar protecciones de memoria. A partir de Windows XP SP2 (Windows XP Tablet PC Edition 2005), Windows Server 2003 SP1 (nivel de SO) y Visual Studio 2003 (nivel de compilador) estas protecciones empiezan a ser utilizadas.

    Vamos a ver un resumen de ellas:
    DEP (Data Execution Prevention), una medida implementada en los sistemas modernos de Microsoft que está pensada para evitar que las aplicaciones ejecuten código de una región de memoria no ejecutable. Ayuda a prevenir algunos exploits que almacenan código gracias a, por ejemplo, un buffer overflow. Puede ser implementada mediante hardware (CPUs que permiten marcar páginas de memoria como no ejecutables) o vía software (para CPUs que no tienen soporte). Más información sobre DEP aquí.

    /GS (Buffer Security Check), es una opción de compilación añadida desde Visual Studio 2003 para prevenir buffer overruns que sobreescriben la dirección de retorno. La protección se basa en poner una cookie entre el buffer y la dirección de retorno, de forma que si se sobreescribe esta cookie la comprobación falle y se termine el proceso. Información más detallada aquí.

    /SAFESEH (Image has Safe Exception Handlers), otra opción de compilación añadida en Visual Studio 2005. Información detallada aquí.

    ASLR (Address Space Layout Randomization), implementado en Windows Vista, Server 2008 y Windows 7. Se basa en hacer aleatorias las direcciones clave de la memoria (ejecutables, DLLs, heap, stack), de forma que nunca sean las mismas. Hay mucha información sobre esta medida, teneis más aquí y aquí.

    SEHOP, usado en los sistemas Windows más modernos (como 2008 y 7). La idea detrás de esta medida viene del artículo de Matt Miller, Preventing the Exploitation of Structured Exception Handler (SEH) Overwrites with SEHOP.

    Heap Protections, Microsoft también ha introducido algunas protecciones nuevas de heap, como heap meta cookie, safe unlinking ...

    Por último, se me hace difícil terminar esta parte sin hacer referencia a EMET (ya en su versión 2.0), un toolkit del cual Fermín J.Serna (@fjserna) tiene cierta culpa y que permite a los usuarios implementar estas tecnologías en aplicaciones arbitrarias (especialmente de terceros), lo que ayuda a evitar que sean explotadas. Podeis ver la presentación que hizo Fermín en la RootedCON 2010 sobre el toolkit aquí, y aquí un ejemplo de como EMET 2.0 puede bloquear un exploit para Adobe Reader.


    Dentro de poco la tercera y última entrega, donde veremos la respuesta de los investigadores de seguridad a estas protecciones, e intentaremos hacer una predicción de lo que nos espera en este campo de la seguridad.
    [][][] LUK [][][]
    hackhispano.com
    Citar  
     

  3. #3 Parte 3/3 
    HH Administrator Avatar de LUK
    Fecha de ingreso
    Oct 2001
    Ubicación
    SpaÑa
    Mensajes
    5.284
    Descargas
    223
    Uploads
    250
    En la última entrega de la serie vamos a ver explotación avanzada de Windows, saltando los filtros y las protecciones que nombramos en la entrega anterior.

    Desde el 2005 en adelante la explotación se volvió cada vez más difícil, y el número de investigadores que pudieron hacer exploits fiables para los sistemas operativos modernos de Microsoft fue bastante bajo.

    Por norma general, estos trabajos son más complejos, y el contenido mucho más avanzado.


    Vamos a ver los más importantes contra estas protecciones.
    Viendo la evolución y la cantidad de trabajos buenos que se han publicado en los últimos años se podría hacer una pequeña predicción de un futuro próximo.
    • La explotación no está muriendo ni va a morir.
    • Se está volviendo más difícil, y no será "solo por diversión" como antes.
    • Escribir exploits fiables llevará más y más tiempo, lo que equivale a dinero. El desarrollo de exploits es un área de trabajo aceptable en seguridad.
    Si lees y entiendes todos los paper de estas entregas, posiblemente podrás formar parte de este futuro

    [][][] LUK [][][]
    hackhispano.com
    Citar  
     

  4. #4  
    Moderador HH
    Fecha de ingreso
    Apr 2010
    Mensajes
    1.052
    Descargas
    7
    Uploads
    0
    Así es windows...
    • Taller de programación HackHispano: http://tallerdeprogramacion.es
    • Wargame HackHispano: [PRÓXIMAMENTE]
    • Normas del foro: http://foro.hackhispano.com/announcement.php?f=2
    Citar  
     

Temas similares

  1. Botnets: pasado, presente y futuro
    Por 4v7n42 en el foro NOTICIAS
    Respuestas: 0
    Último mensaje: 26-02-2011, 18:38
  2. Respuestas: 0
    Último mensaje: 06-10-2009, 19:53
  3. Activar Windows Xp si han pasado los 30 días
    Por manolito74 en el foro WINDOWS
    Respuestas: 2
    Último mensaje: 08-12-2008, 23:55
  4. Respuestas: 0
    Último mensaje: 10-04-2008, 17:27
  5. Explotación de la vulnerabilidad ADSL
    Por banuelos en el foro REDES Y TECNOLOGIAS WIRELESS
    Respuestas: 0
    Último mensaje: 25-03-2002, 10:52

Marcadores

Marcadores