Amint azt az exploit-készletekről (Nuclear EK) szóló egyik korábbi blogbejegyzésünkben megígértük, most az Angler Exploit Kitet fogjuk alaposabban megvizsgálni. Az Angler EK talán a legkifinomultabb exploit kit, amelyet jelenleg a kiberbűnözők használnak. Olyan megoldások úttörője volt, amelyeket más exploit kitek később kezdtek el használni, mint például a vírusirtó felismerés és a titkosított dropper fájlok. Ezenkívül az Angler szokta a leggyorsabban integrálni a legújabb nulladik napokat, mint például a néhány héttel ezelőtti Adobe Flash nulladik napot (CVE-2015-0311), és feltűnően egyedi elhomályosítást alkalmaz. Végül az Angler a memóriából futtatja az elejtett kártevőt, anélkül, hogy valaha is írnia kellene a merevlemezre; ez az exploit kitek között egyedülálló technika rendkívül megnehezíti a hagyományos vírusirtó technológiák számára az észlelést, mivel azok a fájlrendszer vizsgálatára támaszkodnak.
Míg az Angler a legfejlettebb exploit kit a mai fenyegetések között, a Websense ügyfelei az ACE-vel, a fejlett osztályozó motorunkkal a következő szakaszokban védve vannak ettől a fenyegetéstől:
- 2. szakasz (Csalogatás) – Az ACE a veszélyeztetett webhelyek felismerésével rendelkezik.
- 3. szakasz (Átirányítás) – Az ACE érzékeli a bejuttatott kódot, amely a felhasználót az exploit oldalra irányítja át.
- 4. szakasz (Exploit Kit) – Az ACE érzékeli a rosszindulatú kódot, amely megpróbálja végrehajtani ezt a kibertámadást.
- Stage 5 (Dropper Files) – Az ACE rendelkezik az ehhez a támadáshoz kapcsolódó bináris fájlok észlelésével
Obfuscation
Az Angler landing page négy alapvető részből áll. Először is van néhány látható angol nyelvű szöveg, amelyet arra használnak, hogy elhitessék az exploit kit áldozatával, hogy egy legitim oldalra böngészett. Másodszor, különböző deobfuszkálási rutinokat tartalmaz a tényleges rosszindulatú szkriptek deobfuszkálására. Ezek a szkriptek a p class címkéken belül találhatók, és base64 kódolásúak. A base64 karakterláncok dekódolása felfedi az exploit kit tényleges kódját. Végül pedig a céloldal számos titkosított karakterláncot tartalmaz, amelyek különböző URL-címeket tartalmaznak, amelyek a készletben szereplő különböző exploitokhoz (Flash, Silverlight, Internet Explorer) vezetnek.
Minták az Angler landing page-ről
Deobfuszkált Exploit kód
Amint a landing page deobfuszkálása után feltárul a kód valódi természete. Az Angler, akárcsak a Nuclear és számos más exploit-készlet, egy nagyon egyszerű második rétegű obfuszkálást használ, hogy még nehezebbé tegye a biztonsági termékek általi észlelést.
A különböző virtualizációs megoldások (VMWare, VirtualBox, Parallels), valamint a Fiddler nevű, a biztonsági kutatók által széles körben használt webes hibakereső proxy észlelése mellett vírusirtók felismerését is használja. Ezen intézkedések végrehajtása nagyon megnehezíti ennek az exploit kitnek a vadonban történő megfigyelését és vizsgálatát, mivel a legtöbb biztonsági kutató gyakran nagymértékben támaszkodik ezekre az eszközökre.
A különböző .sys és .dll fájlok észlelése, amelyek AV és virtualizációs szoftverekhez tartoznak
VMWare, VirtualBox, Parallels észlelése, valamint a Fiddler webes hibakereső proxy
Az Angler legegyedibb jellemzője az ilyen titkosított URL-útvonalak használata. Egy egyszerű transzpozíción alapuló titkosítást (laikus nyelven: a betűk titkosítását) használ ezen adatok titkosítására és visszafejtésére.
A visszafejtési rutin az exploit-készlet elhomályosított részébe van beágyazva.
A kitben található visszafejtési rutin
A visszafejtési rutin formázva és kommentálva
Egy nagyon egyszerű példán keresztül mutatjuk be, hogyan működik a visszafejtés. Tegyük fel, hogy a rejtjelezett szövegünk (titkosított adat) a “TEER CSURH TO PLTAOEL IX TP”, a dekódoló kulcsunk pedig az “OBFUSCATE”. Az Angler a következőt teszi: a kulcsban szereplő betűk ábécésorrendjét veszi alapul, és ez alapján átrendezi a rejtjelezett szöveget. Például:
OBFUSCATE → 6,2,5,9,7,3,1,8,4
Ez megadja a kódolt szöveg betűinek sorrendjét. Ezt felhasználva a betűk átrendezésével könnyen visszafejthetjük.
Példa a visszafejtésre
A visszafejtett karakterláncból végül eltávolítjuk a fehérjeleket . Nyilvánvaló, hogy ez a titkosításnak egy rendkívül kezdetleges formája, és kulcs nélkül is nagyon könnyen feltörhető lenne, ha (mint a fenti példában) az egyszerű szöveg tényleges szavakból állna. Az Angler azonban erősen véletlenszerű URL-címeket használ, így ez a fajta titkosítás több mint elegendő ahhoz, hogy elrejtse e karakterláncok valódi természetét és a tényleges URL-útvonalakat a különböző biztonsági termékek elől.
A deobfuszkált kód többi része a szokásos exploit kit mintákat követi: vannak különböző plugin-felismerő és verzióellenőrző rutinok, hogy az exploit kit “tudja”, melyik exploit(ok)at kell a célpontra lőni. Elég sok shellcode-építő rutin is van, mivel az Angler többlépcsős shellcode-ot használ, ahol a különböző szakaszok kódolva vannak, és az előző szakaszok dekódolják őket. Tartalmaz egy keményen kódolt titkosítási/visszafejtési kulcsot is a dropper fájlhoz.
Titkosítási kulcs a payloadhoz
Multi stage Shellcode
Dropper
Ha az exploit sikeres, az Angler payloadja az áldozat rendszerére kerül. Miközben a hasznos teher a hálózaton keresztül halad, még mindig titkosítva van, és később a végső fázisban lévő shellcode dekódolja. Ezt a technikát arra használják, hogy a hagyományos behatolásérzékelő rendszerek (IDS) számára nagyon megnehezítsék a rosszindulatú dropper észlelését. Mint már említettük, az Angler “fájl nélküli” droidokat használ, ami azt jelenti, hogy közvetlenül a memóriából futtatja őket. Az Angler által használt dropper neve Bedep, amely valójában csak egy letöltő – azaz önmagában nem rosszindulatú, de különböző rosszindulatú programok letöltésére és futtatására szolgál.
A hasznos teher shellcode és a Bedep DLL kombinációjából áll. Ha a payload első néhány bájtja “909090” (NOP vagy No Operations az x86 assemblyben), akkor a DLL betöltődik a memóriából, egyébként a lemezre íródik, mint egy normál dropper fájl. A shellcode felelős a DLL futtatásáért a memóriából.
A shellcode olyan API-kat old meg, mint a kernel32.dll és a wininet.dll
Summary
Angler Exploit Kit kétségkívül az egyik legveszélyesebb exploit kit, amely ma a vadonban van. Különböző technikákkal rendelkezik az arzenáljában, hogy legyőzze a hagyományos észlelési módszereket, mint például:
- Egyedi obfuszkáció
- Észreveszi az antivírus/virtualizációs szoftvereket
- Kódolt hasznos teher
- Fájl nélküli fertőzések
Mellett az Angler gyakran elsőként veszi át a legújabb exploitokat, amelyek közé időről időre a zero days is tartozik. Az Angler folyamatosan fejlődő jellege is rávilágít arra, hogy olyan biztonsági megoldásokra van szükség, amelyek a teljes kill-láncban védelmet nyújtanak, ahelyett, hogy annak csak egy szakaszára összpontosítanának.