Wprowadzenie
Programy¶
Przydatne programy do łamania haseł oraz tworzenia słowników.
hashcat -a <attack> -m <hash_mode> <hash> <dictionary | mask>
- do łamania haseł korzystając ze słownika lub generując wszystkie możliwe kombinacje podanej maski.john [OPTIONS] [PASSWORD-FILES]
- do łamania haseł podobnie jak hashcat.<file_type>2john <filename>
- set narzędzi do wyciągania haszy z plików. Wyciągnięty format można wstawić równiesz do hashcat. nprar2john
,zip2john
,pdf2john
.aircrack-ng <pcap-file-with-handshake>
- do łamania haseł wifi. Konieczne jest złapanie handshake lub PKMIC data.airolib-ng <databse> <operation> [options]
- prekomputacja PMKs (Pairwise Master Keys) do wykorzystania w krakowaniu kluczy WPA/WPA2.hcxtools
- suite narzędzi do wyciągania haszy lub kluczy z plików pcap. Następnie można takie hasze wstawić do hashcathcxpcapngtool <options> *.*
- convert pcapng, pcap and cap files to hash formats that hashcat and JtR usehcxhashtool <options>
- konerwsja pomiędzy formatami oraz wyciąganie haszy PKMID/EAPOL lub ESSID.
crunch <min> <max> [options]
- generuje słownik do ataku brute force na postawie podanych opcji.
Ważne pojęcia matematyczne¶
Dzielenie z resztą¶
Dla liczb całkowitych a i b mówimy, że przystają do siebie modulo liczby naturalnej n gdy:
n | (a - b)
czyli n dzieli różnice a i b. Pisze się wtedy:
a = b (mod n)
zapisy ten jest równoważny a = n * k + b dla k będącej liczby całkowitej. Liczba b może być wtedy resztą dizelenia.
W jęsykach programowania, takie działanie jest wykonane operatorem %
który zwraca resztę dzielena a przez b: a % b
.
Chińskie twierdzenie o resztach¶
Jeżeli liczby m1, m2, ..., mn są parami względnie pierwsze to układ kongruencji:
x = a1 (mod m1)
x = a2 (mod m2)
...
x = an (mod mn)
Ma rozwiązanie. Rozwiązanie to jest jednoznaczne modulo produkt liczb m1, m2, ..., mn.
Funkcja Eulera¶
Funkcja Eulera, oznaczana przez phi(n), dla n >= 1 wyznacza liczbę liczb całkowitych względnie pierwszych z n z przedziału [1,n].
Twierdzenie Eulera¶
Dla dowolnych liczb całkowitych a oraz liczby naturalnych n, jeżeli największy wspólny dzielnik a i n jest 1, to
a ^ phi(n) = 1 (mod n).
RSA¶
RSA jest systemem szyfrowania asymetrycznego, czyli jeden klucz do encrypcji (publiczny) oraz jeden, inny, do dekrypcji (prywatny).
Aby wyznaczyć klucze publiczne oraz prywatne wybieramy najpierw dwie różne liczby pierwsze p i q.
Następnie oblicza się n jako produkt liczby p z q, oraz phi(n) = (p - 1) * (q - 1).
Wybierana jesy liczba e względnie pierwsza z phi(n).
Obliczana jest odwortność modulo liczby e modulo phi(n):
ed = 1 (mod phi(n))
Para liczb (n, e) jest kluczem publicznym. Liczba d jest kluczem prywatnym.
Wiadomość m można zaszyfrować wstawiając ją do potęgi e modulo n:
c = m ^ e (mod n)
Szyfrogam c można odszyfrować wstawiając go do potęgi d modulo n:
m = c ^ d (mod n)
Algorytm ten jest uznawany za niebezpieczny.
Dodatkowe informacje¶
Zadania w CTFach często są matematyczne. Popularne jest wykorzystać wariację RSA którą łatwo złamać. Sposoby na to są zbyt różne, żeby je opisać. Znając natomiast metodę wykorzystaną do szyfrowania wiadomości można to złamać. Można do tego wykorzystać metodę trial and error. Polecane jest też robienie notatek na kartce.
Author¶
Źródła¶
- Alfred J. Menezes, Paul C. van Oorschot, Scott A. Vanstone. Kryptografia stosowana, WNT, Warszawa, 2005