ClamAV
ClamAV detects viruses on all platforms. Other antivirus programs running on Ubuntu can be found here.
Installing ClamAV from Ubuntu
By Default ‘ClamAV’ is in the Main repository so it can install it by the Software Center or Synaptic Package Manager. Just Search for ‘clamAV’ and install it.
ClamAV has two modes of operation, a program that loads into memory only when you want to scan a file, or for more regular use (such as scanning all incoming e-mail), a program that connects to a daemon that is always running.
Both methods will also install the updater clamav-freshclam.
If one wants a GUI, then install the package clamtk.

Using ClamAV in the Terminal
Update Virus Definitions
You will see an output like this:
Proxy
If you are using a http proxy to connect to the internet you will have to edit the file /etc/clamav/freshclam.conf adding:
Scan Files
Use clamscan to check nearly all files on the computer, and report only warnings and infections:
When ClamAV has finished scanning it will report a summary:
ClamAV can only read files that the user running it can read. If you want to check all files on the system, use the sudo command (see UsingSudo for more information).
Infected files reporting
when scanning recursively, one may generate a report via: sudo clamscan -v -r /FOLDERTOSCAN | grep FOUND >> /path/to/save/report/file.txt
ClamAV doesn’t disinfect files, it either moves or removes them. This can be problematic. For example, if using Wine and it deletes an infected file, it could break a program without having the data saved.
Run ClamAV as a Daemon
Install clamav-daemon. You can then use clamdscan where you would previously have used clamscan. Lots of programs, especially e-mail servers, can connect to a ClamAV daemon. This speeds up virus scanning as the program is always in memory.
The clamav-daemon package creates a ‘clamav’ user; in order to allow ClamAV to scan system files, such as your mail spool, you can add clamav to the group that owns the files.
Let ClamAV listen for Incoming Scans
There are cases where you may want ClamAV daemon to act as a scanner for other systems, so you don’t have to run everything locally on the system.
To do this, you simply have to modify the clamd.conf file and add TCPSocket PORTNUMBER and TCPAddr IPADDRESS arguments to the clamd.conf file and reload the daemon. The daemon will then accept connections to it via the IP address and Port combination you specify.
Check to find if Clamscan is running
Look for it in the processt list, or use this handy shortcut: ps ax | grep [c]lamd
Remove Infected Files
You can add —remove to the clamscan or clamdscan command-line.
Note: No virus scanner is 100% accurate. It is always best to manually check the files you delete, if you are not totally sure that this is what you want to do.
Find ClamAV Version Number
Learn About ClamAv’s Other Options
Schedule ClamAV
You can use the at command to schedule clamscan or freshclam. For example:
You have now scheduled a ClamAV scan to happen on your home directory at 3:30 AM tomorrow. The output (showing only infected files) will be sent to you by e-mail.
External Links
ClamAV (последним исправлял пользователь penalvch 2017-07-10 22:54:01)
The material on this wiki is available under a free license, see Copyright / License for details
You can contribute to this wiki, see Wiki Guide for details
Using ClamAV (AntiVirus)
ClamAV is an open source anti-virus toolkit, designed especially for e-mail scanning on mail gateways. It provides a number of utilities including a flexible and scalable multi-threaded daemon, a command line scanner and advanced tool for automatic database updates. The core of the package is an anti-virus engine available in a form of shared library.
— https://docs.clamav.net/
ClamAV is an open-source, cross-platform antimalware toolkit that can detect many types of malware, including viruses. ClamAV can be installed on your Linux, Windows, and Docker.
In this article, we will try to use scenario Client-Server ClamAV Scanning with the architecture below.
ClamAV (Русский)
Clam AntiVirus это антивирусный инструмент для UNIX с открытым исходным кодом (GPL). Он предоставляет несколько утилит, включая гибкий и масштабируемый многопоточный демон (службу), сканер для командной строки и расширенные средства для автоматического обновления баз. Поскольку ClamAV в основном используется на файловых и почтовых серверах в Windows-сетях, он предназначен для обнаружения Windows-вирусов и вредоносного ПО.
Установка
Обновление баз
Антивирусные базы обновляются при помощи команды:
Если для подключения требуется использовать прокси, в файле /etc/clamav/freshclam.conf измените настройки HTTPProxyServer, HTTPProxyPort, HTTPProxyUsername и HTTPProxyPassword.
Файлы баз сохраняются в:
Запустите/включите clamav-freshclam.service для автоматического регулярного обновления баз.
Запуск демона
- Нужно запустить freshclam перед первым запуском службы, иначе вы столкнётесь с проблемами/ошибками, которые не позволят ClamAV запуститься правильно.
- Демон не требуется, если вы планируете выполнять сканирование только вручную. Смотрите раздел #Сканирование ниже.
Тестирование
Чтобы убедиться, что ClamAV и его антивирусные базы корректно установились, просканируйте тестовый файл EICAR (эмуляция вируса, см. Википедию):
В результатах сканирования должна быть строка:
В противном случае, см. раздел Решение проблем или воспользуйтесь форумом.
Добавление дополнительных репозиториев баз/сигнатур
ClamAV может использовать базы данных/сигнатуры из других репозиториев или поставщиков безопасности.
Чтобы добавить наиболее важные из них за один шаг, установите либо clamav-unofficial-sigs AUR (описание на GitHub), либо python-fangfrisch AUR (онлайн-документация). Они добавляют сигнатуры/базы данных от популярных провайдеров, например, MalwarePatrol, SecuriteInfo, Yara, Linux Malware Detect и других.
Вариант 1: Настройка Fangfrisch
Fangfrisch был разработан как более безопасная, гибкая и удобная замена clamav-unofficial-sigs и требует совсем немного настроек ( /etc/fangfrisch/fangfrisch.conf ).
Самое главное, что Fangfrisch никогда не нужно запускать с правами root, в отличие от clamav-unofficial-sigs.
Создайте структуру базы данных командой:
Вариант 2: Настройка clamav-unofficial-sigs
Это позволит регулярно обновлять сигнатуры в соответствии с настройками из каталога /etc/clamav-unofficial-sigs .
Чтобы обновить сигнатуры вручную, выполните:
Изменить настройки по умолчанию можно в файле /etc/clamav-unofficial-sigs/user.conf .
База MalwarePatrol
Если вы хотите использовать базу MalwarePatrol, зарегистрируйтесь на сайте https://www.malwarepatrol.net/free-guard-upgrade-option.
В файле /etc/clamav-unofficial-sigs/user.conf измените следующие параметры, чтобы включить эту функциональность:
Сканирование
Есть два варианта сканирования по запросу:
С помощью автономного сканера
Команда clamscan используется для проверки отдельных файлов, каталогов или всей системы:
Для автоматического удаления инфицированных файлов добавьте параметр —remove , или можете использовать —move=/директория для перемещения их в карантин.
Если вы хотите, чтобы clamscan сканировал большие файлы, добавьте параметры —max-filesize=4000M and —max-scansize=4000M . Значение ‘4000M’ является максимально возможным, и его можно уменьшить по необходимости.
При использовании параметра -l /путь/к/файлу результаты сканирования будут записываться в указанный log-файл.
С помощью демона
Команда clamdscan похожа, но использует демон, который должен быть запущен для работы этой команды. Большинство опций игнорируется, поскольку демон считывает настройки, указанные в файле /etc/clamav/clamd.conf .
Проверка электронной почты
К почтовому серверу можно подключить фильтр (milter), который будет проверять письма на наличие вирусов. Отредактируйте файл настроек /etc/clamav/clamav-milter.conf под ваши нужды. Например:
Запустите и включите службу clamav-milter.service .
Для Postfix добавьте следующие строки в /etc/postfix/main.cf :
Проверьте журнал. Если есть ошибки доступа к clamav-milter.socket , попробуйте добавить пользователя postfix в группу clamav .
Проверка при обращении
Проверка при обращении (on-access scanning) сканирует файл, когда с ним выполняются операции чтения, записи или выполнения.
Для работы требуется ядро, скомпилированное с модулем fanotify (ядро >= 3.8); в официальных ядрах Arch Linux он присутствует. Проверьте, включен ли fanotify, перед включением проверки при обращении.
Сначала отредактируйте файл настроек /etc/clamav/clamd.conf , добавив следующее в конец файла (вы также можете изменить отдельные параметры).
Затем разрешите пользователю clamav запускать notify-send через sudo от имени любого пользователя и с любыми переменными окружения:
Теперь создайте файл /etc/clamav/virus-event.bash со следующим содержимым и сделайте его исполняемым:
Этот скрипт прописан в опции VirusEvent и будет запускаться демоном clamd при обнаружении вируса. Можно отредактировать текст отображаемых сообщений на свой вкус.
По умолчанию clamonacc передаёт в clamav для сканирования только имена файлов, к которым кто-то обратился. Это проблема, потому что clamav не сможет просканировать файлы, к которым у него нет доступа. Вместо этого можно указать clamonacc (который всегда запускается от имени root) использовать передачу дескрипторов файлов. Отредактируйте юнит clamav-clamonacc.service , добавив в него опцию:
Наконец, запустите/включите службу clamav-clamonacc.service .
Если AppArmor мешает работе clamd, используйте complain-only mode:
Советы и рекомендации
Использование нескольких потоков
Через clamscan
При сканировании файла или каталога из командной строки с помощью clamscan используется только один поток процессора. Это может быть нормально в случаях, когда время не критично или вы не хотите, чтобы компьютер стал подтормаживать во время проверки. Если же необходимо быстро просканировать большой каталог или USB-накопитель, вы можете захотеть задействовать все доступные процессоры для ускорения процесса.
clamscan разработан как однопоточный, поэтому можно использовать xargs для запуска нескольких параллельных сканирований:
В этом примере параметр -P для xargs запускает столько одновременных процессов clamscan , сколько есть процессоров (по данным nproc ). Опции —max-lines и —max-args позволят ещё более тонко контролировать распределение нагрузки по потокам.
Через clamdscan
Если у вас запущен демон clamd , то можно использовать clamdscan (смотрите раздел #Запуск демона):
Здесь параметр —multiscan позволяет clamd сканировать содержимое каталога параллельно, используя доступные потоки. Параметр —fdpass необходим для передачи разрешений дескриптора файла в clamd , так как демон работает под пользователем и группой clamav и может не иметь разрешения на чтение некоторых файлов.
Proving Grounds — ClamAV
ClamAV is an easy Linux box featuring an outdated installation of the Clam AntiVirus suite. When the Sendmail mail filter is executed with the blackhole mode enabled it is possible to execute commands remotely due to an insecure popen call.
Enumeration
The initial scan reveals a fair number of open ports
There are a few distractions on this box, first there is a webserver that leaves a message in binary translating as “The quick brown jumps over 13 lazy .”. Further fuzzing on the webserver did not reveal anything of interest. The samba server appears to be running an outdated version of samba, though this did not appear to match any vulnerable versions. Finally SSH appeared to also be running on an unusual port, though this did not appear to be vulnerable either. However the first breakthrough came when enumerating the SNMP port.
As shown we can see ClamAV running with blackhole enabled, this is interesting as we know the name of the box is ClamAV. Also when we query searchsploit for the sendmail server that is running on port 25 we see a reference to clamav-milter with blackhole mode.
Foothold
We could use metasploit for this attack, but if we attempt first without it and choose the perl script. I had to remove the comments in the script and add the hashbang #!/usr/bin/perl then I could execute it with no other changes.
From the output it looks like it bound a listener to port 31337 , so when attempting to connect to it using netcat it resulted in a shell.
Privilege Escalation
Privilege escalation is not required as we got a root shell directly from the foothold