XcodeGhost: egy szokatlan módon fertőző malware

Ez a cikk legalább 1 éve frissült utoljára. A benne szereplő információk a megjelenés idején pontosak voltak, de mára elavultak lehetnek.

A Palo Alto Networks IT-biztonsági kutatócsoportról már írtunk a KeyRaider kapcsán. A csoport munkatársai a napokban bukkantak rá egy újabb, ezúttal egészen szokatlanul terjedő kártevőre.

icon256

A Palo Alto Networks legelső jelentése szerint az XcodeGhost névre keresztelt malware úgy indult útjára, hogy készítői az Apple hivatalos Xcode-kiadását letöltötték, elhelyezték benne a malware-t, visszacsomagolták, majd a népszerű kínai közösségi oldal, a Baidu fájlmegosztó szolgáltatására visszatöltötték a fertőzött fejlesztőeszköz-csomagot. Az Xcode az Apple hivatalos fejlesztőkörnyezete iOS és OS X appok fejlesztéséhez. Mivel Kínában sokszor és sok helyen nagyon lassú az Apple szervereiről való közvetlen letöltés, az Xcode pedig egy több gigabájtos jószág, ezért több kínai fejlesztő dönt úgy, hogy inkább alternatív letöltési oldalakról (“mirror”) illetve kollégák gépéről való átmásolással szerzi be azt. Így terjedt el a rosszindulatú kódot tartalmazó fejlesztőeszköz is (amit ráadásul egy bizonyos felhasználó több kínai fórumon is reklámozott).

Hogyan is működik az XcodeGhost?

Az “újracsomagolt” Xcode tartalmaz néhány módosított – a rosszindulatú kódot tartalmazó – fájlt (object code, azaz tárgykód formájában). A fájlok tehát önállóan nem képesek végrehajtódni, csak miután a fordítás utolsó lépése, a linker elhelyezte azokat az elkészült alkalmazás binárisában. Ezek a fájlok az iOS egyik legalapvetőbb alrendszerének, a CoreServices framework-nek a részei; az alkalmazások legnagyobb része használja, és az alkalmazások fordítása során automatikusan belekerülnek a végrehajtható fájlba. A malware tehát a compileren és linkeren keresztül a fejlesztő által készített és App Store-ba beküldött összes alkalmazást automatikusan megfertőzi.

A malware kódja két gyakran használt Objective-C osztályt (a UIWindow-t és a UIDevice-ot) terjeszt ki és módosít úgy, hogy a fertőzött iOS-alkalmazás indulásakor a felhasználóról adatokat gyűjtsön. Ezek között az adatok között megtaláljuk az aktuális időt és dátumot (“timestamp”), a fertőzött alkalmazás nevét és egyedi azonosítóját (Bundle ID), a készülék nevét és típusát, az iOS beállított nyelvét és az országot, a készülék egyedi azonosítóját (UDID), és a hálózat típusát. Íme az ehhez tartozó visszafejtett kód:

xcode4

Az adatokat végül titkosítja, és HTTP-n keresztül elküldi a malware C2 szerverére (Command and Control, “parancs- és vezérlőszerver”). A malware három változata három címre tölti fel az adatokat: init.crash-analytics[.]com, init.icloud-diagnostics[.]com és init.icloud-analysis[.]com. Érdekes lehet megemlíteni, hogy ezek közüli a legutóbbit a már említett KeyRaid malware is használta. (A fenti domain nevekben szándékosan vettünk körül egy-egy pontot zárójelekkel.) Mindezt a következő kód segítségével teszi:

xcode5

A szerver válaszától függően az XcodeGhost-ot tartalmazó iOS-alkalmazás megnyithat egy URL-t (amely akár egy rosszindulatú weboldalra, akár egy tetszőleges, URL-sémával elindítható app futtatására alkalmas), illetve párebszédablakokat is generálhat (ezáltal például ellophatja a felhasználó valamely jelszavát). Az ezeket a funkciókat megvalósító két kódrészletet az alábbi ábrákon láthatjátok:

XcodeGhost-3

XcodeGhost-2

Az XcodeGhost által megfertőzött alkalmazások közül több az App Store-ba is bekerült (mivel nem annyira feltűnő a kémkedés, amit elkövetnek – jórészt nyilvános API-kat használnak, egy-két hálózati lekérdezéssel megtámogatva; ez valószínűleg nem lesz gyanús a feltöltött alkalmazások ellenőrzésekor). Sőt, mi több, a fertőzött appok között van több igen népszerű (egyesek Kínában, mások a világ más részein örvendenek sok-sok letöltésnek). Ilyenek például a NetEase Music App (egy streaming alkalmazás), a WeChat (Kína legnépszerűbb azonnali üzenetküldő alkalmazása), a CamCard (egy névjegykártya-beolvasó, amely többek között az USA-ban a legtöbbet használt ilyen célú app), az Angry Birds 2, és még több tucat iOS-es programnak elsősorban a kínai App Store-ban megtalálható változatai. Egyes spekulációk szerint akár 300 alkalmazás is áldozatul eshetett az XcodeGhost-nak. Az eddig felfedezett fertőzött alkalmazások listáját a 9to5Mac gyűjteményében találhatjuk meg.

Az Apple mindeközben bejelentette, hogy az összes alkalmazást, amelyről kiderült, hogy tartalmazza a malware-t, törölte az App Store-ból.

Úgy tudjuk, a magyar App Store alkalmazásait és felhasználóit a fertőzés nem érinti.

Mindenesetre akinek a fertőzött appok közül van valamelyik a készülékén, és ahhoz az elmúlt 1-2 napban nem érkezett frissítés, érdemes lehet az adott appot törölni, és újból letölteni majd, amint megjelenik belőle a frissített változat. Az Apple az érintett fejlesztőkkel karöltve már dolgozik azon, hogy az adott appok “tiszta” változata kerüljön vissza az App Store-ba.

A fejlesztőknek erősen ajánlott ellenőrizniük, hogy nem fertőzött-e a fejlesztésre használt gépük. Ezt az alábbi fájlok megkeresésével tehetik meg:

  • /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
    Library/Frameworks/CoreServices.framework/CoreService
  • /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/
    Library/PrivateFrameworks/IDEBundleInjection.framework/
  • /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/
    Library/Frameworks/CoreServices.framework/CoreService
  • /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/
    Library/PrivateFrameworks/IDEBundleInjection.framework/
  • /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
    Library/Frameworks/CoreServices.framework/CoreService
  • /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/
    Library/PrivateFrameworks/IDEBundleInjection.framework/

Ha ezek a fájlok léteznek, akkor valószínűleg egy fertőzött Xcode-dal dolgozunk. Ebben az esetben töröljük le a gépről az Xcode-ot, és töltsük le azt az Apple fejlesztői portáljáról. És máskor ne is töltsük le máshonnan.

Ezek még érdekelhetnek:


  1. @bangoheifetz: Érdemes elolvasni a cikket. “Úgy tudjuk, a magyar App Store alkalmazásait és felhasználóit a fertőzés nem érinti.” – viszont igen, az Angry Birds 2 kínai store-ból letölthető verziója fertőzött volt.

  2. És az hogy? Más ország store-jában más verziójú appok vannak? Nem csak csak magukban az elérhető appokban van a különbség az egyes országok store-jai közt? Világosítsatok fel, plíz (biztos nem vagyok egyedül ezzel a tudatlansaggal)!

  3. @HSA: igen, egészen nyugodtan lehet különböző build az egyes Store-okban. nyilván ilyenkor más egyedi ID-val rendelkezik az adott app, tehát mondjuk ami 7266379425 az egyik Store-ban, az mondjuk 2599453678 a másikban, miközben amúgy mindkettő neve Angry Birds, és még a verziójuk is lehet 2.0. az egyes országokban való megjelenés pedig külön be van állítva, így az egyik csak mondjuk a US Store-ban látható, a másik meg csak a kínaiban.

  4. @Balazs Pali: klasszikus értelemben nincs szó fertőzöttségről, mert a sandboxing miatt sokat nem tudnak ártani az ilyen appok, és az érintett app letörlése után már nincs érdemi veszély. ha meg az adott app frissült az elmúlt 1-2 napban, akkor az már rendben van, mert az Apple az összeset törölte, ami érintett, és ha új verziót küldene be valaki, akkor ott már biztosan kiszűrik ezt. rengeteg appban alapból van valamiféle analytics framework, ami jóformán majdnem ugyanez, kivéve persze a párbeszédablakok generálását.

    @kchris: biztos vagyok abban, hogy az Apple lépéseket fog tenni annak érdekében, hogy csak ellenőrzött Xcode-ból lehessen a Store-ba beküldeni, addig meg az összes, időközben beküldött app esetén már külön figyelni fognak erre a jóváhagyáskor.

  5. Köszönöm, hogy írtatok róla. Minden helyen más és más az érintett alkalmazások száma. Nekem Oplayer volt fenn, a fórumjában írták is, hogy dolgoznak a problémán. Több helyen viszont azt írták, hogy az Apple visszavonta az érintett alkalmazásokat ezért leszedtem és újra letöltöttem. A bináris persze ettől szerintem semmit se változott.
    Mivel azonban legitim APIkat használt a beépülő kártékony kód, ezt bármelyik másik app is megcsinálhatja, sose fogják levenni a Store-ból emiatt. Ezért mondom már legalább 2 iOS főverzió óta, hogy kellene egy gyári tűzfal az iOS-be, amivel egyes alkalmazásokat lehetne letiltani kompletten a netről. Azóta eddig még csak a mobilnet alkalmazásonkénti tiltása került bele.
    És ez a példa is kiválóan bizonyítja azt, hogy milyen aranyos meglepetések lehetnek a nem hivatalos helyről letöltött programokban (itt Xcode, de másnál lehet például warez Windows is).

  6. Francnak kell még egy fejlesztő eszközt is warezolni? Szánalmas.. Pláne, hogy előfizetés nélkül ugyse lehet feltölteni a storeba, így meg végképp semmi értelme 😀

  7. @Jecy: nem “warezolták”, az Xcode ingyenesen letölthető a Mac App Store-ból. Azért töltötték kínai szerverről, mert az Apple szervereit lassan tudták csak elérni Kínából.

  8. @nullzero: óvatossági szempontból én nem foglalkoznék azzal, melyik Store: ha az adott app neve ott van a listán, gyalulni, aztán majd ha jön új verzió, akkor azt feltenni. ha egy játék állásai miatt a gyalulás nem opció, akkor multitaskingból kilőve, és el nem indítva elvileg nem bánt. de a gyalulás a tuti.

  9. @fecskeneo: az, hogy több éve használod, az mindegy, mert röviddel ezelőtti frissítése lehetett csak érintett. az nem derült ki egyértelműen, hogy mely Store-ok érintettek, de elsősorban a kínai volt az, amit említenek.

    @robit: nincs ilyen app. az iCloud.com oldalra iOS készülék böngészőjéből nem lehet belépni, arra ott van például a Find my iPhone app.

  10. Nem appra gondoltam…, hanem hogy a Safariban be tudok e oda lépni.., http://www.icloud.com...
    Tegnap hívtam az Apple támogatást és azt mondta egy hölgy , hogy iPad -en a safarban lépjek be oda és ott be tudok jelentkezni és törölni tudom a mentést vagy éppen egy appot a mentésből..
    Én is úgy tudtam, hogy csak asztaligépen lehet belépni…

  11. Azért az nagy bátoság kijelenteni , hogy a magyar AppStore -t nem érinti a fertőzés …, új hír, hogy 4000 app van megfertőzte és minden érintettet külön értesít az Apple …

  12. Nem ; új hír , hogy a készülék tulajokat fogják! És mi van ha nem törölhető le, pl. nálam van egy app ami az iCloudban, ahol látni az appokat ott van / kínai japoán billentyűzet, amit már rég töröltem , és nem lehet eltüntetni egyik készülékemről sem, úgy sem, hogy csináltam egy teljes törlést , sőt új iCloud címet is… A billentyűzet beallitásoknan is ott van , igaz csak azt írja, hogy kettő de nem lenni , hogy mi… Nem jelbrékelt egyik készüléken sem!

  13. HVG " A fertőzött iOS-alkalmazások kamu bejelentkezési oldalak segítségével jelszavakat loptak, valamint a felhasználók által a “másolás” paranccsal vágólapra helyezett tartalmakat (URL-eket, szövegrészeket) is megszerezték, és távoli szerverre továbbították.
    Az Apple tájékoztatása szerint valamilyen formában értesíteni fogják azokat a felhasználókat, akik készüléke megfertőződhetett."

  14. most kaptam egy erdekes levelet az “appletöl”, miszerint egy oran belül azonnal adjam meg az összes adatomat hezitalas nelkül egy weboldalon, különben letiltjak a keszülékeimet….. jo mi?

  15. Először is ez nem vírus, nem fér hozzá más appokhoz (a sandboxing miatt nem is férhet), az ott tárolt információkhoz, nem tud terjedni, fertőzni. Csupán egy trójairól beszélünk, ami egy trójaival ellátott compiler “terméke”. Hogy érintett vagy-e vagy sem, viszonylag egyszerű ellenőrizni: a telefonod/tableted rádugod az iTunes-re, átviszed az appokat, és megnézed, hogy az IPA archívumokban levő futtatható file (az IPA-t át kell nevezni ZIP-re, és a Payload/Appneve.app könyvtárában az appneve – kiterjesztés nélküli – file a futtatható rész), tartalmazzák-e a “/CoreServices.framework” vagy az “init.crash” illetve az “init.icloud” szövegeket. Ha nem, akkor azok az appok nem tartalmazzák a trójai kódrészt. Van már olyan malware-kereső is, ami az előzőek alapján fel tudja ismerni ezeket az IPA fájlokat, és figyelmeztet (pl. a “360 Total Security” is ilyen, de még nem próbáltam).
    Azt is erősen kétlem, hogy az App Store több ezer alkalmazása érintett lenne, maximum 100-as nagyságrendről beszélhetünk. A jelszavakat lopó kód egyébként nem működött: (UPDATE September 21: In the current version of the code, XcodeGhost cannot be directly used to phish iCloud passwords. However, by changing a few simple lines of code, it can do that.).

  16. @rgbx: Biztosan működik a binárison való grep-elés a “/CoreServices.framework” (és a többi) szövegre? A letöltött appok binárisai részben titkosítottak; lehet, hogy kibontott állapotban bennük van a szöveg, csak épp a titkosított részben, tehát egy sima plaintext keresés nem fogja megtalálni.

Írd le a véleményedet! (Moderációs elveinket ide kattintva olvashatod.)

Hozzászólás írásához be kell jelentkezned!