View
81
Download
6
Category
Preview:
DESCRIPTION
Citation preview
mattagile.com
Analiza zabezpieczeń alternatywnych i wiodących systemów operacyjnych
Security is a process, not a product
Paweł WyleciałMatt Harasymczuk
OS security analysis2010-04-19
mattagile.com
Prelegenci
Paweł Wyleciał
• Wargame: hack the code
• cc-hackme
• Vuln research
• Malware analysis
Razem piszemy pracę inżynierską dotyczącą analizy i metod obrony przed sieciami typu botnet
Mateusz Harasymczuk
• Programista w MBP sp. z o.o.
• Admin / network engineer
- Politechnika Poznańska
- Consdata sp. z o.o
- CK&B New York
mattagile.com
• W 1946 roku, Grace Hopper została zwolniona z czynnej służby wojskowej i wstąpiła do “Harvard Faculty at the Computation Laboratory”, gdzie kontynuowała pracę nad Mark II i Mark III.
• Jako operator wyśledziła przyczynę zepsucia komputera Mark II. Sprawcę uszkodzenia, ćmę, która została uwięziona w przekaźniku, usunęła ze sprzętu i przykleiła do zeszytu logów projektu, dokładnie 9 września 1945 roku.
• Od tamtego czasu usterki i błędy w oprogramowaniu nazywamy bug’ami.
It’s a bug
mattagile.com
Trochę historii
• robak Morrisa(1988) - wykorzystanie błędów typu buffer overflow w unixowych usługach sendmail, finger, rsh
• Ping of death(1996) – podatne systemy: Solaris, Linux, MacOS, DOS, Windows 3.11/95/NT, SCO Unix, AIX, HP-UX, Novell Netware
• Winnuke(1997) – Windows 3.11/95/NT – Out of band msg na port NetBIOS
• Windows NT getadmin exploit – błąd sprawdzania uprawnień, dll injection do procesu winlogon
• RPC service buffer overflow(2003) – windows 2k/XP, blaster worm
mattagile.com
Worst bugs ever
• July 28, 1962 -- Mariner I space probe. A bug in the flight software for the Mariner 1 causes the rocket to divert from its intended path on launch. Mission control destroys the rocket over the Atlantic Ocean. The investigation into the accident discovers that a formula written on paper in pencil was improperly transcribed into computer code, causing the computer to miscalculate the rocket's trajectory.
mattagile.com
Worst bugs ever
• 1982 -- Soviet gas pipeline. Operatives working for the Central Intelligence Agency allegedly plant a bug in a Canadian computer system purchased to control the trans-Siberian gas pipeline. The Soviets had obtained the system as part of a wide-ranging effort to covertly purchase or steal sensitive U.S. technology. The CIA reportedly found out about the program and decided to make it backfire with equipment that would pass Soviet inspection and then fail once in operation. The resulting event is reportedly the largest non-nuclear explosion in the planet's history.
mattagile.com
Skutki:
• Crash aplikacji (DoS)
• Wykonanie dowolnego kodu
• Eskalacja uprawnień
int main(int argc, char **argv) { char buf[256]; strcpy(buf, argv[1]); return 0; }
Stack Overflow
mattagile.com
• Skutki podobne w przypadku błędów stack overflow
Heap overflow
... char *username; char *buf; buf = (char*) malloc( 256 ); username = (char*) malloc(16); strcpy(username, “howl”); strcpy(buf, argv[1]); ...
mattagile.com
• Crashe, infinite loops (DoS)
• Mogą prowadzić do buffer overflowów
char buf[256]; short len; if ( len <= 256 ) memcpy(buf, argv[1], len); else return 1;
Integer overflow
mattagile.com
• Ominięcie kontroli dostępu
• Uszkodzenie danych
• Linux kernel local root exploit
char * filename = "/tmp/test.tmp"; char buffer[256]; FILE *f; scanf ( "%s", buffer ); if( ! access (filename, W_OK) ) { ... f = fopen ( filename, "a+" ); fwrite ( "\n", sizeof(char), 1, f ); fwrite ( buffer, sizeof(char), strlen(buffer), f); fclose (f); } else printf("No permission \n");
Race condition
mattagile.com
• Wykonanie kodu
• Eskalacja przywilejów
• Błędy te raczej już nie występują (łatwe do wykrycia)
... printf(argv[1]); ... ./program %x%x ./program %n
Format string bug
mattagile.com
Najnowszy błąd w kernelu linuksa • Niecodzienny przykład błędu
• Crash
• Wykonanie kodu
• Działa na SELinux
// initialize sk with tun->sk struct sock *sk = tun->sk; ... if (!tun) // if tun is NULL return error return POLLERR;
NULL pointer dereference
mattagile.com
• XP SP 2 - DEP (Data execution prevention)
• Strony pamięci z sekcji data oznaczone jako niewykonywalne
• ASLR (Address Space Layout Randomization) Windows Vista
• Położenie stosu, stery i środowiska procesu jest losowe
• Stack cookies (canary)
• SafeSEH (Safe exception handlers)
• SEHOP
Windows
mattagile.com
• DEP – wady
• Dla dobrej skuteczności wymagany jest procesor rozumiejący bit NX
• Domyślnie nie jest aktywny dla wszystkich procesów w systemie
• Bit NX zazwyczaj domyślnie nie jest ustawiony
• Return-oriented shellcode (wyłączenie DEP)
• Software DEP = SafeSEH
• http://www.semantiscope.com/research/BHDC2010/BHDC-2010-Paper.pdf
Windows
mattagile.com
• ASLR – wady
• Losowość tylko na 8 bitach adresu, co daje 256 możliwości
• Możliwość ataku bruteforce
• Znalezienie DLL nieobjętego ASLR
• Pierwsze wydanie ASLR dla Visty podatne
Windows
mattagile.com
• ASLR od kernela 2.6.12
• Gcc stack protector (canary value)
• Grsecurity
- Ochrona przed atakami stack, heap overflow i race condition
- Zapobieganie wykonania kodu w kernelu, wycieku istotnych danych(memory leaks) oraz atakom typu null pointer dereferernce
- Ulepszona wersja ASLR
Linux
mattagile.com
• ASLR w podstawowej wersji cechuje się zbyt małą randomizacją
• Stack-protector na etapie kompilacji dołącza dodatkowe instrukcje – problem optymalizacyjny
Linux
mattagile.com
• Linux Fedora + Xen
• Security by Isolation (sandbox)
• „lekkie” wirutalne maszyny
Qubes OS
mattagile.com
• http://www5.us.freebsd.org/doc/en_US.ISO8859-1/books/handbook/security.html
• man security(7)
• OpenSSH
• Kerberos5
• VPN over IPsec
• File System Access Control Lists
• Debian GNU/FreeBSD
FreeBSD
mattagile.com
FreeBSD
• Portaudit provides a system to check if installed ports are listed in a database of published security vulnerabilities. After installation it will update this security database automatically and include its reports in the output of the daily security run.
• list of published security vulnerabilities
mattagile.com
TrustedBSD
• access control lists (ACL)
• event auditing and OpenBSM (Open Source Basic Security Module)
• extended attributes i UFS 2
• fine-grained capabilities (dla użytkowników, np root)
• GEOM cryptographic framework (framework transformacji żądań I/O)
• mandatory access control (MAC)
• OpenPAM
• security-enhanced BSD (SEBSD) — SELinux-like tool
mattagile.com
• Address space layout randomization (ASLR)
• “Only two remote holes in the default install, in a heck of a long time!”
• OpenBSD jest projektem kanadyjskim, ze względu na prawo eksportu nardzędzi kryptograficznych poza teren USA
• główny cel: bezpieczeństwo
• polityka Full Disclosure
• Proces audytu kodu źródłowego
• "Secure by Default".
OpenBSD
mattagile.com
OpenSSH Remote Challenge Vulnerability
• Title: OpenSSH Remote Challenge Vulnerability
• Class: Buffer Overflow
• Remotely Exploitable: Yes
• Locally Exploitable: No
• Date Published: 2002-06-23
• Mark Dowd of the ISS X-Force
• http://www.openssh.com/txt/iss.adv
mattagile.com
OpenSSH Remote Challenge Vulnerability
• Podatność istniała w mechanizmie autentykacji "challenge-response" w daemon’ie OpenSSH (sshd).
• Ten mechanizm jest częścią protokołu SSH2, służy do sprawdzania tożsamości użytkownika przez generowanie “challenge” i zmuszenie użytkownika do podania określonej liczby odpowiedzi
• Potwierdzono możliwość wysłania spreparowanej odpowiedzi wywołującej błąd przepełnienia buforu, który może skutkować zdalnym atakiem typu “denial of service” lub całkowitą “compromise” systemu
• Daemon OpenSSH jest uruchomiony z uprawnieniami superuser’a, którego uprawnienia można uzyskać po eksploitacji dziury
• flagi SKEY i BSD_AUTH podczas kompilacji OpenSSH
mattagile.com
OpenBSD's IPv6 mbufs remote kernel buffer overflow
• Title: OpenBSD's IPv6 mbufs remote kernel buffer overflow
• Class: Buffer Overflow
• Remotely Exploitable: Yes
• Locally Exploitable: No
• Date Published: 2007-03-13
• Alfredo Ortega from Core Security Technologies
• http://lwn.net/Articles/225947/
mattagile.com
OpenBSD's IPv6 mbufs remote kernel buffer overflow
• Kernel OpenBSD posiadał błąd w pamięci kodu zajmującego się obsługą pakietów IPv6. Wykorzystanie tego błędu może spowodować:
- “Remote execution of arbitrary code at the kernel level” na podatnych systemach (całkowity “compromise” systemu)
- “Remote denial of service” atak przeciwko podatnym systemom (crash systemu spowodowany kernel panic’iem)
• Błąd może być wykorzystany przez wysłanie specialnie spreparowanego pakietu IPv6
mattagile.com
• http://mail-index.netbsd.org/netbsd-bugs/
• http://www.netbsd.org/support/security/
• http://www.netbsd.org/support/security/advisory.html
NetBSD
mattagile.com
• The New VFS Model
• New I/O Device Model
• The Light Weight Kernel Threading Model (scheduler - planista)
• http://leaf.dragonflybsd.org/mailarchive/kernel/
DragonflyBSD
mattagile.com
Mac OS X
• Zabezpieczony out-of-the-box
• podpisane cyfrowo aktualizacje
• FileVault, Szyfrowanie partycji, Bezpieczne opróżnianie kosza
• ochrona środowiska uruchomieniowego aplikacji za pomocą stack canaries, sprawdzanie poprawności stosu, i usługi systemowe w sandbox’ach
• Pluginy przeglądarek jako osobne procesy
mattagile.com
Mac OS X
• 64-bit’owe środowisko, no-execute data na stercie, podawanie agrumentów funkcji do rejestrów a nie na stos
• wbudowane wsparcie dla virtual private network (VPN)
• Pluggable Authentication Modules (PAM)
• bezpieczne cache’owanie sieciowych systemów uwierzytelniania
• Open Directory, Kerberos, NTLMv2, Active Directory
• konta Administrator i root
mattagile.com
Mac OS X
• Mandatory access controls (MAC)
• “Protection against Trojan horse downloads” :}
• Execute disable
• Address space layout randomization (ASLR) - niepełna implementacja
• Sandboxing
• Podpisywanie aplikacji
• Szyfrowana pamięć witrualna
mattagile.com
• pochodna Mac OS X
• odziedziczy kernel Darwin
• posiada Unixową strukturę
• posiada cztery warstwy abstrakcji:
• the Core OS layer
• the Core Services layer
• the Media layer
• Cocoa Touch layer
iPhone OS
mattagile.com
iPhone OS: jailbreaking and SIM unlocking
• iPhone Dev Team
• PwnageTool
• yellowsn0w -> ultrasn0w
• GeoHot (George Hotz)
• purplera1n -> blackra1n
mattagile.com
• Szybko reagujący team developerów
• http://groups.google.com/group/android-security-announce/browse_thread/thread/6846dada5ed4db70
• Każda aplikacja uruchamiana w androidzie, wykonuje się w specjalnym środowisku sandbox’a, jeżeli aplikacja wykona nieprawidłową operację, lub zostanie skompromitowana, napastnik otrzyma możliwość ingerencji jedynie w obrębie przestrzeni uruchomieniowej
• Otwarty kod źródłowy
Google Android
mattagile.com
Android security flaws
• Android na początku swojego istnienia został wypuszczony posiadając dobrze znane i udokumentowane błędy w przeglądarce oraz silniku renderującym obrazki. Problem stanowiło użycie przestarzałej wersji web-kit’a oraz pozostałych bibliotek przeglądarki (PacketVideo), powyższe błędy załatano.
• Ze względu na fakt iż aplikacje rozpowszechniane za pomocą Google Android Market nie podlegają wstępnej weryfikacji jak ma to miejsce w AppStore, a tylko oflagowywane przez użytkowników, jako ewentualnie niebezpieczne, klienci narażeni są na możliwość ściągnięcia aplikacji zawierającej backdoor lub wykradającej dane. Zanim koncern zareaguje może minąć kilka dni, a kilka aplikacji bankowych zawierających maleware zostało już usuniętych z Android Market
• Błąd rozróżniania poleceń od tekstów użytkownika
mattagile.com
• Bezpieczeństwo systemów plików
• Bezpieczeństwo cloud-computing i obliczeń rozproszonych
• Botnety
• Malware (wirusy, trojany, robaki, rootkity, backdoory)
• Eavesdropping (Man in the middle), VPN, SSH
• hack proofing (IDS, IPS, Firewall)
• Server and services bugs (DNS, NetBIOS, SSH, FTP, HTTP)
TODO
Recommended