WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI
INSTYTUT AUTOMATYKI I INFORMATYKI
KIERUNEK INFORMATYKA
STUDIA STACJONARNE I STOPNIA
PRZEDMIOT : LABORATORIUM OCHRONY DANYCH W SIECIACH I SYSTEMACH KOMPUTEROWYCH
ZADANIE nr 3
TEMAT: Zabezpieczenia oprogramowania
NAZWISKO: Dobrzański IMIĘ: Artur
TERMIN WYKONANIA: 26-11-2011 TERMIN ODDANIA: : 29-11-2011
Prowadzący:
Dr inż. Grzegorz Bialic
Ćwiczenie zostało przeprowadzone na wirtualnej maszynie z windowsem Xp. Potrzebne do wykonania ćwiczenia programy zostały prawidłowo ściągnięte i zainstalowane.
Przebieg ćwiczenia:
Aby rozpocząć filtrowanie danych procesów należy z górnego menu wybrać filtrowanie (Options -> filter) oraz wpisać nazwę procesu który chcemy filtrować. Klikając w menu na zegar zmieniamy wartości w kolumnie Time na czas trwania wykonania operacji, dla różnych ich rodzajów, wykonywanych na systemie plików. Kolumna Path pokazuje na ścieżkę do klucza rejestru, na którym proces operuje.
Rysunek 1Filtrowanie procesu csrss.exe w programie Filemon.
Rysunek 2 Filtrowanie procesu csrss.exe w programie Regmon.
Wyszukiwanie procesów w zależności od wskazanego okna. Możemy to uzyskać dzięki ostatniemu elementowi paska narzędzi – celownikowi (ikonka celownika). Po uruchomieniu programu naciskamy na celownik i (trzymając wciśnięty lewy klawisz myszy) najeżdżamy na okno, którego proces macierzysty chcemy odkryć. Jego nazwa zostanie podświetlona w oknie głównym programu. Zastąpienie programem Process Explorer Menedżera zadań – (Options -> Replace Task Manager), cofnięcie zmian - (Options -> Restore Task Manager).
Rysunek 3 Znalezienie procesu macierzystego notatnika w programie Process Explorer.
Rysunek 4 Znalezienie procesu macierzystego Kalkulatora w programie Process Explorer.
W tutorialu pierwszym, do programu OllyDbg zawarty jest program reverseMe.exe. Z oglądniętego tutoriala doszedłem do wniosku, że najszybciej jest zmusić program do skoku pod adres w którym zapisane są instrukcje odpowiadające za właściwe jego działanie.
Aby wykonane zamiany przyniosły stały skutek należy je zapisać przy pomocy menu podręcznego. Wykonane zmiany zapisać w pliku wykonywalnym .exe. Oryginalny program żąda wykupienia licencji. Natomiast program zmodyfikowany przez nas omija to żądanie.
Modyfikacja zabezpieczenia RegisterMe.exe zgodnie z tutorialem polegała na zamianie instrukcji „je” na „jmp” i wypełnienia miejsca pomiędzy skokiem a adresem instrukcją NOP.
Po uruchomieniu programu IDA Pro uzyskałem listing kodu cracjme1.exe. Za pomocą komendy alt+F10 utworzyłem plik .asm
W oknie IDA View wybrałem jeden ze skoków. Można było podglądnąć graf dla tego skoku. Wybierając koejno ‘view -> graphs -> Flow Chart’ lub naciskając F12, uzyskujemy podgląd wybranego grafu w programie WinGraph32.
Widok grafu w WinGraph32
Niestety nie udało mi się uruchomić programu. Przy pierwszym uruchomieniu wyskoczył komunikat, że program potrzebuje restartu systemu do prawidłowego działania. Po restarcie systemu pomimo wszelkich starań maszyna za każdym razem restartowała się przy próbie uruchomienia programu syser debuger.
Komunikat pojawiający się przy próbie uruchomienia programu Syser Debugger
W przypadku zabezpieczenia pierwszego crackme1 należy podać nazwę i numer seryjny. W przypadku 2 zabezpieczenia- crackme2 Password. W zabezpieczeniu Crackme3 program będzie szukał pliku z numerem rejestracyjnym, należy ominąć tą sekcję. Zabezpieczenie- mexelite crackme 4 także wymagało podania nazwy i numeru seryjnego. Do łamania zabezpieczeń wybrałem program OllyDBG.
Aby objeść zabezpieczenie programu CrackMe1 należało zmienić jedną instrukcje aby program akceptował każde login i serial. Podmieniamy „JE SHORT 0040124C” na „JMP SHORT 0040124C” w linii 00401243. Wynik programu:
Aby objeść zabezpieczenie programu CrackMe2 należało zmienić jedną instrukcje aby program akceptował każde login i serial. Podmieniamy „JE SHORT 0040124A” na „JMP SHORT 0040124A” w linii 00401241. Wynik programu:
Aby objeść zabezpieczenie programu podmienić „JE SHORT 0040124A” na „NOP” w linii 0040118A. Wynik programu:
Zabezpieczenie Mexelite CrackMe's 4 złamano poprzez zamianę istrukcji JE na adresie 0042DCC2 na instrukcję NOP.
Wynik programu:
Ostatni program zabezpieczony jest plikiem kluczem. Niestety nie potrafię scrackować, nie do końca rozumiem jego sposób działania a jego kod po wczytaniu do programu Ollydbg nie jest dla mnie zbyt czytelny.
W pierwszej części ćwiczenia największy problem stanowiła próba zainstalowania programu Syser Debugger na maszynie wirtualnej z systemem Windows xp, ponieważ po włączeniu programu maszyna zostawała resetowana. Każde z zabezpieczeń przedstawione w drugiej części ćwiczenia wymagało śledzenia niskopoziomowych operacji w kodzie programu. Za pomocą programów, których użyłem w tym ćwiczeniu możemy scrackować zabezpieczone programy, tak jak w przypadku wyżej wymienionych prostych programików, możemy ominąć wpisywanie haseł czy też zarejestrować program nie znając potrzebnych danych.