praktyczne podejście do testowania bezpieczeństwa ... praktyczne podejście... 2 / ∞ dramatis...

101
HISPASEC Praktyczne podejście do testowania bezpieczeństwa implementacji obsługi formatów danych by Gynvael Coldwind

Upload: others

Post on 27-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

HISPASEC

Praktyczne podejście do testowania bezpieczeństwa

implementacji obsługi formatów danych

by Gynvael Coldwind

Page 2: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 2

Dramatis Personæ

Gynvael Coldwind

- obecnie spec. ds. bezp. IT @ Hispasec- wcześniej ArcaBit- autor kilku artykułów (Hakin9 i Xploit)- prowadzi bloga technicznego (http://gynvael.coldwind.pl)- team Vexillium (http://vexillium.org)

Page 3: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 3

Menu

1. Budowa aplikacji a wektory ataku2. Jak szukać błędów?3. Różnice w interpretacji dokumentacji4. Case study – BMP5. Case study – GIF6. Inne – RAR, ZIP, FTP7. Podsumowanie

Page 4: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 4

Budowa aplikacji

IN

IN

IN

IN

IN

IN

IN

OUT

OUT

OUT

OUT

APLIKACJA

Page 5: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 5

Aplikacja składa się z wielu modułów

IN

IN

IN

IN

IN

IN

IN

OUT

OUT

OUT

OUT

APLIKACJA

Page 6: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 6

Wejście, przetwarzanie, wyjście

NET

DB

BMP

MP3

PHP

KEYB

...

HTML

SCR

NET

...

APLIKACJA

Page 7: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 7

Wszystko co pochodzi z zewnątrzstanowi potencjalne zagrożenie

NET

DB

BMP

MP3

PHP

KEYB

...

HTML

SCR

NET

...

APLIKACJA

Page 8: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 8

Wszystko co pochodzi z zewnątrzstanowi potencjalne zagrożenie

NET

DB

BMP

MP3

PHP

KEYB

...

HTML

SCR

NET

...

APLIKACJA

Page 9: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 9

Wszystko co pochodzi z zewnątrzstanowi potencjalne zagrożenie

NET

DB

BMP

MP3

PHP

KEYB

...

HTML

SCR

NET

...

APLIKACJA

Page 10: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 10

Wszystko co pochodzi z zewnątrzstanowi potencjalne zagrożenie

NET

DB

BMP

MP3

PHP

KEYB

...

HTML

SCR

NET

...

APLIKACJA

Page 11: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 11

Wszystko co pochodzi z zewnątrzstanowi potencjalne zagrożenie

NET

DB

BMP

MP3

PHP

KEYB

...

HTML

SCR

NET

...

APLIKACJA

Page 12: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 12

Wszystko co pochodzi z zewnątrzstanowi potencjalne zagrożenie

NET

DB

BMP

MP3

PHP

KEYB

...

HTML

SCR

NET

...

APLIKACJA

Page 13: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 13

Jak szukać błędu ?

NET

DB

MP3

PHP

KEYB

...

HTML

SCR

NET

...

APLIKACJABMP

Page 14: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 14

Jak szukać błędu ?

APLIKACJABMP

Page 15: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 15

Jak szukać błędu ?

BMP

Page 16: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 16

Jak szukać błędu ?

OBSŁUGABMPBMP

Page 17: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 17

Jak szukać błędu ?

OBSŁUGABMPBMP

Metoda A: (app oriented)„Czytając” kod obsługujący format

Page 18: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 18

Jak szukać błędu ?

OBSŁUGABMPBMP

Metoda B: (data oriented)Analizując format wejściowy

Page 19: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 19

Jak szukać błędu ?

OBSŁUGABMP

Zorientowanie na format wejściowypozwala naraz testować kilka-kilkanaście

aplikacji

OBSŁUGABMPOBSŁUGA

BMP

BMP

Page 20: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 20

Jak szukać błędu ?

KROK 1Wybierz format/protokół który chcesz analizować

Metoda 1: mam ulubioną aplikację...Metoda 2: format XYZ brzmi fajnie!Metoda 3: rand()

Page 21: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 21

Jak szukać błędu ?

KROK 2Zdobądź dokumentacje!

http://www.wotsit.orghttp://en.wikipedia.org

http://www.faqs.org/rfcs/Use google, Luke!

Page 22: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 22

Jak szukać błędu ?

KROK 3Napisz program tworzący

prawidłowy pakiet/plik

C/C++/Java/Python/etc

Page 23: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 23

Jak szukać błędu ?

KROK 4Rozpocznij analizę dokumentacji

(o tym za chwilę),modyfikując stworzony wcześniej

program tak, aby generował„poprawione” pakiety/pliki

Page 24: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 24

Jak szukać błędu ?

KROK 5Sprawdź jak zachowują się wybraneaplikacje gdy „zjedzą” „poprawiony”

pakiet/plik

(exception monitor, debugger)

Page 25: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 25

Różnice w interpretacji

Programista vs Bughunter

Page 26: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 26

Różnice w interpretacji

Co myśliprogramista

Co myślibughunter

Programista vs Bughunter

...cytat z dokumentacji...

Page 27: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 27

Różnice w interpretacji

Programista vs Bughunter

Bezpośrednio po nagłówku znajdująsię dane obrazu...

Page 28: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 28

Różnice w interpretacji

Po nagłówku napewno będądane obrazu

Programista vs Bughunter

Bezpośrednio po nagłówku znajdująsię dane obrazu...

Page 29: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 29

Różnice w interpretacji

Po nagłówku napewno będądane obrazu

Utnę plik ponagłówku ;F

Programista vs Bughunter

Bezpośrednio po nagłówku znajdująsię dane obrazu...

Page 30: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 30

Różnice w interpretacji

Programista vs Bughunter

Wartość pola SIZE musi być mniejszalub równa 16

Page 31: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 31

Różnice w interpretacji

Wartość polaSIZE zawsze będzie <= 16

Programista vs Bughunter

Wartość pola SIZE musi być mniejszalub równa 16

Page 32: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 32

Różnice w interpretacji

Wartość polaSIZE zawsze będzie <= 16

Ustawie SIZE na55 i zobaczę co

się stanie...

Programista vs Bughunter

Wartość pola SIZE musi być mniejszalub równa 16

Page 33: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 33

Różnice w interpretacji

Programista vs Bughunter

Pole NR_KOLOR określa ilośćkolorów w palecie

Page 34: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 34

Różnice w interpretacji

Wszystkie numerykolorów w obraziesą <= NR_KOLOR

Programista vs Bughunter

Pole NR_KOLOR określa ilośćkolorów w palecie

Page 35: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 35

Różnice w interpretacji

Wszystkie numerykolorów w obraziesą <= NR_KOLOR

Powiem że paletama 20 kolorów, poczym użyje koloru

numer 55 w obrazie!

Programista vs Bughunter

Pole NR_KOLOR określa ilośćkolorów w palecie

Page 36: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 36

Różnice w interpretacji

Programista vs Bughunter

Chunk PALETA zawiera paletękolorów dla całego obrazu

Page 37: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 37

Różnice w interpretacji

Chunk PALETAwystąpi tylko raz,bo nikt nie używawięcej niż jednej

palety

Programista vs Bughunter

Chunk PALETA zawiera paletękolorów dla całego obrazu

Page 38: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 38

Różnice w interpretacji

Chunk PALETAwystąpi tylko raz,bo nikt nie używawięcej niż jednej

palety

Wrzucę 10 palet!

Programista vs Bughunter

Chunk PALETA zawiera paletękolorów dla całego obrazu

Page 39: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 39

Różnice w interpretacji

Chunk PALETAwystąpi tylko raz,bo nikt nie używawięcej niż jednej

palety

Wrzucę 10 palet!Albo żadnej!

Programista vs Bughunter

Chunk PALETA zawiera paletękolorów dla całego obrazu

Page 40: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 40

Różnice w interpretacji

Programista vs Bughunter

Implementacja powinna sprawdzaćczy XYZ jest poprawne

Page 41: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 41

Różnice w interpretacji

Nie chcę mi się...

Programista vs Bughunter

Implementacja powinna sprawdzaćczy XYZ jest poprawne

Page 42: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 42

Różnice w interpretacji

Nie chcę mi się...Ciekawe czy

programiście się chciało...

Programista vs Bughunter

Implementacja powinna sprawdzaćczy XYZ jest poprawne

Page 43: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 43

Różnice w interpretacji

Programista vs Bughunter

Pole OFFSET zawieraoffset danych w pliku

Page 44: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 44

Różnice w interpretacji

Wartość OFFSETpokazuje gdzieś

w środku pliku nadane

Programista vs Bughunter

Pole OFFSET zawieraoffset danych w pliku

Page 45: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 45

Różnice w interpretacji

Wartość OFFSETpokazuje gdzieś

w środku pliku nadane

Ustawie OFFSETujemne lub większeod wielkości pliku

Programista vs Bughunter

Pole OFFSET zawieraoffset danych w pliku

Page 46: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 46

Różnice w interpretacji

Programista vs Bughunter

Każdy chunk ma pole NEXT któremówi gdzie jest następny chunk

Page 47: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 47

Różnice w interpretacji

O! lista chunków!Przejdę sobiepo niej w pętli

Programista vs Bughunter

Każdy chunk ma pole NEXT któremówi gdzie jest następny chunk

Page 48: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 48

Różnice w interpretacji

O! lista chunków!Przejdę sobiepo niej w pętli

O! Zapętlona listachunków! Niechktóryś wskazujesam na siebie!

Programista vs Bughunter

Każdy chunk ma pole NEXT któremówi gdzie jest następny chunk

Page 49: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 49

Różnice w interpretacji - podsumowanie

Programista vs Bughunter

ZDANIE

Page 50: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 50

Różnice w interpretacji - podsumowanie

ZDANIE na pewnojest prawdziwei wszyscy wgniego tworząpliki / pakiety!

Programista vs Bughunter

ZDANIE

Page 51: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 51

Różnice w interpretacji - podsumowanie

ZDANIE na pewnojest prawdziwei wszyscy wgniego tworząpliki / pakiety!

← :)

Programista vs Bughunter

ZDANIE

Page 52: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 52

Różnice w interpretacji - podsumowanie

Co jest złe?Formaty czy implementacje?

Page 53: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 53

Enter teh BMP

Case study - BMP

Page 54: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 54

Enter teh BMP

BMP w skrócie:

- bardzo prosty format graficzny- brak kompresji lub kompresja RLE- znany z duużych plików- znany z Windowsa :)- obsługuje do 8 bitów z paletą- obsługuje od 16 do 32 bitów RGB

Page 55: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 55

Enter teh BMP

Budowa BMPBITMAPFILEHEADER

BITMAPINFOHEADER

IMAGE DATA

PALETTE

Page 56: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

UINT bfType;DWORD bfSize;UINT bfReserved1;UINT bfReserved2;DWORD bfOffBits;

/ ∞Praktyczne podejście... 56

Bitmap File Header

BITMAPINFOHEADER

IMAGE DATA

PALETTE

BITMAPFILEHEADER

Page 57: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

UINT bfType;DWORD bfSize;UINT bfReserved1;UINT bfReserved2;DWORD bfOffBits;

/ ∞Praktyczne podejście... 57

Bitmap File Header

BITMAPINFOHEADER

IMAGE DATA

PALETTE

BITMAPFILEHEADER

Specifies the size of the file, in bytes.

Page 58: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

UINT bfType;DWORD bfSize;UINT bfReserved1;UINT bfReserved2;DWORD bfOffBits;

/ ∞Praktyczne podejście... 58

Bitmap File Header

BITMAPINFOHEADER

IMAGE DATA

PALETTE

BITMAPFILEHEADER

Specifies the byte offset from the BITMAPFILEHEADER structure

to the actual bitmap data in the file.(demo 001 002)

Page 59: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

DWORD biSize; (1 of 2)LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORD biCompression;

/ ∞Praktyczne podejście... 59

Bitmap File Header

IMAGE DATA

PALETTE

BITMAPFILEHEADERBITMAPINFOHEADER

Page 60: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

DWORD biSize; (1 of 2)LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORD biCompression;

/ ∞Praktyczne podejście... 60

Bitmap File Header

IMAGE DATA

PALETTE

BITMAPFILEHEADER

Specifies the width/height of the bitmap, in pixels.

(SZ = biWidth * biHeight * biBitCount/8)(memory DoS, Int Overflow, Sig/UnSig)

BITMAPINFOHEADER

Page 61: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

DWORD biSize; (1 of 2)LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORD biCompression;

/ ∞Praktyczne podejście... 61

Bitmap File Header

IMAGE DATA

PALETTE

BITMAPFILEHEADER

Specifies the number of planes for the target device. Thismember must be set to 1.

BITMAPINFOHEADER

Page 62: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

DWORD biSize; (1 of 2)LONG biWidth;LONG biHeight;WORD biPlanes;WORD biBitCount;DWORD biCompression;

/ ∞Praktyczne podejście... 62

Bitmap File Header

IMAGE DATA

PALETTE

BITMAPFILEHEADER

Specifies the number of bits per pixel. This value must be 1, 4, 8, or 24.

(32 bits?)

BITMAPINFOHEADER

Page 63: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

(2 of 2)DWORD biSizeImage;LONG biXPelsPerMeter;LONG biYPelsPerMeter;DWORD biClrUsed;DWORD biClrImportant;

/ ∞Praktyczne podejście... 63

Bitmap File Header

IMAGE DATA

PALETTE

BITMAPFILEHEADERBITMAPINFOHEADER

Page 64: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

(2 of 2)DWORD biSizeImage;LONG biXPelsPerMeter;LONG biYPelsPerMeter;DWORD biClrUsed;DWORD biClrImportant;

/ ∞Praktyczne podejście... 64

Bitmap File Header

IMAGE DATA

PALETTE

BITMAPFILEHEADER

Specifies the number of color indexes inthe color table actually used by the bitmap.

[…] the biClrUsed member must be set to zero orto the actual size of the color table.

BITMAPINFOHEADER

Page 65: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 65

Bitmap File Header

00: #12121201: #AB111102: #009900

biClrUsed = 3

Random data

Random dataRandom data

000102030405

#000000#000000#000000#000000#000000#000000

Page 66: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 66

Bitmap File Header

00: #12121201: #AB111102: #009900

biClrUsed = 3

Random data

Random dataRandom data

000102030405

#000000#000000#000000#000000#000000#000000

00: #121212

Page 67: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 67

Bitmap File Header

00: #12121201: #AB111102: #009900

biClrUsed = 3

Random data

Random dataRandom data

000102030405

#000000#000000#000000#000000#000000#000000

00: #12121201: #AB1111

Page 68: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 68

Bitmap File Header

00: #12121201: #AB111102: #009900

biClrUsed = 3

Random data

Random dataRandom data

000102030405

#000000#000000#000000#000000#000000#000000

00: #12121201: #AB111102: #009900

Page 69: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 69

Bitmap File Header

00: #12121201: #AB111102: #009900

biClrUsed = 3

Random data

Random dataRandom data

000102030405

#000000#000000#000000#000000#000000#000000

00: #12121201: #AB111102: #009900

Random data

Page 70: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 70

Bitmap File Header

00: #12121201: #AB111102: #009900

biClrUsed = 3

Random data

Random dataRandom data

000102030405

#000000#000000#000000#000000#000000#000000

00: #12121201: #AB111102: #009900

Random dataRandom data

Page 71: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 71

Bitmap File Header

Demo 003

Page 72: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

Run Length Encoding:biCompression = BI_RLE8biCompression = BI_RLE4

/ ∞Praktyczne podejście... 72

RLE

IMAGE DATA

PALETTE

BITMAPFILEHEADER

...

BITMAPINFOHEADER

Page 73: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

Run Length Encoding:biCompression = BI_RLE8biCompression = BI_RLE4

/ ∞Praktyczne podejście... 73

RLE

IMAGE DATA

PALETTE

BITMAPFILEHEADER

AAAAAAAAAABBBBCCCCCABCABCAAAAA

BITMAPINFOHEADER

Page 74: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

Run Length Encoding:biCompression = BI_RLE8biCompression = BI_RLE4

/ ∞Praktyczne podejście... 74

RLE

IMAGE DATA

PALETTE

BITMAPFILEHEADER

AAAAAAAAAABBBBCCCCCABCABCAAAAA

10 'A'

BITMAPINFOHEADER

Page 75: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

Run Length Encoding:biCompression = BI_RLE8biCompression = BI_RLE4

/ ∞Praktyczne podejście... 75

RLE

IMAGE DATA

PALETTE

BITMAPFILEHEADER

AAAAAAAAAABBBBCCCCCABCABCAAAAA

10 'A' 04 'B'

BITMAPINFOHEADER

Page 76: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

Run Length Encoding:biCompression = BI_RLE8biCompression = BI_RLE4

/ ∞Praktyczne podejście... 76

RLE

IMAGE DATA

PALETTE

BITMAPFILEHEADER

AAAAAAAAAABBBBCCCCCABCABCAAAAA

10 'A' 04 'B' 05 'C'

BITMAPINFOHEADER

Page 77: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

Run Length Encoding:biCompression = BI_RLE8biCompression = BI_RLE4

/ ∞Praktyczne podejście... 77

RLE

IMAGE DATA

PALETTE

BITMAPFILEHEADER

AAAAAAAAAABBBBCCCCCABCABCAAAAA

10 'A' 04 'B' 05 'C' 00 06 'ABCABC'

BITMAPINFOHEADER

Page 78: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

Run Length Encoding:biCompression = BI_RLE8biCompression = BI_RLE4

/ ∞Praktyczne podejście... 78

RLE

IMAGE DATA

PALETTE

BITMAPFILEHEADER

AAAAAAAAAABBBBCCCCCABCABCAAAAA

10 'A' 04 'B' 05 'C' 00 06 'ABCABC' 05 'A'

BITMAPINFOHEADER

Page 79: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

Run Length Encoding:biCompression = BI_RLE8biCompression = BI_RLE4

/ ∞Praktyczne podejście... 79

RLE

IMAGE DATA

PALETTE

BITMAPFILEHEADER

AAAAAAAAAABBBBCCCCCABCABCAAAAA

10 'A' 04 'B' 05 'C' 00 06 'ABCABC' 05 'A' 00 01

BITMAPINFOHEADER

Page 80: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

Run Length Encoding:biCompression = BI_RLE8biCompression = BI_RLE4

/ ∞Praktyczne podejście... 80

RLE

IMAGE DATA

PALETTE

BITMAPFILEHEADER

00 02 XX YY: Delta. The two bytes following theescape contain unsigned values indicating thehorizontal and vertical offsets of the next pixelfrom the current position.

BITMAPINFOHEADER

Page 81: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 81

RLE

00 02 02 04

Page 82: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 82

RLE

00 02 02 0400 02 02 04

???

Page 83: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 83

RLE

00 02 02 0400 02 02 04

Demo 004

Page 84: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 84

BMP podsumowanie

...

Page 85: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 85

Enter teh GIF

Case study - GIF

Page 86: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 86

Enter teh GIF

Krótko o GIF:

- bezstratna kompresja (LZW, ?)- 8 bitów, paleta kolorów (>256)- animacje! (WEB 1.0 ;>)- oparty o chunki- logical screen vs image(s)- GIF87 vs GIF89

Page 87: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 87

Enter teh GIF

Budowa GIFHEADER

IMAGE DATA

GLOBAL PALETTE

LOCAL PALETTE

...

...

TRAILER

LSD

IMAGE DESC.

...

Page 88: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 88

Enter teh GIF

??? Budowa GIF ???HEADER

IMAGE DATA

GLOBAL PALETTE

LOCAL PALETTE

...

...

TRAILER

LSD

IMAGE DESC.

...

Page 89: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 89

Enter teh GIF

??? DEMO 005 ???HEADER

IMAGE DATA

GLOBAL PALETTE

LOCAL PALETTE

...

...

TRAILER

LSD

IMAGE DESC.

...

Page 90: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 90

Enter teh GIF

Budowa GIFHEADER

LSD

IMAGE DATA

GLOBAL PALETTE

IMAGE DESC.LOCAL PALETTE

...

...

...

TRAILER

LZW MIN. CODE SZ.BLOCK SIZE

DATABLOCK SIZE

DATA......

TERMINATOR

Page 91: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 91

Enter teh GIF

Budowa GIF

BLOCK SIZEDATA

BLOCK SIZEDATA

...

...TERMINATOR

The output codes are ofvariable length, starting

at <code size>+1 bits per code, up to 12 bits per

code. This defines a maximum code

value of 4095 (hex FFF).

LZW MIN. CODE SZ.

Page 92: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 92

Enter teh GIF

SDL_Image

...unsigned char c; ← code size...LWZReadByte(src, TRUE, c)

Page 93: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 93

Enter teh GIF

SDL_ImageLWZReadByte(..., int input_code_size)...

static int table[2][(1 << MAX_LWZ_BITS)];...

set_code_size = input_code_size;...

clear_code = 1 << set_code_size;...

for (i = 0; i < clear_code; ++i) { table[0][i] = 0; table[1][i] = i;}

Page 94: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 94

Enter teh GIF

SDL_Image – DEMO 006

Page 95: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 95

Escape teh GIF

GIF - podsumowanie

Page 96: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 96

Inne – FTP, RAR, ZIP

FTP – Nazwy plików w listingu

LIST (LIST)If the pathname specifies a directoryor other group of files, the servershould transfer a list of filesin the specified directory.

Page 97: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 97

Inne – FTP, RAR, ZIP

FTP – Nazwy plików w listingu

LIST (LIST)If the pathname specifies a directoryor other group of files, the servershould transfer a list of filesin the specified directory.DEMO 007!

Page 98: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 98

Inne – FTP, RAR, ZIP

RAR, ZIP, etc...

(RAR) File name - string of NAME_SIZE bytes size

Page 99: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 99

Inne – FTP, RAR, ZIP

RAR, ZIP, etc...

(ZIP)

[local file header 1] VS

[central directory]

Page 100: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 100

EOF

Podsumowanie...

Page 101: Praktyczne podejście do testowania bezpieczeństwa ... Praktyczne podejście... 2 / ∞ Dramatis Personæ Gynvael Coldwind - obecnie spec. ds. bezp. IT @ Hispasec - wcześniej ArcaBit

/ ∞Praktyczne podejście... 101

The End

Dziękuje za uwagę!Czas na pytania ;>

-=(* e-mail *)[email protected]@hispasec.com

-=(* blog *)=-http://gynvael.coldwind.pl