Linux vs rootkits. - Adam 'pi3' Zabrocki



Podobne dokumenty
Linux vs rootkits. - Adam 'pi3' Zabrocki

BEZPIECZEŃSTWO W SIECIACH

Tworzenie bezpiecznego środowiska kont shellowych

Rootkity - zagrożenie czy plotki? Mateusz Sell, Dariusz Świderski MKS Sp. z o.o.

Q E M U.

Spis treści. Wskazówki prawne Art Art Art. 268a Art Art. 269a Art. 269b... 23

IdyllaOS. Prosty, alternatywny system operacyjny. Autor: Grzegorz Gliński. Kontakt:

Visual VM, Java Management extension i inne ciekawostki

Portal Security - ModSec Enterprise

Produkty. MKS Produkty

Koncepcja wirtualnej pracowni GIS w oparciu o oprogramowanie open source

Systemy operacyjne - rozkład godzin dla technikum informatycznego

(Pluggable Authentication Modules). Wyjaśnienie technologii.

Audyt zasobów sprzętowych i systemowych (za pomocą dostępnych apletów Windows oraz narzędzi specjalnych)

Programowanie Systemów Wbudowanych

System wspomagania zarządzania wirtualizacją

Spis treści. O autorze 9. O recenzentach 10. Przedmowa 13. Rozdział 1. Oto Linux Mint 17_

Systemy operacyjne i sieci komputerowe. 1 SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Etapy uruchamiania systemu

Mechanizmy pracy równoległej. Jarosław Kuchta

Jadro monolityczne vs. mikrojadro. Mikrojadro. Olga Kowalczuk. 9 grudnia 2008

Temat: Rootkit stworzony w oparciu o technikę "SSDT hooking". Autor: Damian Tykałowski. I. Cel projektu

Rozdział 6 - Z kim się kontaktować Spis treści. Wszelkie prawa zastrzeżone WiedzaTech sp. z o.o Kopiowanie bez zezwolenia zabronione.

Robaki sieciowe. + systemy IDS/IPS

Systemy operacyjne semestr I

Wykaz zmian w programie SysLoger

Poziomy wymagań Konieczny K Podstawowy- P Rozszerzający- R Dopełniający- D Uczeń: - zna rodzaje sieci - zna topologie sieciowe sieci

Struktury systemów operacyjnych

Serwer SSH. Wprowadzenie do serwera SSH Instalacja i konfiguracja Zarządzanie kluczami

Malware przegląd zagrożeń i środków zaradczych

Win Admin Replikator Instrukcja Obsługi

Przegląd dostępnych hypervisorów. Jakub Wojtasz IT Solutions Architect

Działanie systemu operacyjnego

LEKCJA 2. Szukaj dziury w całym: debugowanie

Sieci komputerowe : zbuduj swoją własną sieć - to naprawdę proste! / Witold Wrotek. wyd. 2. Gliwice, cop Spis treści

Od uczestników szkolenia wymagana jest umiejętność programowania w języku C oraz podstawowa znajomość obsługi systemu Linux.

PROGRAMY NARZĘDZIOWE 1

Numer ogłoszenia: ; data zamieszczenia:

Działanie systemu operacyjnego

ArcaVir 2008 System Protection

Tworzenie sterowników dla FreeBSD. Michał Hajduk

System komputerowy. Sprzęt. System komputerowy. Oprogramowanie

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Działanie systemu operacyjnego

Narzędzia klienta usługi archiwizacji

VMware, QEMU, UML. oraz inne wirtualne maszyny. Piotr Findeisen Filip Grządkowski Piotr Kuśka Krzysztof Mroczek

UNIX: architektura i implementacja mechanizmów bezpieczeństwa. Wojciech A. Koszek dunstan@freebsd.czest.pl Krajowy Fundusz na Rzecz Dzieci

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Bezpieczeństwo Komunikatorów

Bezpieczeństwo systemów informatycznych

ICD Wprowadzenie. Wprowadzenie. Czym jest In-Circuit Debugger? 2. O poradniku 3. Gdzie szukać dodatkowych informacji? 4

Monitorowanie i zarządzanie urządzeniami sieciowymi przy pomocy narzędzi Net-SNMP

Warstwy systemu Windows 2000

Wojciech Dworakowski. Zabezpieczanie aplikacji. Firewalle aplikacyjne - internetowych

Plan na dziś. Co to jest wirus komputerowy? Podział wirusów komputerowych Jak działają wirus komputerowe? Jak zabezpieczyć się przed wirusami?

Efektywne zarządzanie infrastrukturą IT, inwentaryzacja sprzętu i oprogramowania oraz ochrona danych przed wyciekiem dzięki wdrożeniu Axence nvesion

Temat: EasyAccess 2.0 Data: 10 Października 2014 Prowadzący: Maciej Sakowicz

Działanie systemu operacyjnego

Internet Explorer. Okres

Ćwiczenie Nr 7 Instalacja oraz konfiguracja wskazanego systemu operacyjnego

Test z systemów operacyjnych

NIS/YP co to takiego?

Bezpieczeństwo Teleinformatyczne laboratorium

Zagrożenia mobilne w maju

QEMU działa na procesorach procesorach: emuluje procesory: dostępne dla s.o. hosta:

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

WWQ. Wakacyjne Warsztaty QNAP. Zaczynamy o 11:00. Prowadzący: Łukasz Milic Certyfikowany Trener QNAP

Paweł Skrobanek. C-3, pok pawel.skrobanek.staff.iiar.pwr.wroc.pl

Program szkolenia KURS SPD i PD Administrator szkolnej pracowni internetowej Kurs MD1 Kurs MD2 Kurs MD3 (dla szkół ponadgimnazjalnych)

Szkolenie autoryzowane. MS Administracja i obsługa Windows 7. Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Pogotowie komputerowe, Informatyk Gorzów DOJAZD

Netia Mobile Secure Netia Backup

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

SQL z perspektywy hakera - czy Twoje dane są bezpieczne? Krzysztof Bińkowski MCT,CEI,CEH,ECSA,ECIH,CLFE,MCSA,MCSE..

Wirusy w systemie Linux. Konrad Olczak

7. zainstalowane oprogramowanie zarządzane stacje robocze

DZIEŃ BEZPIECZNEGO KOMPUTERA

Dział Dopuszczający Dostateczny Dobry Bardzo dobry Celujący

Win Admin Replikator Instrukcja Obsługi

Agenda. Urządzenia mobilne w transakcjach elektronicznych. - szanse i zagrożenia. Artur Maj, Prevenity. Przegląd rynku urządzeń mobilnych

Automatyczne testowanie infrastruktury pod kątem bezpieczeństwa. Leszek Miś IT Security Architect RHCA,RHCSS,Sec+ Linux Polska Sp. z o.o.

Rozwój zagrożeń i ich mitygacja. Seweryn Jodłowski Senior Systems Engineer, CISSP, CNSE

Testing hardware Paweł Noga

Przepełnienie bufora. SQL Injection Załączenie zewnętrznego kodu XSS. Nabycie uprawnień innego użytkownika/klienta/administratora

Systemy operacyjne oparte na mikrojądrze na przykładzie Minix3. Maciej Łaszcz, Wojciech Łowiec, Patryk Spanily 2 XII 2008

Monitor maszyn wirtualnych

Skalowanie i monitorowanie działania systemu dlibra 5.0

Wprowadzenie do Kaspersky Value Added Services for xsps

Materiały wprowadzające. dr inż. Arkadiusz Chrobot

Opis administracji terminali ABA-X3 v.1.5.0

Linux -- u mnie działa!

"Klasyczna" struktura systemu operacyjnego:

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Wykaz zmian w programie SysLoger

Rozproszony system monitorowania i zarządzania zużyciem energii w systemach komputerowych

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Przegląd technik wirtualizacji i separacji w nowoczesnych systemach rodziny UNIX

Załącznik nr 6. Stacje robocze i serwery Windows

Narzędzie konfiguracji rozruchu

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE

Transkrypt:

Linux vs rootkits - Adam 'pi3' Zabrocki

/usr/bin/whoami ADAM ZABROCKI

/usr/bin/whoami ADAM ZABROCKI

/usr/bin/whoami ADAM ZABROCKI

/usr/bin/whoami ADAM ZABROCKI

/usr/bin/whoami ADAM ZABROCKI

/usr/bin/whoami ADAM ZABROCKI

/usr/bin/whoami ADAM ZABROCKI

/usr/bin/whoami ADAM ZABROCKI http://pi3.com.pl pi3@itsec.pl (lub oficjalnie zabrocki@cern.ch)

Plan prezentacji: Wstęp (wirus / malware / rootkit) Współczesne rootkit'y w skrócie Rootkity: User Space Kernel Space LKM Non-LKM Debug Register Rootkit Black Market...

Wstęp: Wirus komputerowy: 1970/71 Creeper (TeneX OS) DEC PDP

Wstęp: Wirus komputerowy: 1970/71 Creeper (TeneX OS) DEC PDP Powielanie się... MUSI mieć nosiciela Słabość systemów...... bądź beztroskę użytkowników

Wstęp: Robak komputerowy: 2 listopada 1988 - pogromca UNIX'ów

Wstęp: Robak komputerowy: 2 listopada 1988 - pogromca UNIX'ów Samoreplikujący się! Zazwyczaj wirus + dodatki (backdoor, koń trojański, itp.)

Wstęp: Rootkit: User root + narzędzia kit = rootkit

Wstęp: Rootkit: User root + narzędzia kit = rootkit Ukrywa procesy Ukrywa pliki Ukrywa połączenia sieciowe Backdoor (Key/Traffic/*) Logger Ukrywa siebie...

Teoria vs praktyka

Rootkit'y dzisiaj Wirus + Trojan + Rootkit + Malware połączone w jedność => potocznie zwane malware

Rootkit'y dzisiaj Wirus + Trojan + Rootkit + Malware połączone w jedność => potocznie zwane malware... a jakie skojarzenia mają ludzie z branży?? ;)

Rootkit'y dzisiaj Wirus + Trojan + Rootkit + Malware połączone w jedność => potocznie zwane malware... a jakie skojarzenia mają ludzie z branży?? ;) 14:13 <@pi3> powiedzcie mi swoje randomowe skojarzenia - pierwsze, które przyszły na myśl 14:13 <@pi3> na słowo rootkit / wirus komputerowy

Rootkit'y dzisiaj Odpowiedzi: 14:13 <@ducer> piotr bania

Rootkit'y dzisiaj Odpowiedzi: 14:13 <@ducer> piotr bania 14:14 <@mpp> michał podatność bućko

Rootkit'y dzisiaj Odpowiedzi: 14:13 <@ducer> piotr bania 14:14 <@mpp> michał podatność bućko 14:14 <@bz>./kodzik ;]

Rootkit'y dzisiaj Odpowiedzi: 14:13 <@ducer> piotr bania 14:14 <@mpp> michał podatność bućko 14:14 <@bz>./kodzik ;] 14:14 <@Gynvael> na rootkit: subverting windows kernel 14:14 <@Gynvael> na wirus: mks_vir

Co dalej? :) Rootkit'y dzisiaj

Co dalej? :) Rootkit'y dzisiaj 14:15 <@Gynvael> to pierwszy (i ostatni) AV ktorego uzywalem 14:15 <@Gynvael> ;>

Co dalej? :) Rootkit'y dzisiaj 14:15 <@Gynvael> to pierwszy (i ostatni) AV ktorego uzywalem 14:15 <@Gynvael> ;> 14:15 <@mpp> a co teraz masz? :>

Co dalej? :) Rootkit'y dzisiaj 14:15 <@Gynvael> to pierwszy (i ostatni) AV ktorego uzywalem 14:15 <@Gynvael> ;> 14:15 <@mpp> a co teraz masz? :> 14:16 <@Gynvael> teraz? teraz mam IDA i OllyDbg 14:16 <@Gynvael> ;p

Co dalej? :) Rootkit'y dzisiaj 14:15 <@Gynvael> to pierwszy (i ostatni) AV ktorego uzywalem 14:15 <@Gynvael> ;> 14:15 <@mpp> a co teraz masz? :> 14:16 <@Gynvael> teraz? teraz mam IDA i OllyDbg 14:16 <@Gynvael> ;p 14:16 <@pi3> az zapisze te logi i pokaze na SecDay ;]

Rootkit'y:

Rootkit'y: User Space rootkits: Ukrywa procesy Ukrywa pliki Ukrywa połączenia sieciowe Backdoor (Key/Traffic/*) Logger Ukrywa siebie...

Rootkit'y: User Space rootkits: Ukrywa procesy (ps/... ) Ukrywa pliki Ukrywa połączenia sieciowe Backdoor (Key/Traffic/*) Logger Ukrywa siebie...

Rootkit'y: User Space rootkits: Ukrywa procesy (ps/... ) Ukrywa pliki (ls/dir/...) Ukrywa połączenia sieciowe Backdoor (Key/Traffic/*) Logger Ukrywa siebie...

Rootkit'y: User Space rootkits: Ukrywa procesy (ps/... ) Ukrywa pliki (ls/dir/...) Ukrywa połączenia sieciowe (netstat/...) Backdoor (Key/Traffic/*) Logger Ukrywa siebie...

Rootkit'y: User Space rootkits: Ukrywa procesy (ps/... ) Ukrywa pliki (ls/dir/...) Ukrywa połączenia sieciowe (netstat/...) Backdoor (ssh[d]/ftp/...) (Key/Traffic/*) Logger Ukrywa siebie...

User Space Rootkits: Zalety: Prostota

User Space Rootkits: Zalety: Prostota Bezpieczeństwo

User Space Rootkits: Zalety: Prostota Bezpieczeństwo Stabilność

User Space Rootkits: Zalety: Prostota Bezpieczeństwo Stabilność Przenośność

User Space Rootkits: Wady: Bardzo proste do wykrycia (checksum/'czyste' narzędzia/...)

User Space Rootkits: Wady: Bardzo proste do wykrycia (checksum/'czyste' narzędzia/...) Wiele programów

User Space Rootkits: Wady: Bardzo proste do wykrycia (checksum/'czyste' narzędzia/...) Wiele programów Upgrade może zabić

User Space Rootkits: Wady: Bardzo proste do wykrycia (checksum/'czyste' narzędzia/...) Wiele programów Upgrade może zabić Mało edukacyjne ;)

Kernel Space Rootkits: Analiza wywołania systemowego na przykładzie serwera Apache...

Kernel Space Rootkits:

Kernel Space Rootkits: To był kiepski żart ;)

Kernel Space Rootkits:

Loadable Kernel Module Rootkits: Lekcja historii: sys_call_table[ NR_open] = (void *) my_func_ptr;

Loadable Kernel Module Rootkits: Lekcja historii: sys_call_table[ NR_open] = (void *) my_func_ptr; sys_call_table nie jest już eksportowane

Loadable Kernel Module Rootkits: Lekcja historii: sys_call_table[ NR_open] = (void *) my_func_ptr; sys_call_table nie jest już eksportowane Zczytać: [root@pi3book files]# cat /proc/kallsyms grep sys_call_table c0732320 R sys_call_table [root@pi3book files]#

Loadable Kernel Module Rootkits: Lekcja historii: sys_call_table[ NR_open] = (void *) my_func_ptr; sys_call_table nie jest już eksportowane Zczytać: [root@pi3book files]# cat /proc/kallsyms grep sys_call_table c0732320 R sys_call_table [root@pi3book files]#

Loadable Kernel Module Rootkits: Opcje CONFIG_KALLSYMS=y CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_EXTRA_PASS=y

Loadable Kernel Module Rootkits: Opcje CONFIG_KALLSYMS=y CONFIG_KALLSYMS_ALL=y CONFIG_KALLSYMS_EXTRA_PASS=y arch/x86/kernel/entry_32.s : 530:ENTRY(system_call):... 542: call *sys_call_table* sys_call_table(,%eax,4)

Loadable Kernel Module Rootkits: Gdb... 0xc040352e: 0xc0403535: call *-0x3f8cdce0(,%eax,4) mov %eax,0x18(%esp) (gdb) p/x 0xc0403535-0xc040352e $1 = 0x7 (gdb) x/2x 0xc040352e 0xc040352e: (gdb) 0x208514ff 0x89c07323

Loadable Kernel Module Rootkits: Gdb... 0xc040352e: call *-0x3f8cdce0* -0x3f8cdce0(,%eax,4) 0xc0403535: mov %eax,0x18(%esp) (gdb) p/x 0xc0403535-0xc040352e $1 = 0x7 (gdb) x/2x 0xc040352e 0xc040352e: (gdb) 0x208514ff 0x89c07323

Loadable Kernel Module Rootkits: Gdb... 0xc040352e: call *-0x3f8cdce0* -0x3f8cdce0(,%eax,4) 0xc0403535: mov %eax,0x18(%esp) (gdb) p/x 0xc0403535-0xc040352e $1 = 0x7 (gdb) x/2x 0xc040352e 0xc040352e: (gdb) 0x208514ff 0x89c0 c07323

Loadable Kernel Module Rootkits: Gdb... 0xc040352e: call *-0x3f8cdce0* -0x3f8cdce0(,%eax,4) 0xc0403535: mov %eax,0x18(%esp) (gdb) p/x 0xc0403535-0xc040352e $1 = 0x7 (gdb) x/2x 0xc040352e 0xc040352e: (gdb) 0x208514ff 0x89c073 c07323

Loadable Kernel Module Rootkits: Gdb... 0xc040352e: call *-0x3f8cdce0* -0x3f8cdce0(,%eax,4) 0xc0403535: mov %eax,0x18(%esp) (gdb) p/x 0xc0403535-0xc040352e $1 = 0x7 (gdb) x/2x 0xc040352e 0xc040352e: (gdb) 0x20 208514ff 0x89c07323

Loadable Kernel Module Rootkits: Gdb... 0xc040352e: call *-0x3f8cdce0* -0x3f8cdce0(,%eax,4) 0xc0403535: mov %eax,0x18(%esp) (gdb) p/x 0xc0403535-0xc040352e $1 = 0x7 (gdb) x/2x 0xc040352e 0xc040352e: (gdb) 0x20 208514ff 0x89c07323

Loadable Kernel Module Rootkits: Gdb... 0xc040352e: call *-0x3f8cdce0* -0x3f8cdce0(,%eax,4) 0xc0403535: mov %eax,0x18(%esp) (gdb) p/x 0xc0403535-0xc040352e $1 = 0x7 (gdb) x/2x 0xc040352e 0xc040352e: (gdb) c0732320 R sys_call_table 0x20 208514ff 0x89c07323

Loadable Kernel Module Rootkits: Gdb... 0xc040352e: call *-0x3f8cdce0* -0x3f8cdce0(,%eax,4) 0xc0403535: mov %eax,0x18(%esp) (gdb) p/x 0xc0403535-0xc040352e $1 = 0x7 (gdb) x/2x 0xc040352e 0xc040352e: (gdb) c0732320 R sys_call_table 0x20 208514ff 0x89c07323

Loadable Kernel Module Rootkits: Skąd wziąć adres początkowy? (system_call)

Loadable Kernel Module Rootkits: Skad wziąć adres początkowy? (system_call) arch/i386/kernel/traps.c:889 set_system_trap_gate(syscall_vector, &system_call); x86 => tablica przerwań (IDT)

Loadable Kernel Module Rootkits: Skad wziąć adres początkowy? (system_call) arch/i386/kernel/traps.c:889 set_system_trap_gate(syscall_vector, &system_call); x86 => tablica przerwań (IDT) Skąd wziąć adres tablicy IDT?

Loadable Kernel Module Rootkits: Skad wziąć adres początkowy? (system_call) arch/i386/kernel/traps.c:889 set_system_trap_gate(syscall_vector, &system_call); x86 => tablica przerwań (IDT) Skąd wziąć adres tablicy IDT? => instrukcja assemblera 'sidt'

Loadable Kernel Module Rootkits:

Loadable Kernel Module Rootkits: Plan: 'sidt'

Loadable Kernel Module Rootkits: Plan: 'sidt' 0x80 wpis w tablicy IDT => system_call

Loadable Kernel Module Rootkits: Plan: 'sidt' 0x80 wpis w tablicy IDT => system_call Szukamy 'naszej' instukcji (fingerprint)

Loadable Kernel Module Rootkits: Plan: 'sidt' 0x80 wpis w tablicy IDT => system_call Szukamy 'naszej' instukcji (fingerprint) Odkodowujemy adres sys_call_table

Loadable Kernel Module Rootkits: Plan: 'sidt' 0x80 wpis w tablicy IDT => system_call Szukamy 'naszej' instukcji (fingerprint) Odkodowujemy adres sys_call_table Voila! ;)

Loadable Kernel Module Rootkits:

Loadable Kernel Module Rootkits:

Loadable Kernel Module Rootkits:... ale: Od wersji 2.6.24 >= sys_call_table RO

Loadable Kernel Module Rootkits:... ale: Od wersji 2.6.24 >= sys_call_table RO... więc zmieniamy atrybut strony na RW

Loadable Kernel Module Rootkits:... ale: Od wersji 2.6.24 >= sys_call_table RO... więc zmieniamy atrybut strony na RW Od wersji 2.6.27.8 >= zmieniony mechanizm zmiany atrybutów strony ;)

Loadable Kernel Module Rootkits:... ale: Od wersji 2.6.24 >= sys_call_table RO... więc zmieniamy atrybut strony na RW Od wersji 2.6.27.8 >= zmieniony mechanizm zmiany atrybutów strony ;) Nadal da się to zrobić, ale to bardzo kłopotliwe

Loadable Kernel Module Rootkits:... ale: Od wersji 2.6.24 >= sys_call_table RO... więc zmieniamy atrybut strony na RW Od wersji 2.6.27.8 >= zmieniony mechanizm zmiany atrybutów strony ;) Nadal da się to zrobić, ale to bardzo kłopotliwe Można sobie życie uprościć...

Loadable Kernel Module Rootkits:

Loadable Kernel Module Rootkits:

Loadable Kernel Module Rootkits: Co złego zrobiliśmy? Adres wejścia do sys_call_table

Loadable Kernel Module Rootkits: Co złego zrobiliśmy? Adres wejścia do sys_call_table OMG! Kontrolujemy wszystkie wywołania systemowe

Loadable Kernel Module Rootkits: Co złego zrobiliśmy? Adres wejścia do sys_call_table OMG! Kontrolujemy wszystkie wywołania systemowe... wystarczy dobrze zaprojektować własną sys_call_table ;)

Loadable Kernel Module rootkits podsumowanie: Zalety: Modyfikujemy TYLKO kernel

Loadable Kernel Module rootkits podsumowanie: Zalety: Modyfikujemy TYLKO kernel Jesteśmy ograniczeni tylko wyobraźnią... i wiedzą (zawsze 'coś' się znajdzie ;))

Loadable Kernel Module rootkits podsumowanie: Zalety: Modyfikujemy TYLKO kernel Jesteśmy ograniczeni tylko wyobraźnią... i wiedzą (zawsze 'coś' się znajdzie ;)) Wady: Łatwo zniszczyć system

Loadable Kernel Module rootkits podsumowanie: Zalety: Modyfikujemy TYLKO kernel Jesteśmy ograniczeni tylko wyobraźnią... i wiedzą (zawsze 'coś' się znajdzie ;)) Wady: Łatwo zniszczyć system Mały błąd może zaburzyć działanie aplikacji

Loadable Kernel Module rootkits podsumowanie: Zalety: Modyfikujemy TYLKO kernel Jesteśmy ograniczeni tylko wyobraźnią... i wiedzą (zawsze 'coś' się znajdzie ;)) Wady: Łatwo zniszczyć system Mały błąd może zaburzyć działanie aplikacji Słaby projekt backdoora może skutkować wywołaniem w nieodpowiednim momencie

Non LKM Rootkits: Czemu?

Non LKM Rootkits: Czemu? Co zyskujemy?

Non LKM Rootkits:

Non LKM Rootkits: Czemu? Co zyskujemy? Jak działają? /dev/[k]mem

Non LKM Rootkits: Czemu? Co zyskujemy? Jak działają? /dev/[k]mem Statyczne łatanie jądra (vmlinuz)

Non LKM Rootkits: Czemu? Co zyskujemy? Jak działają? /dev/[k]mem Statyczne łatanie jądra (vmlinuz) Bootkit'y (np. Grub)

Non LKM Rootkits: Czemu? Co zyskujemy? Jak działają? /dev/[k]mem Statyczne łatanie jądra (vmlinuz) Bootkit'y (np. Grub) BIOS rootkit

Zalety: Non LKM Rootkits: Bardzo ciężkie do wykrycia Funkcjonalność taka sama jak w przypadku LKM Wady: Trzeba pomyśleć co po restarcie ;) Zmiana kernel'a może być krytyczna dla rootkit'a Nieprzenośne i trudne w pisaniu

Wykrywanie?

Wykrywanie? No właśnie jak? Porównywanie adresów Porównywanie wyników Każdy rootkit ma swoją własną charakterystykę

Wykrywanie? No właśnie jak? Porównywanie adresów Porównywanie wyników Każdy rootkit ma swoją własną charakterystykę Protekcja?: Monitorowanie modułów Nowe jądra zabraniają pisania do /dev/ [k]mem Backup adresów i monitorowanie pamięci ;)

Co dalej? Problemy: Problemy z podmianą sys_call_table Jądro ochrania sys_call_table Moduły łatwo wykryć i się zabezpieczyć Brak możliwości pisania do /dev/ [k]mem 'vmlinuz' prosto monitorować

Debug Register Rootkit!

Debug Register Rootkit! Debugować można software'owo...

Debug Register Rootkit! Debugować można software'owo...... ale architektura x86 ma wsparcie sprzętowe

Debug Register Rootkit! Debugować można software'owo...... ale architektura x86 ma wsparcie sprzętowe Ile osób na sali o tym wiedziało? :)

Debug Register Rootkit! Debugować można software'owo...... ale architektura x86 ma wsparcie sprzętowe Ile osób na sali o tym wiedziało? :) Rejestry DR*: DR[0..3] breakpoint DR6 modyfikowany w czasie wystąpienia breakpoint'a DR7 konfigurowanie kiedy ma być wywołane przerwanie

Debug Register Rootkit! Co możemy zrobić? Breakpoint na system_call i sysetner_entry

Debug Register Rootkit! Co możemy zrobić? Breakpoint na system_call i sysetner_entry Wygenerowanie przerwania 1

Debug Register Rootkit! Co możemy zrobić? Breakpoint na system_call i sysetner_entry Wygenerowanie przerwania 1 Wpis w IDT wskazuje na funkcję do_debug... podmieńmy ją!

Debug Register Rootkit! Co możemy zrobić? Breakpoint na system_call i sysetner_entry Wygenerowanie przerwania 1 Wpis w IDT wskazuje na funkcje do_debug... podmieńmy ją! OMG! Znowu przejęliśmy kontrolę nad wszystkimi przerwaniami ;)

Debug Register Rootkit! Zalety: Bardzo cichy Bardzo trudny do wykrycia Cały czas jesteśmy w przestrzeni jądra ;)

Debug Register Rootkit! Zalety: Bardzo cichy Bardzo trudny do wykrycia Cały czas jesteśmy w przestrzeni jądra ;) Wady: Zaawansowany i trudny do napisania Działa TYLKO na archiktekturze x86

Debug Register Rootkit! Jak wykryć? Monitorować rejestry procesora DR*...

Debug Register Rootkit! Jak wykryć? Monitorować rejestry procesora DR*... Konkluzja... ktoś ma prawa root?

Debug Register Rootkit! Jak wykryć? Monitorować rejestry procesora DR*... Konkluzja... ktoś ma prawa root? GAME OVER!!!

Black Market...

Black Market...

Black Market...

PHALANX!!! Black Market...

PHALANX!!! Black Market...

Black Market... PHALANX!!! - charakterystyka: Oficjalnie nie istnieje

Black Market... PHALANX!!! - charakterystyka: Oficjalnie nie istnieje Dostępne źródła są dla wersji phalanx 1 beta 6 (z roku 2005)

PHALANX!!! - charakterystyka: Oficjalnie nie istnieje Dostępne źródła są dla wersji phalanx 1 beta 6 (z roku 2005) Black Market... Świat dowiedział się o ciągłym rozwijaniu rookita w 2008 automat do zabijania SSH keys

PHALANX!!! - charakterystyka: Oficjalnie nie istnieje Dostępne źródła są dla wersji phalanx 1 beta 6 (z roku 2005) Black Market... Świat dowiedział się o ciągłym rozwijaniu rookita w 2008 automat do zabijania SSH keys Podobno 2.4 jest ostatnim wypustem...

PHALANX!!! - charakterystyka: Oficjalnie nie istnieje Dostępne źródła są dla wersji phalanx 1 beta 6 (z roku 2005) Black Market... Świat dowiedział się o ciągłym rozwijaniu rookita w 2008 automat do zabijania SSH keys Podobno 2.4 jest ostatnim wypustem... a ostatnią wersją którą analizowałem była 2.5e ;)

Black Market... PHALANX!!! - charakterystyka: Własny protokół komunikacji

Black Market... PHALANX!!! - charakterystyka: Własny protokół komunikacji Co najmniej podwójne szyfrowanie

Black Market... PHALANX!!! - charakterystyka: Własny protokół komunikacji Co najmniej podwójne szyfrowanie Omija restrykcje związane z urządzeniem /dev/ [k]mem

Black Market... PHALANX!!! - charakterystyka: Własny protokół komunikacji Co najmniej podwójne szyfrowanie Omija restrykcje związane z urządzeniem /dev/ [k]mem Przejmuje prawie wszystkie wywołania systemowe oraz uchwyty sygnałów

Black Market... PHALANX!!! - charakterystyka: Własny protokół komunikacji Co najmniej podwójne szyfrowanie Omija restrykcje związane z urządzeniem /dev/ [k]mem Przejmuje prawie wszystkie wywołania systemowe oraz uchwyty sygnałów Doskonale się ukrywa

Black Market... PHALANX!!! - charakterystyka: Własny protokół komunikacji Co najmniej podwójne szyfrowanie Omija restrykcje związane z urządzeniem /dev/ [k]mem Przejmuje prawie wszystkie wywołania systemowe oraz uchwyty sygnałów Doskonale się ukrywa Ma opcję 'uninstall' ;)...

Black Market... PHALANX!!! - charakterystyka: Własny protokół komunikacji Co najmniej podwójne szyfrowanie Omija restrykcje związane z urządzeniem /dev/ [k]mem Przejmuje prawie wszystkie wywołania systemowe oraz uchwyty sygnałów Doskonale się ukrywa Ma opcję 'uninstall' ;)... ale nie usuwa ona rootkit'a całkowicie!!!

PHALANX!!! - charakterystyka: Ma błędy ;p Black Market...

PHALANX!!! - charakterystyka: Ma błędy ;p Black Market... Można wykryć rootkit'a prosty błąd = czas do załatania

PHALANX!!! - charakterystyka: Ma błędy ;p Black Market... Można wykryć rootkit'a prosty błąd = czas do załatania Ma remote stack overflowa pre-auth ;)

PHALANX!!! - charakterystyka: Ma błędy ;p Można wykryć rootkit'a prosty błąd = czas do załatania Ma remote stack overflowa pre-auth ;) Black Market... Możliwość zdalnego wykrycia zainfekowanych maszyn

PHALANX!!! - charakterystyka: Ma błędy ;p Black Market... Można wykryć rootkit'a prosty błąd = czas do załatania Ma remote stack overflowa pre-auth ;) Możliwość zdalnego wykrycia zainfekowanych maszyn Możliwość napisania remote exploita na zainfekowane maszyny ;)

PHALANX!!! - charakterystyka: Ma błędy ;p Black Market... Można wykryć rootkit'a prosty błąd = czas do załatania Ma remote stack overflowa pre-auth ;) Możliwość zdalnego wykrycia zainfekowanych maszyn Możliwość napisania remote exploita na zainfekowane maszyny ;) Są rzeczy, o których mało kto wie ;)

Black Market... Upgrade Debug Register Rootkit: Break point na samego siebie naprawdę trudny do wykrycia! ;)

?

DZIĘKUJĘ ZA UWAGĘ!