Implementacja systemu IDS wykorzystującego algorytmy rozpoznawania obrazów Autor: Maciej Piwowarczyk Prowadzący pracę: dr inż. Anna Jasińska - Suwada Konsultant: mgr inż. Marcin Klamra
Cel pracy Implementacja systemu wykrywającego ataki i przypadki niewłaściwego użycia systemu bazodanowego PostgreSQL System musi cechować skuteczność wykrywania intruzji, niski odsetek fałszywych alarmów, łatwość zarządzania i wysoka wydajność analizy Wykorzystanie pomysłów zaczerpniętych z algorytmów rozpoznawania obrazów Porównanie systemu z wybranym systemem IDS (Snort)
Charakterystyka systemu System IDS typu sieciowego Wykrywanie zagrożeń w oparciu o wykrywanie anomalii oraz określone niebezpieczne klasy komend SQL Tworzenie profilu statycznego definiowanego przez administratora systemu w oparciu o ciąg uczący Profil definiowany dla bazy danych aplikacji, nie dla serwera SQL Możliwość konfiguracji dokładności przeprowadzanej analizy Możliwość pracy w charakterze demona systemowego
Analiza zapytań SQL Pełna analiza składniowa czterech najpopularniejszych typów zapytań: SELECT, INSERT, UPDATE oraz DELETE Pozostałe komendy SQL są poddawane analizie uproszczonej Wykorzystanie w analizie charakterystycznych cech języka SQL (ignorowanie wielkości liter, ilości białych znaków) Ze względu na standaryzację języka SQL analiza zapytań nie jest ściśle związana ze środowiskiem PostgreSQL Możliwość szybkiego sprawdzenia identyczności zapytań (po uprzednim przekształceniu) dzięki porównaniu skrótów MD5 Wykorzystanie tablicy asocjacyjnej hash_map z biblioteki standardowej Możliwość porównania podobieństwa zapytań przy analizie pełnej
Przykład analizy zapytania SELECT SELECT id, firstname, lastname FROM user WHERE name = ‘Klient1’ Limit 1 ; select id, firstname, lastname from user where name=‘Klient1’ limit 1 select id, firstname, lastname from user where name=[:string:] limit [:number:] select firstname, id, lastname from user where name=[:string:] limit [:number:] d198fab968bea35db049cbba2290cd03
Wykorzystanie algorytmów rozpoznawania obrazów Podział zapytań SQL na klasy Dla każdej z klas określenie czy dana klasa odpowiada bezpiecznym lub niebezpiecznym komendom Tworzenie wzorców zapytań podobnie jak w metodzie Najbliższej Mody Przy pełnym porównywaniu komend wykorzystanie pomysłu z algorytmu Najbliższego Sąsiada z wykorzystaniem wzorców
Przykłady niebezpiecznych zapytań SQL SELECT * FROM eif_user WHERE name = 'login_uzytkownika' LIMIT 1 SELECT * FROM eif_user WHERE name = 'login_uzytkownika'; DELETE FROM eif_profile;--' LIMIT 1 SELECT * FROM eif_user WHERE name = 'login_uzytkownika' OR 1=1;--' LIMIT 1 SELECT * FROM eif_user WHERE name = 'login_uzytkownika' AND 1/0=1;--' LIMIT 1 SELECT * FROM eif_user WHERE name = 'login_uzytkownika' AND (SELECT count(*) FROM eis_permission)=1;--' LIMIT 1 SELECT * FROM eif_user WHERE name = 'login_uzytkownika' AND (select count(*) from eif_user where name = 'admin' and pass = '098f6bcd4621d373cade4e832627b4f8')=1 ;--' LIMIT 1
Wybrany system IDS - Snort Jeden z najpopularniejszych systemów IDS System IDS typu sieciowego Klasyczny system działający w oparciu o sygnatury ataków Duża wydajność analizy pakietów sieciowych Duża ilość dostępnych publicznie sygnatur ataków Dostępnych jest wiele rozszerzeń dla systemu Snort implementowanych w postaci dodatkowych wtyczek (pluginów)
Zestawienie skuteczności wykrywania ataków
Zestawienie liczby generowanych fałszywych alarmów
Zestawienie czasu analizy 100 tys. komend SQL
Podsumowanie Dalsze możliwości rozwoju aplikacji Dostosowanie systemu do współpracy z innymi systemami bazodanowymi Pogłębiona analiza zapytań SQL Dodanie elementów systemu sygnaturowego Rozwój mechanizmów tworzenia raportów i zgłaszania alarmów