CEUPE UCAM - Curso Hacking Ético

"Nuestro Curso en Hacking Ético y Ciberinteligencia es de referencia internacional, escogido por empresas Multinacionales y Gobiernos como el más completo de su categoría"

Reversing¿Qué es la Ingeniería Inversa? ¿Cómo puede hacerse?

¿Qué es la Ingeniería Inversa? ¿Cómo puede hacerse?

La ingeniería inversa se refiere a la duplicación de una manufactura de otro desarrollador tras un examen exhaustivo de su construcción o composición. Además, puede aplicarse a diferentes aspectos de las actividades de desarrollo de software y de hardware.

SOLICITA MÁS INFORMACIÓN

Curso Hacking Ético

    RECIBE EN TU EMAIL:

    El precio y facilidades de pago.
    Postulación a la BECA 20% dcto.
    Complemento de Herramienta de Networking Profesional.

    La ingeniería inversa se refiere a la duplicación de una manufactura de otro desarrollador tras un examen exhaustivo de su construcción o composición. Además, consiste en desmontar el producto para entender su funcionamiento, mejorando o duplicando dicho producto. Permite comprender el principio básico de funcionamiento y la estructura de los sistemas estudiados. Esta práctica, copiada de las industrias antiguas, se utiliza ahora tanto en el hardware como en el software informático de forma amplia.

    De este modo, la ingeniería inversa puede aplicarse a diferentes aspectos de las actividades de desarrollo de software y de hardware. Esto para transmitir diversos significados. En el contexto de la ingeniería de software, implica tomar un sistema de software y analizarlo para rastrear la información de diseño e implementación original. Además, se utiliza para corregir ciertos errores en el software, así como para mejorar las características del producto tanto en el hardware como en el software.

    Por ejemplo, un programador escribe códigos en un lenguaje sofisticado como C, C++, Python, etc. Como los ordenadores no “hablan” estos lenguajes, el código escrito en estos lenguajes de programación se ensambla en un formato específico para la máquina. Esto con el fin de interpretarlo en un lenguaje de bajo nivel que la máquina pueda entender.

    La ingeniería inversa puede hacerse de varias formas

    Existen dos formas de desarrollar ingeniería inversa. En la primera, el código fuente está disponible, pero los aspectos de alto nivel del programa no lo están. Por lo tanto, se realizan esfuerzos para revelar el código fuente del software en desarrollo. Es por esto que las actividades que se hacen para descubrir las codificaciones, se consideran como ingeniería inversa.

    En la segunda, el código fuente del software ya no está disponible. En consecuencia, se realizan esfuerzos para descubrirlo dentro de lo posible. Para evitar que se infrinjan los derechos de autor, la ingeniería inversa utiliza una técnica conocida como diseño en sala blanca.

    Por otro lado, las principales razones para desarrollar esta práctica es la de auditar la seguridad, eliminar la protección anti – copias y modificar los sistemas integrados. Así como incluir características adicionales sin tener que gastar mucho junto a otras actividades asociadas.

    Se utiliza también en el diseño de software para que el programador o desarrollador pueda incorporar nuevas características al software existente. Tanto si se conoce el código fuente como si no. Se adoptan varias técnicas para que esto sea posible. En las pruebas de software, la ingeniería inversa ayuda a los probadores a entender el código de un virus y otros programas maliciosos.

    En el ámbito de la ciberseguridad, se utiliza para garantizar que el sistema carece de cualquier fallo de seguridad o debilidad de consideración. También, ayuda a hacer un sistema robusto, protegiéndolo así de los hackers y del spyware. Algunos desarrolladores llegan incluso a hackear sistemas para identificar sus vulnerabilidades. Lo que se conoce también como hacking ético.

    ¿Cuáles son las herramientas de ingeniería inversa?

    El proceso de ingeniería inversa implica el uso de ciertas herramientas que consisten en las que verás a continuación.

    Herramientas más utilizadas

    1. Desensambladores. Se utilizan para diseccionar los códigos binarios y convertirlos en códigos ensambladores. También se emplean para extraer cadenas, funciones, que son tanto importadas como exportadas. Así como múltiples bibliotecas. Ayudan a convertir el lenguaje de máquina en un formato más fácil de usar. De este modo, se utilizan diferentes desensambladores para múltiples fines.

    2. Depuradores. Contribuyen a ampliar la funcionalidad de los desensambladores al admitir los registros de la CPU. Así como también, el volcado hexadecimal de los programas, la vista de las pilas, entre otras cosas. Los programadores utilizan los depuradores para establecer puntos de interrupción, de igual manera, los usan para editar los códigos de ensamblaje en tiempo de ejecución.

    Del mismo modo, son usados para el análisis de los códigos binarios, de la misma manera que los desensambladores. Además, permiten al que hace el trabajo de ingeniería inversa recorrer el código ejecutando una línea a la vez para investigar los resultados.

    3. Editores hexadecimales. Permiten a los programadores ver y editar los códigos binarios según los requisitos del software. Del mismo modo, permiten manipular dichos datos fundamentales que componen un archivo informático. Además, como se utilizan para editar archivos binarios, a veces se les denomina editor binario o editor de archivos binarios.

    4. Visor de PE y recursos. Facilitan a los programadores ver y editar los recursos que se introducen en un archivo .exe. Les permite cambiar los iconos, editar el menú, la información de la versión, entre otros. El Explorador de PE facilita la traducción de aplicaciones que no tienen códigos fuente. Todo lo que tienes que hacer es sustituir los recursos de texto por sus versiones traducidas. Luego, debes cambiar el tamaño de los botones, formularios, etc.

    Se puede vulnerar sistemas a través de estas herramientas

    Un software de ingeniería inversa permite a los programadores manipular los datos en bruto para convertirlos en algo útil. Gracias al desarrollo de diversos dispositivos de digitalización. Es así como se convierte en una poderosa herramienta que los hackers podrían utilizar para comprometer cualquier sistema de seguridad de cualquier empresa.

    ¿Qué son las pruebas de caja negra?

    Las pruebas de caja negra ayudan a examinar la funcionalidad de una aplicación en función de sus especificaciones y entrar a su funcionamiento o estructuras internas. A veces, se denomina prueba basada en las especificaciones. Este método de pruebas suele aplicarse a todos los niveles de las pruebas de un software. Tales como: la integración, la unidad, el sistema y la aceptación. Se compone de pruebas de nivel superior y también es dominante en las pruebas unitarias.

    En este punto, los casos de prueba se centran en las especificaciones, los parámetros de diseño y los requisitos. Las pruebas utilizadas son de naturaleza funcional, aunque también pueden utilizarse pruebas no funcionales. Las técnicas habituales de diseño de pruebas de caja negra comprenden las pruebas de todos los pares, pruebas de tablas de decisión, partición de equivalencias, gráficos de causa – efecto y análisis de valores límite.

    Así como también, comprende la adivinación de errores, pruebas de casos de uso, pruebas de transición de estados, pruebas de historias de usuario, técnica de combinación y el análisis de dominios. Las pruebas de caja negra consisten en analizar un programa en ejecución probándolo con diferentes entradas. Debes tener en cuenta que estas pruebas pueden realizarse incluso sin acceso al código binario.

    Conoce las pruebas de caja blanca

    El método de pruebas de caja blanca para examinar el software, comprueba el funcionamiento interno o las estructuras de una aplicación. Esto en contraposición a su funcionalidad. Es decir, las pruebas de caja negra. En este caso, se utiliza un aspecto interno del sistema y los conocimientos de programación para diseñar los casos de prueba. El que hace las pruebas, selecciona las entradas para encontrar los caminos a través del código para determinar las salidas correctas.

    Por ello, las pruebas de caja blanca pueden aplicarse a los niveles de sistema, integración y unidad del proceso de pruebas de software. Sus técnicas de diseño consisten en criterios de cobertura del código como la prueba de flujo de datos, prueba de flujo de control, prueba de bifurcación y cobertura de decisiones. Así como la cobertura de declaraciones, cobertura de condiciones y decisiones modificadas.

    Entretanto, pueden aplicarse pruebas de trayectorias y pruebas de trayectorias principales. Las pruebas de caja blanca suelen ser muy útiles para localizar errores de programación y de implementación en el software. Hay dos tipos de herramientas de pruebas de caja blanca: las que necesitan el código fuente y las que descompilan el código binario automáticamente y continúan a partir de ahí.

    ¿Cuáles son las etapas de la ingeniería inversa?

    La ingeniería inversa consiste en desmontar un objeto para ver cómo funciona con el fin de duplicarlo o mejorarlo. Esta práctica, tomada de industrias más antiguas, se utiliza ahora con frecuencia en el hardware y el software informático. Además, consiste en desarrollar modelos que describan el software existente y su supuesta intención. Este proceso de ingeniería inversa tiene tres etapas principales.

    Recuperación de la implementación

    En esta etapa, se prepara un modelo inicial que constituye la base de la ingeniería inversa. Como el modelo inicial servirá de referencia, debe reflejar la implementación y no tener inferencias. La primera tarea consiste en examinar la documentación existente y conocer la aplicación. El contexto resultante aclara la intención del desarrollador y facilita la comunicación con los expertos en aplicaciones.

    Deberías terminar esta tarea en unas pocas horas. Lo que se aprende es incidental a la ingeniería inversa real, pero es importante porque te ayuda a notar más cosas a medida que avanzas. El siguiente paso consiste en introducir la estructura de la base de datos en una herramienta de modelado mediante escritura o automatización.

    Algunas herramientas pueden leer las tablas del sistema de una Base de Datos Relacionales (RDBMS) y constituir un modelo sólido. Si utilizas estas herramientas, deberías al menos echar un vistazo a la estructura de la base de datos para hacerte una idea del estilo de desarrollo.

    Recuperación del diseño

    Durante la recuperación del diseño, se deshace la mecánica de la base de datos y se realizan acciones simples. Debes posponer las conjeturas y la interpretación hasta la fase del análisis y la recuperación. A menudo, puedes realizar la recuperación del diseño de forma autónoma, sin ayuda de expertos en aplicaciones. Durante esta fase, se resuelven tres cuestiones principales.

    1. Identidad. Lo más frecuente es que se definan índices únicos para las claves candidatas de los tipos de entidad. Si no, encuentra combinaciones únicas de datos; estos datos pueden sugerir, pero no probar, una clave candidata. También, puedes inferir claves candidatas teniendo en cuenta los nombres y las convenciones de estilo. Una presunta clave ajena puede implicar una clave candidata correspondiente.
    2. Claves foráneas. La determinación de la clave foránea o bien, referencias de una tabla a otra, suele ser el aspecto más difícil de la recuperación del diseño. La coincidencia de nombres y tipos de datos puede sugerir claves foráneas. Algunos gestores de bases de datos (SGBD), como las RDBMS, permiten a los desarrolladores declarar las claves foráneas y su referente. Pero la mayoría de las aplicaciones heredadas no utilizan esta capacidad.
    3. Consultas. Cuando las consultas están disponibles, puedes utilizarlas para perfeccionar su comprensión de las claves de identidad y foráneas.

    El producto final de la recuperación del diseño sigue reflejando el paradigma del SGBD. El cual puede incluir optimizaciones y errores. En la práctica, el modelo rara vez estará completo. Con el añadido que algunas partes de la estructura pueden ser confusas.

    Recuperación del análisis

    La última fase es la de recuperación del análisis, que consiste en interpretar el modelo, perfeccionarlo y hacerlo más abstracto. Es sobre todo durante esta fase cuando hay que consultar a los expertos en aplicaciones disponibles. La recuperación del análisis consta de cuatro tareas principales.

    1. Aclaración. Eliminar cualquier equipo o dispositivo restante del diseño. Por ejemplo, un modelo de análisis no necesita incluir claves de acceso a archivos y bases de datos. Son básicamente, decisiones de diseño y no contienen información esencial.
    2. Redundancia. Con normalidad, elimina los datos derivados que optimizan el diseño de la base de datos o que se incluyeron por razones equivocadas. Puede ser necesario examinar los datos antes de determinar que una estructura de datos es un duplicado.
    3. Errores. Elimina cualquier error que quede en la base de datos. Se incluye este paso durante la recuperación del análisis debido a que debes comprender a fondo la base de datos antes de concluir que un desarrollador se equivocó. En las primeras etapas, un error aparente podría haber sido, en cambio, una práctica razonable o el resultado de una comprensión incompleta de la base de datos.
    4. Integración de modelos. Las múltiples fuentes de información pueden dar lugar a múltiples modelos. Por ejemplo, es común tener un modelo de ingeniería inversa a partir del estudio de la estructura y los datos. Un modelo de ingeniería avanzada puede prepararse a partir de un manual de usuario. Así, el modelo de análisis final debe fusionar todos los modelos separados.

    ¿Puede considerarse poco ética la ingeniería inversa?

    Esta parte de la práctica es muy debatida y cuestionada. Así que no parece tener una respuesta clara. El principal argumento contra la ingeniería inversa es el de la propiedad intelectual. Si una persona o una organización desarrollan un producto o una idea, ¿estaría bien que otros lo “desmonten” para descubrir su funcionamiento interno? Pues algunos no lo creen así. Esto se debe a que algunas compañías invierten tiempo y dinero en el desarrollo de productos. Así que consideran poco ético que otros puedan realizar ingeniería inversa en sus artículos.

    También, hay productos que se han visto perjudicados por estas prácticas. ¿Por qué las empresas y los particulares deben gastar grandes recursos para reunir propiedad intelectual que puede ser objeto de ingeniería inversa por parte de los competidores a una fracción del coste? Pero, de algún modo, también tiene sus ventajas. Puede utilizarse como una forma de permitir que los productos sean interoperables. Asimismo, se utilizaría como control para que el software informático no realice actividades maliciosas. Al mismo tiempo que poco éticas o ilegales.

    El Curso en Hacking Ético está diseñado para que puedas hacer procesos de ingeniería inversa, siempre bajo las normas de ética de las empresas y organizaciones. No pierdas más tiempo y comienza a realizar este programa de estudios avanzados.

    ¡Comparte!

    ¡Déjanos tu comentario!

    DEJA UNA RESPUESTA

    Por favor ingrese su comentario!
    Por favor ingrese su nombre aquí

    Este sitio está protegido por reCAPTCHA y se aplican la política de privacidad y los términos de servicio de Google.

    Te puede interesar 👇

    SOLICITA MÁS INFORMACIÓN

    Curso Hacking Ético

      RECIBE EN TU EMAIL:

      El precio y facilidades de pago.
      Postulación a la BECA 20% dcto.
      Complemento de Herramienta de Networking Profesional.