Bash поиск индикаторов компрометации в системе (IOC)

xcom-shop.ru

Индикатор компрометации (Indicator of Compromise) - это активность и/или вредоносный объект, обнаруженный в сети, рабочей станции или сервере.

Наиболее распространенным являются контрольный суммы вредоносных объектов (md5, sha1, sha256), IP адреса серверов управления, домены, полный URL или URI (URL-адрес без домена).

Для проверки наличия IOC в системе, можно использовать следующие скрипты. Позволяющие обнаруживать MD5, SHA1, SHA256 или BLAKE2 хеши в системе.

Скрипт поиска одного MD5, SHA1, SHA256 или BLAKE2 в системе

первым параметром указываем алгоритм хеширования md5, sha1, sha256, BLAKE2

вторым параметром указываем хеш

Так же можно изменить путь для поиска в самом скрипте, по умолчанию /var


#!/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

Пример работы

Запускаем поиск, при обнаружении, скрипт выведет контрольную сумму и полный путь до файла.

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

#!/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

Пример работы.

Предварительно формируем файл с хешами

cat /tmp/list
d41d8cd98f00b204e9800998ecf8427e
d41d8cd98f00b204e9800998ecf84273
d41d8cd98f00b204e9800998ecf84277

Запускаем поиск, при обнаружении, скрипт выведет контрольную сумму и полный путь до файла.

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
...

 

Добавить комментарий