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ści–ustaleniedokładnego
przebieguinfekcjiorazskutkówzarażenia.Tozkoleipozwalanatworzeniesygnaturjednoznacznieidentyfikującychdany
malware
,atakże
narzędzidojegousunięcia–obateelementyzwyklewchodzą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
są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,poprawieniebłędó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ązaneztądziedzinąznajdątuzarównorozdziały,którychtematyka
wykraczapozatypowyschematanalizykodunaarchitekturęx86–takiejakciekawostkizwią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ństwa–najpierwwoprogramowaniusterującympracąroutera,anastępniewwieluzróżnicowanychzadaniachzturniejówCTF,
stworzonychprzezautoraopracowania.
Życzymyprzyjemnejiprzedewszystkiminteresującejlektury!
GynvaelColdwind,MateuszJurczyk
Wrzesień2016