Wstęp do inżynierii wstecznej

Prowadzący: Grzegorz Uriasz

Zadania kwalifikacyjne są tutaj.

Z dużym prawdopodobieństwem chociaż raz w życiu mieliśmy do czynienia(świadomie bądź też nie) z wirusem komputerowym, mogła to być złośliwa faktura którą dostaliśmy na maila, dokument word z makrami od "banku" bądź też zostaliśmy zainfekowani poprzez ściąganie i uruchamianie dystrybucji linuksa z torentów. W celu obrony przed tego typu zagrożeniami przeważnie stosujemy obok zdrowego rozsądku i czujności antywirusy. Antywirusy nie są idealnym rozwiązaniem i w wielu wypadkach nie obronią nas przed nowymi zagrożeniami - często twórcy złośliwego oprogramowania są w stanie sprawić że ich nowe wirusy są niewykrywalne przez większość antywirusów przez kilka dni po ich "publikacji". W celu usprawnienia antywirusa bądź też zrozumienia co się dzieje z komputerem przy infekcji złośliwym oprogramowaniem konieczne jest dokładne zrozumienie działania danego wirusa. Mamy tutaj niestety drobny problem - prawie zawsze nie mamy dostępu do kodu źródłowego danego oprogramowania by poznać jak on działa. Z pomocą przychodzi nam inżynieria wsteczna.

Inżynieria wsteczna jest próbą dokładnego zrozumienia danej rzeczy/produktu/programu mając tylko i wyłącznie dostępny wynik danej pracy. Normalnie w przemyśle na bazie planów produkuje się dany przedmiot, aczkolwiek gotowy przedmiot musi zawierać wszystkie istotne informacje z planów, tak więc inwestując czas i zasoby można spróbować odtworzyć oryginalne plany na bazie gotowego produktu. Zdarzało się że użyciu inżynieri wstecznej państwa/firmy "kradły" pewne technologie, istnieje też system operacyjny ReactOS który ma na celu odtworzyć kernel Windowsa przy użyciu inżynierii wstecznej.

Na warsztatach skupimy się na dekompilacji programów działających pod systemem Linuks(wiedzę tą będzie można też zastosować do programów windowsowych). Będziemy analizowali przykładowe skompilowane programy napisane w języku C. Zapoznamy się z narzędziami do inżynierii wstecznej i z niskopoziomowymi instrukcjami procesora(assembler).