thumb

Про те, як на Linux машині, використовуючи програму ClamAV, виявити шкідливий код (трaояни, віруси і шкідливі програми).

ClamAV (Clam AntiVirus) - це антивірусний движок c відкритим вихідним кодом для виявлення троянів, вірусів, шкідливих програм та інших шкідливих загроз на поштових серверах, але його також можна використовувати на десктопах.

Установка

Він є в Debian репозиторії, тому установка проста:

sudo apt-get update
sudo apt-get install clamav

Використання

Перед скануванням необхідно оновити базу даних сигнатур вірусів:

sudo freshclam
ClamAV update process started at Tue May 19 17:02:33 2015
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Downloading daily-20485.cdiff [100%]
daily.cld updated (version: 20485, sigs: 1392599, f-level: 63, builder: neo)
bytecode.cld is up to date (version: 256, sigs: 45, f-level: 63, builder: dgoddard)
Database updated (3816869 signatures) from db.local.clamav.net (IP: 198.148.78.4)

Тепер можна почати сканування будь-якій директорії (наприклад / home) на наявність вірусів:

clamscan -r -i /home
  • -r - Рекурсивне сканування, тобто сканування в підкаталогах.
  • -i - Показувати тільки інфіковані файли.
  • /home - Директорія сканування.

Примітка: Для сканування всієї системи ( / ) потрібно запускати програму від імені рута (використовуючи sudo).

Примітка: Ця команда тільки покаже інфіковані файли, але не стане їх очищати (лікувати), відправляти на карантин або видаляти.

У утиліти clamscan є безліч додаткових параметрів для сканування. наприклад:

  • –bell - Звуковий сигнал при виявлення інфекції.
  • –log - Записати лог.
  • –max-dir-recursion - Максимальна глибина пошуку в директоріях.
  • –exclude-dir - Виключити директорію.
  • –copy - Копіювання інфікованих файлів в окрему директорію.
  • –move - Переміщення інфікованих файлів в окрему директорію.
  • –remove - Видалення інфікованих файлів.

Про всіх додаткових параметрах можна дізнатися в man:

man clamscan

Приклад використання додаткових параметрів:

sudo clamscan -ri --bell --max-dir-recursion=50 --move=/home/user/INFECTED/ --log=/var/log/clamav/clamav.log --exclude-dir=/mnt/storage/ /

Автоматизація

Для автоматизації сканування можна скористатися планувальником завдань Cron. Для цього потрібно вписати кілька рядків в файл /etc/crontab.

sudo nano /etc/crontab
# ClamAV
0  3    * * *   root    /usr/bin/freshclam
20 3    * * *   root    /usr/bin/clamscan -r /

Тепер сканування відбуватиметься автоматично кожен день о 3 годині. Двадцятихвилинний проміжок необхідний для завершення роботи freshclam (оновлення бази даних).

Примітка: Встановіть будь-який зручний для вас час і замініть рядок /usr/bin/clamscan -r / на необхідну.

Можливі знахідки

В результаті сканування можуть виявитися такі “віруси”:

PUA.Script.Packed-1 FOUND
PUA.Script.Packed-2 FOUND

Насправді це не віруси.

  • PUA (Possibly Unwanted Applications) - Потенційно небажані програми.
  • Script.Packed - Скрипт упакований (архівувати).

Для того, щоб відключити виявлення PUA використовуйте додатковий параметр:

--detect-pua=no

А для включення виявлення PUA:

--detect-pua=yes

Приклад:

sudo clamscan -r -i --detect-pua=yes /

Можливі помилки

ПОМИЛКА 1

При оновленні бази даних сигнатур вірусів може виводиться таке повідомлення:

freshclam
ERROR: Can't open /var/log/clamav/freshclam.log in append mode (check permissions!).
ERROR: Problem with internal logger (UpdateLogFile = /var/log/clamav/freshclam.log).

Це відбувається через те, що freshclam був запущений користувачем без певних прав. Вирішується це запуском freshclam за допомогою sudo:

sudo freshclam

ПОМИЛКА 2

При скануванні може виводиться таке повідомлення:

LibClamAV Warning: fmap_readpage: pread fail: asked for 4085 bytes @ offset 11, got 0
LibClamAV Warning: fmap_readpage: pread fail: asked for 4091 bytes @ offset 5, got 0
LibClamAV Warning: fmap_readpage: pread fail: asked for 4094 bytes @ offset 2, got 0
LibClamAV Error: fmap_readpage: pread error: Input/output error

Для того, щоб це не відбувалося потрібно виключити з сканування кілька директорій, наприклад так:

sudo clamscan -ir --exclude-dir=^/sys --exclude-dir=^/dev --exclude-dir=^/proc /