Индикатор компрометации (Indicator of Compromise) - это активность и/или вредоносный объект, обнаруженный в сети, рабочей станции или сервере.
Наиболее распространенным являются контрольный суммы вредоносных объектов (md5, sha1, sha256), IP адреса серверов управления, домены, полный URL или URI (URL-адрес без домена).
Для проверки наличия IOC в системе, можно использовать следующие скрипты. Позволяющие обнаруживать MD5, SHA1, SHA256 или BLAKE2 хеши в системе.
Скрипт поиска одного MD5, SHA1, SHA256 или BLAKE2 в системе
первым параметром указываем алгоритм хеширования md5, sha1, sha256, BLAKE2
вторым параметром указываем хеш
Так же можно изменить путь для поиска в самом скрипте, по умолчанию /var
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #!/bin/bash search_dir="/var" alg=$1 for file in $(find $search_dir -name "*.*" -type f) do case "$alg" in md5) checksumm=($(md5sum $file));; sha1) checksumm=($(sha1sum $file));; sha256) checksumm=($(sha256sum $file));; b2sum) checksumm=($(b2sum $file));; * ) echo "Unwnown algoritm"; exit 1; esac if [[ $checksumm == "$2" ]] then echo "$checksumm $file" fi done |
Пример работы
Запускаем поиск, при обнаружении, скрипт выведет контрольную сумму и полный путь до файла.
1 2 3 4 5 6 7 | bash search.sh md5 d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e /var/cache/debconf/passwords.dat d41d8cd98f00b204e9800998ecf8427e /var/log/ufw.log d41d8cd98f00b204e9800998ecf8427e /var/log/installer/Xorg.0.log d41d8cd98f00b204e9800998ecf8427e /var/log/dpkg.log d41d8cd98f00b204e9800998ecf8427e /var/log/curator/curator.log ... |
d41d8cd98f00b204e9800998ecf8427e - md5 файла нулевой длины.
Скрипт поиска множества MD5, SHA1, SHA256 или BLAKE2 в системе
первым параметром указываем алгоритм хеширования md5, sha1, sha256, BLAKE2
Вторым параметром путь до файла с хешами.
Скрипт использует key-value хранилище для ускорения поиска
Так же можно изменить путь для поиска в самом скрипте, по умолчанию /var
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #!/bin/bash declare -A heshes alg=$1 search_dir="/var" while IFS= read -r line do heshes[$line]=1; done < $2 for file in $(find $search_dir -name "*.*" -type f) do case "$alg" in md5) checksumm=($(md5sum $file));; sha1) checksumm=($(sha1sum $file));; sha256) checksumm=($(sha256sum $file));; b2sum) checksumm=($(b2sum $file));; * ) echo "Unwnown algoritm"; exit 1; esac if [ -v heshes[$checksumm] ]; then echo "$checksumm $file" fi done |
Пример работы.
Предварительно формируем файл с хешами
1 2 3 4 | cat /tmp/list d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf84273 d41d8cd98f00b204e9800998ecf84277 |
Запускаем поиск, при обнаружении, скрипт выведет контрольную сумму и полный путь до файла.
1 2 3 4 5 6 7 8 9 | bash searh_list.sh md5 /tmp/list d41d8cd98f00b204e9800998ecf8427e /var/cache/debconf/passwords.dat d41d8cd98f00b204e9800998ecf8427e /var/log/ufw.log d41d8cd98f00b204e9800998ecf8427e /var/log/installer/Xorg.0.log d41d8cd98f00b204e9800998ecf8427e /var/log/dpkg.log d41d8cd98f00b204e9800998ecf8427e /var/log/alternatives.log d41d8cd98f00b204e9800998ecf8427e /var/log/apt/history.log d41d8cd98f00b204e9800998ecf8427e /var/log/apt/term.log ... |