Descubre millones de libros electrónicos, audiolibros y mucho más con una prueba gratuita

Desde $11.99 al mes después de la prueba. Puedes cancelar en cualquier momento.

Ingeniería inversa
Ingeniería inversa
Ingeniería inversa
Libro electrónico434 páginas2 horas

Ingeniería inversa

Calificación: 0 de 5 estrellas

()

Leer vista previa

Información de este libro electrónico

_x000D_
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_
IdiomaEspañol
Fecha de lanzamiento2 dic 2022
ISBN9788419444370
Ingeniería inversa

Relacionado con Ingeniería inversa

Libros electrónicos relacionados

Seguridad para usted

Ver más

Artículos relacionados

Comentarios para Ingeniería inversa

Calificación: 0 de 5 estrellas
0 calificaciones

0 clasificaciones0 comentarios

¿Qué te pareció?

Toca para calificar

Los comentarios deben tener al menos 10 palabras

    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.png

    Windows 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

    ¿Disfrutas la vista previa?
    Página 1 de 1