Fenyegetés keresés fájlentropiával a kiberveszélyek nyomában

enlightened Ez az oldal a közösségért készül. heart Kövess minket máshol is:  Linux Mint Magyar Közösség a Mastodon-on  Telegram csatorna – csak hírek  Beszélgessünk a Telegram – Linux csevegő csoport  Hírek olvasása RSS segítségével  Linux Mint Hivatalos Magyar Közösség a Facebook-on      Linux Mint Baráti Kör a Facebook-on
wink Ha hasznosnak találod, és szeretnéd, hogy folytatódjon, támogasd a munkát Ko-fi vagy Paypal segítségével. laugh

kami911 képe

Az entrópia az adathalmazon belüli véletlenszerűség mértéke. Információelméletben és kiberbiztonságban általában Shannon-entrópiára gondolunk. Ez egy konkrét algoritmus, amely 0 és 8 közötti értéket ad vissza: a 8-hoz közeli érték nagyfokú véletlenszerűséget jelez, a 0-hoz közeli pedig azt, hogy az adat nagyon egyforma, ismétlődő.

A Shannon-entrópia jól használható annak kimutatására, hogy egy fájlban használnak-e csomagolást (packing), tömörítést vagy titkosítást. Ezek a technikák általában növelik a fájl entrópiáját. Ez intuitívan is érthető. Vegyük például a tömörítést. A tömörítő algoritmusok bizonyos típusú adatok méretét úgy csökkentik, hogy a többször előforduló részeket egyetlen példányra mutató hivatkozásokkal helyettesítik. A végeredmény egy olyan fájl, amelyben kevesebb az ismétlődő tartalom. Minél kevesebb az ismétlődés, annál magasabb lesz az entrópia, mert az adatok kevésbé kiszámíthatók, mint korábban.

Kártevők készítői szintén előszeretettel használnak csomagolást, tömörítést és titkosítást, hogy elrejtsék az eszközeiket, és megkerüljék az aláírás-alapú észlelő rendszereket.

Az első ábrán látható adatokat körülbelül 500 000 darab, legitim és rosszindulatú, 32 és 64 bites Portable Executable fájlból nyerték. A rosszindulatú fájlok főként a VirusShare, a Malwr, a dasmalwerk.eu, a CAPE Sandbox és a Contagio gyűjteményeiből származnak. A legitim fájlokat éles Windows 7 és Windows 10 rendszerek állományainak begyűjtésével szerezték. Emiatt az adatkészlet nem olyan átfogó, mint amilyet például a VirusTotal tudna adni, ahol jóval több minta érhető el, és itt kizárólag lefordított PE fájlokról van szó. Az adatok túlnyomó része a VirusShare-ből jön, tehát az ő gyűjtési forrásaikra jellemző, ennek ellenére néhány alapvető trend jól kirajzolódik.

Néhány dolog különösen szembetűnő a grafikonon:

  • A legitim fájlok entrópiája jellemzően 4,8 és 7,2 között van.
  • A 7,2 feletti entrópiájú fájlok többnyire rosszindulatúak.
  • A rosszindulatú minták közel 30%-ának entrópiája 8,0-hoz közeli, míg a legitim mintáknak csak 1%-a ér el ilyen magas értéket.
  • A rosszindulatú minták körülbelül 55%-ának 7,2 vagy annál magasabb az entrópiája, szemben a legitim minták 8%-ával.

Ebből a diagrammból jól látszik, hogy az entrópia erős funkció a legitim és a rosszindulatú fájlok megkülönböztetésére. Ha a támadó valamilyen tömörítést, csomagolást vagy titkosítást használt, az nagy valószínűséggel megváltoztatja a fájl entrópiáját, ami az ilyen elemzésben feltűnő lesz.

Ha egyetlen fájlt vizsgálsz, a Sysinternals-féle sigcheck eszközzel ki tudod számítani a fájl entrópiáját az alábbi paranccsal.

D:\Malware\> sigcheck.exe -h -a "D:\Malware\11"
 sigcheck v2.54 - File version and signature viewer
 Copyright (C) 2004-2016 Mark Russinovich
 Sysinternals - www.sysinternals.com
 D:\malware\11:
       Verified:       Unsigned
       Link date:      2:02 PM 10/15/2013
       Publisher:      n/a
       Company:        n/a
       Description:    n/a
       Product:        n/a
       Prod version:   n/a
       File version:   n/a
       MachineType:    32-bit
       Binary Version: n/a
       Original Name:  n/a
       Internal Name:  n/a
       Copyright:      n/a
       Comments:       n/a
       Entropy:        7.997
       MD5:    000A2E8EB96F3AF556E3299541B03F00
       SHA1:   3AB630A357F05EDA98CC6DAC06BE79815735216D
       PESHA1: 610B2B33E1F7840FE5E4B1ADC2E9FEDD1D5E26E2
       PE256:  D845C8A92CEF8726B952EAAE53F3768471D6EA0EDF7CDE11D0453429A820C929
       SHA256: 0E40E014381E3F70054B41BA24EFDF86CCA272CFD8A66566B0662AC29A57FF7D
       IMP:    BF5AB190F10D097C8183FD4D65042281

A fenti kimenetben többek között az entrópia értékét is látod. Ennél a fájlnál ez 7,997, ami nagyon közel van a maximális 8-hoz. Ez erősen arra utal, hogy a fájl tartalma erősen véletlenszerűnek tűnik, vagyis valamilyen titkosítás, tömörítés vagy csomagolás eredménye lehet.

Az entrópia önmagában nem bizonyítja, hogy a fájl rosszindulatú, de fontos jelzés. Ha egy futtatható állomány ennyire magas entrópiát mutat, érdemes további vizsgálatot végezni rajta: például sandboxban futtatni, statikus elemzést végezni, vagy megnézni, felismeri-e valamilyen víruskereső.

Az entrópia mellett a sigcheck több hash-értéket is megad (MD5, SHA1, SHA256 stb.). Ezekkel össze tudod hasonlítani a fájlt ismert mintákkal a «URL0» vagy más kártevő-adatbázisok segítségével. Ha egyezést találsz egy ismert rosszindulatú mintával, az már sokkal erősebb bizonyíték arra, hogy a fájl valóban kártevő.

NévFeketelistaFehérlistaYodas Protector6.69%0.11%Ultimate Packer for Executables (UPX)3.55%0.09%Armadillo3.26%2.32%

Sok fejlesztő nem használ titkosítást, csomagolást, tömörítést vagy kódolást a binárisain, de ezeknek a technikáknak megvannak a legitim felhasználási módjai. Például egyes cégek titkosítással vagy obfuszkációval védik a szoftverüket, hogy megnehezítsék a visszafejtést, és így óvják a szellemi tulajdonukat.

Más fejlesztők tömörítést használnak, hogy csökkentsék a binárisok méretét, és ezzel a letöltési időt. A táblázat adatai szerint a vizsgált legitim fájlok 2,3%-át az Armadillo packerrel csomagolták. Ennyi téves riasztás mellett mélyebbre kell ásni, ha hatékonyan akarunk besorolni egy ismeretlen binárist.

Az entrópia sajnos annyira erős mutató, hogy néha ez lesz az egyetlen különbség a legitim és a rosszindulatú fájlok között, ami – ahogy láttuk – téves riasztásokhoz vezethet. Ilyenkor más jellemzőkre is támaszkodni kell.

Ha egy magas entrópiájú mintát próbálsz előszűrni, jó következő lépés PEiD szignatúrákat futtatni rajta, hogy kiderüljön, milyen packert vagy algoritmust használtak. A táblázatban látszik, hogy az egyes algoritmusoknál más-más valószínűséggel lesz legitim vagy rosszindulatú a fájl. Az Armadillo packer például sokkal nagyobb eséllyel okoz téves riasztást, mint a Yodas Protector.

Ha a fájl entrópiája magas, de egyetlen PEiD szignatúra sem talál rá, az különösen gyanús. Ilyen esetben valószínűleg érdemes vizsgálatot indítani, majd továbblépni automatizált dinamikus elemzésre Cuckoo, FireEye, Wildfire vagy bármelyik elérhető sandbox segítségével. Ennek az az oka, hogy a legtöbb legitim szoftver ismert packert használ, nem fejleszt sajátot, mert legitim szoftvernél kevés előnye van egy egyedi packernek. Malware esetén viszont kifejezetten hasznos lehet saját packert írni, mert így az antivírus motorok nem tudják kicsomagolni a kódot, és nem tudnak szignatúrákat futtatni rajta.

Ha egy ismert packer szignatúrája találatot ad, a következő lépés a bináris kicsomagolása, hogy lássuk, mi van benne. Az olyan szolgáltatások, mint az UnpacMe segítenek a csomagolt binárisok kinyerésében és további elemzésében.

Több módszer is létezik arra, hogyan lehet csökkenteni egy fájl entrópiáját, hogy az legitimnek tűnjön. Az egyik legegyszerűbb az egybájtos XOR kódolás. Bár ez nem erős titkosítási algoritmus, van egy sajátos előnye: nem változtatja meg a fájl teljes entrópiáját. Ennél a titkosításnál az entrópiaelemzés nem segít.

Másik technika az entrópia csökkentésére, ha az összes adathoz képest kevesebbet titkosítunk. Ezt kétféleképpen lehet elérni: (1) kevesebb adatot titkosítunk, vagy (2) növeljük a titkosítatlan adatok mennyiségét. A titkosítás célja, hogy az antivírus gyártók ne tudjanak szignatúrákat futtatni. Ha a teljes fájlt titkosítjuk, az entrópia szempontjából gyanús lesz, de erre nem feltétlenül van szükség. Elég, ha csak a malware szignatúrázható részeit titkosítjuk. Ha a fájl csak 10%-a titkosított, az a rész jóval kisebb hatással lesz a teljes entrópiára.

A másik módszer, ha normális, legitim adatot adunk a fájlhoz. Ennek egyik módja, hogy statikusan belinkelt, de valójában fölösleges legitim kódot építünk a futtatható állományba. Ez nemcsak az entrópiát csökkenti, hanem az AI-alapú antivírusokat is meg tudja téveszteni. A Skylight Cyber kutatói például úgy csapták be az AI-alapú Cylance Protect rendszert, hogy legitim alkalmazásokból származó szövegeket adtak hozzá rosszindulatú fájlokhoz, így elkerülték a detektálást.

Az entrópia erős jelzője a csomagolásnak, titkosításnak és tömörítésnek, amelyeket a malware gyakran használ. A rosszindulatú minták közel 50%-ának entrópiája 7,2 vagy annál magasabb. Mint minden egyes jellemző, az entrópia sem ad teljes képet. Vannak legitim okok a binárisok csomagolására, titkosítására és tömörítésére, ezért ha találsz egy magas entrópiájú mintát, mélyebbre kell ásni. A packer szignatúrák, az automatizált dinamikus sandbox elemzés és a kicsomagoló eszközök segítenek megtenni a következő lépést.

(forrás)