SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
The OWASP Foundation
http://www.owasp.org
OWASP meeting
Security Session
Jan Kopecký
Czech chapter leader
rnmx123@gmail.com
The OWASP Foundation
http://www.owasp.org
O mě
• OWASP chapter leader
• Senior ethical hacker pro ING
• Founder captes.cz
• Skills
• Webová bezpečnost (server/client side)
• Reverzní inženýrství
• Psaní exploitů
• Analýza malware
• Penetrační testy
The OWASP Foundation
http://www.owasp.org
Agenda
Co je buffer overflow?
Exploity na XP – Stack cookie, SEH, DEP
Exploity na Win7 – ASLR
QA
The OWASP Foundation
http://www.owasp.org
Buffer overflow
The OWASP Foundation
http://www.owasp.org
Buffer overflow
The OWASP Foundation
http://www.owasp.org
Buffer overflow
void TriggerOverflow(char *Buffer)
{
char Small_Buf[512];
strcpy(Small_Buf,Buffer);
}
int main (int argc, char **argv)
{
TriggerOverflow(argv[1]);
}
0x00000000
0xFFFFFFFF
Vyhrazeno pro
Small_Buf
EBP – ulozena
EIP – ulozena
* argv[1]
The OWASP Foundation
http://www.owasp.org
Buffer overflow
void TriggerOverflow(char *Buffer)
{
char Small_Buf[512];
strcpy(Small_Buf,Buffer);
}
int main (int argc, char **argv)
{
TriggerOverflow(argv[1]);
}
0x00000000
0xFFFFFFFF
Vyhrazeno pro
Small_Buf
EBP – ulozena
EIP – ulozena
* argv[1]
“A” * 560
AAAAAAAA
AAAAAAAA
AAAAAAAA
AAAAAAAA
AAAAAAAA
AAAAAAAA
……
The OWASP Foundation
http://www.owasp.org
Buffer overflow
• Cílem je přepsat
uloženou hodnotu EIP
na stacku.
• EAX ukazuje na začátek
našeho Small_Buf.
• Když přepíšeme EIP na
stacku adresou „jmp
eax“ skočíme přímo na
začátek našeho
shellcodu
0x00000000
0xFFFFFFFF
Shellcode +
padding
padding
Jmp eax
* argv[1]
EAX
The OWASP Foundation
http://www.owasp.org
Buffer overflow
The OWASP Foundation
http://www.owasp.org
Buffer overflow
DEMO
The OWASP Foundation
http://www.owasp.org
Buffer overflow –
Stack Cookie
Jako snaha Microsoftu zamezit exploitaci byla
představena „stack cookie“. 0x00000000
0xFFFFFFFF
Vyhrazeno pro
Small_Buf
EBP – ulozena
EIP – ulozena
* argv[1]
Stack cookie
The OWASP Foundation
http://www.owasp.org
DEMO
Buffer overflow –
Stack Cookie
The OWASP Foundation
http://www.owasp.org
Buffer overflow – SEH
Jestliže cookie nesedí, je zavolán SEH (Exception
handler)
Pointer to next SEH
SE function
Pointer to next SEH
SE function
FFFFFFFF
SE function
TEB
FS[0]
Program se ukončí a náš shellcode se
neprovede, jenže…
The OWASP Foundation
http://www.owasp.org
0x00000000
0xFFFFFFFF
Reserved for
Small_Buf
EBP – Saved
EIP – Saved
* argv[1]
SE Function
Pointer to next SEH
SEH je také uložen na stacku,
můžeme jej tedy přepsat, otázka
je čím..
V prologu exception
handleru je hodnota
„Pointer to next SEH“
uložena na stack –
konkrétně ESP+8. Jestliže
přepíšeme SE Function
adresou obsahující
POP/POP/RET; RET se
vrátí do „Pointer to next
SEH“
Buffer overflow – SEH
The OWASP Foundation
http://www.owasp.org
0x00000000
0xFFFFFFFF
Reserved for
Small_Buf
EBP – Saved
EIP – Saved
* argv[1]
SE Function
Pointer to next SEH
AAAAAAAAAA
AAAAAAAAAA
AAAAAAAAAA
AAAAAAAAAA
AAAAAAAAAA
AAAAAAAAAA
AAAAAAAAAA
SHORT JMP
POP/POP/RET
Shellcode
1. Přepíšeme buffer, tak aby:
• SE Function ->
POP/POP/RET
• Pointer to next SEH ->
adresa SHORT JMP
2. Cookie při kontrole nesedí,
zavolá se náš podstrčený
SEH
3. POP/POP/RET přenese
kontrolu (EIP) na SHORT
JMP -> přistaneme v
Shellcodu
Buffer overflow – SEH
The OWASP Foundation
http://www.owasp.org
DEMO
Buffer overflow – SEH
The OWASP Foundation
http://www.owasp.org
Buffer overflow – DEP
Stack a heap nejsou spustitelné, nemůžeme skočit do shellcode a spustit jej.
OptIn : Dep se vztahuje pouze na některé Windows služby
OptOut : DEP je aktivován pro všechny procesy, vyjma těch na whitelistu
AlwaysOn : DEP je vždy aktivován, bez vyjímek
AlwaysOff : DEP je vypnutý
Windows XP SP2, XP SP3, Vista SP0 : OptIn
Windows Vista SP1 : OptIn + Permanent DEP
Windows 7: OptIn + Permanent DEP
Windows Server 2003 SP1 and up : OptOut
Windows Server 2008 and up : OptOut + Permanent DEP
Permanent DEP – když je během kompilace nastaven /NXCOMPAT
The OWASP Foundation
http://www.owasp.org
Buffer overflow – DEP
Můžeme sice přepsat buffer tak, jak
jsme již viděli, ale nespustíme ani NOP.
The OWASP Foundation
http://www.owasp.org
Buffer overflow – DEP
Naštěstí Dino Dai Zovi
definoval pojem ROP(Return
Oriented Programing):
The OWASP Foundation
http://www.owasp.org
Buffer overflow – DEP
Instrukce + RET = Gadget
Musíme využít stávající kód v aplikaci (musí být
„executable“) a postavit Gadgety tak, abychom
zavolali jednu z API (a nastavit její parametry),
která umožní DEP vypnout.
• VirtualAlloc()
• SetProcessDEPPolicy()
• NtSetInformationProcess()
• VirtualProtect()
• WriteProcessMemory()
The OWASP Foundation
http://www.owasp.org
Buffer overflow – DEP
Stack Pivot
Placeholder 1
Placeholder 2
Set up Placeholder 1
Set up Placeholder 2
Jump to VirtualProtect
Padding
Shellcode
VirtualProtect()
Stack
The OWASP Foundation
http://www.owasp.org
Buffer overflow – DEP
Zadání: Dostaňte „5“ do EBX a přičtěte k němu 60. Výsledek uložte
do EAX.
1. Gadget POP EBX; RET
2. Gadget ADD EBX, 60; RET
3. Gadget MOV EAX, EBX;
POP EDX;
RET
34BA4378 POP EBX; RET
34BA9A78 ADD EBX, 60; RET
34BA4FC8 MOV EAX, EBX;
POP EDX;
RET
34BA4378
34BA9A78
34BA4FC8
DEADBEEF
00000005
The OWASP Foundation
http://www.owasp.org
Buffer overflow – DEP
Přesvědčme se, že můžeme opravdu spouštět
Gadgety..
DEMO
… a spouštět kód.
The OWASP Foundation
http://www.owasp.org
ASLR
Address Space Layout Randomization
(/DYNAMICBASE)
Nemůžeme se nadále spoléhat na statické
adresy, jako v předchozích příkladech:
004013FD JMP EAX
10024F5A POP/POP/RET
7C14DF3C CALL VirtualProtect
Po každém resetu dojde k načtení
modulů na různé místo v paměti
The OWASP Foundation
http://www.owasp.org
ASLR bypass
• Částečné přepsání
• Non-ASLR modul – stále aktuální, problém Force ASLR
• „Leaks“ – téma na samostatnou přednášku
• Manipulace s délkou nejen BSTR – moderní hlavně při
exploitaci UAF u browserů
The OWASP Foundation
http://www.owasp.org
ASLR bypass Částečné
přepsání
LOW HIGH
12 34 56 78
Pouze tato část je randomizována. Musíme najít
užitečnou instrukci na adrese 5678 XXXX .
The OWASP Foundation
http://www.owasp.org
ASLR bypass – non
ASLR modul
• !mona module
• !mona jmp –r esp
DEMO
The OWASP Foundation
http://www.owasp.org
ASLR bypass –
Length overwrite
Změnímeli vhodně délku stringu, můžeme číst více
adresního prostoru, než bychom měli (můžeme číst celý
adress space náležící browseru).
Délka Data Null b.
The OWASP Foundation
http://www.owasp.org
ASLR bypass –
Length overwrite
DEMO
The OWASP Foundation
http://www.owasp.org
ASLR bypass –
Length overwrite
Náš kód musí udělat následující:
Zjistit, jaký objekt jsme poškodili
Poškodit délku dalšího objektu
Zjistiti base adresu Flash modulu (MZ header scan)
Zjistit adresu Kernel32 (IAT)
Najít VirtualProtect
Dynamicky sestavit ROP
Spustit ROP
The OWASP Foundation
http://www.owasp.org
ASLR bypass –
Length overwrite
DEMO
The OWASP Foundation
http://www.owasp.org
32
Q&A

Weitere ähnliche Inhalte

Ähnlich wie Exploitace – od minulosti po současnost - Jan Kopecký

Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnost
chaplin06
 
Javascript na steroidech
Javascript na steroidechJavascript na steroidech
Javascript na steroidech
seznamVyvojari
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně
Jiří Mareš
 

Ähnlich wie Exploitace – od minulosti po současnost - Jan Kopecký (15)

Nette Tester / Posobota
Nette Tester / PosobotaNette Tester / Posobota
Nette Tester / Posobota
 
MicroPython IoT vlaxa
MicroPython IoT vlaxaMicroPython IoT vlaxa
MicroPython IoT vlaxa
 
IoT Hackathon
IoT HackathonIoT Hackathon
IoT Hackathon
 
Product API in MallGroup
Product API in MallGroupProduct API in MallGroup
Product API in MallGroup
 
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOT
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOTMikro­kontrolér s Wi-Fi za $3! nejen pro IOT
Mikro­kontrolér s Wi-Fi za $3! nejen pro IOT
 
Odpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnostOdpoledne se Seznamem II - Provozní bezpečnost
Odpoledne se Seznamem II - Provozní bezpečnost
 
Javascript na steroidech
Javascript na steroidechJavascript na steroidech
Javascript na steroidech
 
Představení Ruby on Rails
Představení Ruby on RailsPředstavení Ruby on Rails
Představení Ruby on Rails
 
API Obludárium (API 2018, Praha)
API Obludárium (API 2018, Praha)API Obludárium (API 2018, Praha)
API Obludárium (API 2018, Praha)
 
Noční můry webového vývojáře
Noční můry webového vývojářeNoční můry webového vývojáře
Noční můry webového vývojáře
 
Bezpečnost na webu
Bezpečnost na webuBezpečnost na webu
Bezpečnost na webu
 
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
Úvod do vývoje pro platformu iOS [ZČU 24.4.2014]
 
20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně20110511 Vývoj software - produktivně, efektivně, kvalitně
20110511 Vývoj software - produktivně, efektivně, kvalitně
 
Implementace Openstacku v LMC – představy vs. realita
Implementace Openstacku v LMC – představy vs. realita Implementace Openstacku v LMC – představy vs. realita
Implementace Openstacku v LMC – představy vs. realita
 
WebSockets - how to do real-time applications in PHP
WebSockets - how to do real-time applications in PHPWebSockets - how to do real-time applications in PHP
WebSockets - how to do real-time applications in PHP
 

Mehr von Security Session

Falsifikace biometricke charakteristiky a detekce zivosti
Falsifikace biometricke charakteristiky a detekce zivostiFalsifikace biometricke charakteristiky a detekce zivosti
Falsifikace biometricke charakteristiky a detekce zivosti
Security Session
 

Mehr von Security Session (20)

Getting your hands dirty: How to Analyze the Behavior of Malware Traffic / SE...
Getting your hands dirty: How to Analyze the Behavior of Malware Traffic / SE...Getting your hands dirty: How to Analyze the Behavior of Malware Traffic / SE...
Getting your hands dirty: How to Analyze the Behavior of Malware Traffic / SE...
 
Základy reverse engineeringu a assembleru / KAREL LEJSKA, MILAN BARTOŠ [DEFEN...
Základy reverse engineeringu a assembleru / KAREL LEJSKA, MILAN BARTOŠ [DEFEN...Základy reverse engineeringu a assembleru / KAREL LEJSKA, MILAN BARTOŠ [DEFEN...
Základy reverse engineeringu a assembleru / KAREL LEJSKA, MILAN BARTOŠ [DEFEN...
 
Insights of a brute-forcing botnet / VERONICA VALEROS [CISCO]
Insights of a brute-forcing botnet / VERONICA VALEROS [CISCO]Insights of a brute-forcing botnet / VERONICA VALEROS [CISCO]
Insights of a brute-forcing botnet / VERONICA VALEROS [CISCO]
 
Softwarove protektory / KAREL LEJSKA, MILAN BARTOŠ [DEFENDIO]
Softwarove protektory / KAREL LEJSKA, MILAN BARTOŠ [DEFENDIO]Softwarove protektory / KAREL LEJSKA, MILAN BARTOŠ [DEFENDIO]
Softwarove protektory / KAREL LEJSKA, MILAN BARTOŠ [DEFENDIO]
 
Wintel Hell: průvodce devíti kruhy Dantova technologického pekla / MARTIN HRO...
Wintel Hell: průvodce devíti kruhy Dantova technologického pekla / MARTIN HRO...Wintel Hell: průvodce devíti kruhy Dantova technologického pekla / MARTIN HRO...
Wintel Hell: průvodce devíti kruhy Dantova technologického pekla / MARTIN HRO...
 
Robots against robots: How a Machine Learning IDS detected a novel Linux Botn...
Robots against robots: How a Machine Learning IDS detected a novel Linux Botn...Robots against robots: How a Machine Learning IDS detected a novel Linux Botn...
Robots against robots: How a Machine Learning IDS detected a novel Linux Botn...
 
#ochranadat pred sebou samotným / MATEJ ZACHAR [SAFETICA TECHNOLOGIES S.R.O.]
#ochranadat pred sebou samotným / MATEJ ZACHAR [SAFETICA TECHNOLOGIES S.R.O.]#ochranadat pred sebou samotným / MATEJ ZACHAR [SAFETICA TECHNOLOGIES S.R.O.]
#ochranadat pred sebou samotným / MATEJ ZACHAR [SAFETICA TECHNOLOGIES S.R.O.]
 
Co vše skrývá síťový provoz a jak detekovat kybernetické hrozby? / MARTIN ŠKO...
Co vše skrývá síťový provoz a jak detekovat kybernetické hrozby? / MARTIN ŠKO...Co vše skrývá síťový provoz a jak detekovat kybernetické hrozby? / MARTIN ŠKO...
Co vše skrývá síťový provoz a jak detekovat kybernetické hrozby? / MARTIN ŠKO...
 
Bezpečnější pošta díky protokolu DANE / ONDŘEJ CALETKA [CESNET]
Bezpečnější pošta díky protokolu DANE / ONDŘEJ CALETKA [CESNET]Bezpečnější pošta díky protokolu DANE / ONDŘEJ CALETKA [CESNET]
Bezpečnější pošta díky protokolu DANE / ONDŘEJ CALETKA [CESNET]
 
Prezentace brno
Prezentace brnoPrezentace brno
Prezentace brno
 
OSINT and beyond
OSINT and beyondOSINT and beyond
OSINT and beyond
 
Kontrola uživatelských účtů ve Windows a jak ji obejít - Martin Dráb
Kontrola uživatelských účtů ve Windows a jak ji obejít - Martin DrábKontrola uživatelských účtů ve Windows a jak ji obejít - Martin Dráb
Kontrola uživatelských účtů ve Windows a jak ji obejít - Martin Dráb
 
Research in Liveness Detection - Martin Drahanský
Research in Liveness Detection - Martin DrahanskýResearch in Liveness Detection - Martin Drahanský
Research in Liveness Detection - Martin Drahanský
 
Dolování dat z řeči pro bezpečnostní aplikace - Jan Černocký
Dolování dat z řeči pro bezpečnostní aplikace - Jan ČernockýDolování dat z řeči pro bezpečnostní aplikace - Jan Černocký
Dolování dat z řeči pro bezpečnostní aplikace - Jan Černocký
 
Turris - Robert Šefr
Turris - Robert ŠefrTurris - Robert Šefr
Turris - Robert Šefr
 
Co se skrývá v datovém provozu? - Pavel Minařík
Co se skrývá v datovém provozu? - Pavel MinaříkCo se skrývá v datovém provozu? - Pavel Minařík
Co se skrývá v datovém provozu? - Pavel Minařík
 
Jak odesílat zprávy, když někdo vypne Internet - Pavel Táborský
Jak odesílat zprávy, když někdo vypne Internet - 	Pavel TáborskýJak odesílat zprávy, když někdo vypne Internet - 	Pavel Táborský
Jak odesílat zprávy, když někdo vypne Internet - Pavel Táborský
 
Two Years with botnet Asprox - Michal Ambrož
Two Years with botnet Asprox - Michal AmbrožTwo Years with botnet Asprox - Michal Ambrož
Two Years with botnet Asprox - Michal Ambrož
 
Falsifikace biometricke charakteristiky a detekce zivosti
Falsifikace biometricke charakteristiky a detekce zivostiFalsifikace biometricke charakteristiky a detekce zivosti
Falsifikace biometricke charakteristiky a detekce zivosti
 
Nehacknutelny web
Nehacknutelny webNehacknutelny web
Nehacknutelny web
 

Exploitace – od minulosti po současnost - Jan Kopecký