Problemas al iterar a través de archivos .yar para análisis de malware.
Cloné algunas reglas de yara de un repositorio a mi directorio /home/student/Downloads/yara-forensics/file
. A continuación se muestran varios archivos .yar. También tengo un archivo de malware falso llamado sample.file
ubicado en /home/student/Downloads
. Quiero recorrer cada uno de los archivos .yar y devolver solo el o los archivos .yar que coincidan con sample.file
.
student@desktop:~/Downloads/yara-forensics/file$ ls -l
total 96
-rw-rw-r-- 1 student student 1138 Dec 8 21:18 apple.yar
-rw-rw-r-- 1 student student 6494 Dec 8 21:18 audio.yar
-rw-rw-r-- 1 student student 846 Dec 8 21:18 compressed.yar
-rw-rw-r-- 1 student student 903 Dec 8 21:18 crypto.yar
-rw-rw-r-- 1 student student 178 Dec 8 21:18 dex.yar
-rw-rw-r-- 1 student student 563 Dec 8 21:18 executables.yar
-rw-rw-r-- 1 student student 596 Dec 8 21:18 gif.yar
-rw-rw-r-- 1 student student 344 Dec 8 21:18 gps.yar
-rw-rw-r-- 1 student student 1183 Dec 8 21:18 jpeg.yar
-rw-rw-r-- 1 student student 580 Dec 8 21:18 mem_dumps.yar
-rw-rw-r-- 1 student student 1096 Dec 8 21:18 office.yar
-rw-rw-r-- 1 student student 458 Dec 8 21:18 pdf.yar
-rw-rw-r-- 1 student student 780 Dec 8 21:18 png.yar
-rw-rw-r-- 1 student student 315 Dec 8 21:18 skype.yar
-rw-rw-r-- 1 student student 689 Dec 8 21:18 sqlite.yar
-rw-rw-r-- 1 student student 474 Dec 8 21:18 telegram.yar
-rw-rw-r-- 1 student student 332 Dec 8 21:18 vcard.yar
-rw-rw-r-- 1 student student 8878 Dec 8 21:18 vector.yar
-rw-rw-r-- 1 student student 3636 Dec 8 21:18 video.yar
-rw-rw-r-- 1 student student 1036 Dec 8 21:18 vmware.yar
-rw-rw-r-- 1 student student 491 Dec 8 21:18 win_reg.yar
A continuación se muestra mi script.
#!/bin/bash
for file in $(find /home/student/Downloads/yara-forensics/file -name '*.yar');
do test $(yara -c ${file} /home/student/Downloads/sample.file) -gt 0 && echo $file;
done 2>/dev/null
El problema es que solo devuelve un resultado mostrado a continuación. Debería devolver al menos 6 resultados (compressed, executables, crypto, office, vector y vmware
). ¿Qué ocurre con mi script?
student@desktop:/dev$ bash yarbash
/home/student/Downloads/yara-forensics/file/executables.yar
davy.ai
El problema con el script está en la condición de prueba
$(yara -c ${file} /home/student/Downloads/sample.file) -gt 0
. Esta condición solo verifica si la salida del comando yara es mayor que 0, lo que significa que hay al menos una coincidencia. Sin embargo, no verifica si la coincidencia es con el archivosample.file
específico. Para solucionarlo, necesitamos usar el comandogrep
para buscar el nombre de archivo en la salida de yara.Aquí está el script actualizado:
Este script recorre cada archivo .yar y ejecuta el comando
yara
con el archivosample.file
especificado. Luego, la salida se canaliza agrep
, que busca el nombre de archivosample.file
. Si hay una coincidencia, se imprime el nombre de archivo del archivo .yar.Nota: Eliminé la opción
-c
del comandoyara
porque no era necesaria para esta tarea.