Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ingeniería Reversa - Una visión más atrevida a tu aplicación

Ingeniería Reversa - Una visión más atrevida a tu aplicación

Utiliza técnicas y herramientas de ingeniería reversa para mejorar tu aplicación y obtener una perspectiva más amplia y más segura.

Publicado en CodecampSDQ

Rilke Petrosky Ulloa

July 20, 2013
Tweet

More Decks by Rilke Petrosky Ulloa

Other Decks in Programming

Transcript

  1. Ser curioso deja... Dicen que + = pero = x

    7 (o 9 en el 1er mundo) sábado 20 de julio de 2013
  2. Ingeniería Reversa NO siempre es • Habilitar shareware por más

    de 30 días • Analizar malware • Desensamblar o traer de vuelta el código. sábado 20 de julio de 2013
  3. Por qúe y para qué Ingeniería Reversa? • Expone vulnerabilidades

    e imperfecciones • Va directo al metal y da nueva perspectiva • Desambigua y aterriza abstracciones • Se aprende mucho • Es divertido (mucho) sábado 20 de julio de 2013
  4. Ingeniería Reversa v.s. IDE? • No es una cosa u

    otra, sino, las dos. • El IDE y sus set de herramientas es específico del lenguaje. • La ingeniería reversa abarca la plataforma completa ( Software / Hardware / Network ). • La ingeniería reversa aumenta la seguridad sábado 20 de julio de 2013
  5. (in)Seguridad • Que NO es seguridad: • Un producto (anti-virus,

    firewall, ids...) • Un módulo/fase del proyecto • Estar al día • Usar tal o cual marca/framework/ O.S./etc.. sábado 20 de julio de 2013
  6. Seguridad Si hemos aprendido algo de un par de años

    pasados, es que las fallas de seguridad computacionales son inevitables ... ...La seguridad es un proceso, no un producto. - Bruce Schneier Autoridad en Criptografía y Seguridad sábado 20 de julio de 2013
  7. Conoces tu Aplicación? “Si conoces a tu enemigo y a

    ti mismo, en cien batallas saldras triunfante... ... Si no conoces a tu enemigo ni a ti mismo, en cien batallas saldras derrotado.” - Sun Tzu, El Arte de la Guerra. sábado 20 de julio de 2013
  8. • Importantísimo en lenguajes nativos compilados. • Un plus en

    máquinas virtuales. • Divertido en todos los casos • “Para el que sabe ensamblador, todo código es abierto”. Ensamblador sábado 20 de julio de 2013
  9. Debuggers • Escalofriante nivel de detalles cuando se corre contra

    el runtime. • Invasivo ( Me gusta!! >:D ). • Facilita replicar situaciones peligrosas (para el performance y seguridad) en un ambiente controlado que podría darse en vida real (usado como un Fuzzer). sábado 20 de julio de 2013
  10. Sniffers • Más honestos y menos diplomáticos que las herramientas

    del IDE. Nada es obvio. • Muestran detalles que fácilmente se escapan al código. • Aprendes lo que el framework te abstrae. • Descubre procesos bloqueantes en backend. sábado 20 de julio de 2013
  11. Código fuente Ciertamente conoces el código de tu aplicación (tu

    lo escribiste), pero... ...y el de las librerías? ...el del framework? ...el del webserver? ...el del Sistema Operativo???, etc... sábado 20 de julio de 2013
  12. Herramientas Recomendadas • Sniffers: WireShark, tcpdump, SIPffer, tcpick • Desensambladores

    y debuggers: gdb, OllyDBG, IDA Pro, strace, ltrace, OTX, otool, nasm, objtool. • Otros: nc, hexdump, netsed, etherpuppet, strings, curl, PEextractor, ldd, jade, bvi, memdump, 0xED. sábado 20 de julio de 2013
  13. Historias Reales • El jailbreak de iOS por un bug

    de libtiff. • Hacks de Dark Alex para Sony PSP con juegos guardados... • El manejo de escape characters en el addon de cdr mysql para asterisk addons 1.4 • Sniffer como “sistema de log” crudo para un ODM/ORM/Data Mapper. sábado 20 de julio de 2013
  14. Historias Reales La historia agridulce del XpressTerminal y la multiplexión

    automática. *Patent US 20050154808 sábado 20 de julio de 2013
  15. Historias Reales El sustento de Jack Veneno durante la era

    dorada del CPU 16-bits sábado 20 de julio de 2013