PDF de programación - Software Exploitation

Imágen de pdf Software Exploitation

Software Exploitationgráfica de visualizaciones

Publicado el 17 de Abril del 2018
1.024 visualizaciones desde el 17 de Abril del 2018
5,8 MB
103 paginas
Creado hace 11a (13/08/2012)
SOFTWARE EXPLOITATION



INTECO CERT



Autor: Borja Merino Febrero

El Instituto Nacional de Tecnologías de la Comunicación (INTECO) reconoce y agradece a Joaquín
Moreno Garijo su colaboración en la realización del informe.



El presente documento cumple con las condiciones de accesibilidad del formato PDF (Portable Document Format).
Se trata de un documento estructurado y etiquetado, provisto de alternativas a todo elemento no textual, marcado de
idioma y orden de lectura adecuado.
Para ampliar información sobre la construcción de documentos PDF accesibles puede consultar la guía disponible en la
sección Accesibilidad > Formación > Manuales y Guías de la página http://www.inteco.es.



ÍNDICE

1.

2.

3.

4.

INTRODUCCIÓN

OBJETIVOS

EXPLOITS COMO NEGOCIO

CASOS DE ESTUDIO

4.1.

4.2.

Servidor web vulnerable: From bug to shell (Mona.py suggest / Rop Gadgets)

Failure Observation Engine: Foxit Crash

5.

ERRORES SIMPLES, CONSECUENCIAS GRAVES

5.1.

Heap Overflow

5.1.1.

5.1.2.

5.1.3.

Use After Free

Dereference After Free

Double Free

5.2.

5.3.

5.4.

5.5.

5.6.

Off-By-One

Race Condition (toctou)

Integer Overflow

Format String

Buffer Overflow

6.

CONTRAMEDIDAS

6.1.

6.2.

6.3.

DEP NX/XD (Data Execution Prevention)

Stack/Canary Cookies

ASLR (Address Space Layout Randomization)

6.3.1.

Metasploit: MS07_017 Ani LoadImage Chunksize

7.

HERRAMIENTAS AUXILIARES

7.1.

EMET (The Enhanced Mitigation Experience Toolkit)

7.1.1.

7.1.2.

Winamp 5.72 (whatsnew.txt SEH overwrite) : SEHOP EMET Detection

EAF vs Shellcodes

8.

AUDITORÍA DE SOFTWARE

8.1.

Enfoque white-box (análisis de código)

8.1.1.

8.1.2.

8.1.3.

Análisis Dinámico con Valgrind

Análisis Estático con FlawFinder / Rats / RIPSS

Análisis Estático vs Análisis Dinámico

8.2.

Enfoque black-box

8.2.1.

8.2.2.

8.2.3.

Fuzzing con Spike (FreeFloat) / Peach (vulnserver.exe)

Fuzzing con Metasploit (http_get_uri_long.rb, smtp_fuzzer)

Otras herramientas/scripts (/pentest/fuzzers, Scapy)

9.

CONCLUSIONES



Software Exploitation

4

7

8

11

11

19

24

27

27

28

29

34

35

37

40

44

50

50

56

61

66

69

69

71

74

78

78

78

81

85

87

87

95

98

102





1.

INTRODUCCIÓN

Según detalla el informe de vulnerabilidades de INTECO-CERT, durante el primer y segundo
semestre de 2011, de un total de 4160 vulnerabilidades (2037 del primer semestre y 2123
del segundo), aquellas clasificadas como “Error de Buffer” y “XSS” son las más
abundantes. Asimismo, Microsoft sigue siendo el fabricante más afectado respecto al resto
de desarrolladores de software como Sun, Adobe, Mozilla o Apple.

Las vulnerabilidades recogidas en dicho informe representan aquellas reportadas por
investigadores y otros fabricantes a la National Vulnerability Database1 del Instituto
Nacional de Estándares y Tecnologías de EE.UU. (NIST, Nacional Institute of Standards
and Technology), organismo dependiente del Gobierno de EE.UU., con el que INTECO tiene
un acuerdo de colaboración. Como muestra el siguiente gráfico, un 12% y un 11% durante
el primer y segundo semestre respectivamente se corresponden con vulnerabilidades de tipo
“Error de buffer”.



Figura 1. Vulnerabilidades 2011

Según describe el MITRE2, este tipo de vulnerabilidad, conocido también como buffer
overflow o buffer overrun , se produce cuando: “un programa intenta poner más datos en un
búfer de lo que realmente puede almacenar, o cuando un programa trata de poner los datos
en un área de memoria fuera de los límites de un búfer … la causa más común de
desbordamientos de búfer, es el típico caso en el que el programa copia el búfer sin
restringir el número de bytes a copiar.”



1 National Vulnerability Database
http://nvd.nist.gov/
2 MITRE Corporation
http://www.mitre.org/about/

Software Exploitation

4





A pesar de ser una vulnerabilidad bien conocida desde los años 80 (Morris3 fue uno de
los primeros gusanos que explotaron este tipo de bug) sigue siendo uno de los motivos por
el que muchos sistemas son comprometidos. La incorrecta o débil validación de datos
de entrada así como la falta de control sobre el tamaño de las variables, arrays o la
incorrecta gestión de punteros, son uno de los mayores problemas, que desde hace
tiempo son los causantes directos de muchos problemas de seguridad críticos.

informar sobre

Por este motivo y con objeto de concienciar a programadores y desarrolladores de software,
INTECO-CERT ha preparado esta guía titulada “Software Exploitation” con la que
pretende
los métodos empleados para comprometer sistemas
aprovechándose de vulnerabilidades de tipo buffer-overflow, off-by-one, use-after-free,
format strings, etc., así como contramedidas existentes hoy en día, tanto en los sistemas
operativos actuales como en ciertos compiladores, para ayudar a mitigar (o reducir en mayor
medida) este tipo de vulnerabilidades.

Esta guía no pretende cubrir en profundidad aspectos relacionados con la búsqueda de
vulnerabilidades o el shellcoding, sino simplemente dar a conocer determinados recursos
que ayuden a proteger y fortificar nuestro software, así como ciertas “buenas prácticas” de
programación para evitar el desarrollo de software vulnerable. Si se desea profundizar en
detalle sobre el mundo de las vulnerabilidades y el exploiting existen excelentes libros
como:

- A Bug Hunters Diary de Tobias Klein
- The Shellcoder’s Handbook: Discovering and Exploiting Security Holes de Chris Anley,

John Heasman, Felix Lindner y Gerardo Richarte

- Gray Hat Python: Python Programming for Hackers and Reverse Engineers de Justin

Seitz

- Hacking: The Art of Exploitation de Jon Erickson
- Hunting Security Bugs de Tom Gallagher, Lawrence Landauer y Bryan Jeffries
- A Guide to Kernel Exploitation de Enrico Perla y Massimialiano Oldani
- The Tangled Web: A Guide to Securing Modern Web Applications de Michal Zalewski
- Metasploit: The Penetration Tester's Guide de Mati Aharoni, Devon Kearns, Jim O'Gorman,

David Kennedy

- Fuzzing: Brute Force Vulnerability Discovery de Michael Sutton; Adam Greene; Pedram Amini
- Advanced Windows Debugging de Mario Hewardt, Daniel Pravat



Pese a ello hay un abanico enorme de técnicas en constante evolución, así como
herramientas de pentesting que no se cubrirán en esta guía al no ser objeto directo del
mismo y por ser prácticamente inviable recogerlas en un único documento.

No obstante, a fin de enriquecer el contenido del informe, se añadirán múltiples referencias a
textos relacionados con el exploiting. Algunos de los recursos que más se nombrarán y cuya
lectura se recomienda plenamente se citan a continuación:



3 Wikipedia: Gusano Morris
http://es.wikipedia.org/wiki/Gusano_Morris

Software Exploitation

5





-

Exploit Writing Tutorials de Corelan
https://www.corelan.be/index.php/articles/

- Uninformed:

http://uninformed.org/?v=all

- Bypassing Browser Memory Protections

-

-

https://www.blackhat.com/presentations/bh-usa-08/Sotirov_Dowd/bh08-sotirov-dowd.pdf
The Stack-based Buffer Overflow Vulnerability and Exploit
http://www.tenouk.com/Bufferoverflowc/stackbasedbufferoverflow.html
Shell Storm
http://www.shell-storm.org/shellcode/

- Overflowedminds

-

http://www.overflowedminds.net
Vividmachines
http://www.vividmachines.com/shellcode/shellcode.html#as

- Understanding Windows Shellcode

http://www.hick.org/code/skape/papers/win32-shellcode.pdf

- Metasploit exploit development

https://community.rapid7.com/community/metasploit/blog/2012/07/05/part-1-metasploit-module-
development--the-series


Además, páginas como Codeproject4 o StackOverflow5 serán excelentes recursos donde
consultar y ayudar a otros profesionales en aspectos relacionados con programación y
seguridad. Si existen dudas de si cierto código puede ser vulnerable, se necesita optimizar
cierto algoritmo, si se tienen problemas para compilar código, etc., StackOverflow es un
buen lugar para presentar tus preguntas o bien ayudar a otros profesionales. El servicio es
gratuito y únicamente necesitas registrarte para poder interactuar en
el portal (es importante leer la sección de preguntas frecuentes
FAQ6 para conocer las buenas prácticas del sitio web).

Nota: sea cuidadoso con el código publicado en este tipo de páginas y la información
pública sobre su perfil. Un atacante podría utilizar esta información de forma ofensiva (por ej.
relacionando código vulnerable con cierto software de su compañía)

Por otro lado, ya que las entradas en el software (inputs) representan uno de los puntos más
críticos y que más problemas de seguridad o inestabilidad suelen producir en los sistemas,
se dará una gran importancia a las herramientas de fuzzing así como las de análisis de
código estático/dinámico. Ambos puntos tratarán de abordar la auditoría de software desde
enfoques White y Black Box.



4 The Code Project
http://www.codeproject.com/
5 StackOverflow: FAQ
http://stackoverflow.com/faq/
6 StackOverflow
http://stackoverflow.com

Software Exploitation

6





2. OBJETIVOS

lado, en explicar determinados conceptos

La guía se centr
  • Links de descarga
http://lwp-l.com/pdf10466

Comentarios de: Software Exploitation (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad