Berendezések eltávolítása billenő védett alkalmazások

Berendezések eltávolítása billenő védett alkalmazások

Védőfelszerelés írja Themida (a «szül» eXtreme fólia) és a Star-Force, amely védett, számos népszerű programok, nagyon mély „harapás” az operációs rendszer, amely csökkenti a teljesítményt és generál saját BSOD. Az „kollégák” nem viselkednek agresszíven, de kompatibilitási problémák még mindig hiányzik, különösen az átmenet a 64 bites operációs rendszerek és a többmagos processzorok, amelyek jelentősen eltérnek azoktól, amelyek védelmet tervezték aktívan használó dokumentált funkciókat. Hányszor mondta a világnak - nem használ semmit nem dokumentált kereskedelmi alkalmazások, de csak nem vár! Tehát meg kell venni a hacker eszközök és megszabadulni a védők, akkor is, ha a program által megszerzett jogi eszközöket és „break” nem szükségszerűen. De szükség van! Milyen furcsa a világ.

Egyszerű esetekben a dömping

Képzeljük el, hogy a páraelszívó már teljesült, a program leáll az eredeti belépési pont (OEP) és készek vagyunk, hogy mentse a kép fájl (kép) a lemezen, hogy van, hogy visszaállítsa egy szeméttelep. Debugger puha jég nem biztosít ilyen lehetőséget, így van, hogy jár egy kerülő úton. De először meg kell találni, hogy milyen memória területet kell tartani. Feltéve, hogy a védelem nem vállal semmilyen ellenséges fellépés, a szükséges információkat lehet húzni csapatok MOD és MAP32 (lásd. Ábra. Az 1. és az 1. listát).

1. lista meghatározása a modul telepítési memóriában. Itt «test_dump» - a folyamat nevét,

ahonnan fogunk távolítani a dump (soft-jég megjeleníti azt a jobb alsó sarokban)

HM Base PEHeader Modulnevet Fájlnév

00400000 004000D0 test_dum TEMP est_dump.exe

# Nézd meg a térképet a memóriamodul

Tulajdonos Obj Név Obj # Cím Méret Típus

test_dump szöveget 0001 001B: 00401000 00003B46 KÓD RO

test_dump RDATA 0002 0023: 00405000 0000080E iData RO

test_dump .data 0003 0023: 00406000 00001DE8 iData RW

1. ábra meghatározása memória régió eltávolítására a kiírási

2. lista memóriakiíratás, nyilallt történelem

db 400000 L 7DE8

010: 00400000 4D 5A 90 00 03 00 00 00-04 00 00 00 FF FF 00 00 MZR.

010: 00400010 B8 00 00 00 00 00 00 00-40 00 00 00 00 00 00 00 @.

010: 00400040 0E 1F BA 0E 00 09 B4 21 B8 CD-4C CD 01 21 54 68. L. Th!

010: 00.400.050 69 73 20 70 72 6F 67 20 72-61 6D 63 61 6E 6E 6f programot canno

010: 00.400.060 74 20 62 65 20 72 75 6E-20 69 6E 20 44 4F 53 20 t kell futtatni a DOS

010: 00400070 6D 6F 64 65 2E 0D 0D 0A-24 00 00 00 00 00 00 00 módot. $.

! Command dump (.. Lásd a 2. ábrát és 3. lista) lehetővé teszi, hogy mentse memória blokkok lemezre bináris formában, ami nagyon kényelmes:

3. lista memóriaképe, a csapat lövés! Dump bővítmény IceExt

Billenő memóriából a lemezre

billenő fájlnév címén Len

lerakó c: dump.dat 400000 1000

billenő. c: dump.dat 400000 1000

billenő. c: dump.dat EDX + EBX ECx

DUMP C: dömpingelt 400.000 7DE8

Szeméttelep. C: dömpingelt 400.000 7de8

2. ábra eltávolítása a lerakó lágy-jég segítségével plug-IceExt

Tovább plug - icedump (programmerstools.org/system/files?file=icedump6.026.zip) is képes szedni a memóriát, és ugyanúgy, mint IceExt, azt ingyenesen terjesztett forráskódot.

3. ábra eltávolítása billenő OllyDbg dugaszolható OllyDump

4. ábra: Megjelenés segédprogram PE-ESZKÖZÖK

találta magát,

A legegyszerűbb dolog -, hogy vizsgálja meg a memóriakártyát a kísérleti folyamat iránt VirtualQuery / VirtualQueryEx API-funkciókat. Régiók jelzett MEM_IMAGE, tartozik a futtatható fájl, vagy egyikük használt DLL (az épület térképek PE-TOOLS felelős irányító «billenő régió» (lásd. Ábra. 5) bekezdés).

Természetesen OpenProcess / ReadProcessMemory / VirtualProtectEx funkciókat lehet elfogott védelmet, majd ahelyett, hogy a lerakó kapunk hibát, majd újraindul. Alacsony szintű funkciók NtOpenProcess / NtReadVirtualMemory / NtProtectVirtualMemory fogott ugyanolyan könnyedén mellett némi védelmet folyamat, módosítsa a biztonsági token, kivéve a felfedezés emlékét olvasni még a rendszergazda!

Úgy véljük, hogy az eltávolítása a lerakó a rendszermag szintjén nyit nagy lehetőségeket reverse engineering és az ezek elleni teljesen lehetetlen, mert az illesztőprogram működik a legmagasabb szintű a kiváltság, amely lehetővé teszi az összes. De a vezető és védelem dolgozik a kernel szinten is, minden elérhető, beleértve módosítása az operációs rendszer magja, amelyben a dömper vezető igényeinek. És nem dokumentált funkciókat olvasásra a memória egy másik folyamat (a fentiek kivételével) már ott vannak!

De nem ez a legrosszabb. Egyre több védő váltás dinamikus dekompressziós dekódolás oldalak használják őket, majd titkosítja az adatokat újra. Még ha van áttörni a védelmi és ajtók a folyamat, a lerakó lesz semmi. inkább, ami dump majdnem 99% titkosítva van.

Mechanizmusok dinamikus dekódolás

A többi oldalak titkosított, és ismét belép, az eltéréssel, hogy elküld a szerverhez WaitForDedugEvent. A szerver titkosítja az előző oldalra, adja meg az összes hozzáférési attribútumok amit csak, és dekódolja az aktuális oldal egy kivételt (sőt, a teljesítmény növelése érdekében védelmet támogatja primitív cache, amely lehetővé teszi, hogy az ügyfél több oldalt egyszerre dekódolható).

Az igény, hogy debug a folyamatot kiszolgáló annak a ténynek köszönhető, hogy egy másik fogás kivételek az alkalmazási réteg egyszerűen nem működik. De mi a helyzet a mechanizmus strukturális kizárás vagy rövidített formában, PSZ? Regisztráció a saját felvezető és fogás kivételek, ez az úgynevezett előfordulási helye. Ez megszabadít minket az API-hívások, amely processzorok közötti kölcsönhatás elemi elfogott egy hacker. Ó, jaj! Ha a védett alkalmazás a PSZ (és a legtöbb alkalmazás használni), a felvezető blokkolni fogja a másikat. Szembesülve a „mi” kivétel, ő egyszerűen nem tud mit kezdeni vele, és a valószínűség közel van egyhez, egyszerűen töltse ki a jelentkezési vészüzemmódban.

A legújabb változat a Armadillo futófelület, új nevén a Szoftver Passport, végre egy sokkal megbízhatóbb, bár rendkívül alacsony termelékenység nyomjelző dekódolás mechanizmus, amelyben az egész programkód titkosítva teljes egészében. Server kliens nyomok, dekódolás egy utasítás is (az előző állítás, ha azt titkosítva). Már nehezen távolítható el a lerakó tompa fellebbezést memóriát, mert a védelem csak az érdekli, kivételek, amelyek előfordulnak a végrehajtás során. Minden, amit tehetünk, hogy „éket” között a titkosított alkalmazás és a dekódolás, „kollektsioniruya” dekódolt utasításokat, amelyek kialakítják a menet végrehajtása nyoma. Mert, hogy 100% -os lefedettség kód szinte lehetetlen, a kapott lerakó nem lesz teljes, de van egy kis kivétellel. Pokomandnaya átirat nem használhatja minden blokk, nem kontextusfüggő kriptográfiai algoritmusok nyomjelző dekódolás nem tudható előre, hogy mi az utasítást hajtja végre a következő. Már csak streaming algoritmusok, mint például XOR vagy az RC4, amelyek nagyon könnyű megfejteni - meg kell találni egy sor, amely védő, nem számít, milyen erőfeszítés, túl mély, hogy elrejtse nem lenne képes! Persze, hogy teljesen automatizálja a folyamatot, mely eltünteti a lerakó ebben az esetben már nem lesz képes, és kénytelenek szétszerelése, és talán még a hibakeresés. Szerencsére, ezek a védelmi rendszerek nem elterjedtek, és nem valószínű, hogy ez a belátható jövőben. A nyomkövetés lassítja a sebességet a kérelmek tucatszor, ennek eredményeként válik versenyképes.

A klasszikus módon végrehajtani a kód végrehajtását az alábbiak szerint: nyissa meg a folyamatjelző OpenProcess, lefoglalni egy blokk memória hívja VirtualAllocEx, másolja be a kódot dömper keresztül WriteProcessMemory, majd létrehozhat egy távoli patak CreateRemoteThread funkció (csak NT-szerű rendszer), vagy megváltoztatja a nyilvántartásban EIP idegen szál összefüggésben címzési SetThreadContext (érvényes minden rendszeren). Természetesen az előző EIP kell tárolni, és az áramlás - megállt.

Várj egy percet! De ez nem sokban különbözik a szokásos processzorok közötti kommunikáció! Funkciók NtAllocateVirtualMemory / NtSetContextThread / NtCreateThread semmilyen védelmet elfogja élvezettel! (No hiba nem itt van, CreateRemote Menet API-függvény valójában egy „wrapper” körüli nukleáris NtCreateThread funkciót.)

Nos, itt van egy másik klasszikus módon. Tedd a dömper a DLL és felírta, HKLMSoftwareMicrosoftWindows NTCurrentVersionWindowsAppInit_DLLs, emiatt megjelenik az összes olyan folyamatot, ami csak létezik a rendszerben, és mielőtt a vezérlést a következő végrehajtható folyamat első kap a DLL-szabályozás! Sajnos ezen ága ismert nem csak védők, hanem más programok (antivírus, személyi tűzfalak), és nézd meg. A rekord lehet eltávolítani, még mielőtt a dömper kezd dolgozni! Ha továbbra is képes úrrá, az első dolog, amit meg kell tennie -, hogy jelöljenek ki egy blokk memória jelenleg folyamatban másolni a szükséges kódot, és visszatér AppInit_DLLs ág az eredeti állapotába. Mivel dömper megszerzi előtt a védelmi elkezd dolgozni, akkor nem lesz képes megtalálni, hogy valaki itt már járt.

Így a védelem nem lesz képes változások kimutatására akár egy fájl vagy a memóriában (amikor megpróbálja meghatározni a fájl nevét, a jelenlegi operációs rendszer visszatér a fájl nevét, ami volt abban az időben a dob, figyelmen kívül hagyva azt a tényt, hogy az „online” átnevezés). De ez túl bonyolult és díszes algoritmus ugyanaz értéktelen aktív védelem lefoglaló SetTimer és szüntesse meg a timer beállítás a „” folyamat befejezéséhez a kicsomagolni / transzfer a vezérlést az OEP.

A megfelelően tervezett és megfelelően végrehajtják védelem megakadályozza az illegális használata a program, de sem az erkölcsi, sem jogi jogát, hogy megakadályozza a becsületes felhasználók és különösen arra, hogy betörjön az operációs rendszerben, és senki sem engedélyezett változtatásokat. A legújabb változat a védők Themida Software útlevél és közeledett a rootkit. Egy kicsit többet, és akkor viszont valódi vírusok létrehozását, amely a törvény tiltja.

„Becstelen” defenzív trükkök

Normál csomagolók (UPX, PKLITE, PECOMPACT) tömörített futtatható fájl, veszteség nélkül, és a kicsomagolás után visszatér az eredeti formájában, ami az eljárás megszüntetésére a kiírási triviális feladat. Védőfelszerelés annak érdekében, hogy megerősítse a védelmet gyakran megy egy kockázatos lépés - ők kissé „mángorló” a fájl feldolgozása oly módon, hogy azt csak akkor működik, a futófelület, és a felszabadulás után belőle alkalmatlanná válik. A legnépszerűbb módszer az ilyen „tisztességtelen” a védelem az alábbiakban ismertetjük.

Lopás bájt OEP. A legegyszerűbb és legelterjedtebb podlyanka használt még ilyen ártalmatlan védők, például ASProtect. Ennek lényege abban rejlik, hogy a szárny „lopás” néhány utasítást az eredeti belépési pont, tárolja őket egy rejtett helyen (talán egy rejtett vagy titkosított), és befejezése után kicsomagolás utánozza végrehajtás lopott bájt. Leggyakrabban erre a célra használt verem (ha lopott bájt általában vált operandus használati PUSH), legalább - közvetlen hatással a regiszterek és a memória (lopott utasításokat átalakítják pszeudo-kód, és kifejezetten nem tárolja sehol). A lényeg az, hogy a belépési pont a kép az eredeti tömörítetlen byte nem fordul, és távolítsa el a lerakó működésképtelenné válik. Szerencsénkre, a programok túlnyomó többsége kezdődik start kód, amely része a futásidejű könyvtár (RTL), a mellékelt összeállítói. A fennmaradó „farok” a start kódot, mi könnyen azonosítani a fordító és vissza ellopott bájtok könyvtára. Ha ez a fordítóprogram a birtokunkban nem jelenik meg, az első néhány bájt a start kódot 10-ből 9 esetben meglehetősen kiszámítható, és gyakran nem tudják megjavítani magukat (persze, meg kell, hogy van tapasztalata a különböző RTL). By the way, az IDA Pro felismeri a fordító az első byte a start kódot, és ha ezek hiányoznak vagy sérültek, FLIRT mechanizmus nem fog működni. Ez azt jelenti, hogy nem marad a nevét könyvtári funkciók és szétszerelés folyamat sokkal több időre.

A polimorf junk az OEP. Ahelyett, hogy lopás bájt az OEP egyes védők inkább módosítja az indítási kódot, hígítás jelentős polimorf utasításokat értelmetlen szemetet. Ez nem befolyásolja a teljesítményét az elfogott lerakó, hanem elkápráztatja „FLIRT”, arra kényszerítve bennünket, hogy vagy megtisztítása a szemetet polimorf, illetve meghatározza a változata a „szemmel” fordítóprogram, letöltés aláírást kézzel (IDA Pro lehetővé teszi).

Átalakítás byte-kódot. Védőfelszerelés Themida és a Start-Force lehetővé teszi, hogy megtérít egy része a gép kódját a védett szoftver egy virtuális gép nyelvén, azaz bytecode (más néven p-kód). Ha a virtuális gép mélyen „beültetett” a futófelület, akkor letörnek védelme, nem pedig a „megölte” ebben az alkalmazásban, gyakorlatilag lehetetlen, lehetetlen, hogy közvetlenül szétszerelni a bájtkódot. Legalábbis erre szükség, hogy megértsék az algoritmus a virtuális gép, és írj egy speciális processzor az IDA Pro-bontó, vagy a saját. Ez egy nagyon munkaigényes tevékenység, amely azon a kutató egy csomó időt és energiát, hanem azért, mert a bájtkódot virtuális gép a következő verziók a futófelület lehet változtatni, és a korábban írt feldolgozó egység / bontó használhatatlan lesz. Ez a leginkább ellenálló védelmet az összes ma létező, de ne felejtsük el a két dolgot: egyrészt, ha a futófelület egyre népszerűbb, és az új verzió jön ki csak ritkán, ami CPU lesz gazdaságilag életképes és védelem kezdik megtörni mindenkit, ha új verziók megjelenésével szinte naponta, nem valószínű, hogy a fejlesztő már taposni elegendő ideje a radikális átalakítása a virtuális gépet, és azt is csak a kis változások a bájtkódot, ami lefordítja kisebb változások a CPU modul, és továbbra is megtörni a védő. Másodszor, a hacker „letépni” a VM a futófelület, nem részletezném a bonyolult értelmezése bytecode, ismét megerősítve a jól ismert tézis: meg tudja törni mindent ... végül.