Wirusy w systemie Linux Konrad Olczak

Transkrypt

Wirusy w systemie Linux Konrad Olczak
Wirusy w systemie Linux
Konrad Olczak
Plan prezentacji
●
Różnice w bezpieczeństwie Windowsa i Linuxa.
●
Pokazanie możliwości implemetacji wirusa.
Windows vs. Linux
●
Uruchamianie plików.
●
Różnorodność oprogramowania.
●
Uprawnienia administracyjne.
●
Ilość odwołań systemowych.
●
Źródła.
●
Popularność.
●
Społeczność użytkowników.
●
Zbytnia pewność bezpieczeństwa.
Uruchamianie plików
LINUX
WINDOWS
●
Zapisanie pliku.
●
Zapisanie pliku.
●
Nadanie praw.
●
Uruchomienie go.
●
Uruchomienie pliku.
Różnorodność oprogramowania
LINUX
●
●
●
Dużo różnych
programów.
WINDOWS
●
Brak standardów.
Rozproszone cele dla
atakującego.
●
Większość
użytkowników
korzysta z tego
samego
oprogramowania.
np. Outlook korzysta
z mechanizmów IE.
Uprawnienia administracyjne
LINUX
●
Każde odwołanie do
zasobów
systemowych jest
uwierzytelniane.
WINDOWS
●
Pod systemem
Windows programy
instalowane przez
nieuprzywilejowanego
użytkownika nadal
mogą dodawać DLL'e
i inne pliki
systemowe.
Ilość odwołań systemowych
LINUX
WINDOWS
Źródła
WINDOWS
LINUX
●
●
●
●
Otwarte.
Każdy może zrobić i
przesłać łatkę.
Różne pomysły
zabezpieczenia systemu.
Nie trzeba dekompilować
i szukać dziur na
poziomie asemblera.
●
●
Zamknięte.
Stała zamknięta
grupa programistów.
Popularność
Społeczność użytkowników
LINUX
●
●
Zaawansowani
użytkownicy.
Znający się na
działaniu systemu.
WINDOWS
●
Każdy, kto zaczyna
przygodę z
komputerem.
Zbytnia pewność bezpieczeństwa
Brak zwyczaju korzystania z jakiegokolwiek
oprogramowania antywirusowego i zbytnie
poczucie bezpieczeństwa większości
użytkowników "pingwina" sprawia, że raz
zainstalowany rootkit może egzystować w
systemie znacznie dłużej, niż na przeciętnym
komputerze z Windowsem, gdzie program
antywirusowy to wymuszona codzienność.
Scott Granneman z Security Focus
„Żeby zepsuć system Linux trzeba nad tym
popracować. Żeby zepsuć system Windows
wystarczy popracować na nim”.
Tworzenie prostego wirusa.
Co trzeba wiedzieć
●
Zdecydować się na konkretną architekturę.
●
Znać strukturę plików wykonywalnych ELF.
●
Wywołania systemowe.
●
Znać asemblera.
ELF
(Executable and Linking Format)
●
Stosowany w różnych systemach uniksowych.
●
Odmiana 32-bitową oraz 64-bitowa.
●
Zasięg:
●
Pliki wykonywalne.
●
Biblioteki dynamiczne.
●
Zrzuty pamięci.
●
Pliki obiektowe.
Budowa ELF
●
Nagłówek zawiera przesunięcie ważnych tablic.
●
Tablica nagłówków - decydują o kształcie i treści
przestrzeni adresowej tworzonego procesu.
–
●
segmenty typu PT_LOAD – tworzą i inicjalizują segmenty
w pamięci wirtualnej.
Tablica sekcji.
Nagłówek ELF
Najważniejsze pole – e_entry – jest adresem
wirtualnym punktu wejścia programu. Od
instrukcji, która się tam znajduje, rozpocznie się
jego wykonywanie. Pole to będzie nam
przydatne, gdyż za jego pomocą przekierujemy
wykonanie do kodu wirusa.
Wykorzystanie tablicy sekcji
●
●
●
Tablica sekcji może zostać usunięta bez wpływu na działanie
programu.
Duży rozmiar (ok jednego kilobajta) na końcu pliku.
Można rozszerzyć ostatni segment
typu PT_LOAD, tak aby swoim
zasięgiem objął dodatkowy obszar
pliku, w którym umieścimy wirusa,
co umożliwia załadowanie do pamięci
danych, które nie powinny się tam
znaleźć.
Wywołania systemowe
●
●
●
●
Przerwania o wektorze 128.
Identyfikator przerwania należy umieścić w
rejestrze EAX przed wywołaniem przerwania
(identyfikatory są w pliku nagłówkowym
syscall.h), a jego argumenty w innych rejestrach.
Użycie otoczek – odpowiada ona za
przygotowanie argumentów i wywołanie
przerwania 128 oraz obsługę błędów.
Stworzenie wirusa wymaga stworzenia własnych
otoczek.
Przykładowa otoczka _exit,
biblioteki libc.so.6
mov 0x4(%esp),%ebx
;kod zakonczenia
;procesu zapisany w
;EBX
mov $0xfc,%eax
;nr wywolania sys.
int $0x80
;przerwanie 128
hlt
Otoczki wywołań w wirusie
Główną funkcją wirusa będzie rozmnażanie się
poprzez infekcję innych plików.
●
●
●
●
Otwieranie i zamykanie plików i katalogów
(open, close).
Wyliczanie zawartości katalogu (getdents).
Pobieranie informacji o obiektach systemu
plików (stat).
Wczytywanie i usuwanie plików z pamięci
(mmap, munmap).
Odsyłacz
Po szersze informacje wraz z implementacją
odsyłam do czasopisma HACKIN9 z
października 2010.
Bibliografia
●
●
●
Hackin9 9-10-2010
http://tech.wp.pl/kat,1009785,title,Czy-Linuxjest-takibezpieczny,wid,11188033,wiadomosc.html
http://www.linux.pl/?id=article&show=329
Dziękuje
PYTANIA?