
Triaje AFL es una herramienta para clasificar archivos de entrada bloqueados mediante un depurador. Está diseñado para ser portátil y no requiere ninguna dependencia en tiempo de ejecución, además de libc y un depurador externo. Admite la clasificación de bloqueos generados por cualquier programa, no solo AFL, pero reconoce AFL directorios especialmente, de ahí el nombre.
Algunas características notables incluyen:
- Múltiples formatos de informe: texto, JSON y depurador sin formato JSON
- Triaje de accidentes en paralelo
- Deduplicación de fallas
- Análisis del informe del desinfectante
- Admite objetivos binarios con o sin símbolos/información de depuración
- El código fuente y las variables se anotarán en los informes para el contexto
Actualmente, AFLTriage solo es compatible con GDB y solo se ha probado en objetivos de Linux C/C++. Tenga en cuenta que AFLTriage no clasifica los bloqueos según la posibilidad de explotación. La clasificación precisa de la explotación es muy específica para el objetivo y el escenario, y es mejor dejarla en manos de herramientas especializadas y analistas expertos.
El uso de AFLTriage es bastante sencillo. Necesita sus entradas para la clasificación, un directorio de salida para los informes y el binario y sus argumentos para la clasificación.
Ejemplo:
$ afltriage -i fuzzing_directory –o informes ./target_binary –opción-uno @@
AFL Triage v1.0.0
[+] GDB está funcionando (GNU gdb (Ubuntu 8.1.1-0ubuntu1) 8.1.1 – Python 3.6.9 (predeterminado, 26 de enero de 2021, 15:33:00))
[+] Línea de comandos de selección de imágenes: “./target_binary –option-one @@”
[+] Los informes se enviarán al directorio «informes»
[+] Directorio AFL de clasificación fuzzing_directory/ (41 archivos)
[+] Clasificación de 41 casos de prueba
[+] Uso de 24 subprocesos para clasificar
[+] triaje [41/41 00:00:02] [####################] ACCIDENTE: ASAN detectó un desbordamiento del búfer de montón en buggy_function después de una LECTURA que conduce a SIGABRT (si_signo=6) / SI_TKILL (si_code=-6)
[+] Estadísticas de clasificación [Crashes: 25 (unique 12), No crash: 16, Errored: 0]
Similar a AFL el @@
se reemplaza con la ruta del archivo que se va a clasificar. AFLTriage se encargará del resto.
Necesitará un entorno de compilación de Rust que funcione. Una vez que haya instalado Cargo y Rust, compilar y ejecutar es simple:
cd afltriage-rs/
carrera de carga –ayuda
Desarrollo terminado [unoptimized + debuginfo] objetivo(s) en 0.33s
Corriendo target/debug/afltriage --help
Uso de AFLTriage>
Uso extendido
afltriaje 1.0.0
Clasifique y resuma rápidamente los casos de prueba fallidos
USO:
afltriaje -i… -o…
OPCIONES:
-I…
Una lista de rutas a un caso de prueba, directorio de casos de prueba, directorio AFL y/o directorio de directorios AFL para
Tenga en cuenta que este arg toma varias entradas seguidas (por ejemplo, -i input1 input2…) por lo que no puede ser el
último argumento pasado a AFLTriage: está reservado para el comando.
-o
El directorio de salida para los archivos de informes de clasificación. Use ‘-‘ para imprimir informes completos en la consola.
-t, –tiempo de espera
El tiempo de espera en milisegundos para cada caso de prueba para clasificar. [default: 60000]
-j, –trabajos
Cuántos subprocesos usar durante el triaje.
–formatos-de-informe…
Los formatos de salida del informe de clasificación. Múltiples valores permitidos: por ejemplo, texto, json. [default: text] [possible
values: text, json, rawjson]
–cubo-estrategia
La estrategia de deduplicación de fallas a usar. [default: afltriage] [possible values: none, afltriage,
first_frame, first_frame_raw, first_5_frames, function_names, first_function_name]
–hijo-salida
Incluya la salida del niño en los informes de clasificación.
–líneas de salida secundarias
Cuántas líneas de salida de programa del destino se incluirán en los informes. Use 0 para indicar líneas ilimitadas (no
recomendado). [default: 25]
–stdin
Proporcione la entrada del caso de prueba al objetivo a través de stdin en lugar de un archivo.
–solo perfil
Realice comprobaciones del entorno, describa las entradas que se van a clasificar y perfile el binario de destino.
–saltar-perfil
Omita la creación de perfiles de destino antes del procesamiento de entrada.
–depurar
Habilite la salida de depuración de bajo nivel de las operaciones de clasificación.
-h, –ayuda
Imprime información de ayuda
-V, –versión
Imprime la información de la versión
ARG:
…
El ejecutable binario y los argumentos a ejecutar. Use ‘@@’ como marcador de posición para la ruta al archivo de entrada o
–stdin Opcionalmente, utilice — para delimitar el inicio del comando.
…