Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
Triton — Triton es una biblioteca de análisis dinámico de binarios. Construye tus propias herramientas de análisis de programas, automatiza tu ingeniería inversa, realiza verificación de software o simplemente emula código. | Kitploit
Herramientas/GitHubGitHub/jonathansalwan/triton
Análisis Dinámico (Sandboxing)Ingeniería InversaFuzzingAnálisis de Binarios
GitHubjonathansalwan/triton

Triton

Triton es una biblioteca de análisis dinámico de binarios. Construye tus propias herramientas de análisis de programas, automatiza tu ingeniería inversa, realiza verificación de software o simplemente emula código.

Ver Repositorio
4.3k5904hace 4 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Sitio web
Compartir

Triton es una librería de análisis binario dinámico. Proporciona componentes internos que permiten construir herramientas de análisis de programas, automatizar la ingeniería inversa, realizar verificación de software o simplemente emular código.

  • Ejecución simbólica dinámica
  • Análisis dinámico de manchas
  • Representación AST de la semántica ISA de x86, x86-64, ARM32, AArch64 y RISC-V 32/64
  • Síntesis de expresiones
  • Pases de simplificación SMT
  • Elevación a LLVM, así como a Z3 y viceversa
  • Interfaz de solucionador SMT para Z3 y Bitwuzla
  • API en C++ y Python


Como Triton es una especie de proyecto a tiempo parcial, por favor, no nos culpen si no es completamente fiable. Abrir issues o pull requests siempre es mejor que trolear =). Sin embargo, puedes seguir el desarrollo en Twitter @qb_triton.

           

Codecov

Inicio rápido

  • Instalación
  • API de Python
  • API de C++
  • Ejemplos en Python
  • Ya han usado Triton

Para empezar```python

from triton import *

Create the Triton context with a defined architecture

ctx = TritonContext(ARCH.X86_64)

Define concrete values (optional)

ctx.setConcreteRegisterValue(ctx.registers.rip, 0x40000)

Symbolize data (optional)

ctx.symbolizeRegister(ctx.registers.rax, 'my_rax')

Execute instructions

ctx.processing(Instruction(b"\x48\x35\x34\x12\x00\x00")) # xor rax, 0x1234 ctx.processing(Instruction(b"\x48\x89\xc1")) # mov rcx, rax

Get the symbolic expression

rcx_expr = ctx.getSymbolicRegister(ctx.registers.rcx) print(rcx_expr) (define-fun ref!8 () (_ BitVec 64) ref!1) ; MOV operation - 0x40006: mov rcx, rax

Solve constraint

ctx.getModel(rcx_expr.getAst() == 0xdead) {0: my_rax:64 = 0xcc99}

0xcc99 XOR 0x1234 is indeed equal to 0xdead

hex(0xcc99 ^ 0x1234) '0xdead'

root@kitploit:~
## Instalar usando pip

Triton se puede instalar usando `pip`:```console
pip install triton-library

Instalar desde el código fuente

Triton depende de las siguientes dependencias:```

  • libcapstone >= 5.0.x https://github.com/capstone-engine/capstone
  • libboost (optional) >= 1.68
  • libpython (optional) >= 3.6
  • libz3 (optional) >= 4.6.0 https://github.com/Z3Prover/z3
  • libbitwuzla (optional) >= 0.4.x https://github.com/bitwuzla/bitwuzla
  • llvm (optional) >= 12
root@kitploit:~
### Linux y MacOS```console
$ git clone https://github.com/JonathanSalwan/Triton
$ cd Triton
$ mkdir build ; cd build
$ cmake ..
$ make -j3
$ sudo make install

Por defecto, LLVM y Bitwuzla no se compilan. Si quieres disfrutar de todo el poder de Triton, la compilación de cmake es:```console $ cmake -DLLVM_INTERFACE=ON -DCMAKE_PREFIX_PATH=$(llvm-config --prefix) -DBITWUZLA_INTERFACE=ON ..

root@kitploit:~
#### Nota para MacOS M1:

En caso de que obtengas errores de compilación como:```
Could NOT find PythonLibs (missing: PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS)

Intente especificar PYTHON_EXECUTABLE, PYTHON_LIBRARIES y PYTHON_INCLUDE_DIRS para su versión específica de Python:```console cmake -DCMAKE_INSTALL_PREFIX=/opt/homebrew/
-DPYTHON_EXECUTABLE=/opt/homebrew/bin/python3
-DPYTHON_LIBRARIES=/opt/homebrew/Cellar/[email protected]/3.10.8/Frameworks/Python.framework/Versions/3.10/lib/libpython3.10.dylib
-DPYTHON_INCLUDE_DIRS=/opt/homebrew/opt/[email protected]/Frameworks/Python.framework/Versions/3.10/include/python3.10/
..

root@kitploit:~
Esta información la puedes obtener de este fragmento:```python
from sysconfig import get_paths
info = get_paths()
print(info)

Autocompletado de Python

Si el autocompletado de Python no funciona, sigue estos pasos:

  1. Ejecuta el script
  2. Coloca el archivo triton.pyi generado en el mismo directorio que el objeto compartido de Triton al que deseas proporcionar sugerencias (por ejemplo, /usr/lib/python3.13/).

Tu IDE debe ser compatible con el análisis de archivos .pyi.

Windows

Puedes usar cmake para generar el archivo .sln de libTriton.```console

git clone https://github.com/JonathanSalwan/Triton.git cd Triton mkdir build cd build cmake -G "Visual Studio 14 2015 Win64"
-DBOOST_ROOT="C:/Users/jonathan/Works/Tools/boost_1_61_0"
-DPYTHON_INCLUDE_DIRS="C:/Python36/include"
-DPYTHON_LIBRARIES="C:/Python36/libs/python36.lib"
-DZ3_INCLUDE_DIRS="C:/Users/jonathan/Works/Tools/z3-4.6.0-x64-win/include"
-DZ3_LIBRARIES="C:/Users/jonathan/Works/Tools/z3-4.6.0-x64-win/bin/libz3.lib"
-DCAPSTONE_INCLUDE_DIRS="C:/Users/jonathan/Works/Tools/capstone-5.0.1-win64/include"
-DCAPSTONE_LIBRARIES="C:/Users/jonathan/Works/Tools/capstone-5.0.1-win64/capstone.lib" ..

root@kitploit:~
Puedes usar setup.py para generar la versión de depuración de triton.pyd en Windows.```console
> git clone https://github.com/JonathanSalwan/Triton.git
> cd Triton
> $env:COMPILER_DIR="C:/deps/llvm/llvm2116r/bin"
> $env:CMAKE_PREFIX_PATH="C:/deps/llvm/llvm-project-21.1.6.src/install/lib/cmake/llvm;C:/code/cxx-common-cmake/build/install"
> python_d -m build --wheel
> python_d -m pip install (Get-ChildItem .\dist\triton_library*)

Sin embargo, si prefiere descargar directamente la biblioteca precompilada, consulte nuestros artefactos de AppVeyor.
Tenga en cuenta que si utiliza los artefactos de AppVeyor, probablemente tenga que instalar los paquetes Visual C++ Redistributable para Visual Studio 2012.

Instalación desde vcpkg

El puerto de Triton en vcpkg se mantiene actualizado por miembros del equipo de Microsoft y colaboradores de la comunidad.
La URL de vcpkg es: https://github.com/Microsoft/vcpkg. Puede descargar e instalar Triton usando el administrador de dependencias vcpkg:

root@kitploit:~
git clone https://github.com/Microsoft/vcpkg.git; cd vcpkg; ./bootstrap-vcpkg.sh; ./vcpkg integrate install; ./vcpkg install triton
``````console
$ git clone https://github.com/Microsoft/vcpkg.git
$ cd vcpkg
$ ./bootstrap-vcpkg.sh  # ./bootstrap-vcpkg.bat for Windows
$ ./vcpkg integrate install
$ ./vcpkg install triton

Si la versión está desactualizada, por favor crea un issue o pull request en el repositorio de vcpkg.

Colaboradores

  • Alberto Garcia Illera - Cruise Automation
  • Alexey Vishnyakov - ISP RAS
  • Black Binary - n/a
  • Christian Heitman - Quarkslab
  • Daniil Kuts - ISP RAS
  • Jessy Campos - n/a
  • Matteo F. - n/a
  • Pierrick Brunet - Quarkslab
  • PixelRick - n/a
  • Romain Thomas - Quarkslab
  • Y muchos más

Ya han usado Triton

Herramientas

  • Exrop: Generación automática de ROPChain.
  • Pimp: Plugin de R2 basado en Triton para ejecución concolica y control total.
  • Ponce: ¡Ganador del concurso de plugins de IDA 2016! ¡Ejecución simbólica a solo un clic!
  • QSynthesis: Sintetizador de caja gris orientado a la desofuscación de instrucciones de ensamblador.
  • TritonDSE: Biblioteca DSE basada en Triton con capacidades de carga y exploración.
  • Titan: Titan es un desvirtualizador de VMProtect que utiliza Triton.

Artículos y conferencias

  • Sydr-Fuzz: Fuzzing Híbrido Continuo y Análisis Dinámico para el Ciclo de Vida del Desarrollo de Seguridad
    Ponencia en: Ivannikov ISP RAS Open Conference, Moscú, Rusia, 2022. [paper] [slide]
    Autores: Vishnyakov A., Kuts D., Logunova V., Parygina D., Kobrin E., Savidov G., Fedotov A.
    Resumen: Hoy en día, los marcos de análisis dinámico automatizado para pruebas continuas tienen una gran demanda para garantizar la seguridad del software y cumplir con los requisitos del ciclo de vida del desarrollo de seguridad (SDL). La eficiencia en la caza de errores de seguridad de las técnicas de fuzzing híbrido de vanguardia supera a las técnicas de fuzzing guiado por cobertura ampliamente utilizadas. Proponemos un pipeline de análisis dinámico mejorado para aprovechar la productividad de la detección automatizada de errores basada en fuzzing híbrido. Implementamos el pipeline propuesto en el conjunto de herramientas de fuzzing continuo Sydr-Fuzz, que está impulsado por un orquestador de fuzzing híbrido, integrando nuestra herramienta DSE Sydr con libFuzzer y AFL++. Sydr-Fuzz también incorpora verificadores de predicados de seguridad, la herramienta de triaje de fallos Casr y utilidades para la minimización del corpus y la recolección de cobertura. La evaluación comparativa de nuestro fuzzer híbrido frente a soluciones alternativas de última generación demuestra su superioridad sobre los fuzzers guiados por cobertura, manteniéndose al mismo nivel que los fuzzers híbridos avanzados. Además, confirmamos la relevancia de nuestro enfoque al descubrir 85 nuevas fallas de software del mundo real dentro del proyecto OSS-Sydr-Fuzz. Finalmente, abrimos el código fuente de Casr a la comunidad para facilitar el examen de los fallos existentes.

  • Resolución Optimista Fuerte para Ejecución Simbólica Dinámica
    Ponencia en: Ivannikov Memorial Workshop, Kazán, Rusia, 2022. [paper] [slide]
    Autores: Parygina D., Vishnyakov A., Fedotov A.
    Resumen: La ejecución simbólica dinámica (DSE) es un método eficaz para pruebas automatizadas de programas y detección de errores. Aumenta la cobertura de código mediante la exploración de ramas complejas durante el fuzzing híbrido. Las herramientas DSE invierten las ramas a lo largo de alguna ruta de ejecución y ayudan al fuzzer a examinar partes del programa previamente no disponibles. La DSE a menudo enfrenta problemas de sobre-restricción y sub-restricción. El primero conduce a una complicación significativa del análisis, mientras que el segundo causa una ejecución simbólica inexacta. Proponemos un método de resolución optimista fuerte que elimina las restricciones irrelevantes del predicado de ruta para la inversión de la rama objetivo. Eliminamos aquellas restricciones simbólicas de las cuales la rama objetivo no depende de control. Además, manejamos por separado las ramas simbólicas que tienen instrucciones de transferencia de control anidadas que pasan el control más allá del ámbito de la rama padre, por ejemplo, return, goto, break, etc. Implementamos el método propuesto en nuestra herramienta de ejecución simbólica dinámica Sydr. Evaluamos la estrategia optimista fuerte, la estrategia optimista que contiene solo la negación de la última restricción y su combinación. Los resultados muestran que la combinación de estrategias ayuda a aumentar ya sea la cobertura de código o el número promedio de ramas invertidas correctamente por minuto. Es óptimo aplicar ambas estrategias juntas en contraste con otras configuraciones.

  • Síntesis de Programas en Caja Gris: Un Nuevo Enfoque para Atacar la Ofuscación del Flujo de Datos
    Ponencia en: Blackhat USA, Las Vegas, Nevada, 2021. [slide]
    Autores: Robin David
    Resumen: Esta ponencia presenta los últimos avances en síntesis de programas aplicados a la desofuscación. Su objetivo es desmitificar esta técnica de análisis mostrando cómo se puede poner en acción sobre la ofuscación. En particular, la implementación Qsynthesis publicada para esta charla muestra un flujo de trabajo completo de extremo a extremo para desofuscar instrucciones de ensamblador y devolverlas como instrucciones optimizadas (desofuscadas) reensambladas en el binario.

  • Del código fuente al caso de prueba de fallo a través de la automatización de pruebas de software
    Ponencia en: C&ESAR, Rennes, Francia, 2021. [paper] [slide]
    Autores: Robin David, Jonathan Salwan, Justin Bourroux
    Resumen: Este artículo presenta un enfoque que automatiza el proceso de prueba de software desde el código fuente hasta las pruebas dinámicas del programa compilado. Más específicamente, a partir de un informe de análisis estático que indica alertas en líneas de código fuente, permite probar para cubrir estas líneas de manera dinámica y oportunista, verificando si pueden o no desencadenar un fallo. El resultado es un corpus de prueba que permite cubrir alertas y desencadenarlas si resultan ser verdaderos positivos. Este artículo discute la metodología empleada para rastrear alertas en el binario compilado, el proceso de selección de motores de prueba y los resultados obtenidos en una implementación de pila TCP/IP para sistemas embebidos y IoT.

  • Predicados de Seguridad Simbólicos: Cazar Debilidades del Programa
    Ponencia en: Ivannikov ISP RAS Open Conference, Moscú, Rusia, 2021. [paper] [slide]
    Autores: A.Vishnyakov, V.Logunova, E.Kobrin, D.Kuts, D.Parygina, A.Fedotov
    Resumen: La ejecución simbólica dinámica (DSE) es un método poderoso para la exploración de rutas durante el fuzzing híbrido y la detección automática de errores. Proponemos predicados de seguridad para detectar eficazmente comportamiento indefinido y errores de violación de acceso a memoria. Inicialmente, ejecutamos simbólicamente el programa en rutas que no desencadenan ningún error (el fuzzing híbrido puede explorar estas rutas). Luego construimos un predicado de seguridad simbólico para verificar alguna condición de error. Así, podemos cambiar el flujo de datos del programa para generar debilidades como desreferencia de puntero nulo, división por cero, acceso fuera de límites o desbordamiento de enteros. A diferencia del análisis estático, la ejecución simbólica dinámica no solo reporta errores, sino que también genera nuevos datos de entrada para reproducirlos. Además, introducimos el modelado de semántica de funciones para funciones comunes de la biblioteca estándar de C/C++. Nuestro objetivo es modelar el flujo de control dentro de una función con una única fórmula simbólica. Esto ayuda a la detección de errores, acelera la exploración de rutas y supera las sobre-restricciones en el predicado de ruta. Implementamos las técnicas propuestas en nuestra herramienta de ejecución simbólica dinámica Sydr. Así, utilizamos métodos potentes de Sydr como el segmentado del predicado de ruta que elimina restricciones irrelevantes. Presentamos Juliet Dynamic para medir la precisión de las herramientas de detección de errores dinámicos. El sistema de prueba también verifica que las entradas generadas desencadenen sanitizadores. Evaluamos la precisión de Sydr para 11 CWEs del conjunto de pruebas Juliet. Sydr muestra una precisión general del 95,59%. Ponemos a disposición pública los artefactos de evaluación de Sydr para facilitar la reproducibilidad de los resultados.

  • Hacia el Razonamiento de Punteros Simbólicos en la Ejecución Simbólica Dinámica
    Ponencia en: Ivannikov Memorial Workshop, Nizhny Novgorod, Rusia, 2021. [paper] [slide]
    Autores: Daniil Kuts
    Resumen: La ejecución simbólica dinámica es una técnica ampliamente utilizada para pruebas automatizadas de software, diseñada para la exploración de rutas de ejecución y la detección de errores de programa. Recientemente se ha generalizado un enfoque híbrido, donde el objetivo principal de la ejecución simbólica es ayudar al fuzzer a aumentar la cobertura del programa. Cuantas más ramas pueda invertir el ejecutor simbólico, más útil será para el fuzzer. El flujo de control de un programa a menudo depende de valores de memoria, que se obtienen calculando índices de direcciones a partir de la entrada del usuario. Sin embargo, la mayoría de las herramientas DSE no admiten tales dependencias, por lo que omiten algunas ramas deseadas del programa. Implementamos el razonamiento de direcciones simbólicas en lecturas de memoria en nuestra herramienta de ejecución simbólica dinámica Sydr. Las regiones de acceso a memoria posibles se determinan ya sea analizando expresiones simbólicas de direcciones de memoria, o mediante búsqueda binaria con un solucionador SMT. Proponemos una técnica de linealización mejorada para modelar accesos a memoria. Se comparan diferentes métodos de modelado de memoria en un conjunto de programas. Nuestra evaluación muestra que el manejo de direcciones simbólicas permite descubrir nuevas ramas simbólicas y aumentar la cobertura del programa.

  • QSynth: Un Enfoque Basado en Síntesis de Programas para la Desofuscación de Código Binario
    Ponencia en: BAR, San Diego, California, 2020. [paper]
    Autores: Robin David, Luigi Coniglio, Mariano Ceccato
    Resumen: Presentamos un enfoque genérico que aprovecha tanto la DSE como la síntesis de programas para sintetizar con éxito programas ofuscados con Aritmética Booleana Mixta, Codificación de Datos o Virtualización. El algoritmo de síntesis propuesto es una primitiva de síntesis enumerativa fuera de línea guiada por una búsqueda en amplitud de arriba hacia abajo. Mostramos su efectividad contra un ofuscador de última generación y su escalabilidad, ya que supera a otros enfoques similares basados en síntesis. También mostramos su efectividad en presencia de ofuscación compuesta (combinación de varias técnicas). Este trabajo en curso ilumina la efectividad de la síntesis para atacar ciertos tipos de ofuscaciones y abre el camino a algoritmos más robustos y estrategias de simplificación.

  • Sydr: Ejecución Simbólica Dinámica de Vanguardia
    Ponencia en: Ivannikov ISP RAS Open Conference, Moscú, Rusia, 2020. [paper] [slide] [video]
    Autores: A.Vishnyakov, A.Fedotov, D.Kuts, A.Novikov, D.Parygina, E.Kobrin, V.Logunova, P.Belecky, S.Kurmangaleev
    Resumen: La ejecución simbólica dinámica (DSE) tiene una enorme cantidad de aplicaciones en seguridad informática (fuzzing, descubrimiento de vulnerabilidades, ingeniería inversa, etc.). Proponemos varias mejoras de rendimiento y precisión para la ejecución simbólica dinámica. Omitir instrucciones no simbólicas permite construir un predicado de ruta 1,2–3,5 veces más rápido. El motor simbólico simplifica fórmulas durante la ejecución simbólica. El segmentado del predicado de ruta elimina conjunciones irrelevantes de las consultas al solucionador. Manejamos cada tabla de saltos (sentencia switch) como múltiples ramas y describimos el método para la ejecución simbólica de programas multi-hilo. Las soluciones propuestas se implementaron en la herramienta Sydr. Sydr realiza la inversión de ramas en el predicado de ruta. Sydr combina la herramienta de instrumentación binaria dinámica DynamoRIO con el motor simbólico Triton.

  • Desofuscación Simbólica: Del Código Virtualizado de Vuelta al Original
    Ponencia en: DIMVA, Paris-Saclay, Francia, 2018. [paper] [slide]
    Autores: Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet
    Resumen: La protección de software ha ocupado un lugar importante durante la última década para proteger el software legítimo contra la ingeniería inversa o la manipulación. La virtualización se considera una de las mejores defensas contra tales ataques. Presentamos un enfoque genérico basado en exploración simbólica de rutas, taint y recompilación que permite recuperar, a partir de un código virtualizado, un código desvirtualizado semánticamente idéntico al original y de tamaño similar. Definimos criterios y métricas para evaluar la relevancia de los resultados desofuscados en términos de corrección y precisión. Finalmente, proponemos una configuración de código abierto que permite evaluar el enfoque propuesto frente a varias formas de virtualización.

  • Desofuscación de la protección de software basada en VM
    Ponencia en: SSTIC, Rennes, Francia, 2017. [french paper] [english slide] [french video]
    Autores: Jonathan Salwan, Sébastien Bardin, Marie-Laure Potet
    Resumen: En esta presentación describimos un enfoque que consiste en analizar automáticamente protecciones de software basadas en máquinas virtuales y que recompila una nueva versión del binario sin dichas protecciones. Este enfoque automatizado se basa en una ejecución simbólica guiada por un análisis de taint y algunas políticas de concreción, y luego en una reescritura de binarios utilizando la transición LLVM.

  • Cómo Triton puede ayudar a revertir protecciones de software basadas en máquinas virtuales
    Ponencia en: CSAW SOS, NYC, Nueva York, 2016. [slide]
    Autores: Jonathan Salwan, Romain Thomas
    Resumen: La primera parte de la charla será una introducción al framework Triton para exponer sus componentes y explicar cómo funcionan juntos. Luego, la segunda parte incluirá demostraciones sobre cómo es posible revertir protecciones basadas en máquinas virtuales utilizando análisis de taint, ejecución simbólica, simplificaciones SMT y optimizaciones LLVM-IR.

  • Análisis Dinámico de Binarios y Códigos Ofuscados
    Ponencia en: St'Hack, Burdeos, Francia, 2016. [slide]
    Autores: Jonathan Salwan, Romain Thomas
    Resumen: En esta presentación hablaremos sobre cómo un DBA (Análisis Dinámico de Binarios) puede ayudar a un ingeniero inverso a revertir código ofuscado. Primero introduciremos algunas técnicas básicas de ofuscación y luego expondremos cómo es posible romper algunas cosas (usando nuestro framework DBA de código abierto - Triton) como detectar predicados opacos, reconstruir CFG, encontrar el algoritmo original, aislar datos sensibles y muchos más... Luego, concluiremos con una demo y algunas palabras sobre nuestro trabajo futuro.

  • Cómo Triton puede ayudar a analizar binarios ofuscados
    Publicación en: Revista MISC 82, 2015. [french article]
    Autores: Jonathan Salwan, Romain Thomas
    Resumen: La ofuscación binaria se utiliza para proteger la propiedad intelectual del software. Existen diferentes tipos de ofuscación, pero en términos generales, transforma una estructura binaria en otra estructura binaria preservando la misma semántica. El objetivo de la ofuscación es asegurar que la información original esté "ahogada" en información inútil que dificulte la ingeniería inversa. En este artículo mostraremos cómo podemos analizar un programa ofuscado y romper algunas ofuscaciones utilizando el framework Triton.

  • Triton: Un Marco de Ejecución Concólica
    Ponencia en: SSTIC, Rennes, Francia, 2015. [french paper] [detailed english slide]
    Autores: Jonathan Salwan, Florent Saudel
    Resumen: Esta charla trata sobre el lanzamiento de Triton, un marco de ejecución concólica basado en Pin. Proporciona componentes como un motor de taint, un motor de ejecución simbólica dinámica, un motor de instantáneas, traducción de instrucciones x64 a SMT2, una interfaz Z3 para resolver restricciones y enlaces Python. Basado en estos componentes, Triton ofrece la posibilidad de construir herramientas para la investigación de vulnerabilidades o asistencia en ingeniería inversa.

  • Análisis de Comportamiento Dinámico Usando Instrumentación Binaria
    Ponencia en: St'Hack, Burdeos, Francia, 2015. [slide]
    Autores: Jonathan Salwan
    Resumen: Esta charla puede considerarse como la parte 2 de nuestra charla en SecurityDay. En la parte anterior, hablamos sobre cómo era posible cubrir una función objetivo en memoria usando el enfoque DSE (Ejecución Simbólica Dinámica). Cubrir una función (o sus estados) no significa encontrar todas las vulnerabilidades; algunas vulnerabilidades no provocan fallos en el programa. Por eso debemos implementar análisis específicos para encontrar errores específicos. Estos análisis se basan en la instrumentación binaria y el análisis de comportamiento en tiempo de ejecución del programa. En esta charla, veremos cómo es posible encontrar los siguientes tipos de errores: off-by-one, desbordamiento de pila / heap, use-after-free, cadena de formato y {write, read}-what-where.

  • Cubriendo una función usando un enfoque de Ejecución Simbólica Dinámica
    Ponencia en: Security Day, Lille, Francia, 2015. [slide]
    Autores: Jonathan Salwan
    Resumen: Esta charla trata sobre análisis e instrumentación de binarios. Veremos cómo es posible apuntar a una función específica, tomar una instantánea del contexto de memoria/registros antes de la función, traducir la instrumentación a una representación intermedia, aplicar un análisis de taint basado en esta IR, construir/mantener fórmulas para una Ejecución Simbólica Dinámica (DSE), generar un valor concreto para recorrer una ruta específica, restaurar el contexto de memoria/registros y generar otro valor concreto para recorrer otra ruta, y luego repetir esta operación hasta que se cubra la función objetivo.
  • Citar Triton```latex

    @inproceedings{SSTIC2015-Saudel-Salwan, author = {Saudel, Florent and Salwan, Jonathan}, title = {Triton: A Dynamic Symbolic Execution Framework}, booktitle = {Symposium sur la s{'{e}}curit{'{e}} des technologies de l'information et des communications}, series = {SSTIC}, pages = {31--54}, address = {Rennes, France}, month = jun, year = {2015}, }

    root@kitploit:~
    Descargar herramienta