Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Fuzzing (automatizált sérülékenység felderítés) Előadók: Barta Csaba Major Marcell.

Hasonló előadás


Az előadások a következő témára: "Fuzzing (automatizált sérülékenység felderítés) Előadók: Barta Csaba Major Marcell."— Előadás másolata:

1 Fuzzing (automatizált sérülékenység felderítés) Előadók: Barta Csaba Major Marcell

2 Tartalom Definíció és egyszerű példákDefiníció és egyszerű példák Történeti áttekintésTörténeti áttekintés Hol állunk most?Hol állunk most? Saját fejlesztésű eszközökSaját fejlesztésű eszközök EredményekEredmények

3 Egy kis assembly… Egy kis assembly… 7C ADC EAX,5D7C91A4 7C FICOM DWORD PTR DS:[EAX+90D6827C] 7C80100B JL SHORT kernel32.7C800FE1 7C80100D ADD EAX,43D7C91 7C XCHG EAX,ECX 7C JL SHORT kernel32.7C C FCOM QWORD PTR DS:[EAX+90DFDC7C] 7C80101B JL SHORT kernel32.7C800FA5 7C80101D FIST WORD PTR DS:[EAX+937C287C] 7C JL SHORT kernel32.7C C LOOPDE SHORT kernel32.7C800FB7 7C JL SHORT 7C IN EAX,90 7C80102B JL SHORT kernel32.7C C80102D OUT 90,AL 7C80102F JL SHORT kernel32.7C80100A 7C IN EAX,90 7C JL SHORT kernel32.7C800FD6 7C XOR DL,BYTE PTR DS:[ECX+90D8E37C] 7C80103B JL SHORT kernel32.7C800FC3 7C80103D AAD 90 7C80103F JL SHORT kernel32.7C C ADC DL,BYTE PTR DS:[EAX+92AE7E7C] 7C JL SHORT kernel32.7C80101B 7C XCHG EAX,ECX 7C80104B JL SHORT kernel32.7C8010A7 7C80104D ADD EDX,DWORD PTR DS:[ECX C] 7C JL SHORT kernel32.7C80108F 7C AND EAX,E1FE7C90 7C80105A NOP 7C80105B JL SHORT kernel32.7C C80105D FST QWORD PTR DS:[EAX+90D9F47C] 7C JL SHORT kernel32.7C C OUT 90,EAX 7C JL SHORT kernel32.7C80103F 7C SALC 7C80106A NOP 7C80106B JL SHORT kernel32.7C8010AA 7C80106D STI 7C80106E NOP 7C80106F JL SHORT kernel32.7C8010E7 7C OR DWORD PTR DS:[ECX+933C777C],EDX 7C JL SHORT 7C OR DL,BYTE PTR DS:[ECX+9130C67C] 7C80107F JL SHORT 7C FCOM QWORD PTR SS:[EBP+97C0107C] 7C JL SHORT kernel32.7C8010D5 7C LOCK NOP 7C80108B JL SHORT kernel32.7C C80108D ADC DL,BYTE PTR DS:[EAX C] 7C JL SHORT kernel32.7C80101F 7C INC EDI 7C XCHG EAX,ECX 7C JL SHORT kernel32.7C8010E3 7C ADC DL,BYTE PTR DS:[EDX+92ED497C] 7C80109F JL SHORT kernel32.7C C8010A1 CMP BYTE PTR DS:[ECX+9141B17C],DL 7C8010A7 JL SHORT 7C8010A9 INC EBX 7C8010AA XCHG EAX,ECX 7C8010AB JL SHORT 7C8010AD LOOPDNE SHORT kernel32.7C80103F

4 Definíció és egyszerű példák

5 Mi is a „Fuzzing”? - Rövid definíció Fuzzing: Szoftvertesztelési módszer, amely a bemenetek folyamatos változtatásával vizsgálja, hogy a szoftver mennyire van felkészítve a „nem várt” adatok kezelésére. Alapvetően BlackBox jellegű megközelítés (csak a bemenetek helye és típusa ismert).

6 Hogyan működik: példa BMP formátum: header mezők BMP fájl méret Bitmap start offset Header mérete SzélességMagasságEgyszerű teszt esetek unsigned int-re: 0xFFFFFFFF 0x Érték +/- 1

7 Hogyan működik: példa HTTP/ OK Expires: Fri, 12 Sep :48:43 GMT Cache-Control: max-age=400 Content-Type: application/x-shockwave-flash Accept-Ranges: bytes Last-Modified: Thu, 29 May :39:19 GMT Content-Length: Date: Fri, 12 Sep :42:03 GMT Server: lighttpd/ Age: 1 … Connection: keep-alive HTTP válasz mezők Tartalom típusa Tartalom méret Egyszerű teszt esetek stringre: Üres (\0) AAAAA x %08x.%08x.%08x.%08x.%08x

8 Teszteset generálási módszerek Előre generált teszteseteketElőre generált teszteseteket –PROTOS Test Suite Véletlenszerűen generált tesztesetekVéletlenszerűen generált tesztesetek –/dev/urandom Mutációs eljárással generált tesztesetekMutációs eljárással generált tesztesetek –Az eredeti (működő) bemenet véletlenszerű módosítása Séma, vagy leírás alapján generált teszteseteketSéma, vagy leírás alapján generált teszteseteket –Valamilyen leírónyelv alapján generált tesztesetek Evolúciós megközelítésEvolúciós megközelítés –Genetikus algoritmus, populáció: tesztesetek

9 Rövid történeti áttekintés 1989 –Fuzzing születése : Barton Miller professzor (University of Wisconsin-Madison) operációs rendszerek és alkalmazások automatikus tesztelése 1999 –PROTOS Test Suite (University of Oulu) megjelenése 2002 –A Microsoft támogatást ad a PROTOS fejlesztőinek –SPIKE (David Aitel) megjelenése (nyílt forráskódú projekt)

10 s_binary_block_size_halfword_bigendian_variable("connectpacket");s_block_start("connectpacket"); s_binary(" "); s_block_end("connectpacket"); 0x04 0x SPIKE Blokk alapú megközelítés Konstans/változóKonstans/változó TípusTípus Hossz értékek automatikusakHossz értékek automatikusak

11 Rövid történeti áttekintés/ –A PROTOS fejlesztői elindítják az első ismert kereskedelmi fuzzer eszköz (DEFENSICS Test Suites) fejlesztését a Codenomicon cég berkein belül 2005 –Több eszköz is napvilágot lát FileFuzzFileFuzz SPIKEFileSPIKEFile notSPIKEFilenotSPIKEFile

12 FileFuzz

13 Rövid történeti áttekintés/ –ActiveX fuzzerek megjelenése COMRaider (David Zimmer)COMRaider (David Zimmer) AxMan (H.D. Moore)AxMan (H.D. Moore) –BH Sidewinder (Embleton, Sparks, Cunningham) - Evolúciós megközelítés: a fuzzer tanulhat a múltbeli inputokból, code-coverage -> fitness – az eredményeket nem publikálták– az eredményeket nem publikálták –BH2006 – Win32 IPC fuzzer(Jesse Burns) 2007 –BH2007 – Grey-box testing (Demott, J., Enbody, R., Punch, W.) Genetikus algoritmus, forráskód nélkül -> pstalker –BH2007 –Fuzzbox (David Thiel) – médiafurmátum fuzzer

14 COMRaider

15 Mire használható A bemenetek ellenőrzéséért, kezeléséért és feldolgozásáért felelős kódrészletek hibáinak felderítéséreA bemenetek ellenőrzéséért, kezeléséért és feldolgozásáért felelős kódrészletek hibáinak felderítésére –API –Kommunikációs protokoll –Webalkalmazás (SQL injekció) Alkalmazás Bemenet ellenőrzés Adatbázis kezelő Felhasználói bemenet Feldolgozás

16 Mire használható/2 Az olyan kimeneteket előállító kódrészletek tesztelésére, amelyekben megjelenik, vagy valamilyen módon felhasználódik a bemenetAz olyan kimeneteket előállító kódrészletek tesztelésére, amelyekben megjelenik, vagy valamilyen módon felhasználódik a bemenet –Webalkalmazás (XSS) Alkalmazás Bemenet ellenőrzés Hálózati komm.Kimenet előállítás Felhasználói bemenet Feldolgozás Kimenet

17 Mire használható/3 Fuzzer által „észrevett” hibák lehetnek:Fuzzer által „észrevett” hibák lehetnek: –Buffer overflow –Integer overflow –Format string sérülékenység –Memóriakezelési hibák (pl.: ellenőrizetlen allokáció) –XSS, SQL injekció –DoS (végtelen ciklus)

18 Mire nem használható A fuzzer nem ismeri a célpont logikai felépítését és működését, emiatt nem alkalmas többek között: –A logikailag rossz működés felismerésére (pl.: rossz oldal jelenik meg a web alkalmazásban) –Az olyan funkciók felismerésére, amelyeket a program rendeltetésszerű használata során nem hív meg a felhasználó (backdoor) –A hozzáférés ellenőrzési rendszer hibás működésének felismerésére

19 Fuzzer keretrendszerek ElőnyeiElőnyei –Általános megoldás –Többféle célpont ellen bevethető –Bővíthető –Újrafelhasználható elemeket biztosít HátrányaiHátrányai –Mindig létezik olyan célpont amelyhez nem használható –Speciális ellenőrző kódok

20 Fuzzer keretrendszerek/2 PeachPeach –GUI –Python –Moduláris (generator, transformer, publisher) –COM/DCOM, RPC támogatás Fusil the fuzzerFusil the fuzzer –Python library –Process indítás (memória, körny. változók) –Kliens/szerver architektúra –Figyeli a tesztelt program állapotát

21 Peach

22 Hol állunk most?

23 Csoportosítás a célpont és fuzzer helye szerint LokálisLokális –Állományformátum fuzzerek –Parancssor (commandline) fuzzerek –Környezeti változó fuzzerek TávoliTávoli –Protokoll fuzzerek –Kiszolgáló és kliens alkalmazás fuzzerek Memóriarezidens (programkód módosításon alapuló) megoldásokMemóriarezidens (programkód módosításon alapuló) megoldások –Bemenet-módosító ciklus beszúrás –Pillanatkép készítés és visszaállítás

24 Bemenetet módosító ciklus beszúrás

25

26

27 Pillanatkép készítés és visszaállítás

28

29 Breakpoint kezelés Kivétel kezelés

30 Egy jó fuzzer-rel szemben támasztott követelmények ReprodukálhatóságReprodukálhatóság –A tesztesetek bármikor megismételhetőek Újra felhasználhatóságÚjra felhasználhatóság –A legenerált tesztesetek, vagy az azokat generáló kód más célpont ellen is felhasználható DokumentálhatóságDokumentálhatóság –A tesztesetek bevitelekor keletkező hibák, illetve azok körülményeinek minél részletesebb dokumentálása –Magának a fuzzer-nek a részletes dokumentációja Hibadetektálás!!!Hibadetektálás!!! –A tesztesetek bevitelekor keletkező hibák detektálása, esetleg automatikus vizsgálata Flexibilitás és bővíhetőségFlexibilitás és bővíhetőség –Bővítmények készítésének és használatának lehetősége –Részletes, sok részletre kiterjedő konfigurálhatóság

31 Hibadetektálás

32 Hibadetektálás/2 Talán a legfontosabb követelményTalán a legfontosabb követelmény Automatizált esetben nem hagyatkozhatunk az emberi logikáraAutomatizált esetben nem hagyatkozhatunk az emberi logikára A fuzzer-nek kell felismerni a hiba előfordulásátA fuzzer-nek kell felismerni a hiba előfordulását Folyamatos, ciklikus ellenőrzésekre van szükségFolyamatos, ciklikus ellenőrzésekre van szükség

33 Hibadetektálás/3 Egyszerű megoldások Naplóállomány, eseménynapló figyelésNaplóállomány, eseménynapló figyelés „Polling” (hálózati esetekben) [folyamatos csatlakozási próbálkozások]„Polling” (hálózati esetekben) [folyamatos csatlakozási próbálkozások]

34 Hibadetektálás/4 Egyszerű megoldások Futó folyamatok listájának figyeléseFutó folyamatok listájának figyelése

35 Hibadetektálás/5 Egyszerű megoldások Megjelenő dialógusablakok figyeléseMegjelenő dialógusablakok figyelése

36 Hibadetektálás/6 Egyszerű megoldások Jellemző hibajelentő (bug reporting) folyamatok figyeléseJellemző hibajelentő (bug reporting) folyamatok figyelése

37 Hibadetektálás/7 Egyszerű megoldások Külső debugger használataKülső debugger használata

38 Hibadetektálás/8 Bonyolultabb megoldások Beépített debugger használata (állandó kivétel figyelés, és kezelés / Windows Debugging API, PTrace/)Beépített debugger használata (állandó kivétel figyelés, és kezelés / Windows Debugging API, PTrace/) Fuzzer tracking (a célpont nyomon követése assembly szinten)Fuzzer tracking (a célpont nyomon követése assembly szinten) –utasítás, ciklus, függvény, vagy eljárás meghívásának figyelése, naplózása Dynamic Binary Instrumentation használataDynamic Binary Instrumentation használata –Valgrind, PIN

39 Saját fejlesztésű eszközök FuzzITBrowserWave

40 FuzzIT –Állományformátum fuzzer BrowserWave –Böngésző fuzzer

41 FuzzIT BesorolásBesorolás –Lokális, állományformátum fuzzer Teszteset generálási módszerTeszteset generálási módszer –Séma, vagy leírás alapján generált tesztesetek Programozási nyelvProgramozási nyelv –Perl PlatformokPlatformok –Microsoft Windows –Linux XML alapú leírónyelv az állományformátumokhozXML alapú leírónyelv az állományformátumokhoz –Kezelt adatreprezentációk (encoder és decoder plugin-ek) –Formátumleírásba ágyazható kódrészletek Egyszerű parancssori kezelhetőségEgyszerű parancssori kezelhetőség

42 FuzzIT/2 Generálás közben meghívott kód

43 FuzzIT/3 DEMO

44 BrowserWave Besorolás –Távoli, kiszolgáló/kliens alkalmazás fuzzer Teszteset generálási módszer (pluginek) –Séma, vagy leírás alapján generált tesztesetek –Véletlenszerű tesztesetek –Mutáción alapuló teszteset generálás Programozási nyelv(ek) –Perl –Python –C#

45 BrowserWave/2 Architektúra

46 BrowserWave/3 Platformok Szerver –Microsoft Windows –Linux Kliens –Microsoft Windows (elsődleges platform) –Microsoft Windows Mobile (5,6) –Linux

47 BrowserWave/4 Fontosabb tulajdonságok Pluginekkel bővíthető (perl)Pluginekkel bővíthető (perl) HibadetektálásHibadetektálás –Folyamat és folyamatlista figyelés –Beépített debugger (Python) –Dialógusablakok figyelés –Jellemző hibajelentő (bugreporting) folyamatok indulásának figyelése DokumentálásDokumentálás –Szerver, kliens, debugger (crash) naplók –Futás után a legenerált tesztesetek és naplók tömörítése

48 BrowserWave/5 FuzzIT modul meghívása HTML generálás

49 BrowserWave/6 „Támogatott” böngészők Microsoft Internet Explorer (6,7, Mobile)Microsoft Internet Explorer (6,7, Mobile) Mozilla Firefox (2,3, Minimo)Mozilla Firefox (2,3, Minimo) Opera, (Windows, Linux, Windows Mobile)Opera, (Windows, Linux, Windows Mobile) Apple SafariApple Safari Maxthon Browser (1,2)Maxthon Browser (1,2) KDE KonquerorKDE Konqueror Gnome EpiphanyGnome Epiphany Google ChromeGoogle Chrome

50 BrowserWave/7 DEMO

51 Eredmények avagy akik rá”fuzz”tak

52 Fuzzit FuzzIT ACDSee1 Gimp>30 IrfanView2

53 BrowserWave BrowserWaveFuzzing közben… Apple Safari 5Perl6 Mozilla Firefox 2ActiveSync1 Internet Explorer Mobile 1PGP1 Google Chrome 1

54 Kérdések - Válaszok

55 Rövid összefoglalás Fuzzing története és működéseFuzzing története és működése Jelenlegi eszközökJelenlegi eszközök Saját fejlesztésekSaját fejlesztések EredményekEredmények

56 Elérhetőségek Barta Csaba Major Marcell


Letölteni ppt "Fuzzing (automatizált sérülékenység felderítés) Előadók: Barta Csaba Major Marcell."

Hasonló előadás


Google Hirdetések