Объедините все правила Yara из репозитория Yara github в один файл.yar

В официальном репозитории правил Yara git hub есть файл индекса. Вот этот: https://github.com/Yara-Rules/rules/blob/master/index.yar

Я хочу создать скрипт на bash или другом языке, способный объединять все файлы yara в файл.yar (например, index.yar), который включает все мои файлы yara. Я могу сделать это вручную, но проблема в том, что слишком много правил, чтобы записать это вручную в сценарии.

Например, этот репозиторий: https://github.com/citizenlab/malware-signatures/tree/master/malware-families Я действительно не знаю, как создать файл, который создает файл yara, который включает в себя все эти правила yara из хранилище

Спасибо заранее за вашу помощь, я ценю.

2 ответа

Я не уверен в вашем вопросе, но почему бы просто не составить список необработанных файлов YAR и загрузить их в цикле? В моем примере ниже я опускаю 3 файла и печатаю их, но я удаляю все, кроме имени файла для строк с include. Затем я бы, конечно, запустил этот скрипт в другой файл, используя '>':

Пример:

#!/bin/bash

raw_list_urls="https://raw.githubusercontent.com/Yara-Rules/rules/master/index.yar https://raw.githubusercontent.com/Yara-Rules/rules/master/index.yar https://raw.githubusercontent.com/Yara-Rules/rules/master/index.yar"
IFS=' ' read -r -a urls <<< "${raw_list_urls}"

for url in "${urls[@]}" ; do
        echo "Getting ${url}" ; sleep 2
        curl "${url}" | grep include | cut -d'"' -f2
done

Пример вывода:

./malware/RAT_ShadowTech.yar
./malware/RAT_Shim.yar
./malware/RAT_Terminator.yar
./malware/RAT_Xtreme.yar
./malware/RAT_ZoxPNG.yar
./malware/RAT_jRAT.yar
./malware/RAT_xRAT.yar
./malware/RAT_xRAT20.yar
./malware/TOOLKIT_Chinese_Hacktools.yar
./malware/TOOLKIT_Dubrute.yar
./malware/TOOLKIT_FinFisher_.yar
./malware/TOOLKIT_Gen_powerkatz.yar
./malware/TOOLKIT_Mandibule.yar

Я написал небольшой скрипт, который ищет *.yar файлы в локальных папках и создает индексный файл с найденными параграфами:

      for f in $(find . -mindepth 1 ! -path "./$(basename $PWD)_all.yar" -type f -name "*.yar"); do
  if [[ "$f" == *"Mobile_Malware"* || "$f" == *"mobile"* ]]; then  # exclude Android rules
    continue
  fi
  echo "include \"$f\"" >> $(basename $PWD)_index.yar;
done;
Другие вопросы по тегам