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?