Фильтрация IP трафика Использование технологии WFP Студент группы 4085/4: Копнин А. Л. Руководитель: Сальников В.Ю. 2 Причины возникновения: Сложность поимки преступников «Инструкции» по взлому 3 Zero-day – уязвимость используемая в сетевых атаках Пример приложений с актуальной проблемой безопасности: •FoxitReader •AdobeReader / Acrobat •Microsoft Office и многие другие программные продукты Переполнение стека, выполнение произвольного кода Использование Zero day Специальный код WEB ресурс Обращение к ресурсу 4 В «Лаборатории Касперского» проводятся исследования, по определению в какой момент Web-сайты становится точками распространения вредоносных программ. 2006 – Каждый сайт из 20 000 сайтов 2009 – Каждый сайт из 150 сайтов Рейтинг «Стран – вредителей» 5 Использование проверенных Internet ресурсов Бдительность при использование сети Internet Психологическая составляющая Программная составляющая Антивирусная защита Межсетевые экраны 6 Критерии отбора: Программный персональный межсетевой экран Бесплатно распространяемый межсетевой экран • Outpost Firewall Free • Online Armor Free Проактивная защита Обезвреживание на основе анализа действий Контроль памяти программ Критические значения реестра Самозащита Предотвращение выгрузки Firewall Контроль запущенных служб Контроль собственных файлов «Блокировка шпионских сайтов» Блокировка соединения Анализ заголовков сайтов Фильтр URL Мониторинг процессов Log протоколирование соединений • Private Firewall Комплексная безопасность Защита от вредоносных скриптов Определение перехватчиков пользовательского уровня Самозащита Защита от модификации собственного кода 7 • Возможность блокировки URL запросов есть не у всех программных продуктов • Сложность настройки межсетевых экранов для большинства пользователей сети Internet • Отсутствие разграничения списков Web ресурсов для определенного круга пользователей В требованиях к межсетевому экрану присутствует задача блокировки Web ресурсов, рассмотренные разработки не в полной мере предоставляют такую возможность, а значит не могут быть рассмотрены как готовые решения. 8 • Приложение с прозрачной, интуитивно понятной настройкой • Блокировка URL запросов • Разделение списка вредоносных Web ресурсов для разных пользователей • Создание основного приложения в виде системной службы • Использование платформы фильтрации WFP 9 • Фильтрация пакетов Проверка пакетов с правилами • Адрес от кого пакет • Адрес куда пакет • Тип пакета (TCP, UDP, ICMP) • Порт источника / получателя • Фильтрация сеансового уровня Последовательность пакетов • Разбиение длинных пакетов, проверка целостности: Контроль процесса передачи Защита программного уровня Проверка содержимого пакетов • Проверка содержимого пакета • Фильтрация URL • Использование Proxy Создание таблицы контроля Слабые стороны: • Нет проверки содержимого • Много правил – снижение производительности Слабые стороны: •Сложность реализации Сильные стороны: • Обработка протоколов верхних Сильные стороны: Сильные стороны: • Быстрая фильтрация пакетов •Сокрытие топологии сети • Не требуются специальные •Простая реализация запрета соединения конфигурации ПК между пользователями уровней (HTTP, FTP...) • Запрет к сетевым ресурсам • Сокрытие внутренних адресов 10 Написание компонентов на уровне драйверов Использование NDIS и TDI или Новая платформа для реализации систем безопасности – Windows Filtering Platform (WFP) 11 Firewall Application AV Application WFP Management APIs Base Filtering Engine (BFE) User Kernel Application layer enforcement (ALE) TDI/WSK 3rd party anti-virus 3rd party parental control Transport Layer IPsec Network Layer Forward Layer NDIS Layer IP Proxy Layer Filtering Engine 3rd party IDS 3rd party network address translation (NAT) Callout modules Stream Layer 12 Main () SERVICE_TABLE_ENTRY SCM SERVICE_START До входа пользователя ServiceMain() HandlerEx() После входа пользователя Пользователь системы (Login) WTS_SESSION_LOGON Stop_service() Заблокирована учетная запись Пользователь системы (Logoff) Выключение (Остановка службы) WTS_SESSION_LOGOFF … Stop_service(1) РЕЕСТР WFP EngineOpen0() SubLayerAdd() Add_Filter() Delete: Filters Delete: SubLayer Close: Session 13 class filter { public: FWPM_SUBLAYER0 sub_layer; FWPM_FILTER0 filters[256]; HANDLE handle_session; DWORD ret_value; filter() { ZeroMemory(this, sizeof(filter)); ZeroMemory(&sub_layer, sizeof(sub_layer)); if (!FwpmEngineOpen0(NULL, RPC_C_AUTHN_WINNT, NULL, NULL, &handle_session)) SvcReportEvent(TEXT("Session Create")); add_sublayer(); } ~filter() { delete_filters(); if (!FwpmSubLayerDeleteByKey0(handle_session, &sub_layer.subLayerKey)) SvcReportEvent(TEXT("Sub-layer delete")); if (!FwpmEngineClose0(handle_session)) SvcReportEvent(TEXT("Session Close")); } void add_filter(int type, const char *url); void delete_filters(); private: void add_sublayer(); }; 14 Add_secur() РЕЕСТР InitInstance() Tab_control_create() WndProc() Tab_text_area() TCN_SELCHANGE Пользователь AddIP button message AddIP Configur ation Conf button message Informat ion LVN_GETDISPINFO Action(int) Action(HWND) 15 void action(int number) { SC_HANDLE handle_Service; SC_HANDLE handle_open_manager; SERVICE_STATUS service_status; switch(number) { case IDB_START: handle_open_manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); handle_Service = OpenService(handle_open_manager, "Block", SERVICE_STOP | SERVICE_START if (!StartService(handle_Service, 0, 0)) { if(ControlService( handle_Service, SERVICE_CONTROL_STOP, &service_status)) { MessageBoxA(0, "Services is stopped", "Stop!", MB_OK); // служба остановлена SendMessage(start, BCM_SETNOTE, 0, (LPARAM) L"You can start service"); start_stop = false; statusbar_status(); // изменить параметр статус бара } else MessageBoxA(0, "Error, when start / stop service!", "Stop!", MB_OK); // служба уже установлена } else { MessageBoxA(0, "Services is started", "Start!", MB_OK); // служба запущена SendMessage(start, BCM_SETNOTE, 0, (LPARAM) L"You can stop service"); start_stop = true; statusbar_status(); // изменить параметр статус бара } CloseServiceHandle(handle_Service); CloseServiceHandle(handle_open_manager); break; case IDB_DELETE: handle_open_manager = OpenSCManager(NULL, NULL, SC_MANAGER_ALL_ACCESS); if(!flag) { MessageBoxA(0, "Services is not installed", "Error!", MB_OK); // служба не установлена } 17 Управляющее приложение Запрос Web ресурса Системная служба 1 2 Реестр 3 Base Filter Engine Список URL Sub-Layer (Out/Inbound IP) Filter Engine (IP layer) FIREWALL Обновление ПО INTERNET Пользовательский режим Режим ядра 18 18 Реализовано: Проанализированы существующие межсетевые экраны Разработана система защиты, состоящая из управляющего приложения и службы Windows Реализовано разделение списка блокируемых Web ресурсов Освоена платформа фильтрации Windows (WFP) Организована полная отчетность работоспособности программы Дальнейшее развитие: Секретность хранения списка фильтрации Фильтрация с использованием частоты встречаемости слов Контроль не используемых портов