Top Banner
Сайт Школы Канал на YouTube
51

11 лекция, петр волков

Jan 16, 2017

Download

Education

karina krew
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 2: 11 лекция, петр волков

Как защитить свой сайт

Пётр Волков

Школа вебмастеров

Page 3: 11 лекция, петр волков

Типы атак на сайты

Массовые:

• По большей части автоматизированы

• Постэксплуатация вне контекста сайта

• Подвержены в основном сайты с распространенными инструментами,

либо пренебрежением базовой гигиены

(словарные/стандартные пароли и т.п.)

Целевые:

• Выполняются человеком

• Максимально возможный ущерб в случае успеха атаки

• Подвержены крупные сайты

Page 4: 11 лекция, петр волков

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

Поисковые «дорки»

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

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

Укрепление

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

Page 5: 11 лекция, петр волков
Page 6: 11 лекция, петр волков
Page 7: 11 лекция, петр волков
Page 8: 11 лекция, петр волков
Page 9: 11 лекция, петр волков

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

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

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

• БД

• Статика

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

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

Page 10: 11 лекция, петр волков

Монетизация

Целевые атаки:

• Похищение клиентской базы

• Похищение коммерчески значимых кода и данных

• Дискредитация конкурентов

Массовые атаки:

• Чёрная поисковая оптимизация

• Заражение посетителей

• DDoS-платформа

• Вымогательство

• Рассылка спама

• Серверные ресурсы (проксирование и т.п.)

Page 11: 11 лекция, петр волков

Атака на посетителей: drive-by download

Page 12: 11 лекция, петр волков

Отказ в обслуживании, он же DDoS

DoS/DDoS - Атака с целью вывода сервиса из строя

Основные мотивы: Конкуренция и вымогательство

Атака на приложение

Атака на транспортном уровне

Пример атаки на TCP: syn flood

Атака на канал

Пример: (DNS/NTP/*)-amplification атака

Page 13: 11 лекция, петр волков

Управление рисками

14

Page 14: 11 лекция, петр волков

Управление рисками

Расчёт бюджета: сколько ресурсов потратить

на снижение рисков?

Распределение бюджета:

• Снижение вероятности проведения успешной атаки

• Снижение потенциального ущерба от последствий атаки

Page 15: 11 лекция, петр волков

Управление рисками

Снижение вероятности нежелательного события:

• Обновления безопасности для CMS

и остальных программ на сервере

• Парольная гигиена

• Отсутствие отладочных артефактов на сервере

• Минимизация точек входа (443 порта хватит всем)

• …

Page 16: 11 лекция, петр волков

Управление рисками

Снижение возможного ущерба от наступления

нежелательного события:

• Хеширование (с солью) паролей пользователей

• Процесс резервного копирования

• Контроль целостности

• Минимизация привилегий

• Система обнаружения вторжений

• Виртуализация/контейнеризация

• …

Page 17: 11 лекция, петр волков

Доступный инструментарий и

методики для обеспечения

безопасности

18

Page 18: 11 лекция, петр волков

Чек-листы и методологии

Топ-10 проблем безопасности вебсайтов по версии OWASP:

•A1 Внедрение постороннего кода на серверной стороне

•A2 Ошибки системы аутентификации и управления сессиями

•A3 Внедрение постороннего кода на клиентской стороне (XSS)

•A4 Прямой доступ к критичным объектам

•A5 Ошибки конфигурации

•A6 Открытие критичных данных

•A7 Проблемы авторизации операций

•A8 Межсайтовая подделка запросов (CSRF)

•A9 Использование компонентов с известными уязвимостями

•A10 Открытые редиректы

Page 19: 11 лекция, петр волков

w3af: сканер веб-уязвимостей с открытым кодом

Page 20: 11 лекция, петр волков

WebGoat: дырявое веб-приложение для тренировок

Page 21: 11 лекция, петр волков

Web application firewall

Заплатка для случая, когда на аудит кода ресурсов нет

или код закрыт

Пример: mod_security (плагин для Apache, Nginx, IIS)

Набор регулярок для типичных шаблонов эксплуатации

уязвимостей веб-приложения.

Возвращает HTTP 406 в случае, если запрос попал

под одно из правил.

Page 22: 11 лекция, петр волков

Использование уязвимых компонентов

https://exploit-db.com/

Page 23: 11 лекция, петр волков

Использование уязвимых компонентов

Page 24: 11 лекция, петр волков

Борьба с перебором

Мониторит логи и обновляет правила межсетевого экрана

Page 25: 11 лекция, петр волков

Защита от DDoS

Наращивание ресурсов – может оказаться

экономически неэффективным

Переезд к «облачному» хостеру – см. первый пункт

Защита от атаки на уровне приложения – поиск аномалий,

бан по ip, региону, капча

Защита от атаки на TCP – syn cookies, бан по ip

Защита от атаки на канал – переезд под защиту

анти-DDoS сервиса

Page 26: 11 лекция, петр волков

Аудит безопасности

• Whitebox

Аудиторы исследуют исходные тексты веб-приложения и

конфигурацию серверного окружения

• Blackbox

Аудиторы проводят исследование безопасности, не имея

исходных текстов, не зная конфигурации

• BugBounty

Программа поощрения сообщений о найденных уязвимостях

Page 27: 11 лекция, петр волков

[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

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

Дополнительно: Rootkit Hunter, chkrootkit

Page 28: 11 лекция, петр волков

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

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 29: 11 лекция, петр волков

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

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 30: 11 лекция, петр волков

Tripwire

Контроль целостности файловой системы

• Шлет отчеты по почте

• Выбор алгоритма хэширования

• Гибкие политики контроля целостности: append и т.д.

Проблемы:

• /tmp

• изменения между проверками

Аналоги: AIDE, TAMU, ATP, Hobgoblin, sXid, L5,

Gog&Magog

Page 31: 11 лекция, петр волков

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 32: 11 лекция, петр волков

#Cледить за изменениями в каталоге /servers/i/ auditctl -w /servers/i/ -p wa #Следить за обращениям к файлам в /etc auditctl -a exit,always -S open -F path=/etc/ #Cледить за модификациями /etc auditctl -a exit,always -S open -F path=/etc/ -F perm=aw #Cледить за модификациями /etc/passwd auditctl -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 33: 11 лекция, петр волков

OSSEC

• Анализ логов

• Контроль целостности

• Мониторинг конфигурации

• Поиск руткитов

• Готовое SIEM решение

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

Page 34: 11 лекция, петр волков

OSSEC

Page 35: 11 лекция, петр волков

Устранение последствий

Поменять пароли и ключи к ftp- и ssh-сервисам сайта

Поменять пароли к базе данных сайта (phpmyadmin)

Поменять пароли к панели администратора сайта

Установить обновления CMS и плагинов

Установить обновления / обновления безопасности

ключевых сервисов сайта и ОС

Page 36: 11 лекция, петр волков

YARA

Page 37: 11 лекция, петр волков

YARA

import "elf"

rule single_section {

condition: elf.number_of_sections == 1

}

rule elf_64 {

condition: elf.machine == elf.EM_X86_64

}

Page 38: 11 лекция, петр волков

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 39: 11 лекция, петр волков

"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 40: 11 лекция, петр волков

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

Page 41: 11 лекция, петр волков

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

Page 42: 11 лекция, петр волков

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

Page 43: 11 лекция, петр волков

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

Page 44: 11 лекция, петр волков

Подмена содержимого на стороне пользователя

Page 45: 11 лекция, петр волков

Подмена содержимого на стороне пользователя

Page 46: 11 лекция, петр волков

Подмена содержимого на стороне пользователя

Content Security Policy – технология для затруднения эксплуатации XSS,

по факту, на данный момент, помогает справляться и с внедрением

постороннего контента со стороны клиента. (Хотя не должна)

Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'

https://yastatic.net *.yandex.ru *.yandex.net yandex.st

*.yastatic.net wss://portal-xiva.yandex.net wss://push.yandex.ru;

img-src data: 'self' https://yastatic.net *.yandex.ru *.tns-counter.ru

*.gemius.pl yandex.st *.yandex.net *.yastatic.net;

report-uri https://csp.yandex.net/csp?from=big.ru&showid=22863

Page 47: 11 лекция, петр волков

Подмена содержимого на стороне пользователя

Page 48: 11 лекция, петр волков

Используйте Вебмастер,

чтобы:

Вовремя узнавать о

заражении сайта

Посмотреть примеры

кода, которые

актуальны для вердикта

Отправить сайт на

перепроверку, и

связаться с поддержкой

Раздел безопасности Яндекс.Вебмастер

Page 49: 11 лекция, петр волков

Раздел безопасности Яндекс.Вебмастер

Page 50: 11 лекция, петр волков

Рекомендации в Яндекс.Вебмастер http://help.yandex.ru/webmaster/