ИО Капитана Очевидности
Сообщения: 5312
Благодарности: 1099
Это не "картинка", а программа (двоичный код) - просто у этого файла используется специально подобранный "неправильный" заголовок от файла-рисунка, вызывающий при его открытии ошибку, которая приводит к тому, что компьютер начинает выполнять загруженную информацию, как программу.
-------
Самое совершенное оружие, которым забиты арсеналы богатых и процветающих наций, может легко уничтожить необразованного, больного, бедного и голодного. Но оно не может уничтожить невежество, болезнь, нищету и голод. (Фидель Кастро)
Почему всех осужденных за измену Родине при Сталине реабилитировали при Горбачёве по отсутствию состава преступления? Потому что при Горбачёве измену Родине перестали считать преступлением.
![]()
Проблема инфицированных изображений и вирусов, замаскированных под них, является достаточно важной ввиду существующих алгоритмов поиска угроз, использующихся в большинстве антивирусов. Антивирусы, использующие преимущественно сигнатурный анализ, и наделенные всеми преимуществами и недостатками этой технологии, часто вынуждены игнорировать бинарные файлы для сохранения высокой скорости сканирования. Именно эта черта антивирусов приводит к удобным возможностям для злоумышленников в деле инфицирования веб-ресурсов и серверов путем сокрытия инфекций в бинарных файлах и, чаще всего, именно в файлах изображений. В этой статье мы рассмотрим наиболее часто встречающиеся типы подобного инфицирования, способы обнаружения подобных файлов и методы их устранения, либо очистки, а также расскажем о том, как Virusdie помогает в борьбе с подобными файлами.
Часто, картина инфицирования сайтов и серверов, предполагает инфицирование исполняемых файлов, либо создание новых. В то же время, в отдельную группу стоит выделить инфекции, маскирующиеся под файлы изображений, либо модернизирующие их. Сложность поиска и устранения подобных заражений заключается не только в самом принципе их выявления, но и в последствиях, к которым может привести их автоматическое устранение или простое удаление файлов.
Вредоносный файл под видом изображения
Подобные описанному ниже случаю встречаются достаточно часто. На сервер злоумышленником загружается файл с типичным расширением изображения (например, *.ico, *.png, *.jpg и т.д.), содержащий код.
Вызов вредоносного файла прописывается в одном из исполняемых при работе CMS сайта файле. Это может быть как основной файл index.php, так и один из файлов шаблона CMS. Обнаружить визуально подобный файл достаточно легко. Обычно, уже само имя подобного файла может даже неподготовленного пользователя навести на мысль о его подозрительности, например, favicon_9b3623.ico. Вы можете легко удостовериться во вредоносности файла, просто открыв его в редакторе. В случае, если ли вы, открыв файл изображения, увидите осмысленный код,- файл вредоносен.
Однако, если в этом случае выявление самого вредоносного объекта не составляет труда, устранение подобного заражения требует особого внимания. В большинстве случаев, простое удаление файла приведет к неработоспособности веб-сайта, поскольку несуществующий файл вызывается в одном из файлов CMS. Для того, чтобы без последствий устранить найденное заражение, вы можете сделать поиск по файлам сайта, задав в качестве объекта поиска фрагмент контента, содержащий имя файла найденной угрозы (например, favicon_9b3623.ico).
После нахождения файлов, содержащих вызов инфицированного объекта, вам останется просто удалить строки обращения к зараженному файлу. В этом случае, при удалении инфекции, маскирующейся под файл изображения, пройдет безболезненно для работы вашего сайта.
Вредоносный код в реальном файле изображения
Случаи инфицирования реальных файлов изображений гораздо более редки, нежели создание вредоносных файлов, содержащих php-код в явном виде и лишь имеющих расширение, соответствующее изображению. Но опасность подобных заражений заключается в их сложном детектировании, почти исключающим возможность обнаружения подобных файлов вручную.
Часто, фрагмент дописывается в конец бинарного файла изображения. Имя самого же файла остается неизменным, а часто, сохраняется и оригинальное время последней легальной модификации файла для избежания детектирования, основанного на выявлении измененных файлов на сервере за определенный период времени. Описываемый случай достаточно нетривиален для детектирования и, тем более, для устранения.
С задачами подобного класса различные антивирусные средства работают различными методами, множество из которых основано на комплексном подходе, учитывающим различные факторы. Например, к файлу, в процессе сканирования, применяются одновременно как репутационные методы, так и эвристические и, в некоторых случаях, даже сигнатурные.
В большинстве случаев, оптимальным вариантом устранения выявленного заражения будет, как в подобном случае, именно восстановление немодифицированного файла из резервной копии или устранение фрагмента кода. Однако, вам следует быть осторожными и предварительно проверить, не содержит ли исходная копия этого файла изображения вредоносных включений.
Подход Virusdie к анализу файлов изображений
Для устранения найденных заражений вы всегда можете воспользоваться нашими советами, приведенными выше в этой статье.
Раньше мы уже говорили о вирусах в Linux. Большинство людей считают, что вирусов в Linux нет и кое в чем они правы. Ведь вредоносных программ, которые сами могли бы распространятся по системе и заряжать другие компьютеры в сети минимум. Известные широкой общественности программы такого рода для Linux можно сосчитать на пальцах. Но есть и другой тип угроз, более характерный для Linux. Это руткиты, программы которые устанавливаются вручную и скрывают свою деятельность в системе.
Эти программы могут предоставлять установившему их вам человеку полный доступ к вашей системе, вычислительным ресурсам и данным. Не стоит недооценивать эту опасность. Если ваш компьютер подключен к интернет без использования локальной сети (роутера) и без технологии NAT, то обратится к нему может любой человек из сети провайдера. Для этого даже не обязательно знать ваш ip адрес. Злоумышленник может просто перебирать все адреса в своей подсети и если на вашем компьютере или сервере окажется искомая им уязвимость, например слабый пароль ssh или любая другая уязвимость в системном сервисе программная или недостаток настройки - ваш компьютер будет взломан.
Вы можете посмотреть содержимое файла /var/log/audit.log. Здесь фиксируются все события в системе, в том числе неудачные попытки входа по ssh. Я был удивлен когда увидел что мой пароль пытались подобрать. Также можно посмотреть логи сервиса sshd с помощью journalctl:
sudo journalctl _SYSTEMD_UNIT=sshd.service
Ну а если уже хакер получит доступ к вашей системе, тут у него уже много вариантов для действий - всплывают все уязвимости в системных библиотеках и ядре, которые можно использовать для обхода защитных механизмов Linux и повышения привилегий в системе. Поэтому не лишним будет следить за актуальностью своего программного обеспечения, в новом ПО скорее всего, уже закрыли известные уязвимости, а также иногда проверять компьютер специальной программой для поиска руткитов. В этой статье мы рассмотрим как проверить компьютер на вирусы в Linux.
Для поиска руткитов мы будем использовать утилиту rkhunter или RootkitHunter, а также chkrootkit. Мы рассмотрим как ее установить и настроить для правильной проверки. Вообще, я больше склоняюсь к первой, она новее и имеет больше функций.
Что такое Rkhunter?
RkHunter (Rootkit Hunter) - это инструмент для сканирования системы Linux / Unix с открытым исходным кодом, выпущенный под лицензией GPL. Утилита выполняет сканирование Linux на предмет руткитов, бекдоров, локальных эксплойтов и уязвимостей. На данный момент известно 349 руткитов, и всех их программа может найти, если они были установлены в вашей системе. Программа - всего лишь скрипт, позволяющий проверить локальные файлы, и обнаружить известные руткиты. Также выполняется проверка изменения системных команд, файлов запуска, а также проверка сетевых интерфейсов, на предмет прослушивания определенных портов.
Установить программу в Ubuntu можно командой:
sudo apt-get install rkhunter
Если у вас другой дистрибутив, вы всегда можете собрать программу из исходников:
tar -xvf rkhunter-1.4.2.tar.gz
cd rkhunter-1.4.2
./installer.sh --layout default --install
Обновление RkHunter
Перед тем как будет выполнена проверка linux на вирусы, необходимо обновить базу данных утилиты. Для этого выполните:
Теперь необходимо собрать информацию о файлах в системе, это нужно, чтобы программа могла понять пытался ли кто модифицировать системные файлы при следующей проверке. Для этого выполните:
Обновление желательно выполнять регулярно, поэтому давайте создадим специальный скрипт и будем запускать его с помощью cron каждый день. Для этого создайте файл скрипта в папке /etc/cron.daily:
#!/bin/sh
(
/usr/local/bin/rkhunter --versioncheck
/usr/local/bin/rkhunter --update
/usr/local/bin/rkhunter --cronjob --report-warnings-only
) | /bin/mail -s 'rkhunter Daily Run (Ваш сервер)' your@email.com
Теперь осталось только дать программе права на выполнение:
chmod 755 /etc/cron.daily/rkhunter.sh
Проверка Linux на вирусы Rkhunter
Сначала давайте рассмотрим основные опции программы которые мы уже использовали, или которые вам могут пригодится:
- --verbose-logging - максимально подробный вывод
- --quiet - минимум информации в выводе
- -l, --logfile - записать лог программы в свой файл
- --cronjob - не интерактивный режим проверки, используется для запуска с помощью cron, отсюда и название.
- --list - позволяет посмотреть какие возможности проддерживает программа, можно передать несколько параметров, test - тесты, lang - языки, rootkits - руткиты.
- --unlock - удаляет файл блокировки базы данных, может быть полезна если предыдущий сеанс работы с программой был завершен некорректно.
- --check - проверка системы
- --update - обновление баз руткитов
- --versioncheck - обновление программы
- --propupd - создать базу данных файлов
Например, чтобы посмотреть все руткиты, которые может найти программа выполните:
sudo rkhunter --list rootkits
Для того чтобы проверить Linux на вирусы всю систему выполните от суперпользователя:
Программа кроме вывода информации на экран, создаст лог проверки. На информацию выводимую во время проверки не обращайте большого внимания, она немного урезана все станет более понятнее при просмотре лога.
К сожалению программа работает только на английском, поэтому, чтобы понять в каком состоянии ваша система вам придется немного понимать английский.
Чтобы вам было более понятно что делает программа и как анализировать ее результаты, давайте рассмотрим лог сканирования.
Сначала программа инициализируется и загружает конфигурационные файлы, здесь нет ничего интересного:
[12:07:51] Running Rootkit Hunter version 1.4.2 on dhcppc0
[12:07:51]
[12:07:51] Info: Start date is Вс июн 5 12:07:51 EEST 2016
[12:07:51]
[12:07:51] Checking configuration file and command-line options.
[12:07:51] Info: Detected operating system is 'Linux'
[12:07:51] Info: Found O/S name: openSUSE 42.1 (x86_64)
[12:07:52] Info: Command line is /usr/bin/rkhunter --check
Заметьте, что мы рассматриваем лог проверки системы, логи обновления и создания базы данных, они находятся выше в этом же файле, нас не интересуют.
Проверка системы начинается с этих срок:
[12:07:53] Starting system checks.
[12:07:53]
[12:07:53] Info: Starting test name 'system_commands'
[12:07:53] Checking system commands.
Программа сканирует системные утилиты и пытается выявить там подозрительные признаки, в том числе проводится сравнение хеша утилиты с хешем сохраненным в базе данных, чтобы понять не была ли она изменена. Обычно если с утилитами все хорошо лог заполнен такими строками:
[12:07:53] Scanning for string /usr/sbin/ntpsx [ OK ]
[12:07:53] Scanning for string /usr/sbin/. /bkit-ava [ OK ]
[12:07:53] Scanning for string /usr/sbin/. /bkit-d [ OK ]
[12:07:53] Scanning for string /usr/sbin/. /bkit-shd [ OK ]
[12:07:53] Scanning for string /usr/sbin/. /bkit-f [ OK ]
Также выполняется проверка параметров файлов, например если файл должен быть бинарным, а он скрипт, то это не порядок:
[12:07:59] Info: Starting test name 'properties'
[12:07:59] Performing file properties checks
[12:07:59] Checking for prerequisites [ OK ]
[12:08:00] /usr/sbin/cron [ OK ]
[12:08:00] /usr/sbin/depmod [ OK ]
[12:08:01] /usr/sbin/fsck [ OK ]
[12:08:02] /usr/sbin/groupadd [ OK ]
[12:08:02] /usr/sbin/groupdel [ OK ]
При обнаружении подозрительного файла программа тут же объясняет в чем с ним проблема.
Дальше будет выполнена проверка Linux на вирусы с поиском известных руткитов:
[12:09:31] Info: Starting test name 'rootkits'
[12:09:31] Checking for rootkits.
[12:09:31]
[12:09:31] Info: Starting test name 'known_rkts'
[12:09:31] Performing check of known rootkit files and directories
Обычно, если в этом разделе что-то обнаружено, то это значит, что в системе есть руткит и с этим нужно что-то делать, но обычно мы видим строки Not found (не найдено):
[12:09:33] Checking for Ambient (ark) Rootkit.
[12:09:33] Checking for file '/usr/lib/.ark?' [ Not found ]
[12:09:33] Checking for file '/dev/ptyxx/.log' [ Not found ]
[12:09:33] Checking for file '/dev/ptyxx/.file' [ Not found ]
[12:09:33] Checking for file '/dev/ptyxx/.proc' [ Not found ]
[12:09:33] Checking for file '/dev/ptyxx/.addr' [ Not found ]
[12:09:33] Checking for directory '/dev/ptyxx' [ Not found ]
[12:09:33] Ambient (ark) Rootkit [ Not found ]
Дальше будет запущен поиск нежелательного программного обеспечения:
[12:15:23] Info: Starting test name 'malware'
[12:15:23] Performing malware checks
Вот мы и видим первое предупреждение:
[12:15:38] Performing check for enabled xinetd services
[12:15:38] Info: Using xinetd configuration file '/etc/xinetd.conf'
[12:15:38] Checking '/etc/xinetd.conf' for enabled services [ None found ]
[12:15:39] Checking '/etc/xinetd.d/vnc' for enabled services [ Warning ]
[12:15:40] Checking for enabled xinetd services [ Warning ]
[12:15:40] Warning: Found enabled xinetd service: /etc/xinetd.d/vnc
Как видите, программа сразу говорит что обнаружен активированный vnc сервер через xinetd, но здесь все в порядке, это я его активировал.
Проверка опасных портов:
[12:16:00] Performing checks on the network ports
[12:16:00] Info: Starting test name 'ports'
[12:16:00] Performing check for backdoor ports
[12:16:00] Checking for TCP port 1524 [ Not found ]
[12:16:00] Checking for TCP port 1984 [ Not found ]
[12:16:00] Checking for UDP port 2001 [ Not found ]
[12:16:00] Checking for TCP port 2006 [ Not found ]
[12:16:01] Checking for TCP port 2128 [ Not found ]
На этапе проверки конфигурационных файлов мы тоже получаем предупреждение:
[12:16:04] Info: Starting test name 'passwd_changes'
[12:16:04] Checking for passwd file changes [ Warning ]
[12:16:04] Warning: Unable to check for passwd file differences: no copy of the passwd file exists.
[12:16:04]
[12:16:04] Info: Starting test name 'group_changes'
[12:16:04] Checking for group file changes [ Warning ]
[12:16:04] Warning: Unable to check for group file differences: no copy of the group file exists.
[12:16:04] Checking root account shell history files [ OK ]
Но здесь видно, что проблема не в вирусе, а в том, что программе просто нет с чем сравнивать.
Дальше выполняется проверка настроек системы, и здесь тоже программе не все нравится:
[12:16:04] Info: Starting test name 'system_configs'
[12:16:04] Performing system configuration file checks
[12:16:04] Checking for an SSH configuration file [ Found ]
[12:16:04] Info: Found an SSH configuration file: /etc/ssh/sshd_config
[12:16:04] Info: Rkhunter option ALLOW_SSH_ROOT_USER set to 'no'.
[12:16:04] Info: Rkhunter option ALLOW_SSH_PROT_V1 set to '0'.
[12:16:05] Checking if SSH root access is allowed [ Warning ]
[12:16:05] Warning: The SSH configuration option 'PermitRootLogin' has not been set.
The default value may be 'yes', to allow root access.
[12:16:05] Checking if SSH protocol v1 is allowed [ Warning ]
[12:16:05] Warning: The SSH configuration option 'Protocol' has not been set.
The default value may be '2,1', to allow the use of protocol version 1.
А именно две вещи - разрешенный root доступ по ssh и возможность использовать протокол первой версии для подключения к ssh. И она права, это очень небезопасно.
Дальше будет выполнено сканирование файловой системы:
[12:16:05] Info: Starting test name 'filesystem'
[12:16:05] Performing filesystem checks
[12:16:05] Info: SCAN_MODE_DEV set to 'THOROUGH'
[12:16:10] Warning: Hidden file found: /usr/bin/.hmac256.hmac: ASCII text
[12:16:10] Warning: Hidden file found: /usr/bin/.fipscheck.hmac: ASCII text
И обнаружено два скрытых файла, но я знаю, что эти файлы созданы программой logmein-hamachi Вы можете отследить какая программа работает с определенным файлом с помощью команды lsof:
sudo lsof | grep /адрес/файла
Осталась проверка приложений:
[12:16:25] Info: Starting test name 'apps'
[12:16:25] Checking application versions..
И небольшой отчет о найденных проблемах:
[12:16:26] System checks summary
[12:16:26] =====================
[12:16:26]
[12:16:26] File properties checks.
[12:16:26] Files checked: 193
[12:16:26] Suspect files: 0
[12:16:26]
[12:16:26] Rootkit checks.
[12:16:26] Rootkits checked : 379
[12:16:26] Possible rootkits: 0
[12:16:26]
[12:16:26] Applications checks.
[12:16:26] Applications checked: 4
[12:16:26] Suspect applications: 0
[12:16:26]
[12:16:26] The system checks took: 8 minutes and 32 seconds
Для удобства просмотра лога вы можете не смотреть его полностью, а выбрать только предупреждения:
sudo cat /var/log/rkhunter.log | grep -A5 "\[ Warning \]"
Параметр A5 означает показывать еще пять строк после строки с обнаруженным вхождением, так мы точно ничего не пропустим.
Теперь давайте рассмотрим еще одну программу с помощью которой может быть выполнена проверка Linux на руткиты. Это chkrootkit. Она мнение функциональна, но тоже хорошо делает свое дело.
Что такое Chkrootkit?
Chkrootkit - это классический инструмент позволяющий не только искать руткиты Linux, но и проверять систему на признаки чужого присутстсвия. Программа просканирует ваш компьютер или сервер на наличие подозрительных процессов, руткитов и проверит список известных руткитов. Функциональность программы очень похожа на Rkhunter.
Программа состоит из нескольких отдельных утилит:
- chkrootkit - скрипт для проверки системы
- ifpromisc - сканирование интерфейсов на предмет неразборчивого режима
- chklastlog - проверить лог lastlog на предмет удаления записей
- chkwtmp - проверка лога wtmp на предмет удаления записей
- chkproc - поиск троянских программ и скрытых файлов в подсистеме proc
Установить программу в Ubuntu можно с помощью команды:
sudo apt-get install chkrootkit
Если у вас другой дистрибутив, то вы можете собрать программу из исходников:
wget --passive-ftp ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar xvfz chkrootkit.tar.gz
cd chkrootkit-*/
make sense
make install
Проверка системы с помощью chkrootkit
Команды выполняются без параметров. Достаточно запустить нужную утилиту чтобы найти руткиты linux:
Лог программы немного похож на предыдущую, поэтому мы не будем его отдельно разбирать. Здесь сначала выполняется проверка системных команд, более ограниченная чем в rkhunter, затем поиск руткитов linux.
Аналогично вы можете выполнить другую утилиту, чтобы проверить на модификацию lastlog:
Но, возможно придется создать символическую ссылку на lastlog, чтобы программа смогла его найти.
Выводы
Вот и все. Выполняйте регулярное сканирование Linux, чтобы вовремя выявить все угрозы, особенно это актуально для серверов, которые чаще всего могут подвергаться хакерским атакам. Возможно, руткитов вы не найдете, но зато программы вам сообщат о потенциальных проблемах с безопасностью, которые желательно исправить.
Читайте также:
Пожалуйста, не занимайтесь самолечением!При симпотмах заболевания - обратитесь к врачу.
Copyright © Иммунитет и инфекции