Techniky síťového útoku Windows Embedded Design Review April 8-9 2004 Techniky síťového útoku Ondřej Holas Senior Systems Consultant DIGI TRADE, s.r.o. © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
UPOZORNĚNÍ Tato prezentace a ukázky Všechny ukázky se týkají kódu nejsou návodem na trestnou činnost neodkrývají zranitelnosti konkrétního SW Všechny ukázky se týkají kódu napsaného pouze pro tuto prezentaci který snadno demonstruje princip dané zranitelnosti – praxe je komplikovanější
Obecně... Drtivá většina bezpečnostních slabin programů tkví ve špatně napsaném kódu ve špatné konfiguraci Útoky, o kterých se dříve nevědělo nebo byly v teoretické rovině, jsou dnes aktuální ...a to co dnes považujeme za prakticky nemožné může být hrozbou zítřka!
Paranoidní desatero „Ze sítě může přijít cokoliv“ Všechny vstupy a parametry zkontroluj Hlídej si práci s pamětí Používej neprivilegovaný kontext Povoluj jen to, co je potřeba (práva, síť) Používej silná hesla Pravidelně sleduj logy Zálohuj a pravidelně zálohy kontroluj Ke každé chybě dohledej její příčinu Aplikuj bezpečnostní záplaty Nevěř nikomu a ničemu
Klasifikace síťových útoků Denial of Service (DoS) Security Check Bypass Remote Code Execution Buffer Overrun Script Injection, Cross-site Scripting (XSS) Timing ...kuriozity, budoucnost, ?
Co je špatně?
SQL Injection Klasický příklad Script Injection Nekontrolované vstupy Obrana kanonizace ' → '' (dva apostrofy) lépe používání parametrů Doplňující ochrana neprivilegované loginy na SQL serveru explicitní práva používání uložených procedur
Windows Embedded Design Review April 8-9 2004 SQL Injection © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Buffer Overrun Útok na nekontrolovanou práci s bufferem na zásobníku (lokální proměnné) v haldě (heap) Cílem je změnit obsah proměnné, která řídí další větvení návratovou adresu z procedury exception handler frame, VMT, další struktury návratovou adresu do podvrženého kódu Ještě se trefit...
Struktura zásobníku (x86) int secti(int a,int b) { int p,q; p=(a<<1)-b; q=(b<<1)-a; return p+q; } řetězec dříve volaných procedur b parametry a push ebp mov ebp,esp sub esp,8 mov eax,dword ptr [ebp+8] shl eax,1 sub eax,dword ptr [ebp+0Ch] mov dword ptr [ebp-4],eax mov ecx,dword ptr [ebp+0Ch] shl ecx,1 sub ecx,dword ptr [ebp+8] mov dword ptr [ebp-8],ecx mov eax,dword ptr [ebp-4] add eax,dword ptr [ebp-8] mov esp,ebp pop ebp ret návratová adresa původní EBP EBP p lokální proměnné q ESP volno
řetězec dříve volaných procedur Drzá vstupní data řetězec dříve volaných procedur param2 parametry param1 útočníkův kód ? vstupní data návratová adresa původní EBP buffer lokální proměnné pointer volno
Obrana proti Buffer Overrun V první řadě kontrola vstupů Nezbytná kontrola práce s pamětí Pojistné mechanismy podpora v CPU - NX/XD (HW DEP) exception handling, SafeSEH (SW DEP) překlad s volbou /GS ani jeden není účinný na všechny typy BO útoků Preventivní zabezpečení kódu Managed Code
Windows Embedded Design Review April 8-9 2004 Buffer Overrun © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.
Dotazy? Ondřej Holas oholas@digi-trade.cz
Windows Embedded Design Review April 8-9 2004 © 2005 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.