Опенсорс-инструменты на страже безопасности бэкенда...

34
Open-source инструменты на страже безопасности бэкенда Пётр Волков Я.Субботник, Нижний Новгород, 13.12.2014

Upload: yandex

Post on 08-Jul-2015

706 views

Category:

Technology


3 download

DESCRIPTION

Антивирусная система Яндекса ежедневно обнаруживает тысячи взломанных сайтов. Периодически среди них встречаются крупные и известные интернет-ресурсы. Администраторы сайтов часто оказываются не готовы к тому, что злоумышленник может пробраться через внешний периметр и исполнить произвольный код на стороне сервера. В результате перед ними встаёт нелегкая задача: обнаружить последствия и предотвратить дальнейшие проблемы. Доклад посвящён практикам и инструментам, которые могут существенно повысить эффективность противодействия вредоносной активности, и профилактике её возникновения.

TRANSCRIPT

Page 1: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Open-source инструменты на страже безопасности бэкенда

Пётр Волков

Я.Субботник, Нижний Новгород, 13.12.2014

Page 2: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Схема получения несанкционированного доступа Поисковые «дорки»

Сканирование ( порты + web )

Загрузка шелла

Укрепление

Эксплуатация

Page 3: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Page 4: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Эшелонированная защита

Page 5: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Веб-приложение

Пользовательский режим ОС

Эшелонированная защита

Ядро ОС

Page 6: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Места естественного обитания вредоносного кода

• Серверные скрипты

•  Конфиги веб-сервера

• БД

• Статика

• Исполняемый файл/процесс веб-сервера, модули веб-сервера, модифицированный sshd

Page 7: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

YARA

Page 8: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

YARA

import "elf" rule single_section {

condition: elf.number_of_sections == 1 } rule elf_64 {

condition: elf.machine == elf.EM_X86_64 }

Page 9: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

ClamAV

MalwareName:FileType:Offset:HexSignature

$clamscan mod_probe

mod_probe: Linux.Flooder.Agent FOUND

$ sigtool --md5 test.bin > test.hdb

$ clamscan -d test.hdb test.bin

Формат сигнатур:

Page 10: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Page 11: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Page 12: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков
Page 13: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

…"scan_date": "2011-11-08 19:44:53","permalink": "https://www.virustotal.com/url/d466...1eaf/analysis/1320781493/", …"scans": {

"nProtect": {"detected": true, "version": "2010-05-14.01", "result": "Trojan.Generic.3611249", "update": "20100514"},

"CAT-QuickHeal": {"detected": true, "version": "10.00", "result": "Trojan.VB.acgy", "update": "20100514"},

"McAfee": {"detected": true, "version": "5.400.0.1158", "result": "Generic.dx!rkx", "update": "20100515"}, …

Virustotal Public API • HTTPS API, ответ в json •  Готовые клиенты на 10 ЯП • Сканирует файлы, URL, ip

Page 14: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

…Checking `amd'... not foundChecking `basename'... not infectedChecking `chsh'... not infectedChecking `cron'... not infectedChecking `dirname'... not infectedChecking `gpm'... not foundChecking `grep'... not infected…

chkrootkit • Сигнатурная проверка • Поиск модификаций логов utmp, wtmp, ... • Проверка ошибок конфигурации • …

Page 15: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

[05:34:26] Info: Starting test name 'shared_libs'[05:34:26] Performing 'shared libraries' checks[05:34:26] Checking for preloading variables [ None found ][05:34:26] Info: Found library preload file: /etc/ld.so.preload[05:34:26] Checking for preloaded libraries [ Warning ][05:34:26] Warning: Found preloaded shared library: /usr/local/lib/libsnoopy.so

Rootkit Hunter • Проверка модификации некоторых файлов • Поиск по сигнатурам • Проверка ld_preload • Проверка ошибок конфигурации • …

Page 16: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

[15:27:03] Warning: No swap partion found in /etc/fstab [FILE-6332][15:27:24] Warning: Found one or more vulnerable packages. [PKGS-7392][15:27:25] Warning: Found mail_name in SMTP banner, and/or mail_name contains 'Postfix' [MAIL-8818][15:27:26] Warning: Root can directly login via SSH [SSH-7412]…[15:26:25] Suggestion: Set a password on GRUB bootloader. [BOOT-5122][15:27:01] Suggestion: Install a PAM module for password strength testing [AUTH-9262][15:27:01] Suggestion: Configure password aging limits to enforce password [AUTH-9286][15:27:25] Suggestion: Configure a firewall/packet filter to filter incoming and outgoing traffic [FIRE-4590][15:27:27] Suggestion: Enable process accounting [ACCT-9622][15:27:27] Suggestion: Enable sysstat to collect accounting (no results) [ACCT-9626][15:27:27] Suggestion: Enable auditd to collect audit information [ACCT-9628][15:27:30] Suggestion: Harden compilers like restricting access to root user only [HRDN-7222]…

Lynis Расширяемая проверка ошибок конфигурации

Page 17: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Проверка целостности средствами ПМ

sudo debsums -as debsums: changed file /etc/gnome/defaults.list (from desktop-file-utils package) debsums: changed file /etc/default/rcS (from initscripts package) debsums: changed file /etc/subuid (from login package) debsums: changed file /etc/subgid (from login package) debsums: changed file /etc/sudoers (from sudo package)

Page 18: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Проверка целостности средствами ПМ

sudo rpm -Va .M5....T /usr/X11R6/lib/X11/fonts/misc/fonts.dir missing /var/spool/at/.lockfile missing /var/spool/at/spool S.5....T /usr/lib/rhs/glint/icon.pyc ..5....T c /etc/inittab ..5..... /usr/bin/loadkeys

rpm -Vf /etc/blunder file /etc/blunder is not owned by any package

Page 19: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Tripwire Контроль целостности файловой системы •  Шлет отчеты по почте •  Выбор алгоритма хэширования •  Гибкие политики контроля целостности: append и т.д. Проблемы: •  /tmp •  изменения между проверками Аналоги: AIDE, TAMU, ATP, Hobgoblin, sXid, L5, Gog&Magog

Page 20: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Apr 6 06:46:26 asterisk snoopy[12664]: [uid:0 sid:12595 tty:/dev/pts/2 cwd:/home/develop filename:/usr/bin/nano]: nano /etc/asterisk/extensions.conf

Apr 6 07:56:19 asterisk snoopy[13267]: [uid:0 sid:13166 tty:/dev/pts/3 cwd:/root filename:/sbin/ifconfig]: ifconfig

Apr 6 07:56:26 asterisk snoopy[13268]: [uid:0 sid:13166 tty:/dev/pts/3 cwd:/root filename:/bin/touch]: touch /opt/1.txt

Apr 6 07:57:56 asterisk sudo: felvis : TTY=pts/3 ; PWD=/home/felvis ; USER=root ; COMMAND=/sbin/ifconfig eth0

Apr 6 07:57:56 asterisk snoopy[13277]: [uid:0 sid:13166 tty:/dev/pts/3 cwd:/home/felvis filename:/sbin/ifconfig]: /sbin/ifconfig eth0

Snoopy Logger https://github.com/a2o/snoopy Логирует выполняемые в терминале команды

Page 21: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

#Cледить за изменениями в каталоге /servers/i/auditctl -w /servers/i/ -p wa

#Следить за обращениям к файлам в /etcauditctl -a exit,always -S open -F path=/etc/

#Cледить за модификациями /etcauditctl -a exit,always -S open -F path=/etc/ -F perm=aw

#Cледить за модификациями /etc/passwdauditctl -w /etc/passwd -p wa

vi /etc/audit/audit.rules

#Следить веб-сервером и sshd-w /usr/local/apache/bin -p rwxa-w /etc/init.d/httpd -p rwxa-w /etc/init.d/sshd -p rwxa

#Следить за ssh-сессиями ( 1084 – Pid main sshd )-a entry,always -F arch=b64 -S fork -S vfork -S clone -F ppid=1084-a entry,always -F arch=b64 -S execve -F ppid=1084-a entry,always -F arch=b64 -S connect -S bind -F ppid=1084

auiditd

Page 22: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

OSSEC

•  Анализ логов •  Контроль целостности •  Мониторинг конфигурации •  Поиск руткитов •  Готовое SIEM решение

https://github.com/ossec/ossec-hids

Page 23: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

OSSEC

Page 24: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Типичные ошибки конфигурации firewall

•  Зачем проверять открытые порты после смены политики firewall?

•  Зачем проверять открытые порты регулярно?

•  Зачем проверять ipv6?

Page 25: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Типичные ошибки конфигурации OS

•  0777 везде

•  Зачем обновлять серверное ПО, в том числе ядро ОС?

• Понаставим на продакшн-сервер всего побольше! И без пакетов!

• Даешь ssh root с паролем 123!

Page 26: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Типичные ошибки конфигурации веб-сервера

• Оставить phpmyadmin-образную штуку в веб-доступе

• Держать .git/.svn, backup.tgz, config.php_ в web_root

•  Зачем проверять ipv6?

Page 27: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Что делать с типовыми заражениями простых сайтов?

Page 28: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Манул: сканер

Page 29: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Манул: анализатор логов

Page 30: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Манул: лечение сайта

Page 31: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Манул – простой инструмент для поиска и удаления вредоносного кода на сайтах https://github.com/antimalware/manul

Page 32: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Что почитать: Расследование об информационной безопасности в Яндексе. Rdomn – скрытая угроза http://habrahabr.ru/company/yandex/blog/218143/ MAYHEM — многоцелевой бот для *NIX-серверов. Расследование Яндекс.Безопасности http://habrahabr.ru/company/yandex/blog/230167/ Яндекс и безопасность. Как мы изучали и обезвреживали обёртки (агрессивные adware) http://habrahabr.ru/company/yandex/blog/226817/ Устройство системы Безопасного Поиска Яндекса http://habrahabr.ru/company/yandex/blog/195408/ Детектор сайтов, заражающих компьютеры посетителей с помощью вредоносных Java-апплетов http://habrahabr.ru/post/170921/ О детектировании атак drive-by download и новых векторах распространения через Flash-баннеры http://habrahabr.ru/post/143345/ Ebury and CDorked. Full disclosure https://www.virusbtn.com/conference/vb2014/abstracts/SidorovBureau.xml Развитие drive by download атак http://safesearch.ya.ru/replies.xml?item_no=727

Page 33: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Полезные ссылки:

http://safesearch.ya.ru - Блог антивирусной службы Яндекса http://dns.yandex.ru – Яндекс.DNS http://safe.yandex.ru – SafeBrowsing API http://help.yandex.ru/webmaster/security/cure.xml – Раздел «безопасность» в Яндекс.Вебмастере http://webmaster.yandex.ru/delspam.xml – Форма жалоб на спам/вредоносный код/фишинг

Page 34: Опенсорс-инструменты на страже безопасности бэкенда — Петр Волков

Open-source инструменты на страже безопасности бэкенда Пётр Волков Руководитель группы анализа вредоносного кода [email protected] Я.Субботник, Нижний Новгород, 13.12.2014