2010-04 os security analysis

60
mattagile.com Analiza zabezpieczeń alternatywnych i wiodących systemów operacyjnych Security is a process, not a product Paweł Wyleciał Matt Harasymczuk OS security analysis 2010-04-19

description

 

Transcript of 2010-04 os security analysis

Page 1: 2010-04 os security analysis

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

Page 2: 2010-04 os security analysis

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

Page 3: 2010-04 os security analysis

mattagile.comhistory of bugs

Page 4: 2010-04 os security analysis

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

Page 5: 2010-04 os security analysis

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

Page 6: 2010-04 os security analysis

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.

Page 7: 2010-04 os security analysis

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.

Page 8: 2010-04 os security analysis

mattagile.comRodzaje błędów

Page 9: 2010-04 os security analysis

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

Page 10: 2010-04 os security analysis

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]); ...

Page 11: 2010-04 os security analysis

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

Page 12: 2010-04 os security analysis

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

Page 13: 2010-04 os security analysis

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

Page 14: 2010-04 os security analysis

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

Page 15: 2010-04 os security analysis

mattagile.comObrona

Page 16: 2010-04 os security analysis

mattagile.comWindows

Page 17: 2010-04 os security analysis

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

Page 18: 2010-04 os security analysis

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

Page 19: 2010-04 os security analysis

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

Page 20: 2010-04 os security analysis

mattagile.comLinux

Page 21: 2010-04 os security analysis

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

Page 22: 2010-04 os security analysis

mattagile.com

• ASLR w podstawowej wersji cechuje się zbyt małą randomizacją

• Stack-protector na etapie kompilacji dołącza dodatkowe instrukcje – problem optymalizacyjny

Linux

Page 23: 2010-04 os security analysis

mattagile.comQubes OS

Page 24: 2010-04 os security analysis

mattagile.com

• Linux Fedora + Xen

• Security by Isolation (sandbox)

• „lekkie” wirutalne maszyny

Qubes OS

Page 25: 2010-04 os security analysis

mattagile.comRodziny *BSD

Page 26: 2010-04 os security analysis

mattagile.comFreeBSD

Page 27: 2010-04 os security analysis

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

Page 28: 2010-04 os security analysis

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

Page 29: 2010-04 os security analysis

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

Page 30: 2010-04 os security analysis

mattagile.comOpenBSD"Secure by Default"

Page 31: 2010-04 os security analysis

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

Page 32: 2010-04 os security analysis

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

Page 33: 2010-04 os security analysis

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

Page 34: 2010-04 os security analysis

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/

Page 35: 2010-04 os security analysis

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

Page 36: 2010-04 os security analysis

mattagile.comNetBSD

Page 37: 2010-04 os security analysis

mattagile.com

• http://mail-index.netbsd.org/netbsd-bugs/

• http://www.netbsd.org/support/security/

• http://www.netbsd.org/support/security/advisory.html

NetBSD

Page 38: 2010-04 os security analysis

mattagile.comDragonflyBSD

Page 39: 2010-04 os security analysis

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

Page 40: 2010-04 os security analysis

mattagile.comMac OS X

Page 41: 2010-04 os security analysis

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

Page 42: 2010-04 os security analysis

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

Page 43: 2010-04 os security analysis

mattagile.com

Mac OS X - Authentication

Page 44: 2010-04 os security analysis

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

Page 45: 2010-04 os security analysis

mattagile.comEmbedded operating systems

Page 46: 2010-04 os security analysis

mattagile.comiPhone OS

Page 47: 2010-04 os security analysis

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

Page 48: 2010-04 os security analysis

mattagile.com

iPhone OS: jailbreaking and SIM unlocking

• iPhone Dev Team

• PwnageTool

• yellowsn0w -> ultrasn0w

• GeoHot (George Hotz)

• purplera1n -> blackra1n

Page 49: 2010-04 os security analysis

mattagile.comAndroid

Page 50: 2010-04 os security analysis

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

Page 51: 2010-04 os security analysis

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

Page 52: 2010-04 os security analysis

mattagile.comSummary

Page 53: 2010-04 os security analysis

mattagile.com

Page 54: 2010-04 os security analysis

mattagile.com

Page 55: 2010-04 os security analysis

mattagile.com

Page 56: 2010-04 os security analysis

mattagile.com

Page 57: 2010-04 os security analysis

mattagile.comTODO

Page 58: 2010-04 os security analysis

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

Page 59: 2010-04 os security analysis

mattagile.comPytania?

Page 60: 2010-04 os security analysis

mattagile.com

Kontakt

Paweł Wyleciał Matt Harasymczuk