bezpieczne-programowanie.-aplikacje-hakeroodporne scan.pdf

(4655 KB) Pobierz
887615894.001.png
4
Bezpieczne programowanie. Aplikacje hakeroodporne
3.4. Wspóczesne algorytmy szyfrowania ................................................................... 56
3.4.1. Rozwój algorytmów szyfrowania ................................................................... 56
3.4.2. Algorytmy symetryczne. Algorytm RC4 ........................................................ 57
3.4.3. Szyfrowanie symetryczne, algorytm DES ...................................................... 61
3.4.4. Szyfrowanie symetryczne, algorytm AES ...................................................... 61
3.4.5. Szyfrowanie asymetryczne, algorytm RSA .................................................... 61
3.4.6. Podpis cyfrowy ............................................................................................... 63
3.4.7. Szyfr z kluczem jednorazowym ...................................................................... 63
3.5. Algorytmy wyznaczajce sygnatury (skróty) danych .............................................. 64
3.5.1. Algorytm wyznaczania CRC .......................................................................... 64
3.5.2. Algorytm MD5 ............................................................................................... 65
3.5.3. Algorytm SHA-1 ............................................................................................ 65
3.6. Generatory liczb pseudolosowych ........................................................................... 69
3.7. Do czego moe suy szyfrowanie w zabezpieczaniu programów? ....................... 70
Zadania do samodzielnego wykonania ........................................................................... 71
Pytania kontrolne ............................................................................................................ 71
Rozdzia 4. Zabezpieczanie programów sieciowych na przykadzie jzyka PHP ... 73
4.1. Wstp ....................................................................................................................... 73
4.2. Obsuga danych z zewntrz ..................................................................................... 74
4.3. Przekazywanie danych midzy skryptami ............................................................... 75
4.4. Uwierzytelnianie w PHP .......................................................................................... 76
4.5. Niebezpieczne konstrukcje jzyka ........................................................................... 79
4.5.1. Konstrukcja include ($plik) ............................................................................ 80
4.5.2. eval($code), konstrukcja $$ ............................................................................ 81
4.5.3. fopen($url) ...................................................................................................... 82
4.6. Bezpieczna obsuga bdów ..................................................................................... 83
4.7. Bezpieczestwo systemu plików ............................................................................. 84
4.8. Cross site scripting ................................................................................................... 85
4.9. Wstrzykiwanie kodu SQL ........................................................................................ 86
4.9.1. Wstrzykiwanie kodu SQL — przykad 1. ....................................................... 87
4.9.2. Wstrzykiwanie kodu SQL — przykad 2. ....................................................... 90
4.9.3. Uycie PDO .................................................................................................... 91
4.9.4. Ataki wielofazowe .......................................................................................... 92
4.9.5. Sposoby ochrony ............................................................................................ 92
4.10. Wstrzykiwanie polece systemowych (shell injection) ......................................... 93
4.11. Wstrzykiwanie zawartoci e-mail (e-mail injection) .............................................. 94
4.12. Cross site request forgery ...................................................................................... 95
4.13. Przejcie kontroli nad sesj (session fixation) ....................................................... 97
4.14. Session poisoning ................................................................................................ 101
4.14.1. Przechowywanie stanu aplikacji w niezabezpieczonych miejscach ........... 101
4.14.2. Przypisanie wartoci do zmiennej sesyjnej
o nazwie stworzonej na podstawie danych od uytkownika ................... 104
4.14.3. Podmiana sekwencji wywoa przez wamywacza. Problem wycigu ....... 105
4.14.4. Uywanie tych samych zmiennych sesyjnych do rónych celów ............... 106
4.14.5. Zmienne sesyjne nie s gwarancj bezpieczestwa .................................... 108
4.15. Ataki typu DOS i DDOS ..................................................................................... 110
4.16. Dyrektywa register_globals ................................................................................. 112
4.17. Narzdzie zaciemniajce kod ródowy jzyka PHP ........................................... 114
Zakoczenie .................................................................................................................. 116
Zadania do samodzielnego wykonania ......................................................................... 116
Pytania kontrolne .......................................................................................................... 116
Spis treci
5
Rozdzia 5. Zaawansowane metody zabezpieczania programów ....................... 121
5.1. Wstp ..................................................................................................................... 121
5.2. Klucze rejestracyjne przypisane do uytkownika .................................................. 122
5.2.1. Idea kluczy rejestracyjnych przypisanych do uytkownika .......................... 122
5.2.2. Typowe techniki ........................................................................................... 124
5.2.3. Tworzenie kluczy rejestracyjnych w aplikacjach sieciowych ....................... 125
5.3. Samotestujcy si program .................................................................................... 126
5.3.1. Testowanie integralnoci programu gwarancj jego oryginalnoci .............. 126
5.3.2. Przykad — weryfikacja integralnoci pliku wykonywalnego ..................... 127
5.3.3. Przykad — weryfikacja integralnoci kodu programu ................................ 132
5.4. Sprawdzanie integralnoci danych ......................................................................... 135
5.4.1. Ukryj moje dane ........................................................................................... 136
5.4.2. Testowanie integralnoci danych ulegajcych zmianom .............................. 137
5.4.3. Wersje czasowe oprogramowania — kopoty z shareware ........................... 138
5.4.4. Bezpieczne przechowywanie danych — przykad ........................................ 140
5.5. Samomodyfikujcy si program ............................................................................ 144
5.5.1. Samomodyfikujcy si program.
Brzydka sztuczka czy eleganckie zabezpieczenie? ................................. 144
5.5.2. Sabota, czyli jak ukara krakera? ................................................................ 146
5.5.3. „Za 5 sekund ten program ulegnie samozniszczeniu”
— automatyczna deinstalacja programu ................................................. 147
5.5.4. „Kod o ograniczonej przydatnoci do wykonania” ............................................ 148
5.6. Klucz programowy ................................................................................................ 150
5.6.1. Klucz programowy — przykad ................................................................... 151
5.6.2. Deszyfrowanie fragmentów programu w trakcie jego dziaania ................... 156
5.6.3. Przykad programu deszyfrujcego si w trakcie dziaania .......................... 158
5.7. Zaciemnianie kodu i danych programu .................................................................. 161
5.7.1. Czy to wci open source? Zaciemnianie kodu jako metoda obronna .......... 161
5.8. Zabezpieczenia. Jak to w praktyce wprowadzi w ycie .................................... 163
5.8.1. Zabezpieczenia a etapy produkcji ................................................................. 163
5.8.2. Generator zabezpiecze ................................................................................ 164
Zadania do samodzielnego wykonania ......................................................................... 165
Pytania kontrolne .......................................................................................................... 166
Rozdzia 6. Zabezpieczenie programów przed debugerami ............................... 167
6.1. Wstp ..................................................................................................................... 167
6.2. Wykrywanie debugerów ........................................................................................ 168
6.3. Utrudnianie debugowania ...................................................................................... 169
6.3.1. Wstawki kodu utrudniajce debugowanie .................................................... 169
6.3.2. Generator wstawek kodu utrudniajcych debugowanie ................................ 172
Zadania do samodzielnego wykonania ......................................................................... 175
Pytania kontrolne .......................................................................................................... 175
Rozdzia 7. Wykorzystanie internetu do zabezpieczania programów .................. 177
7.1. Wstp ..................................................................................................................... 177
7.2. Rejestracja programu przez internet ...................................................................... 178
7.3. Aktywacja numeru seryjnego przez internet .......................................................... 179
7.4. Kontrola uytkowania aplikacji z czciowym dostpem do internetu .................. 180
7.5. Weryfikacja prawidowej pracy aplikacji przez sie .............................................. 181
7.6. Przechowywanie poufnych danych uytkownika .................................................. 182
7.7. Deszyfrowanie programu w trakcie dziaania a internet ........................................ 183
7.8. Fragmentaryczne dane pobierane z internetu ......................................................... 185
7.9. Przesyanie informacji o programie do centralnego serwera .................................... 186
6
Bezpieczne programowanie. Aplikacje hakeroodporne
7.9.1. Totalna inwigilacja? Rejestrowanie informacji
o zachowaniu programu i uytkownika ..................................................... 186
7.9.2. Zdalne sprawdzanie tosamoci uytkownika .............................................. 188
7.9.3. Zdalne i lokalne blokowanie dziaania programu
sterowanego danymi z centralnego serwera ............................................... 191
7.10. Wirtualne wybory ................................................................................................ 192
Zadania do samodzielnego wykonania ......................................................................... 196
Pytania kontrolne .......................................................................................................... 196
Rozdzia 8. Zabezpieczanie programów przy uyciu kluczy sprztowych
oraz technik biometrycznych ......................................................... 197
8.1. Wstp ..................................................................................................................... 197
8.2. Zabezpieczenie aplikacji za pomoc kluczy sprztowych ..................................... 198
8.2.1. Karty magnetyczne i elektroniczne .............................................................. 198
8.2.2. Podpis cyfrowy na trwaym noniku ............................................................ 199
8.2.3. Klucze sprztowe w zabezpieczaniu oprogramowania ................................. 200
8.3. Technologie GPS i RFID, geolokalizacja .............................................................. 201
8.3.1. Technologie GPS i RFID .............................................................................. 201
8.3.2. Problemy etyczne i moralne postpu technicznego
zwizanego z lokalizacj i kontrol uytkowników ................................... 202
8.4. Weryfikacja tosamoci za pomoc technik biometrycznych ................................... 203
8.4.1. Techniki biometryczne ................................................................................. 203
8.4.2. Indywidualne oprogramowanie .................................................................... 204
8.5. Szpiegostwo elektroniczne .................................................................................... 204
8.5.1. Wamania do sieci bezprzewodowych .......................................................... 204
8.5.2. Przechwytywanie fal elektromagnetycznych ................................................ 205
Pytania kontrolne .......................................................................................................... 206
Rozdzia 9. Tworzenie bezpiecznych aplikacji w rodowisku .NET ..................... 207
9.1. Wstp ..................................................................................................................... 207
9.2. Autoryzacja oparta na uprawnieniach i rolach (Role-Based Authorization) .......... 208
9.2.1. Uprawnienia, interfejs IPermission, klasa Principal ..................................... 209
9.2.2. Autoryzacja nakazowa oparta na rolach (Imperative Role-Based Security) ........ 210
9.2.3. Autoryzacja deklaracyjna oparta na rolach (Declarative Role-Based
Security) ............................................................................................................... 213
9.3. Zabezpieczenie dostpu kodu do zasobów (Code Access Security) ......................... 215
9.3.1. Nakazowe zabezpieczenie dostpu kodu do zasobów
(Imperative Code Access Security) ............................................................... 215
9.3.2. Deklaracyjne zabezpieczenie dostpu kodu do zasobów
(Declarative Code Access Security) .............................................................. 219
9.3.3. Poziomy regu bezpieczestwa (Security Policy Level) ............................... 220
9.3.4. Narzdzie The Code Access Security Policy Utility — caspol.exe .............. 221
9.4. Bezpieczestwo ASP.NET .................................................................................... 222
9.4.1. Metody uwierzytelniania w ASP.NET ......................................................... 222
9.4.2. Dostp anonimowy ....................................................................................... 223
9.4.3. Uwierzytelnianie systemu Windows ............................................................ 223
9.4.4. Uwierzytelnianie przy uyciu formularza ..................................................... 226
9.4.5. Uwierzytelnianie za pomoc .NET Passport ................................................ 228
9.4.6. Bezpieczna komunikacja za pomoc SSL .................................................... 228
9.5. Tworzenie silnych nazw podzespoom .................................................................. 230
Zadania do samodzielnego wykonania ......................................................................... 231
Pytania kontrolne .......................................................................................................... 232
Spis treci
7
Rozdzia 10. Bezpieczny Program ..................................................................... 235
10.1. Wstp ................................................................................................................... 235
10.2. Opis programu ..................................................................................................... 236
10.3. Przegld kodu ródowego ................................................................................... 238
10.3.1. BezpiecznyProgram.exe ............................................................................. 238
10.3.2. ZabezpieczBP.exe ...................................................................................... 245
10.3.3. StwórzKluczBP.exe .................................................................................... 246
10.4. Wnioski ............................................................................................................... 247
Zadania do samodzielnego wykonania ......................................................................... 249
Rozdzia 11. Psychologiczna strona bezpieczestwa ......................................... 251
11.1. Wstp ................................................................................................................... 251
11.2. Wpyw architektury programu na jego bezpieczestwo ...................................... 251
11.3. „Tylne wejcia” i kod tymczasowy ......................................................................... 253
11.4. Uycie gotowego kodu ........................................................................................ 254
11.5. Open source ......................................................................................................... 256
11.6. Taczce winki kontra bezpieczestwo ............................................................. 257
11.7. Security by obscurity — zabezpieczanie przez zaciemnianie .............................. 258
11.8. Karanie wamywacza ........................................................................................... 260
11.9. Brzytwa Ockhama ............................................................................................... 261
11.10. Uycie socjotechniki .......................................................................................... 261
11.11. Nie poprawiaj wamywacza ............................................................................... 262
11.12. Walka ze script kiddies ...................................................................................... 263
11.13. Ochrona przed automatami ................................................................................ 264
11.14. Ataki z wewntrz ............................................................................................... 267
11.15. acuch a sie zabezpiecze ............................................................................. 267
11.16. Caociowe spojrzenie na problem bezpieczestwa ........................................... 268
Pytania kontrolne .......................................................................................................... 270
Podsumowanie ............................................................................. 273
Odpowiedzi do pyta kontrolnych .................................................. 281
Sowniczek poj ......................................................................... 293
Skorowidz .................................................................................... 301
Zgłoś jeśli naruszono regulamin