Ingeniería inversa
Por Cayetano De Juan
()
Información de este libro electrónico
La Ingeniería Inversa, se refiere al estudio detallado de las funciones de cualquier archivo binario, paso _x000D_
a paso, con el fin de descubrir cuál es el código responsable por su funcionamiento. Es _x000D_
una de las disciplinas más gratificantes dentro de la seguridad informática. _x000D_
Esta obra te explica de forma secuencial como poner en práctica esta materia a _x000D_
través de explicaciones claras y didácticas, acompañados de ejemplos y ejercicios de _x000D_
autoevaluación._x000D_
En la primera parte aprenderás el lenguaje de más bajo nivel legible que existe, el _x000D_
lenguaje Ensamblador, y lo harás comenzando desde cero con este orden:_x000D_
• A moverte por el mundo de las API de Windows._x000D_
• A enlazar Ensamblador con lenguajes de alto nivel como Python y VB.Net._x000D_
• A crear su propia Shell Inversa en Ensamblador y conectarla con Python._x000D_
• A crear sus propias DLL._x000D_
En la segunda parte asimilarás a interpretar los programas compilados y aprenderás:_x000D_
• A interpretar ficheros Binarios PE._x000D_
• A poner puntos de ruptura. _x000D_
• A crear sus propios parches o cambios en un binario._x000D_
• A cifrar texto por XOR._x000D_
• A reconstruir código intermedio._x000D_
• A analizar un binario contaminado por Malware real._x000D_
Además, con esta obra tendrás acceso a 40 videos y _x000D_
supuestos prácticos descargables desde la web del libro que _x000D_
complementan al contenido y que están indicados en el libro._x000D_
Relacionado con Ingeniería inversa
Libros electrónicos relacionados
Reversing. Ingeniería Inversa Calificación: 0 de 5 estrellas0 calificacionesOperaciones auxiliares con Tecnologías de la Información y la Comunicación. IFCT0108 Calificación: 0 de 5 estrellas0 calificacionesCriptografía sin secretos con Python Calificación: 0 de 5 estrellas0 calificacionesKali Linux Calificación: 0 de 5 estrellas0 calificacionesHacking Ético Calificación: 0 de 5 estrellas0 calificacionesHacking ético de redes y comunicaciones Calificación: 0 de 5 estrellas0 calificacionesServicios en Red (GRADO MEDIO) Calificación: 0 de 5 estrellas0 calificacionesJava 17 Programación Avanzada Calificación: 0 de 5 estrellas0 calificacionesHacking ético con herramientas Python Calificación: 0 de 5 estrellas0 calificacionesInstalación y parametrización del software. IFCT0510 Calificación: 0 de 5 estrellas0 calificacionesEl libro blanco del HACKER Calificación: 0 de 5 estrellas0 calificacionesApps HTML5 para móviles: Desarrollo de aplicaciones para smartphones y tablets Calificación: 0 de 5 estrellas0 calificacionesApps html5 para móviles Calificación: 0 de 5 estrellas0 calificacionesInstalación y configuración de periféricos microinformáticos. IFCT0309 Calificación: 0 de 5 estrellas0 calificacionesRaspberry Pi (2ª Edición) Calificación: 0 de 5 estrellas0 calificacionesTypeScript, Curso Práctico Calificación: 0 de 5 estrellas0 calificacionesAdministración de Sistemas Gestores de Bases de Datos (2ª Edición) Calificación: 0 de 5 estrellas0 calificacionesPython Práctico Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de aplicaciones web con Jakarta EE Calificación: 0 de 5 estrellas0 calificacionesDesarrollo Web para comercio electrónico. Construyendo tiendas online Calificación: 0 de 5 estrellas0 calificacionesDesarrollo de Videojuegos 2D con Python Calificación: 0 de 5 estrellas0 calificacionesBackbone JS. JavaScript Framework. 2ª Edición Calificación: 0 de 5 estrellas0 calificacionesEntornos de Desarrollo (GRADO SUPERIOR) Calificación: 0 de 5 estrellas0 calificacionesCurso de programación Bash Shell Calificación: 0 de 5 estrellas0 calificacionesAprenda a Programar con Lazarus Calificación: 0 de 5 estrellas0 calificacionesCiberseguridad IoT y su aplicación en Ciudades Inteligentes Calificación: 0 de 5 estrellas0 calificacionesSelección, instalación y configuración del software de servidor de mensajería electrónica. IFCT0509 Calificación: 0 de 5 estrellas0 calificacionesGestión de incidentes de ciberseguridad Calificación: 0 de 5 estrellas0 calificacionesCiberseguridad Industrial e Infraestructuras Críticas Calificación: 0 de 5 estrellas0 calificacionesCiencia de datos para la ciberseguridad Calificación: 0 de 5 estrellas0 calificaciones
Seguridad para usted
Hackers. Aprende a atacar y defenderte. 2ª Adición Actualizada: Fraude informático y hacking Calificación: 4 de 5 estrellas4/5Las Estafas Digitales Calificación: 5 de 5 estrellas5/5Hackeado: Guía Definitiva De Kali Linux Y Hacking Inalámbrico Con Herramientas De Seguridad Y Pruebas Calificación: 5 de 5 estrellas5/5Hacking ético con herramientas Python: SEGURIDAD INFORMÁTICA Calificación: 4 de 5 estrellas4/5Ciberseguridad para directivos: Riesgos, control y eficiencia de las tecnologías de la Información Calificación: 5 de 5 estrellas5/5El libro blanco del HACKER Calificación: 0 de 5 estrellas0 calificacionesCurso de programación Bash Shell Calificación: 0 de 5 estrellas0 calificacionesHacking Ético 101 - Cómo hackear profesionalmente en 21 días o menos! 2da Edición: Cómo hackear, #1 Calificación: 4 de 5 estrellas4/5GuíaBurros: Ciberseguridad: Consejos para tener vidas digitales más seguras Calificación: 5 de 5 estrellas5/5Bitcoin para principiantes y a prueba de tontos: Criptomonedas y Blockchain Calificación: 2 de 5 estrellas2/5La seguridad informática es como el sexo seguro Calificación: 5 de 5 estrellas5/5Un fantasma en el sistema: Las aventuras del hacker más buscado del mundo Calificación: 5 de 5 estrellas5/5Kali Linux Calificación: 3 de 5 estrellas3/5Hackeo Ético: Guia complete para principiantes para aprender y comprender el concepto de hacking ético Calificación: 0 de 5 estrellas0 calificacionesCiberseguridad Calificación: 1 de 5 estrellas1/5Seguridad en Bases de Datos y Aplicaciones Web Calificación: 5 de 5 estrellas5/57 Pasos Para Ser Un Pentester: Cómo hackear, #0 Calificación: 5 de 5 estrellas5/5ISO27001/ISO27002: Una guía de bolsillo Calificación: 4 de 5 estrellas4/5Auditoría de seguridad informática: Curso práctico Calificación: 5 de 5 estrellas5/5Privacidad y Ocultación de Información Digital Esteganografía: SEGURIDAD INFORMÁTICA Calificación: 5 de 5 estrellas5/5Dirección de seguridad y gestión del ciberriesgo Calificación: 0 de 5 estrellas0 calificacionesLo esencial del hackeo Calificación: 5 de 5 estrellas5/5Auditoría de Tecnologías y Sistemas de Información.: SEGURIDAD INFORMÁTICA Calificación: 4 de 5 estrellas4/5Kali Linux para Hackers Calificación: 0 de 5 estrellas0 calificacionesIntroducción a la Informática Forense: SEGURIDAD INFORMÁTICA Calificación: 0 de 5 estrellas0 calificacionesBackTrack 5. Hacking de redes inalámbricas: Fraude informático y hacking Calificación: 5 de 5 estrellas5/5Interconexión de Redes Privadas y Redes Publicas. (MF0956_2): Gestión de redes Calificación: 5 de 5 estrellas5/5Hacking ético de redes y comunicaciones: Curso práctico Calificación: 1 de 5 estrellas1/5
Comentarios para Ingeniería inversa
0 clasificaciones0 comentarios
Vista previa del libro
Ingeniería inversa - Cayetano De Juan
acerca del autor
CAYETANO DE JUAN UBEDA
Técnico Superior en Informática de Gestión. Auditor sénior en ciberseguridad, colegiado como perito judicial en informática forense. Diferentes certificaciones, como Cybersecurity Essentials por CISCO, CPHE (Certificado profesional de hacking ético). Cursos finalizados pendientes de certificación, PCAP (Programming Essentials In Python) por CISCO, CyberOps Associate por CISCO. EC Council Hacking y Ciberoperaciones por CISCO. Formador ocupacional por la Junta de Andalucía. Formador de formadores en la especialidad de Teleformación. Programación VB.NET, Python, lenguaje Ensamblador. Actualmente cursando el CEH.
Ha trabajado como consultor en The Security Sentinel, auditando empresas de nivel internacional como farmacéuticas y partidos políticos de gran relevancia, organismos oficiales como la Junta de Andalucía, Entidad Nacional de Acreditación. Ha trabajado como formador, impartiendo módulos al servicio Andaluz dSe Salud, Fundación O.N.C.E, etc. Su última formación fue por medio de la Fundación IL3 de La Universidad de Barcelona al PDI de Chile, edición 2022 (Estándares corporativos en protección de datos y detección y análisis de datos vulnerables).
En estos momentos dirige el departamento técnico auditor de The Security Sentinel, compaginándolo con proyectos formativos a destacar ARELANCE, impartiendo curso de ciberseguridad.
Prólogo
En este libro encontrará, explicado de manera muy dinámica, la programación de aplicaciones, librerías, drivers y todo lo que imagine usando el lenguaje Ensamblador, el lenguaje más próximo al hierro
e ingeniería inversa.
Podrá practicar, sin necesidad de conocimientos previos, cada capítulo mediante ejercicios prácticos que os ayudará a asentar los conocimientos adquiridos, de manera sencilla y explicados paso a paso.
Conocer el código máquina le abrirá un mundo nuevo en muchos campos de la informática, verá los programas de otra manera y deseará explorarlos.
En primer lugar, será capaz de crear aplicaciones más eficientes debido a que los lenguajes interpretados necesitan convertir el código creado en lenguaje máquina, haciendo que el código del programa crezca de manera innecesaria.
Además, le permitirá hacer ingeniería inversa en ejecutables ya creados y le permitirá entender el funcionamiento de un programa y detectar fallos, puertas traseras, desbordamientos de buffer, etc.
Sobre el autor, Cayetano De Juan, solo puedo decirle que es un apasionado de la tecnología y un gran profesional, experto en seguridad informática y programador con más años de experiencia que páginas tiene el libro.
Es un honor poder escribir este prólogo, como alumno del curso de ensamblador, en el que está basado este libro, os puedo decir que al comenzar no sabía si sería capaz de disfrutar programando en ensamblador ya que en la carrera de ingeniería informática había dado clases de ensamblador y el recuerdo no era muy agradable.
La manera de explicar, y que desde el primer momento ya te pones a practicar las lecciones aprendidas, hace que la curva de aprendizaje sea muy rápida y nada más acabar un tema ya tienes en la mente programas que podrías mejorar con lo aprendido.
Recomiendo encarecidamente este libro, no es uno de esos libros de informática que tenemos en la estantería y que le tenemos que quitar el polvo los sábados, es un libro que tendrá encima del escritorio para poder consultarlo a diario.
Raül Rivero.
Ingeniero Informático.
Introducción
La Ingeniería Inversa, se refiere al estudio detallado de las funciones del malware, paso a paso, con el fin de descubrir cuál es el código responsable por su funcionamiento. Es una de las disciplinas más gratificantes dentro de la seguridad informática.
Esta obra le explica de forma secuencial como poner en práctica esta materia a través de explicaciones claras y didácticas, acompañados de ejemplos y ejercicios de autoevaluación.
Para facilitar la asimilación de los contenidos se ha dividido en dos partes:
En la primera parte aprenderá el lenguaje de más bajo nivel legible que existe, el lenguaje Ensamblador, y lo hará comenzando desde cero con este orden:
A moverse por el mundo de las API de Windows.
A enlazar Ensamblador con lenguajes de alto nivel como Python y VB.Net.
A crear su propia Shell Inversa en Ensamblador y conectarla con Python.
A crear sus propias DLL.
En la segunda parte asimilará a interpretar los programas compilados y aprenderá:
A crear ficheros Binarios PE.
A poner puntos de ruptura (memoria, anular objetivos por API, por cadenas, etc.).
A crear sus propios parches o cambios en un binario.
A cifrar texto por XOR.
A reconstrucción de código intermedio.
A analizar un binario contaminado por Malware real.
Con este libro obtendrá los conocimientos necesarios para poder usar desensambladores y depuradores como IDA Pro, OllyDBG, Inmmunity Debugger, WinDBG, etc.
Además, con esta obra tendrá acceso a 40 videos y supuestos prácticos descargables desde la web del libro que complementan el contenido y que están indicados en el libro con los iconos y .
Parte 1
Lenguaje Ensamblador
1
Conceptos básicos y expectativas del Curso
El lenguaje ensamblador es un lenguaje de bajo nivel, se compone de una serie de instrucciones básicas para los microprocesadores. Este lenguaje no necesita un Framework para poder ejecutar los programas realizados con él, como por ejemplo Vb.net. Esto quiere decir que nuestros ejecutables podrán cargarse o ejecutarse sin necesidad de una plataforma detrás que haga la interpretación.
Lenguajes de Alto Nivel:
Lenguaje Ensamblador (Lenguaje de bajo nivel)
Desde el comienzo de los sistemas operativos, empezando por el Ms-Dos. El lenguaje ensamblador ha estado presente, con este lenguaje se podría controlar absolutamente todo el ordenador, memoria, disco duro, periféricos. De hecho otros lenguajes como C, realmente provienen del lenguaje ensamblador. Antiguamente en un sistema Ms-Dos con el lenguaje ensamblador se podía programar usando las interrupciones del sistema, en los sistemas operativos actuales como Windows, que es en lo que se apoya este curso, el lenguaje ensamblador usaría las denominadas API de Windows que vienen a ser esas interrupciones de Ms-Dos.
El esquema de desarrollo de Windows quedaría algo parecido a esto:
https://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Priv_rings.svg/1280px-Priv_rings.svg.pngWindows dispone de un sistema de protección del Kernel, basado en anillos, de esta forma se asegura de que ningún programa mal intencionado pueda dañar su núcleo. Los anillos se pueden comunicar entre sí mediante puertas
que controlan el propio sistema operativo.
Supongamos el siguiente ejemplo:
Tenemos un ordenador con una webcam, la webcam tiene instalado en el sistema sus drivers necesarios para poder funcionar. Desde el navegador queremos realizar una video conferencia, usando esa webcam. Bien, pues el navegador estaría en el anillo tres, los drivers de control de la cámara estarían en el anillo/dos o uno. Algo así:
Nivel 1: En este nivel está la unidad central de proceso, que resumiendo se componen de pequeñas funciones en lenguaje máquina que introduce el propio fabricante, sumar, restar.
Nivel 2: El sistema operativo se compone de diferentes funciones ya más adecuadas al programador o usuario del mismo, con las que se pueden crear carpetas, archivos, ejecutar programas. Estas funciones se traducen a código máquina las cuales pasarían al Nivel 1.
Nivel 3: Los lenguajes de programación, se encuentran siempre por encima del sistema operativo, estos lenguajes como ya hemos comentado, anteriormente, pueden ser lenguajes de Alto o Bajo nivel. En el caso del Lenguaje Ensamblador es de bajo nivel, esto quiere decir que este lenguaje usa instrucciones básicas que pueden ser interpretadas directamente por el Nivel 1, y al mismo tiempo puede usar funciones propias del sistema operativo del Nivel 2, en nuestro caso estas funciones propias del sistema operativo serán las APIS. Los programas realizados en ensamblador, una vez compilados se traducen en su totalidad a lenguaje de código máquina.
Nivel 4: Los lenguajes de Alto nivel, como C++, Vb.Net, Java, etc. Se componen de framework o poderosas librerías que agilizan y nos simplifican el tratamiento por ejemplo de acceder a un disco duro, cámara web. Los compiladores de estos lenguajes traducen los programas realizados con ellos, a programas de Nivel 3, y a su vez traducen en código de Nivel 3.
En este curso empezaremos desde cero, para conocer la base del lenguaje ensamblador bajo Windows 32Bits. Se presentará el EASY CODE, un Software con entorno visual, para poder desarrollar en lenguaje ensamblador, este Software creado por Ramón Salas, nos ayudará a crear nuestros programas en ensamblador de una forma más sencilla y amena.
Una vez terminado el curso, debería haber obtenido los siguientes conocimientos:
Base y desarrollo de proyectos bajo lenguaje ensamblador.
Conocimientos sobre el funcionamiento interno de Windows.
Conocimientos sobre aplicaciones de Windows.
Conocimientos sobre las APIS de Windows.
Funcionamiento de Windows, mensajes y eventos
Si alguna vez ha desarrollado un programa, por muy pequeño que sea, con algún lenguaje de alto nivel, como Vb.net, Java, etc. Y si este lenguaje de alto nivel, es un lenguaje visual, donde se parte de un formulario, al que le vamos agregando controles personalizados como botones, cajas de texto. Pues toda esta integración al final se traduce en las API de Microsoft Windows.
Básicamente el funcionamiento interno de Windows se traduce en dos principios:
Para el sistema, todo parte de una ventana (un simple botón, para Windows es una ventana, en general cualquier objeto, es tratado como una