Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Wstęp
Inżynieriawstecznaoprogramowania(ang.
reversecodeengineering
,wskrócieRElubRCE)jestprocesemanalizybudowyisposobu
działaniaprogramówkomputerowych,zarównotychprzeznaczonychnaserwery,komputeryosobisteiurządzeniamobilne,jak
isterującychpracąrozmaitychurządzeńprzemysłowych,sieciowychczyAGD.Dziedzinatamaobecniebardzowielezastosowań.
Wwieluprzypadkachtermin„RCE”jestkojarzonyprzedewszystkimzanalizątzw.złośliwegooprogramowania,potocznie(choć
niekonieczniepoprawnie)nazywanegorównież„wirusamikomputerowymi”.Wpracytejcelemanalitykajeststwierdzenie,czy
analizowanyprogramfaktyczniedziaławzłejwierze(tj.naniekorzyśćużytkownika),awdalszejkolejnościustaleniedokładnego
przebieguinfekcjiorazskutkówzarażenia.Tozkoleipozwalanatworzeniesygnaturjednoznacznieidentyfikującychdany
malware
,atakże
narzędzidojegousunięciaobateelementyzwyklewchodząwskładoprogramowaniaantywirusowego.
Abyutrudnićpracęanalityków,twórcyzłośliwegooprogramowaniastosująszeregmechanizmówisztuczekspowalniającychanalizę
jednąznichjestoczywiścieobfuskacja,którastanowczozmniejszaczytelnośćkoduczywręczcałkowicieukrywagozawarstwą
szyfrowanialubkompresji.Innymczęstoobserwowanymschematemjestwykrywaniefaktudokonywaniaanalizykoduijejaktywne
utrudnianienp.poprzezprzedwczesnezakończenieprocesuczyzabicieprocesudebuggera.Cociekawe,dokładnietesamemetody
stosowaneprzezpewnągrupętwórcówlegalnegooprogramowania,którzystarająsięchronićwtensposóbzaimplementowaneprzez
siebiemechanizmy,weryfikującefaktzakupieniaprzezużytkownikówlicencjizezwalającychnaużytkowaniedanejaplikacji.Podrugiej
stroniebarykadywtymprzypadkustojątzw.
crackerzy
orazpiracikomputerowi,którzyeliminująwspomnianemechanizmy
irozpowszechniająprogramy„zaplecami”producenta.
Powiązanąponiekąd,alejednakodrębnągałęziąinżynieriiwstecznejjestmodyfikacjaistniejącegooprogramowaniazzamiarem
naniesieniananiegopoprawek,rozszerzeniafunkcjonalności,przetłumaczeniainterfejsuużytkownikaczyumożliwieniawspółpracy
zinnymiaplikacjami.PrzykłademtakiegodziałaniamożebyćzmianastawkipodatkuVATwarchaicznymsystemiewspomagającym
sprzedażwfirmie,któregoproducentjużdawnonieistnieje.Zainneprzykładymogąposłużyć:zautomatyzowaniekonwersjibazydanych
zapisanejwnieznanymformaciedoformatuobsługiwanegoprzezinneaplikacje,poprawienieęwuniemożliwiającychstabilnąpracę
aplikacjinanowszejwersjisystemuoperacyjnegoczyteżdodanienowychmodułówrozbudowującychlubmodyfikującychgry
komputerowe.
Wreszcieinżynieriawstecznajestrównieżstosowanawbranżybezpieczeństwakomputerowego,akonkretniejwanaliziepoprawności
implementacji(czylitzw.
vulnerabilityresearch
,
bughunting
),którejcelemjestpoznaniewybranychkomponentówoprogramowania
natyledobrze,abydogłębnieprzebadaćjepodkątemwystępowaniabłędówbezpieczeństwa.Takwnikliwaanalizakoduwykonywalnego
bardzoczęstoprowadzidosytuacji,wktórejbadaczznajegoniektórefragmentylepiejniżsamtwórca.
Możnabypowiedzieć,żeinżynieriawstecznajestwpewnymstopniuczęściąnormalnegoprocesuprogramowania,gdyżnawetmając
dostępdokoduźródłowegoikompletnejdokumentacji,programiścinierzadkomusząpoświęcićczasienergię,abyprzeanalizować
izrozumiećnieznanesobie,istotnefragmentyprojektuczynawetwłasnegokodu,któregoszczegółyzdążyłyumknąćzpamięci.
Podsumowując:inżynieriawstecznajestzpewnościąfascynującądziedzinąinformatyki,wktórejmożnaznaleźćwieleciekawych
technologii,podejść,trikówiniuansów.ZtymwiększądumąoddajemywPaństwaręceniniejszyzbiórpublikacjidwunastuautorów
specjalistówzzakresuinżynieriiwstecznejzwieloletnimstażem,którzynacodzieńzajmująsięanalizązłośliwegooprogramowania
ibadaniembezpieczeństwaaplikacji,atakżebiorąudziałwturniejachsecurityCTFjakoczłonkowienajlepszychdrużynnaświecie.
Wtomietymzebranomateriałydotycząceinżynieriiwstecznejprzeznaczonezarównodlapoczątkujących,jakibardziej
zaawansowanychczytelników.Tychpierwszychzainteresujątematytakiejakmetodyczytanianiskopoziomowegokodu,omówienie
interesującychaspektówformatówplikówwykonywalnychczycharakterystycznychwzorcówwynikającychzdodawanychprzez
współczesnekompilatoryzabezpieczeń.Osobyoddłuższegoczasuzwiązanezdziedzinąznajdątuzarównorozdziały,którychtematyka
wykraczapozatypowyschematanalizykodunaarchitekturęx86takiejakciekawostkizwiązanezinżynieriąwstecznąmniej
standardowychtechnologii(CPython,
.NET),jakirozdziałyzagłębiającesięwdobrzeznanezagadnienia:śledzenietokuwykonaniakodu,
sztuczkiwformacieELF,przekierowaniaAPIwformaciePEczytechnikizwiązanezewstrzykiwaniemkoduwinneprocesywsystemie
Windows.Ostatniedwarozdziałyksiążkitostudiaprzypadków,wktórychomówionoanalizęiwykorzystanieniskopoziomowychbłędów
bezpieczeństwanajpierwwoprogramowaniusterującympracąroutera,anastępniewwieluzróżnicowanychzadaniachzturniejówCTF,
stworzonychprzezautoraopracowania.
Życzymyprzyjemnejiprzedewszystkiminteresującejlektury!
GynvaelColdwind,MateuszJurczyk
Wrzesień2016