hakin9 6 2004 inzynieria odwrotna demo


Inżynieria odwrotna
kodu wykonywalnego ELF
w analizie powłamaniowej
Marek Janiczek
Inżynieria odwrotna, kojarząca
się najczęściej z łamaniem
zabezpieczeń oprogramowania,
może być z powodzeniem
zastosowana w analizie
powłamaniowej. W jej wyniku
uzyskamy odpowiedzi na pytania
o rolę, możliwości i mechanizm
działania znalezionych
w systemie podejrzanych plików.
iesiąc temu podczas analizy skom- stosowane narzędzia to programy standardo-
promitowanego systemu natrafiłem wo dostępne w systemach Linux i rodzinie BSD
Mna pozostawiony przez intruza w ka- oraz kilka innych, dostępnych publicznie w Inter-
talogu /usr/share/doc/shellutils program o na- necie. Standardowe narzędzia systemowe do-
zwie kstatd. Standardowa analiza powłama- starczane w dystrybucjach to przede wszystkim
niowa, oparta na badaniu informacji w pamięci pakiet binutils (GNU binary utilities). Z tego pa-
i na dysku skompromitowanego systemu, nie kietu wykorzystamy następujące programy:
pozwoliła na pełne ustalenie roli pełnionej
przez podejrzany plik. Nie miałem możliwości " ar  do uzyskania informacji o obiektach biblio-
odtworzenia śladów kodu zródłowego  pro- tek (z archiwów *.a) oraz ich wydobywania,
gram albo został skompilowany na skompromi- " nm  do otrzymania listy odniesień symbo-
towanej maszynie i skutecznie usunięto ślady licznych (symboli) w obiektach,
jego kodu zródłowego, albo został wprowadzo- " objdump  umożliwiający uzyskanie szcze-
ny do systemu w postaci skompilowanej. W ta- gółowych informacji o obiekcie i jego za-
kiej sytuacji jedynym rozwiązaniem było prze- wartości,
prowadzenie szczegółowej analizy kodu znale-
zionego programu, zwanej również inżynierią
Z artykułu nauczysz się...
odwrotną (reverse engineering).
Działania, które przeprowadziłem można
" w jaki sposób przeprowadzić deasemblację ko-
nazwać analizą statyczną  analizowany kod
du wykonywalnego ELF,
nie był w ogóle uruchamiany. Końcowe wnioski
" jak wykorzystać inżynierię odwrotną podczas
powstały wyłącznie na podstawie badania bu-
analizy powłamaniowej w Linuksie.
dowy i zawartości analizowanego obiektu.
Powinienieś wiedzieć...
" powinieneś znać przynajmniej podstawy pro-
Niezbędne narzędzia
gramowania w językach C i Asembler.
Jako platformę do przeprowadzenia analizy wy-
korzystałem system Mandrake Linux 10.0. Za-
56 www.hakin9.org Hakin9 Nr 6/2004
Obrona
Reverse engineering w analizie powłamaniowej
cje uzyskane na tym etapie nada-
dzą kierunek naszym dalszym dzia-
Format ELF
łaniom. Do uzyskania tych informacji
ELF (Executable and Linking Format) to typowy dla systemów Linux format trzech ty-
pów obiektów binarnych: realokowalnych, wykonywalnych oraz współdzielonych. wykorzystamy standardowe narzę-
dzie systemowe file.
" Obiekty realokowalne (z rozszerzeniem *.o) to takie, które podlegają łączeniu z in-
nymi w celu utworzenia pliku wykonywalnego lub biblioteki współdzielonej  są to
# file kstatd
pliki wynikowe kompilatorów i asemblerów.
kstatd: ELF 32-bit LSB executable,
" Obiekty wykonywalne to pliki gotowe do uruchomienia, już po procesie realokacji
Intel 80386, version 1 (SYSV),
i z rozwiązanymi odwołaniami symbolicznymi (z wyjątkiem tych, które dotyczą od-
for GNU/Linux 2.2.5,
wołań do bibliotek współdzielonych, rozwiązywalnych w trakcie uruchomienia).
statically linked, stripped
" Obiekty współdzielone (z rozszerzeniem *.so) to takie, które zawierają kod i dane
mogące brać udział w procesie łączenia obiektów w dwóch kontekstach. Pierw-
szy to łączenie przez linker z realokowanymi lub współdzielonymi obiektami w ce- W wyniku działania tego pole-
lu utworzenia innego obiektu. Natomiast drugi to łączenie z kodem programu wy- cenia uzyskaliśmy między in-
konywalnego przez systemowy program ładujący (linker/loader) w celu utworzenia
nymi informację o typie obiek-
w pamięci obrazu procesu.
tu  jest to program wykonywal-
ny w formacie ELF (patrz Ram-
Podstawowym elementem plików w formacie ELF jest nagłówek ELF (patrz Rysunek 1).
ka Format ELF) oraz architektu-
Nagłówek ten stanowi swego rodzaju mapę organizacji pozostałej części pliku i znajdu-
rze, dla której został skompilowa-
je się zawsze na jego początku. W nagłówku ELF znajdują się m.in. takie elementy jak:
ny (Intel 80386, 32-bit, LSB  least
lokalizacja nagłówka programu i nagłówka sekcji względem początku pliku, adres (tzw.
significant byte). Uzyskaliśmy rów-
entrypoint), pod który będzie przekazana kontrola po uruchomieniu programu oraz nie-
zależne od platformy sprzętowej informacje określające sposób interpretacji danych za- nież informację o tym, że ana-
wartych w pliku (ident). lizowany obiekt jest skompilo-
Dla zapewnienia właściwej elastyczności formatu ELF zaprojektowano dwa rów-
wany statycznie (statically lin-
noległe widoki obiektów w tym formacie: widok łączenia i widok wykonywania (patrz
ked), oraz że został on podda-
Rysunek 2). W trakcie budowy obiektu, kompilatory, assemblery i linkery traktują plik
ny procesowi strippingu (strip-
w formacie ELF jako zbiór sekcji opisanych w nagłówku sekcji (tzw. widok łączenia),
ped). Przykładem innych infor-
z opcjonalnym nagłówkiem programu (patrz Rysunek 3). Natomiast systemowy pro-
macji, które również można uzy-
gram ładujący pliki wykonywalne (linker/loader) traktuje plik w formacie ELF jako zbiór
skać w wyniku działania polecenia
segmentów opisanych w nagłówku programu (tzw. widok wykonywania), z opcjonal-
file uruchamianego dla programu
nym nagłówkiem sekcji. Widok łączenia nie jest konieczny do poprawnego uruchomie-
wykonywalnego, są ewentualne
nia i działania kodu wykonywalnego.
nieprawidłowości w nagłówku ELF.
Do przeglądania i analizy struktury plików w formacie ELF oraz zawartych w nich
informacji można wykorzystać program objdump, narzędzie elfsh lub program ht peł-
niący jednocześnie rolę przeglądarki, edytora i analizatora. Wyszukiwanie ciągów znaków
Kolejnym etapem wstępnego roz-
poznania jest wyszukanie w anali-
" strings  do wydobywania cią- o bardzo dobrym komercyjnym na- zowanym programie interesujących
gów drukowalnych znaków ASCII rzędziu IDAPro. Jest to program (podejrzanych) łańcuchów znaków.
z pliku. działający w środowisku Windows, Przeszukanie programu pod tym ką-
służący do deasemblacji różnych tem da nam kilka wskazówek o plat-
Dodatkowo zastosujemy: typów plików wykonywalnych (rów- formie, na której został zbudowa-
nież ELF), dla różnych rodzin pro- ny oraz pozwoli na wstępne ustale-
" ht  przeglądarkę, edytor i anali- cesorów. Przeprowadza automa- nie, jakie podejrzane działania mo-
zator wielu typów plików wykony- tyczną analizę oraz posiada moż- że wykonywać. Należy pamiętać,
walnych, liwość autokomentowania. My jed- że nawet najdrobniejsze szczegó-
" elfsh  narzędzie umożliwiają- nak  ze względu na jego komer- ły mogą się okazać pomocne w dal-
ce interaktywne przeglądanie cyjny charakter i użyty do badania szej analizie.
szczegółów formatu ELF, system operacyjny  nie będziemy Do wyszukania łańcuchów zna-
" ndisasm  program do deasem- go stosować. Wykorzystamy narzę- ków zastosujemy niezastąpio-
blacji plików binarnych dla plat- dzia darmowe, udostępniane na li- ne narzędzie strings, wyświetlają-
formy x86, cencji GNU. ce sekwencje drukowalnych zna-
" elfgrep  narzędzie do wyszuki- ków (ASCII) ze wskazanego obiek-
Wstępne
wania obiektów (na przykład bi- tu, których długość ma nie mniej niż
bliotek) w innych obiektach ELF. rozpoznanie obiektu 4 znaki (wartość domyślna; można ją
Proces analizy należy rozpocząć od zmienić  opcja -n). Stosując narzę-
Poza narzędziami zastosowanymi uzyskania podstawowych informacji dzie strings trzeba mieć jednak świa-
w trakcie analizy warto wspomnieć o analizowanym obiekcie. Informa- domość, że w przypadku obiektów
2004 Hakin9 Nr 6/2004 www.hakin9.org
57


Wyszukiwarka

Podobne podstrony:
hakin9 5 04 atak jabber?mo
hakin9 6 04 przechowywanie?nych?mo
hakin9 6 04 testy penetracyjne?mo
04 Inzynierem byc
hakin9 6 04 wykrywanie sniffingu?mo
hakin9 5 04 rozpoznawanie honeypotow?mo
hakin9 5 04?os obrona?mo
hakin9 5 04?maskowanie nadawcy?mo
hakin9 6 04 cisco ios?mo
hakin9 5 04 szelkod python?mo
hakin9 5 04 skanowanie portow?mo
2006 04 Rozszerzenie wzorca Template [Inzynieria Oprogramowania]
2007 04 Ewolucja wzorca polimorfizmu zewnętrznego w C [Inzynieria Oprogramowania]
04 mnozenie macierz odwrotna LU wwwidQ06
04 (131)
2006 04 Karty produktów
04 Prace przy urzadzeniach i instalacjach energetycznych v1 1

więcej podobnych podstron