Cracker

Z Wikipedii, wolnej encyklopedii
(Przekierowano z Cracker (haker komputerowy))
Skocz do: nawigacja, szukaj

Cracker (z ang., dosłownie łamacz) – osoba zajmująca się łamaniem zabezpieczeń komputerowych (crackingiem).

Wyróżnia się dwie główne kategorie działań crackerów:

Ewolucja znaczenia[edytuj]

Słowo cracker wywodzi się od angielskiego czasownika crack (łamać). Jego pierwotne znaczenie było w Polsce związane wyłącznie z łamaniem zabezpieczeń oprogramowania. W tym znaczeniu jest ono rozpowszechnione wśród osób zajmujących się crackingiem i w publikacjach na ten temat (m.in. ziny crackerskie).

Obecnie słowo cracker używane jest także jako określenie osoby włamującej się na serwery w sposób niezgodny z prawem. Używanie go w tym kontekście propaguje społeczność hakerska, według której stawianie znaku równości między hakerami a włamywaczami sieciowymi (co jest w mediach praktyką nagminną) jest błędne. Według społeczności hakerskiej haker to komputerowy pasjonat o dużej wiedzy, który nie wykorzystuje jej do szkodzenia innym. Crackerem natomiast określają osobę łamiącą zabezpieczenia w celu dokonania przestępstwa (np. kradzieży danych osobowych z serwera).

Różnice w definicji znaczenia kontrowersyjnych słów cracker i haker między społecznościami crackerów i hakerów sprowadzają się do odmiennego wyznaczenia linii podziału. Dla społeczności crackerskiej linię podziału stanowi rodzaj celów ataku (oprogramowanie używane lokalnie lub zdalne systemy za pośrednictwem sieci), dla społeczności hakerskiej moralna ocena działania (tzw. białe i czarne kapelusze).

Łamanie zabezpieczeń oprogramowania[edytuj]

Łamanie zabezpieczeń opiera się tu o reverse engineering. Cracker operuje na kodzie binarnym, który poddaje dezasemblacji za pomocą narzędzi takich jak IDA czy w32Dasm i analizie na poziomie asemblera. Często śledzi działanie programu bezpośrednio w pamięci z użyciem debugera (np. SoftICE, OllyDbg). Wymaga to dobrej znajomości architektury procesora, wykorzystywanych przez oprogramowanie funkcji API, a także samego systemu operacyjnego.

Zabezpieczenia kryptograficzne wykorzystujące algorytmy szyfrowania (np. RSA) czy funkcje skrótu (np. MD5) są łamane bardzo rzadko, gdyż zazwyczaj jest to czasochłonne i praktycznie niemożliwe. W takich przypadkach zabezpieczenia obchodzi się, wyłączając ich wywołania w kodzie programu (zwykle wstawiając instrukcje puste, tzw. nopowanie, od ang. no operation). W celu utrudnienia działania crackerom stosuje się kompresję plików binarnych, sprawdzanie sumy kontrolnej, kod polimorficzny, metody ochrony przed dezasemblacją i debugowaniem, a także metody wykrywania debugerów i innych typowych narzędzi wykorzystywanych przez crackerów.

Najczęściej łamane typy zabezpieczeń oprogramowania to: ograniczenia czasowe, ilościowe lub funkcjonalne (wersje trial), tzw. nag screens (ekrany przypominające o niepełnowartościowym oprogramowaniu i kupieniu pełnej jego wersji) i okna reklamowe, numery seryjne, pliki klucza, sprawdzanie obecności klucza sprzętowego lub płyty CD.

Łamanie zabezpieczeń serwerów[edytuj]

Zwykle łamanie zabezpieczeń sprowadza się do wykorzystania gotowych programów wykorzystujących luki w oprogramowaniu zainstalowanym na serwerze (tzw. exploitów) lub popularnych metod ataku na aplikacje webowe (np. SQL injection). O ile pierwsza metoda wymaga jedynie znajomości wersji oprogramowania na serwerze i może być stosowana bez wiedzy o zasadach wykorzystania luki (częste działanie tzw. script kiddies), o tyle druga wymaga dużej wiedzy i doświadczenia. Stąd o wiele łatwiejsza jest obrona przed script kiddies: w ogólności wystarczy aktualizować w porę wykorzystywane oprogramowanie. Zdolny cracker potrafi natomiast sam przeanalizować serwer pod kątem luk w zabezpieczeniach, pisać własne exploity czy nawet tworzyć zupełnie nowe metody ataku.

Zobacz też[edytuj]

Literatura[edytuj]