Binárisok visszafejtése és elemzése

Ez a cikk a számítástechnikai biztonságtechnika néhány területét röviden bemutató sorozatunk része. A feldolgozott témák általában kapcsolódnak a Security Challenge 2013 egy-egy feladatához.

Ha valaki megkaparint egy malware-t és szeretné megismerni jobban a viselkedését, akkor a legegyszerűbb mód, ha visszafejti annak kódját (általában egy alacsony szintű nyelvre) és elkezdi analizálni. Ez az analízis kétféle módon történhet meg: statikusan vagy dinamikusan. A kettő között a különbség pofon egyszerű: dinamikus analízisnél futás közben vizsgáljuk a fájlt, míg statikus analízisnél tisztán a kódból kinyerhető információkra koncentrálunk. Előbbi előnye, hogy sok információ csak futás közben generálódik, utóbbi előnye viszont, hogy könnyebb és biztonságosabb analízist tesz lehetővé. Természetesen statikus/dinamikus analízis történhet visszafejtés nélkül is – erre is mutatunk majd a gyakorlatban is sokszor használt referenciákat.

Statikus analízisre a leggyakrabban használt tool az Interactive Disassembler (IDA). Nagyon sok utasításkészletet (pl. ARM, Intel 80x86, Atmel AVR) és formátumot (pl. PE fájlok, ELF binárisok) ismer (részletes lista). Mind python scriptek, mind úgynevezett IDC scriptek segítségével bővíthető a program. Az IDA letölthető a programot fejlesztő cég hivatalos weboldaláról. Fontos megjegyezni, hogy az IDA Pro nem ingyenes szoftver, ingyenesen az IDA Free és az IDA Pro Demo tölthető le, ezek több korlátozást is tartalmaznak.

Az IDA tartalmaz debuggert is, így elvileg a dinamikus analízishez sincs szükség más programra, viszont az IDA debuggere nem túl jó, ezért ajánlott egy másik szoftvert használni erre a célra. Az Ollydbg otthoni használatra ingyenes szoftver. Futás közben utasításonként lehet lépkedni a programom belül, miközben figyelhetjük az egyes regiszterekben történő változásokat (sőt, akár mi is változtathatunk önkényesen tartalmukon) illetve töréspontokat állíthatunk be. A program használatához sok bevezető jellegű leírás érhető el az interneten (például ez). Az IDA-hoz hasonlóan ez is bővíthető plugin-ek segítségével.

Mind statikus, mind dinamikus analízshez van több tucat egyéb hasznos eszköz. Ezek a teljesség igénye nélkül:

  • PEiD: Packelt kód felismerésére és azonosítására használják
  • Strings: A Sysinternals szoftvercsomag része, a binárisból kinyerhető stringeket gyűjti össze (erre egyébként az IDA is képes a visszafejtés után, így talán célszerűbb azt használni).
  • PEExplorer: Sokrétű reverse engineering tool, az egyik legnagyobb előnye talán, hogy a legismertebb packerekkel csomagolt binárisokat automatikusan kibontja.
  • RegShot: Két adott időpillanat közötti registry módosításokat mutat meg.
  • Cuckoo Sandbox, GFI Sandbox: A sandbox alkalmazások lényege, hogy izolált környezetben (többnyire egy virtuális gépben) futtatnak egy binárist és futás közben próbálnak minél több információt kinyerni arról, mit csinál a malware az adott gépen (pl. milyen API hívásokat intéz az operációs rendszer felé, milyen módosításokat végez a registry-ben, és így tovább).
  • Process Monitor: Szintén Sysinternals-os tool, valós időben lehet figyelni vele a rendszerben futó folyamatok viselkedését.

További leírások a malware analízishez:

comments powered by Disqus