Esta charla tratará de enseñar todos los conocimientos básicos para poder llevar a cabo el análisis de un programa dentro de un debugger. Para esto, se enseñará la arquitectura y el lenguaje ensamblador usados en el intel x86 de 32 bits, para después realizar un reversing de un binario para la resolución de un crackme. La teoría, así como las técnicas mostradas en esta charla, servirán a todos los oyentes como bases necesarias en el mundo del análisis de malware, así como en el mundo del exploiting. Es por tanto recomendable a todos los oyentes que quieran seguir el ejemplo que se verá, traer un ordenador portatil con windows (puede usarse una máquina virtual) ya sea de 64 o 32 bits, con el debugger OllyDBG o el debugger x64debugger instalados.
Man in the Middle Atack (Ortadaki Adam Saldırısı)Ahmet Gürel
Süleyman Demirel Üniversitesi Siber Güvenlik Laboratuvarında yapmış olduğum Man in the Middle Atack (Ortadaki Adam Saldırısı) sunumu. Mail : info@gurelahmet.com | Blog: www.gurelahmet.com | Twitter: @ahmettgurell
BGA eğitmenleri tarafından hazırlanan Beyaz Şapkalı Hacker (CEH) Laboratuvar Kitabıdır. Dokümanı https://www.bgasecurity.com/makale/beyaz-sapkali-hacker-ceh-lab-kitabi/ adresimiz üzerinden indirebilirsiniz.
Man in the Middle Atack (Ortadaki Adam Saldırısı)Ahmet Gürel
Süleyman Demirel Üniversitesi Siber Güvenlik Laboratuvarında yapmış olduğum Man in the Middle Atack (Ortadaki Adam Saldırısı) sunumu. Mail : info@gurelahmet.com | Blog: www.gurelahmet.com | Twitter: @ahmettgurell
BGA eğitmenleri tarafından hazırlanan Beyaz Şapkalı Hacker (CEH) Laboratuvar Kitabıdır. Dokümanı https://www.bgasecurity.com/makale/beyaz-sapkali-hacker-ceh-lab-kitabi/ adresimiz üzerinden indirebilirsiniz.
SEO Of Tomorrow_ The Rise Of Automation.pdfTom Pool
A presentation delivered by Tom Pool, at the November 2023 edition of London SEO. Covers a wide range of potential automations & tips for automating certain workflows.
The document discusses using Python for SEO applications such as data extraction, preparation, analysis, machine learning and deep learning. It provides an agenda and examples of using Python to solve challenging SEO problems from site migrations and traffic losses. Methods demonstrated include pulling data from Google Analytics, storing in DataFrames, regular expression grouping, and training machine learning models on page features to classify page groups and identify losses. Later sections discuss using deep learning with computer vision models to classify web pages from screenshots.
Bilgi Güvenliği Akademisi tarafından hazırlanan TCP/IP protokolü üzerinden geçen paketler ve bu paketlerin diğer sistemlere(IPS,NIDS-NIPS vs.) etkilerinin nasıl olduğundan bahsediyor.
Domain consolidation involves consolidating multiple domains and websites into a single domain to improve search engine rankings and traffic without changing content. It provides benefits such as increased domain authority, organic traffic, accessibility, and sustainability. It should be implemented through a methodology like CMS-level redirects, server-level redirects, or URL-level redirects. Careful planning including backlink cleanup, internal linking, and analytics setup is required.
Este documento proporciona una introducción al desarrollo de exploits en Windows 32 bits. Explica conceptos clave como vulnerabilidades, exploits y shellcodes. También cubre temas como la arquitectura x86, la pila, los registros de la CPU, buffer overflows y contramedidas como stack cookies, ASLR, SafeSEH y DEP. El objetivo final de un exploit es controlar el registro EIP para ejecutar código arbitrario.
Este documento presenta una guía sobre la introducción al lenguaje ensamblador x86-64. Explica brevemente la evolución de la arquitectura x86 de Intel a x86-64 de AMD y el ciclo de desarrollo de un programa en ensamblador, incluyendo la creación del código fuente, compilación, enlace y depuración. Además, proporciona varios ejercicios de programación en ensamblador para practicar conceptos básicos.
El documento describe la historia y funcionalidad del procesador. Explica que el procesador interpreta las instrucciones de los programas y procesa los datos, y que ha estado presente desde los inicios de la computación pero no fue hasta los años 70 que se fabricaron los primeros procesadores con circuitos integrados. También describe los diferentes componentes del procesador como la memoria cache, la capacidad de manejar memoria virtual de forma nativa, y la capacidad de procesar múltiples instrucciones en paralelo a través de seis unidades funcionales.
Exploits y stack overflows en windows 2017Un Marcos
Este documento esta basado en muchos que hay por la red, los cuales están al
final del mismo, y de la aportación de muchos usuarios en diversos foros, listas
de correo y como no, de exploits.
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]RootedCON
Taller introductorio a la explotación de software GNU/Linux. Se explicarán diversos tipos de vulnerabilidades (corrupciones de memoria, fugas de información, condiciones de carrera, etc...) siguiendo metodologías actuales del desarrollo de exploits donde se sortearán las protecciones del sistema operativo.
Este documento compara las arquitecturas CISC y RISC. Brevemente describe el origen de CISC en los años 70 con los primeros microprocesadores de Intel, y el surgimiento de RISC a finales de los 80 para mejorar el rendimiento. Explica las principales diferencias entre ambas arquitecturas en términos de complejidad de instrucciones, uso de registros y memoria, y pipeline. También analiza su implementación interna y cómo cada una ejecuta instrucciones. Por último, indica que actualmente predomina RISC, aunque CISC
El documento describe la importancia del lenguaje ensamblador, incluyendo que requiere menos memoria y es más rápido que los lenguajes de alto nivel, permite un mayor control sobre el hardware, y una mejor comprensión de la arquitectura de la máquina. También cubre conceptos clave como registros, memoria, interrupciones y llamadas al sistema.
Este documento resume cinco puntos sobre arquitectura de hardware. El primer punto describe las unidades aritméticas lógicas y de punto flotante en los procesadores. El segundo punto explica la pila de datos y su uso. El tercer punto compara lenguajes ensambladores con lenguajes de programación más comunes como C y Java. El cuarto punto describe instrucciones como MOV, ADD, SUB, MUL y DIV. El quinto punto explica cómo construir una unidad aritmética lógica básica usando conjuntos de bits.
Presentación Proyecto de Grado: X-ISCKERJose Pinilla
Esta es la presentación del proyecto de grado "Plataforma para la emulación y reconfiguración de arquitecturas RISC y CISC", denominada XISCKER (Reduced/Complex Instruction Set Computing Key Educational Resource). Desarrollado por Jose Pinilla y Alfredo Gualdrón, bajo la dirección del MSc. Alonso Retamoso
Contenido:
Justificación
Objetivos
Metodología
Futuro
El documento proporciona información sobre el procesador SPARC. En resumen:
1) SPARC es una arquitectura RISC diseñada originalmente por Sun Microsystems.
2) Utiliza ventanas de registros y tiene instrucciones load/store.
3) Está compuesto de una unidad entera y una unidad de punto flotante.
El documento proporciona información sobre el procesador SPARC. En resumen, explica que SPARC es una arquitectura RISC diseñada originalmente por Sun Microsystems en 1985. Describe que SPARC fue la primera arquitectura RISC abierta y que tiene características como ventanas de registros y un conjunto reducido de instrucciones. También menciona que la CPU SPARC está compuesta de una unidad entera y una unidad de punto flotante.
El documento describe la estructura básica de una computadora, incluyendo la CPU, memoria principal, entrada/salida y sistema de interconexión. Luego se detalla la estructura interna de la CPU, que contiene la unidad aritmética y lógica, unidad de control y registros. Por último, se explica el ciclo de ejecución básico de una instrucción en la CPU.
SEO Of Tomorrow_ The Rise Of Automation.pdfTom Pool
A presentation delivered by Tom Pool, at the November 2023 edition of London SEO. Covers a wide range of potential automations & tips for automating certain workflows.
The document discusses using Python for SEO applications such as data extraction, preparation, analysis, machine learning and deep learning. It provides an agenda and examples of using Python to solve challenging SEO problems from site migrations and traffic losses. Methods demonstrated include pulling data from Google Analytics, storing in DataFrames, regular expression grouping, and training machine learning models on page features to classify page groups and identify losses. Later sections discuss using deep learning with computer vision models to classify web pages from screenshots.
Bilgi Güvenliği Akademisi tarafından hazırlanan TCP/IP protokolü üzerinden geçen paketler ve bu paketlerin diğer sistemlere(IPS,NIDS-NIPS vs.) etkilerinin nasıl olduğundan bahsediyor.
Domain consolidation involves consolidating multiple domains and websites into a single domain to improve search engine rankings and traffic without changing content. It provides benefits such as increased domain authority, organic traffic, accessibility, and sustainability. It should be implemented through a methodology like CMS-level redirects, server-level redirects, or URL-level redirects. Careful planning including backlink cleanup, internal linking, and analytics setup is required.
Este documento proporciona una introducción al desarrollo de exploits en Windows 32 bits. Explica conceptos clave como vulnerabilidades, exploits y shellcodes. También cubre temas como la arquitectura x86, la pila, los registros de la CPU, buffer overflows y contramedidas como stack cookies, ASLR, SafeSEH y DEP. El objetivo final de un exploit es controlar el registro EIP para ejecutar código arbitrario.
Este documento presenta una guía sobre la introducción al lenguaje ensamblador x86-64. Explica brevemente la evolución de la arquitectura x86 de Intel a x86-64 de AMD y el ciclo de desarrollo de un programa en ensamblador, incluyendo la creación del código fuente, compilación, enlace y depuración. Además, proporciona varios ejercicios de programación en ensamblador para practicar conceptos básicos.
El documento describe la historia y funcionalidad del procesador. Explica que el procesador interpreta las instrucciones de los programas y procesa los datos, y que ha estado presente desde los inicios de la computación pero no fue hasta los años 70 que se fabricaron los primeros procesadores con circuitos integrados. También describe los diferentes componentes del procesador como la memoria cache, la capacidad de manejar memoria virtual de forma nativa, y la capacidad de procesar múltiples instrucciones en paralelo a través de seis unidades funcionales.
Exploits y stack overflows en windows 2017Un Marcos
Este documento esta basado en muchos que hay por la red, los cuales están al
final del mismo, y de la aportación de muchos usuarios en diversos foros, listas
de correo y como no, de exploits.
Manuel Blanco - GNU/Linux Binary Exploitation I&II [rooted2018]RootedCON
Taller introductorio a la explotación de software GNU/Linux. Se explicarán diversos tipos de vulnerabilidades (corrupciones de memoria, fugas de información, condiciones de carrera, etc...) siguiendo metodologías actuales del desarrollo de exploits donde se sortearán las protecciones del sistema operativo.
Este documento compara las arquitecturas CISC y RISC. Brevemente describe el origen de CISC en los años 70 con los primeros microprocesadores de Intel, y el surgimiento de RISC a finales de los 80 para mejorar el rendimiento. Explica las principales diferencias entre ambas arquitecturas en términos de complejidad de instrucciones, uso de registros y memoria, y pipeline. También analiza su implementación interna y cómo cada una ejecuta instrucciones. Por último, indica que actualmente predomina RISC, aunque CISC
El documento describe la importancia del lenguaje ensamblador, incluyendo que requiere menos memoria y es más rápido que los lenguajes de alto nivel, permite un mayor control sobre el hardware, y una mejor comprensión de la arquitectura de la máquina. También cubre conceptos clave como registros, memoria, interrupciones y llamadas al sistema.
Este documento resume cinco puntos sobre arquitectura de hardware. El primer punto describe las unidades aritméticas lógicas y de punto flotante en los procesadores. El segundo punto explica la pila de datos y su uso. El tercer punto compara lenguajes ensambladores con lenguajes de programación más comunes como C y Java. El cuarto punto describe instrucciones como MOV, ADD, SUB, MUL y DIV. El quinto punto explica cómo construir una unidad aritmética lógica básica usando conjuntos de bits.
Presentación Proyecto de Grado: X-ISCKERJose Pinilla
Esta es la presentación del proyecto de grado "Plataforma para la emulación y reconfiguración de arquitecturas RISC y CISC", denominada XISCKER (Reduced/Complex Instruction Set Computing Key Educational Resource). Desarrollado por Jose Pinilla y Alfredo Gualdrón, bajo la dirección del MSc. Alonso Retamoso
Contenido:
Justificación
Objetivos
Metodología
Futuro
El documento proporciona información sobre el procesador SPARC. En resumen:
1) SPARC es una arquitectura RISC diseñada originalmente por Sun Microsystems.
2) Utiliza ventanas de registros y tiene instrucciones load/store.
3) Está compuesto de una unidad entera y una unidad de punto flotante.
El documento proporciona información sobre el procesador SPARC. En resumen, explica que SPARC es una arquitectura RISC diseñada originalmente por Sun Microsystems en 1985. Describe que SPARC fue la primera arquitectura RISC abierta y que tiene características como ventanas de registros y un conjunto reducido de instrucciones. También menciona que la CPU SPARC está compuesta de una unidad entera y una unidad de punto flotante.
El documento describe la estructura básica de una computadora, incluyendo la CPU, memoria principal, entrada/salida y sistema de interconexión. Luego se detalla la estructura interna de la CPU, que contiene la unidad aritmética y lógica, unidad de control y registros. Por último, se explica el ciclo de ejecución básico de una instrucción en la CPU.
Este documento resume las características de las computadoras RISC. Brinda una introducción a RISC y describe sus principales características como conjuntos de instrucciones simplificadas, modos de direccionamiento sencillos y formatos de instrucciones de longitud fija. También explica cómo la arquitectura RISC permite una ejecución más rápida de instrucciones a través de la segmentación del procesamiento de instrucciones en varias etapas.
Este documento describe el lenguaje ensamblador del microprocesador, incluyendo los registros internos del microprocesador, el conjunto de instrucciones, el formato de las instrucciones y los modos de direccionamiento. Explica los diferentes tipos de instrucciones como las de transferencia de datos, control de bucles, prueba y comparación, y llamadas y retornos de subrutinas. También cubre la generación de código objeto y la programación en lenguaje ensamblador.
Este documento describe el lenguaje ensamblador del microprocesador, incluyendo los registros internos del microprocesador, el conjunto de instrucciones, el formato de las instrucciones y los modos de direccionamiento. Se clasifican las instrucciones en grupos como transferencia de datos, control de bucles, prueba y comparación, llamadas a subrutinas, aritméticas y lógicas. También explica conceptos como registros, banderas y segmentos de memoria.
Este documento describe el lenguaje ensamblador del microprocesador, incluyendo los registros internos del microprocesador, el conjunto de instrucciones (para microprocesadores 8086/8088), el formato de las instrucciones, los modos de direccionamiento y la generación de código objeto, y la programación en lenguaje ensamblador. Cubre temas como transferencia de datos, control de bucles, pruebas y comparaciones, y saltos condicionales.
Presentación realizada para la Universidad Privada Domingo Savio,en la cual se hace una introducción al desarrollo de exploit sobre sistemas operativos Windows x86
El documento describe una charla sobre ingeniería inversa. Explica brevemente qué es la ingeniería inversa, los componentes básicos de los microprocesadores como los registros, y algunas instrucciones y conceptos básicos del lenguaje ensamblador como mov, add, push y pop. También menciona herramientas como OllyDBG, Immunity Debugger e IDA Pro que se usan comúnmente para ingeniería inversa.
Similar a Eduardo Blázquez - Técnicas de Ingeniería Inversa I & II [rooted2018] (20)
Rooted2020 A clockwork pentester - Jose Carlos Moral & Alvaro VillaverdeRootedCON
Este documento presenta la plataforma SecAP, la cual automatiza las tareas de pentesting de una manera inteligente y autónoma. SecAP funciona como una suite de herramientas que incluye conectores, lanzadores, analizadores y una API REST. Coordina el proceso de pentesting al almacenar los activos descubiertos, lanzar las herramientas apropiadas, analizar los resultados y continuar la auditoría de forma autónoma. El documento describe la arquitectura, componentes, flujo de trabajo y ventajas de SecAP,
Este documento describe una investigación sobre la identificación y evasión de entornos de análisis sandbox. Los investigadores desarrollaron artefactos para recopilar información de varias sandbox y analizar su seguridad. Encontraron que algunas sandbox no ocultan bien su naturaleza y que es posible acceder a archivos de configuración. También pudieron identificar a los propietarios de algunas sandbox mediante vulnerabilidades de XSS. Concluyen que es posible obtener inteligencia sobre cómo funcionan las sandbox y evadir su detección.
Este documento describe una herramienta de correlación de procesos Sysmon que monitorea el comportamiento de procesos en un sistema para detectar actividad maliciosa. La herramienta incluye un motor de línea base que establece el comportamiento normal de procesos clave y un motor de jerarquía que detecta anomalías en la relación entre procesos padre e hijo. La herramienta puede usarse para cazar malware avanzado que opera en memoria sin dejar rastros en el disco.
El documento describe una propuesta para realizar auditorías de infraestructura de forma rápida y eficiente mediante la automatización y estandarización del proceso. Se propone crear un catálogo de estándares, componentes y controles de seguridad que puedan ejecutarse de forma automatizada para auditar sistemas, generar informes y validar el cumplimiento normativo.
Rooted2020 the day i_ruled_the_world_deceiving_software_developers_through_op...RootedCON
This document discusses how software developers can be deceived through malicious software libraries uploaded to package managers. It describes how the researchers generated homograph variants of popular library names and uploaded them to PyPI and npm. Within a few hours hundreds of developers had installed the malicious libraries, demonstrating vulnerabilities in how developers and package managers prevent homograph attacks. The researchers then analyzed the results and issues recommendations to package managers on additional controls like rate limiting and mandatory user identification that could help prevent such attacks.
Rooted2020 si la-empresa_ha_ocultado_el_ciberataque,_como_se_ha_enterado_el_r...RootedCON
Este documento resume la legislación española e internacional sobre el whistleblowing o denuncia de irregularidades. Explica que las empresas están obligadas a disponer de canales internos de denuncia confidenciales y protegidos, y que los denunciantes no pueden sufrir represalias. La normativa incluye infracciones relacionadas con la ciberseguridad, como incidentes de seguridad y filtraciones de datos. Las empresas deben transponer estas directivas antes de 2021, aunque se concede más tiempo para pymes.
El documento presenta los resultados de un análisis de seguridad de plugins de WordPress. Se analizaron 84,508 plugins encontrando 1,775 vulnerables con 5,419 vulnerabilidades en total, predominando la inyección SQL. Se desarrolló una infraestructura llamada WordPressTerror para automatizar el análisis. Los resultados se informaron al equipo de seguridad de WordPress para notificar a los desarrolladores. El objetivo final es mejorar la seguridad de WordPress y sus plugins.
El documento presenta una charla sobre atacando comunicaciones de voz cifradas. Se discuten varios protocolos de cifrado como SIP, SRTP, ZRTP y Signal. Se explican sus características de seguridad y posibles ataques como interceptación de tráfico, suplantación de identidad y escucha de conversaciones. El objetivo es crear conciencia sobre la importancia de cifrar las comunicaciones para proteger la privacidad.
El documento describe un análisis forense de un rootkit llamado Necurs. Explica cómo el rootkit infecta sistemas ejecutando un dropper que instala un driver malicioso. El driver oculta procesos y archivos, y se comunica con procesos en modo usuario para inyectar código malicioso. Almacena información en el registro de Windows de forma cifrada.
Stefano Maccaglia is a Senior Principal Consultant at RSA who investigates cyber incidents. The document describes an investigation conducted at a government agency that discovered stolen data on an internal system. RSA found the system, called ASFOUR, had been compromised since August 2018. By analyzing logs and network traffic with RSA tools, they traced the activity to an adversary accessing ASFOUR and another system called HAKIMI. They also found evidence of two threat groups - Oilrig and Epic Turla. RSA helped the agency remediate by rebuilding compromised systems, resetting passwords, and removing unused accounts.
El documento describe un taller sobre análisis de binarios creados en GoLang. Explica quiénes son los presentadores, por qué es importante aprender sobre este nuevo lenguaje, las características de GoLang, ejemplos de malware creados en GoLang, y el proceso de generación y análisis de binarios de GoLang, incluyendo cómo recuperar los nombres de funciones y cadenas de caracteres en binarios strippeados. El taller concluye con un reto práctico de obtener un flag de un binario de muestra.
Este documento describe un ataque que utiliza una VPN para establecer un canal seguro con las víctimas, instalar persistencia a través de un archivo .reg, ejecutar scripts de forma remota y exfiltrar archivos. El ataque no requiere privilegios de administrador ni malware. Se utiliza una VPN para evadir detección e interceptar TLS a través de "man in the middle".
Rooted2020 van a-mear_sangre_como_hacer_que_los_malos_lo_paguen_muy_caro_-_an...RootedCON
Este documento proporciona 10 recomendaciones para mejorar la seguridad de una red, como actualizar sistemas, implementar SPF y DKIM para el correo electrónico, prohibir macros, usar LAPS para contraseñas de administrador local, segmentar la red con VLAN, y realizar copias de seguridad fuera de la red. También recomienda eliminar protocolos obsoletos, auditar los permisos de Active Directory, y elevar los costos para los atacantes al interior de la red. El objetivo general es dificultar el acceso no autorizado
El documento discute brevemente varios incidentes cibernéticos atribuidos a China, incluidos ataques a OPM, Equifax y Anthem. También menciona unidades de amenazas avanzadas persistentes chinas como APT1 y Comment Crew. Explica conceptos como IOC, TTP y marcos como ATT&CK y CAPEC para analizar amenazas. Finalmente, proporciona numerosos enlaces a fuentes adicionales sobre ciberespionaje chino y otros temas relacionados.
The document describes a proof-of-concept malware called "evil mass storage" that can infect systems without an internet connection. It uses a custom hardware device with a micro SD card and radio frequency module to exfiltrate information from infected targets. The malware has multiple stages and can hide in encrypted sectors on the SD card or transmit data via radio. Details are provided on the prototype hardware, firmware, and future improvements planned for the project.
The document discusses the benefits of exercise for mental health. Regular physical activity can help reduce anxiety and depression and improve mood and cognitive functioning. Exercise causes chemical changes in the brain that may help protect against mental illness and improve symptoms.
Este documento discute el tema de la prueba tecnológica indiciaria en los procesos penales. En particular, analiza cuestiones como la distinción entre indicios y sospechas, la necesidad de una motivación detallada por parte del tribunal al valorar las pruebas, y los límites a la obtención ilícita de pruebas por parte de particulares.
Este documento presenta una introducción a Bluetooth Low Energy (BLE), incluyendo su historia, funcionamiento y vulnerabilidades. Explica conceptos clave como el emparejamiento, los canales y los tipos de paquetes. Luego describe varios ataques realizados contra dispositivos BLE, como trackers, cámaras y monopatines eléctricos. Finalmente, ofrece recomendaciones para fortalecer la seguridad de BLE a través del cifrado y mecanismos robustos de intercambio de claves.
Este documento describe un método para generar ejemplos adversarios (AE) que evadan detectores de malware basados en aprendizaje profundo. El método propuesto utiliza perturbaciones en las cabeceras de los archivos binarios y optimización mediante algoritmos genéticos para introducir cambios que eviten la detección sin afectar al comportamiento. Los resultados experimentales muestran que el enfoque alcanza tasas de evasión de hasta el 98.23% frente a MalConv, un detector de estado del arte.
El documento describe diferentes técnicas avanzadas de fuzzing como mutation scheduling, structure-aware fuzzing y domain-specific feedback. Explica cómo estas técnicas pueden ayudar a encontrar vulnerabilidades de forma más eficiente explorando el espacio de búsqueda de manera inteligente. También incluye ejemplos de vulnerabilidades encontradas mediante fuzzing como CVE-2020-9273 y CVE-2020-9365.
El uso de las TIC en la vida cotidiana.pptxjgvanessa23
En esta presentación, he compartido información sobre las Tecnologías de la Información y la Comunicación (TIC) y su aplicación en diversos ámbitos de la vida cotidiana, como el hogar, la educación y el trabajo.
He explicado qué son las TIC, las diferentes categorías y sus respectivos ejemplos, así como los beneficios y aplicaciones en cada uno de estos ámbitos.
Espero que esta información sea útil para quienes la lean y les ayude a comprender mejor las TIC y su impacto en nuestra vida cotidiana.
Todo sobre la tarjeta de video (Bienvenidos a mi blog personal)AbrahamCastillo42
Power point, diseñado por estudiantes de ciclo 1 arquitectura de plataformas, esta con la finalidad de dar a conocer el componente hardware llamado tarjeta de video..
La inteligencia artificial sigue evolucionando rápidamente, prometiendo transformar múltiples aspectos de la sociedad mientras plantea importantes cuestiones que requieren una cuidadosa consideración y regulación.
Catalogo general tarifas 2024 Vaillant. Amado Salvador Distribuidor Oficial e...AMADO SALVADOR
Descarga el Catálogo General de Tarifas 2024 de Vaillant, líder en tecnología para calefacción, ventilación y energía solar térmica y fotovoltaica. En Amado Salvador, como distribuidor oficial de Vaillant, te ofrecemos una amplia gama de productos de alta calidad y diseño innovador para tus proyectos de climatización y energía.
Descubre nuestra selección de productos Vaillant, incluyendo bombas de calor altamente eficientes, fancoils de última generación, sistemas de ventilación de alto rendimiento y soluciones de energía solar fotovoltaica y térmica para un rendimiento óptimo y sostenible. El catálogo de Vaillant 2024 presenta una variedad de opciones en calderas de condensación que garantizan eficiencia energética y durabilidad.
Con Vaillant, obtienes más que productos de climatización: control avanzado y conectividad para una gestión inteligente del sistema, acumuladores de agua caliente de gran capacidad y sistemas de aire acondicionado para un confort total. Confía en la fiabilidad de Amado Salvador como distribuidor oficial de Vaillant, y en la resistencia de los productos Vaillant, respaldados por años de experiencia e innovación en el sector.
En Amado Salvador, distribuidor oficial de Vaillant en Valencia, no solo proporcionamos productos de calidad, sino también servicios especializados para profesionales, asegurando que tus proyectos cuenten con el mejor soporte técnico y asesoramiento. Descarga nuestro catálogo y descubre por qué Vaillant es la elección preferida para proyectos de climatización y energía en Amado Salvador.
2. Reversing, Técnicas de Ingeniería Inversa 2
Who Am I
• Eduardo Blázquez (Fare9, F9, el de la foto de Ilonqueen,…)
• Graduado en Ingeniería de Computadores por la UAH
• Junior Malware Analyst en Panda Security
• Con intereses en Reversing, exploiting, análisis de malware y no
tan análisis…
@Farenain https://f9.29wspy.ru
4. Reversing, Técnicas de Ingeniería Inversa 4
Reversing, una introducción
Algo de terminología
“La Ingeniería inversa conocida en el mundo anglosajón como reversing. Realización
de una ‘contra-elaboración’ de un producto. En nuestro caso, nos referiremos a
obtener el código o esquemas de un software compilado”
5. Reversing, Técnicas de Ingeniería Inversa 5
Terminología
• Arquitectura de computadores
• Lenguaje Ensamblador
• Disassemblers
• Debuggers
• Usos del Reversing (Malware Analysis, Exploiting, “Cracking”…)
6. Reversing, Técnicas de Ingeniería Inversa 6
Arquitectura de Computadores
Según Kai Hwang y Fayé Briggs, la arquitectura de computadores “es
en realidad, un concepto del sistema que integra hardware, software,
algoritmos y lenguajes para realizar grandes cálculos”
Según J. L. Baer es “el arte o ciencia de planificar, diseñar, construir y
dar tratamiento decorativo a los computadores”
Y… blah, blah, blah, blah
7. Reversing, Técnicas de Ingeniería Inversa 7
Arquitectura de Computadores
Sólo era una aburrida introducción para poner la arquitectura de Von
Neumann.
8. Reversing, Técnicas de Ingeniería Inversa 8
Lenguaje Ensamblador
• Nivel más bajo en la cadena del software
• “Lenguaje del reversing por excelencia”
• Es una clase de lenguaje, no un lenguaje en sí
• Es la representación a nivel “humano” del código máquina
• Es dependiente de la arquitectura
9. Reversing, Técnicas de Ingeniería Inversa 9
Disassemblers
Programas que toman los binarios ejecutables como entrada, y
generan textos que contengan el código ensamblador del programa
completo o parte.
Cada desensamblado es específico de la arquitectura.
Son usados en un análisis o reversing estático.
Disassemblers más conocidos…
10. Reversing, Técnicas de Ingeniería Inversa 10
Debuggers
Programa que permite observar otro programa durante su ejecución.
Esto permite ver las trazas, posibles errores, modificaciones del
sistema. Todo esto instrucción por instrucción.
Existen dos tipos, unos vienen integrados en los IDEs, y debuggers
como programas a parte.
Debuggers más conocidos…
11. Reversing, Técnicas de Ingeniería Inversa 11
Special Thanks To
Duncan Ogilvie (Main x64dbg Developer) and x64dbg community (they are a
great community), for let me give this talk and little training with x64dbg.
In final training, we will use his debugger with some plugins I’ve installed and
packed in zip for students.
12. Reversing, Técnicas de Ingeniería Inversa 12
Usos del reversing
• Análisis de malware: para obtener en detalle qué acciones realiza
un malware, se analiza el código a bajo nivel.
• Exploiting: igual que antes se analiza el código de un programa
para buscar vulnerabilidades.
• Cracking: no hace falta explicarlo, ¿no?
13. Reversing, Técnicas de Ingeniería Inversa 13
Arquitectura x86-32
• Arquitectura CISC de 32 bits, se trata de una arquitectura Little-
Endian.
• Opera en dos modos:
• Modo Real: según arranca, soporta instrucciones de 16 bits.
• Modo Protegido: un modo en el que soporta la paginación, y la
memoria virtual.
14. Reversing, Técnicas de Ingeniería Inversa 14
Los anillos de poder: de Ring O a Ring 3
• La arquitectura x86 soporta el concepto de separación de
privilegios.
• Para ello se usan 4 anillos de privilegio, el Ring 0 (mayor nivel de
privilegio) y el Ring 3 (menor nivel de privilegio), Ring 1 y 2 no
suelen utilizarse.
• Los sistemas operativos suelen implementar el nivel de usuario en
el Ring 3 y el nivel de kernel en el Ring 0.
15. Reversing, Técnicas de Ingeniería Inversa 15
Los Registros
• Se trata de pequeños montones de memoria disponibles para la
CPU de acceso rápido.
• Tenemos 4 categorías principales:
16. Reversing, Técnicas de Ingeniería Inversa 16
Los Registros
• Estos registros tienen un tamaño de 32 bits, pero algunos de ellos
pueden ser divididos en porciones más pequeñas
17. Reversing, Técnicas de Ingeniería Inversa 17
Los Registros
• Algunos registros aunque generales, suelen tener unos usos
concretos
Registro Propósito
EAX Acumulador, producto, división…
ECX Contador en bucles
ESI Fuente en operaciones de cadenas/memoria
EDI Destino en operaciones de cadenas/memoria
EBP Base de los frames de pila (ya lo veremos)
ESP Puntero de la pila (ya lo veremos)
EDX Suele utilizarse en productos, divisiones junto con EAX
18. Reversing, Técnicas de Ingeniería Inversa 18
Los Registros
• Otros registros interesantes (que no se suelen tratar):
• CRX: registros de control.
• CR0: Controla la paginación.
• CR1,5,6,7: Reservados para la CPU.
• CR2: contiene la dirección que provoque un fallo de página.
• CR3: guarda la dirección base de la estructura de paginación.
• CR4: controla la virtualización.
• DRX: usados para establecer breakpoints de hardware.
• DR0-DR3: guardan la dirección del breakpoint.
• DR4-DR7: usados para status.
• Registros específicos del modelo (MSRs): variables según el
procesor (AMD e Intel usan diferentes)
19. Reversing, Técnicas de Ingeniería Inversa 19
Sintaxis de Ensamblador
• Dependiendo del assembler/disassember usado, hay dos sintaxis
diferentes, Intel y AT&T.
Intel
mov ecx, 40233033h
mov ecx, [eax]
mov ecx, eax
AT&T
movl $40233033h, %ecx
movl (%eax), %ecx
movl %ecx, %eax
20. Reversing, Técnicas de Ingeniería Inversa 20
Set de Instrucciones
Moviendo Datos
Instrucción MOV
En Intel x86 de 32 bits, se permiten los siguientes tipos de
movimientos:
• Valor Inmediato a registro. mov eax,40h
• Registro a registro. mov eax, ebx
• Inmediato a memoria. mov [04030201h],33h
• Registro a memoria y memoria a registro. mov [04052233h], ebx
• Memoria a memoria (con algunas instrucciones) inc dword ptr [04032221h]
21. Reversing, Técnicas de Ingeniería Inversa 21
Set de Instrucciones
Acceso a memoria
Como se ha visto, se usan los corchetes ([ ]) para el acceso a memoria, los accesos
se pueden hacer a byte, word y dword de la siguiente forma:
• byte: mov al, byte ptr [<address>]
• word: mov ax, word ptr [<address>]
• dword: mov eax, dword ptr [<address>]
A memoria se puede acceder también a través de registros, por índice, índice y
desplazamiento…
• mov ebx, [eax] ; acceso a memoria por registro
• mov ebx, [eax + 8] ; acceso por desplazamiento
• mov ebx, [eax + esi * 4] ; acceso por índice y desplazamiento…
22. Reversing, Técnicas de Ingeniería Inversa 22
Set de Instrucciones
LEA eso y LEA lo otro
LEA (Load Effective Address) es una instrucción que hace uso de los corchetes,
pero en lugar de cargar de memoria, evalúa la expresión entre corchetes, y asigna el
valor. (También lo permiten los ensambladores para hacer multiplicaciones).
LEA ebx, [ebp + 3] ; Mete en ebx, el valor que tenga ebp + 3
LEA edx, [eax * 5] ; Mete en edx, el valor que tenga eax * 5
movb,movw, movd
Mueven un byte, word o double, de una dirección apuntada por ESI, a una dirección
apuntada por EDI.
LEA esi, [04050607h + 03h]; esi ahora = 0405060Ah
LEA edi, [04050600h + 02h]; edi ahora = 04050602h
movd; mueve los 4 bytes apuntados por 0405060Ah a la dirección 04050602h
23. Reversing, Técnicas de Ingeniería Inversa 23
Set de Instrucciones
Instrucciones Aritméticas
• ADD eax, 02h ; eax = eax + 2
• SUB eax, 20h ; eax = eax – 20h
• inc eax; eax = eax + 1
• dec eax; eax = eax – 1
Instrucciones Lógicas
• AND eax, 00000100h ; operación AND ( 1 cuando ambos están a 1)
• OR eax, FFFFFFFFh ; operación OR ( 1 cuando al menos uno está a 1)
• XOR eax,eax ; operación XOR (1 exclusivo 1-0 o 0-1)
• NOT eax; da la vuelta a todos los bits (Complemento a 1)
• SHL/SHL eax,<numero/cl> ; desplaza bits a izq. o der. n veces
• ROL/ROR eax,<numero/cl> ; rota bits a izq. o der. n veces
24. Reversing, Técnicas de Ingeniería Inversa 24
Set de Instrucciones
Multiplicación
• MUL <reg/mem> ; multiplica por al,ax o eax y guarda en ax, dx:ax o edx:eax
• IMUL <reg/mem> ; multiplica por al,ax o eax y guarda en ax, dx:ax o edx:eax
• IMUL <reg1>,<reg2/mem>; reg1 = reg1 * reg2/mem
• IMUL <reg1>,<reg2/mem>,<numero>; reg1 = reg2/mem * numero
División
• DIV <reg/mem> ; divide edx:eax o dx:ax o ax entre valor dado, y guarda
resultado en eax o ax o al, y resto en edx o dx o ah.
• IDIV <reg/mem> ; divide edx:eax o eax o ax entre valor dado, y guarda
resultado en eax o ax o al, y resto en edx o dx o ah.
25. Reversing, Técnicas de Ingeniería Inversa 25
Push y Pop, la hora de la Stack
La Pila o Stack
Se trata de una zona de memoria la cual empieza en zonas altas de memoria, y
crece hacia las zonas bajas. Se trata de una estructura LIFO.
Para saber la dirección del stack se revisa el registro ESP. Se usa en conjunto de
EBP para quedar “frames”.
La stack se usa en los programas para: pasar parámetros a las funciones, variables
locales, guardar el estado del procesador en un momento dado…
26. Reversing, Técnicas de Ingeniería Inversa 26
Push y Pop, la hora de la Stack
Antes de nada y para poder entenderlo todo, vamos a ver las funciones para meter y
sacar valores de la stack. Recordemos habría que meter 4 bytes (32 bits).
Meter valores en la stack:
push <reg/mem/inmediato>
Esto es igual que:
sub esp,4
mov [esp],<reg/mem/inmediato>
pop <reg/mem>
Esto es igual que:
mov <reg/mem>,[esp]
add esp,4
27. Reversing, Técnicas de Ingeniería Inversa 27
Push y Pop, la hora de la Stack
En programación, se utilizan las funciones para evitar la repetición de código, pero el
programa debe saber a dónde volver tras acabar la función.
Estas funciones normalmente suelen tener parámetros, los cuales son pasados por
la pila. Luego se realiza una llamada a la función (CALL)
Al entrar a una función, se introduce la dirección de retorno y se crea un pequeño
“frame” o “marco”, para que la función tenga “su propia pila”.
Entonces se reserva espacio para variables locales.
Finalmente, se “libera” el pequeño frame de la pila, se recupera el valor de retorno
para ir, y se “liberan” los parámetros. (RET)
28. Reversing, Técnicas de Ingeniería Inversa 28
Push y Pop, la hora de la Stack
int suma(int a,int b)
{
int valor;
valor = a + b;
return valor;
}
suma(1,2)
proc suma
push ebp
mov ebp,esp
sub esp,4
mov eax, [ebp + 8]
mov ebx, [ebp + C]
mov [esp],ebx
add [esp], eax
mov eax, [esp]
mov esp,ebp
pop ebp
ret 8
endp
push 2
push 1
call suma
29. Reversing, Técnicas de Ingeniería Inversa 29
Push y Pop, la hora de la Stack
Convenciones de llamada
Son “normas” que índican cómo se pasan los parámetros a una función (primero los
de la derecha o primero los de la izquierda), y cómo se limpian los parámetros de la
pila (si tiene que limpiarla el método que llama a una función, o el método llamado).
CDECL STDCALL
proc suma
push ebp
mov ebp,esp
sub esp,4
mov eax, [ebp + 8]
mov ebx, [ebp + C]
mov [esp],ebx
add [esp], eax
mov eax, [esp]
mov esp,ebp
pop ebp
ret 8
endp
push 2
push 1
call suma
add esp,8
push 2
push 1
call suma
proc suma
push ebp
mov ebp,esp
sub esp,4
mov eax, [ebp + 8]
mov ebx, [ebp + C]
mov [esp],ebx
add [esp], eax
mov eax, [esp]
mov esp,ebp
pop ebp
ret
endp
30. Reversing, Técnicas de Ingeniería Inversa 30
Saltos In/Condicionales
Para cambiar el flujo de ejecución de un programa, se utilizan los saltos. Estos nos
permiten dirigir la ejecución del programa.
Dos tipos de salto:
• Incondicionales: siempre se toman (Instrucción JMP)
• Condicionales: se toman dependiendo de una condición (Instrucciones Jcc)
Antes ya vimos un tipo de salto incondicional con la instrucción CALL.
Los saltos condicionales, dependen de valores dentro de un registro conocido como
“EFLAGS”.
31. Reversing, Técnicas de Ingeniería Inversa 31
EFLAGS
Los valores de estos EFLAGS son modificados después de instrucciones como las
aritmetico-lógicas. Ya que indican ciertas situaciones de interés que se han podido
dar.
Los valores de los EFLAGS al ser bits serán sólo ‘0’ o ‘1’.
Para establecer estos valores, se suelen utilizar unas instrucciones llamadas de
“comparación”. Estas son:
• CMP: compara dos números restando uno con otro, pero sin guardar el
resultado en ningún registro.
• TEST: realiza una operación lógica AND, igualmente sin guardar el resultado
en ningún registro.
Tras esto se pueden establecer los siguientes flags:
• zero flag(zf): el resultado dio 0
• carry flag(cf): el resultado dio un acarreo (overflow números sin signo).
• sign flag(sf): el resultado es negativo.
• Overflow flag(of): números con signo que desbordan su máximo.
32. Reversing, Técnicas de Ingeniería Inversa 32
Saltos Condicionales
Por tanto, los saltos condicionales revisarán los valores de estos EFLAGS.
Vamos a ver una tabla que explique los saltos más típicos:
Salto condicional Descripción EFLAGS
Implicados
JB/JNAE Salta si por debajo, o no mayor ni igual, números sin signo. CF = 1
JNB/JAE No por debajo, por encima o igual, sin signo. CF = 0
JE/JZ Igual o cero. ZF = 1
JNE/JNZ No igual, no cero. ZF = 0
JL Menor qué, números con signo. (SF ^ OV) = 1
JGE/JNL Mayor o igual, no menor que, números con signo. (SF ^ OV) = 0
JG/JNLE Mayor, no menor o igual que, números con signo. ((SF ^ OV)|ZF) = 0
34. Reversing, Técnicas de Ingeniería Inversa 34
Ejecutables de Windows
Archivos PE
Se conoce así a los ejecutables de Windows, PE (Portable Executable). Este se usa
en archivos ejecutables, código objeto y DLLs.
Se trata de una estructura con la información necesaria para que el cargador del
sistema, pueda arrancar una aplicación.
Esta estructura cuenta con una cabecera, con información valiosa (por ejemplo en el
análisis de malware), tenemos por ejemplo: librerías y funciones enlazadas,
funciones importadas, funciones exportadas (en las DLLs)…
35. Reversing, Técnicas de Ingeniería Inversa 35
Ejecutables de Windows
Secciones de un archivo PE
• .text: sección que contiene las instrucciones que la CPU ejecuta.
• .rdata: contiene información de importaciones y exportaciones. Esta sección
también puede guardar información de sólo lectura. Suele dividirse en .idata
(importaciones) y .edata (exportaciones).
• .data: contiene los datos globales del programa.
• .rsrc: contiene los recursos usados por el ejecutable.