Autor Tema: Exploit..Por donde empezar  (Leído 8948 veces)

0 Usuarios y 1 Visitante están viendo este tema.

REIBER

  • Aprendiz
  • *
  • Mensajes: 122
  • Liked: 0
  • La verdad esta alla ajueras
Exploit..Por donde empezar
« : agosto 20, 2010, 06:49:09 pm »
Hola a todos:
Mas que una pregunta es una orientacion, por donde empezar para enteder como funciona un exploit.
C? Perl? Ensamblador? Se que todos son necesarios pero me gustaria una opinion de donde empezar. Saludos! Y si violo alguna regla borren mi post :(

nitr0us

  • ***
  • Mensajes: 359
  • Liked: 100
  • #rm -fr /
    • http://www.brainoverflow.org
Re: Exploit..Por donde empezar
« Respuesta #1 : agosto 20, 2010, 11:45:33 pm »
La descripción pura de un exploit es un código para explotar una vulnerabilidad. Y bien, puede ser desde un exploit de 1 línea en javascript hasta un exploit de 1000 líneas en C con ASM in line, todo depende.

En lo personal, considero que las vulnerabilidades más difíciles de explotar o más avanzadas, se relacionan con temas de buffer overflows, integer overflows, off-by-ones, bypass ASLR, etc. etc. Los exploits en Web, desde mi punto de vista, son muchísimo menos complejos.

Entonces, todo depende de que tipo de exploits quisieras hacer.

PD: Un exploit es diferente de un fake mail para explotar el HumanOS de usuarios de Hotmail  ;D

Salu Denial of Service

chr1x

  • Mensajes: 19
  • Liked: 0
  • chr1x pwning teh w0rld
    • chr1x pwning teh w0rld
Re: Exploit..Por donde empezar
« Respuesta #2 : agosto 28, 2010, 01:15:09 pm »
Hi,

Creo que el buen camino es definir que quieres hacer, o mejor dicho que dirección tomar.

Todo va ligado en algún momento. Las rutas: cracking, malware development/analysis, vulnerability discovery/analysis o Vulnerability/Exploit development.

Al final, te puedes encontrar gente experta en cracking de software haciendo vuln-dev, como por ejemplo Ricardo Narvaja quien trabaja como Exploit engineer en CORE. Bien,

Desde mi perspectiva siempre es bueno saber de varias cosas, en este caso los lenguajes de scripting (Perl, Python, Ruby, etc) siempre ayudan a hacer las cosas mas fáciles y prácticas, mientras que con lenguajes como C o Ensamblador para tareas muy específicas.

Mas que el lenguaje -que es lo de menos- la cuestión mas fuerte es el que seas "hábil" con la mente. Hay gente que no tiene idea de ASM sin embargo, encuentra varias vulns web, o a la inversa, gente muy buena en WEB pero que no sabe ni lo mas básico de ensamblador.

La habilidad que tengas para encontrar vulnerabilidades va mas allá del lenguaje a utilizar, PERO si lo requieres para la dirección que tomes. Por ejemplo, si quieres empezar analizando binarios, debes de entender ASM y C (mas estructura de archivos PE/ELF) mas herramientas de disassembling y debugging (probablemente sandboxes, process tools, etc..). Si por otro lado quieres realizar análisis de tipo black/whitebox a nivel protocolo, necesitarás un fuzzer y whireshark o ettercap, probablemente algunas tools en perl (hechas a mano, por supuesto) y un poco de cerebro :D.

El path que sugiero para los que inician es:

Prerequisitos: Saber programar. XD.. A bajo nivel (ASM), fileformats, lenguajes de scripting, herramientas en linux/win)

1) Descargarte IDA Pro + Ollydbg/ImmunityDBG + plugins
2) Leer libros de IDA Pro (Reverse Engineering Code with IDA PRO + The IDA PRO book
3) Leer el libro "Hunting Security bugs"
4) Leer los libros:

* Fuzzing: Brute Force Vulnerability Discovery
* Fuzzing for Software Security Testing and Quality Assurance
* Open Source Fuzzing Tools

5) Armarte de fuzzers :D
6)Empezar la cacería XD


OJO: Estos no son los unicos pasos que existen, cada quien se mueve por donde quiere como pueda y con lo que sea. Así que si alguien quiere opinar con respecto a este thread, que en vez de flamear que mande su propuesta. I hate that ball-lickers.

Espero que esto sirva de guia para saber por donde empezar.

Saludos,

chr1x
[CubilFelino Security Research Lab - http://chr1x.sectester.net ]
"The computer security is an art form. It's the ultimate martial art."

nitr0us

  • ***
  • Mensajes: 359
  • Liked: 100
  • #rm -fr /
    • http://www.brainoverflow.org
Re: Exploit..Por donde empezar
« Respuesta #3 : agosto 28, 2010, 06:59:56 pm »
Totalmente de acuerdo con chr1x, muchas diferentes ramas se relacionan (reverse, vuln-dev, shellcoding, malware, etc.), sin embargo, desde mi punto de vista va más allá de ponerte a leer "como desarrollar un exploit".

Antes de eso necesitas tener BASES SÓLIDAS de cómputo. Así que mi recomendación para iniciarte en esto es leer y sobre todo PRACTICAR lo siguiente (no toma 1 semana ni 2, toma años):
- Diseño de Sistemas Operativos (no administración ni configuración, sino internals, es decir, process scheduling, semáforos, interrupciones, modos, admón. de memoria virtual, multitarea, multiprogramación y pfff cientos de cosas más)
- Estructuras de datos (arboles (binarios, balanceados, etc...), LIFOs/FIFOs, hashes, estructuras enlazadas, punteros, etc etc etc..)
- Análisis de paquetes (entiende y programa la función de checksum() de TCP/IP jejej,
- Arquitecturas de computadoras (IMPORTANTÍSIMOOOO) (RISC, CISC, little endian, big endian, sets de instrucciones, ALU, pipeline, diseño de un CPU, etc..)

* Ya me aburrí, pero hay muuuchísimas cosas más, aprende TEORÍA DE GRAFOS, te preguntarás que que tiene que ver con hacking o exploit development? pues solamente googlea Code Coverage Analysis o ve las screenshots de herramienga BinDiff (http://www.zynamics.com/bindiff.html). Lee esto de Uninformed.org http://uninformed.org/index.cgi?v=5&a=5&p=8 y entenderás la relación de de teoría de grafos con debugging, etc...
* Juega con diferentes lenguajes de programación como C, perl, PHP y ASM.
* Entiende las diferencias tanto de sofware como de arquitectura de dif. sistemas operativos, pero no solo LEAS, sino que en realidad tóma tus computadoras e instalalos !!!, no solo te conformes con n00buntu (ubuntu linux).

Allá afuera existen muchos pseudo-hackers compilando y lanzando exploits, pero si les preguntas sobre diseño de sistemas operativos o por lo menos si sabe que algoritmo de planificación de procesos (scheduling algorithms) utiliza su sistema operativo, se quedan p**dejos.

Así que, antes de contruir una casa primero empieza con los cimientos, tu tienes la opción.

Si gustas, contáctame, te puedo pasar y recomendar mucho material, desde libros hasta código.

Saludos.

mannae

  • Mensajes: 3
  • Liked: 0
Re:Exploit..Por donde empezar
« Respuesta #4 : diciembre 08, 2014, 02:16:56 am »
gracias por este thread y las respuestas! muy interesante  8)