Herramientas Automáticas para Análisis Binario

  • Posted on: 19 December 2018
  • By: ReYDeS

Para auditar automáticamente un binario por potenciales vulnerabilidades, cualquier herramienta debe primero comprender el formato del archivo ejecutable utilizado por el binario, ser capaz de interpretar las instrucciones en lenguaje máquina contenidas dentro del binario, y finalmente determinar si el binario realiza algunas acciones probablemente explotables. Tales herramientas son mucho más especializadas comparadas con las herramientas para auditar el código fuente. Por ejemplo, código fuente C puede ser automáticamente escaneado no importando la arquitectura para la cual se compiló el código, mientras una herramienta para auditar el binario necesita un módulo separado para cada formato de archivo ejecutable capaz de interpretar, como también un módulo separado para cada lenguaje máquina capaz de reconocer.

Adicionalmente, un lenguaje de alto nivel utilizado para escribir una aplicación y el compilador utilizado para compilarlo, puede influir en como se ve el código compilado. El código fuente compilado C/C++ se ve muy diferente de código Delphi o Java. El mismo código fuente compilado con dos diferentes compiladores puede poseer muchas similitudes, pero también posee muchas diferencias. El principal reto de tales productos se centra en la habilidad de caracterizar precisamente el comportamiento, lo cual conduzca hacia una condición explotable. Ejemplos de tales comportamientos incluyen acceso hacia fuera de la memoria asignada (ya sea “stack” o “heap”), uso de variables sin iniciar, o pasar directamente entradas del usuario hacia funciones peligrosas.

Para realizar cualquiera de estas tareas, una herramienta automática debe ser capaz de calcular precisamente rangos de valores tomados por variables indice y punteros, siguiendo el flujo de los valores ingresados por el usuario conforme son utilizados dentro del programa, y rastrear la iniciación de variables referidos por el programa. Finalmente para ser verdaderamente efectivos, las herramientas automáticas para el descubrimiento de vulnerabilidades, deben ser capaces de realizar cada una de estas tareas de manera fiable, mientras tratan con muchas diferentes implementaciones algorítmicas utilizadas por los programadores y sus compiladores.

Cada herramienta para el análisis automático de binarios tiene sus propias capacidades, como Bugscam, binary Analysis Tool (BAT), BANG, bindiff, etc. Se sugiere leer la documentación de cada una de ellas desde su correspondiente sitio web.

Fuentes:

http://www.openrce.org/downloads/details/69/Bugscam
http://www.binaryanalysis.org/old/home
https://github.com/armijnhemel/binaryanalysis-ng
https://www.zynamics.com/bindiff.html
https://linuxsecurity.expert/security-tools/binary-analysis-tools

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor en Hacking Ético, Forense Digital & GNU/Linux
Correo Electrónico: ReYDeS@gmail.com
Twitter: @Alonso_ReYDeS
LinkedIn: pe.linkedin.com/in/alonsocaballeroquezada
Facebook: https://www.facebook.com/alonsoreydes
Youtube: http://www.youtube.com/c/AlonsoCaballero
Resumen de mi CV: http://www.reydes.com/d/?q=node/1