ESET-onderzoekers identificeerden een actieve StrongPity-campagne die een getrojaniseerde versie van de Android Telegram-app verspreidde, gepresenteerd als de Shagle-app – een videochatservice die geen app-versie heeft
Onderzoekers van ESET identificeerden een actieve campagne die we hebben toegeschreven aan de StrongPity APT-groep. De campagne is actief sinds november 2021 en heeft een kwaadaardige app verspreid via een website die zich voordoet als Shagle – een willekeurige videochatservice die gecodeerde communicatie tussen vreemden mogelijk maakt. In tegenstelling tot de volledig webgebaseerde, echte Shagle-site die geen officiële mobiele app biedt om toegang te krijgen tot zijn services, biedt de copycat-site alleen een Android-app om te downloaden en is er geen webgebaseerde streaming mogelijk.
- Slechts één andere Android-campagne is eerder toegeschreven aan StrongPity.
- Dit is de eerste keer dat de beschreven modules en hun functionaliteit publiekelijk zijn gedocumenteerd.
- Een copycat-website, die de Shagle-service nabootst, wordt gebruikt om de mobiele backdoor-app van StrongPity te verspreiden.
- De app is een aangepaste versie van de open-source Telegram-app, opnieuw verpakt met StrongPity-achterdeurcode.
- Op basis van overeenkomsten met eerdere StrongPity-achterdeurcode en de app die is ondertekend met een certificaat van een eerdere StrongPity-campagne, schrijven we deze dreiging toe aan de StrongPity APT-groep.
- De achterdeur van StrongPity is modulair, waarbij alle benodigde binaire modules worden gecodeerd met AES en gedownload van de C&C-server, en heeft verschillende spionagefuncties.
De kwaadaardige app is in feite een volledig functionele maar getrojaniseerde versie van de legitieme Telegram-app, maar wordt gepresenteerd als de niet-bestaande Shagle-app. We zullen het in de rest van deze blogpost de valse Shagle-app, de getrojaniseerde Telegram-app of de StrongPity-achterdeur noemen. ESET-producten detecteren deze dreiging als Android/StrongPity.A.
Deze StrongPity-achterdeur heeft verschillende spionagefuncties: de 11 dynamisch geactiveerde modules zijn verantwoordelijk voor het opnemen van telefoongesprekken, het verzamelen van sms-berichten, lijsten met oproeplogboeken, contactlijsten en nog veel meer. Deze modules worden voor het eerst gedocumenteerd. Als het slachtoffer de kwaadaardige StrongPity-app-toegankelijkheidsservices verleent, heeft een van de modules ook toegang tot inkomende meldingen en kan het de communicatie van 17 apps zoals Viber, Skype, Gmail, Messenger en Tinder exfiltreren.
De campagne is waarschijnlijk erg gericht, aangezien ESET-telemetrie nog steeds geen slachtoffers identificeert. Tijdens ons onderzoek was de geanalyseerde versie van malware die beschikbaar was op de copycat-website niet meer actief en was het niet langer mogelijk om deze met succes te installeren en de backdoor-functionaliteit te activeren omdat StrongPity geen eigen API-ID heeft verkregen voor zijn getrojaniseerde Telegram-app. Maar dat kan op elk moment veranderen als de dreigingsactor besluit de schadelijke app bij te werken.
Overzicht
Deze StrongPity-campagne draait om een Android-achterdeur die afkomstig is van een domein dat het woord "dutch" bevat. Deze website imiteert de legitieme service genaamd Shagle at shagle. com. In figuur 1 ziet u de homepagina's van beide websites. De schadelijke app wordt rechtstreeks geleverd vanaf de imiterende website en is nooit beschikbaar gesteld via de Google Play Store. Het is een getrojaniseerde versie van de legitieme Telegram-app, gepresenteerd alsof het de Shagle-app is, hoewel er momenteel geen officiële Shagle Android-app is.
Zoals u kunt zien in figuur 2, bevat de HTML-code van de nep-site bewijs dat deze is gekopieerd van de legitieme shagle. com plaats op 1 novemberst, 2021, met behulp van de geautomatiseerde tool HTTrack. Het kwaadaardige domein werd op dezelfde dag geregistreerd, dus de copycat-site en de nep-Shagle-app kunnen sinds die datum beschikbaar zijn om te downloaden.
victimologie
Op juli 18th, 2022, een van onze YARA-regels bij VirusTotal werd geactiveerd toen een schadelijke app en een link naar een website shagle. com zijn geüpload. Tegelijkertijd werden we op de hoogte gebracht Twitter over dat monster, hoewel het ten onrechte was toegeschreven aan Bahamut. ESET-telemetriegegevens identificeren nog steeds geen slachtoffers, wat suggereert dat de campagne waarschijnlijk zeer gericht was.
Attribution
De APK die wordt gedistribueerd door de copycat Shagle-website is ondertekend met hetzelfde certificaat voor ondertekening van de code (zie afbeelding 3) als een getrojaniseerde Syrische e-gov-app die in 2021 werd ontdekt door Trend Micro, die ook werd toegeschreven aan StrongPity.
Kwaadaardige code in de valse Shagle-app werd gezien in de vorige mobiele campagne van StrongPity en implementeert een eenvoudige, maar functionele achterdeur. We hebben gezien dat deze code alleen wordt gebruikt in campagnes van StrongPity. In figuur 4 zie je enkele van de toegevoegde kwaadaardige klassen, waarbij veel van de versluierde namen zelfs hetzelfde zijn in de code van beide campagnes.
Vergelijking van de achterdeurcode van deze campagne met die van de getrojaniseerde Syrische e-gov-app (SHA-1: 5A5910C2C9180382FCF7A939E9909044F0E8918B), heeft het uitgebreide functionaliteit, maar wordt dezelfde code gebruikt om vergelijkbare functies te bieden. In Afbeelding 5 en Afbeelding 6 kunt u de code van beide voorbeelden vergelijken die verantwoordelijk is voor het verzenden van berichten tussen componenten. Deze berichten zijn verantwoordelijk voor het activeren van het kwaadaardige gedrag van de achterdeur. Daarom zijn we er sterk van overtuigd dat de nep-Shagle-app is gekoppeld aan de StrongPity-groep.
Technische analyse
Eerste toegang
Zoals beschreven in het overzichtsgedeelte van deze blogpost, werd de nep-Shagle-app gehost op de Shagle-copycat-website, van waaruit de slachtoffers moesten kiezen om de app te downloaden en te installeren. Er was geen uitvlucht die suggereerde dat de app beschikbaar was via Google Play en we weten niet hoe potentiële slachtoffers naar de nepwebsite werden gelokt of anderszins ontdekt.
toolset
Volgens de beschrijving op de copycat-website is de app gratis en bedoeld om nieuwe mensen te ontmoeten en ermee te chatten. De gedownloade app is echter een kwaadwillig gepatchte Telegram-app, met name Telegram-versie 7.5.0 (22467), die rond 25 februari beschikbaar was om te downloadenth2022.
De opnieuw verpakte versie van Telegram gebruikt dezelfde pakketnaam als de legitieme Telegram-app. Pakketnamen worden verondersteld unieke ID's te zijn voor elke Android-app en moeten uniek zijn op elk apparaat. Dit betekent dat als de officiële Telegram-app al op het apparaat van een potentieel slachtoffer is geïnstalleerd, deze achterdeurversie niet kan worden geïnstalleerd; zie afbeelding 7. Dit kan twee dingen betekenen: ofwel communiceert de dreigingsactor eerst met potentiële slachtoffers en dwingt hij hen om Telegram van hun apparaten te verwijderen als het is geïnstalleerd, of de campagne richt zich op landen waar Telegram zelden wordt gebruikt voor communicatie.
De getrojaniseerde Telegram-app van StrongPity had net zo moeten werken als de officiële versie voor communicatie, met behulp van standaard API's die goed gedocumenteerd zijn op de Telegram-website - maar de app werkt niet meer, dus we kunnen het niet controleren.
Tijdens ons onderzoek was de huidige versie van malware die beschikbaar was op de copycat-website niet meer actief en was het niet langer mogelijk om deze met succes te installeren en de backdoor-functionaliteit te activeren. Toen we probeerden ons aan te melden met ons telefoonnummer, kon de opnieuw verpakte Telegram-app de API-ID niet van de server verkrijgen en werkte daarom niet goed. Zoals te zien is in afbeelding 8, gaf de app een API_ID_PUBLISHED_FLOOD fout.
Gebaseerd op Telegram foutdocumentatie, lijkt het erop dat StrongPity geen eigen API-ID heeft verkregen. In plaats daarvan heeft het de voorbeeld-API-ID gebruikt die is opgenomen in de open-sourcecode van Telegram voor eerste testdoeleinden. Telegram bewaakt het API-ID-gebruik en beperkt de voorbeeld-API-ID, dus het gebruik ervan in een uitgebrachte app resulteert in de fout die te zien is in afbeelding 8. Vanwege de fout is het niet meer mogelijk om u aan te melden en de app te gebruiken of de schadelijke functionaliteit ervan te activeren . Dit kan betekenen dat StrongPity-operators hier niet goed over hebben nagedacht, of misschien was er genoeg tijd om slachtoffers te bespioneren tussen het publiceren van de app en het deactiveren ervan door Telegram wegens overmatig gebruik van de APP-ID. Aangezien er nooit een nieuwe en werkende versie van de app beschikbaar is gesteld via de website, zou dit erop kunnen wijzen dat StrongPity de malware met succes op de gewenste doelen heeft ingezet.
Als gevolg hiervan was de nep-Shagle-app die beschikbaar was op de nepwebsite op het moment van ons onderzoek niet meer actief. Dit kan echter op elk moment veranderen als de bedreigingsactoren besluiten de schadelijke app bij te werken.
Componenten van en machtigingen vereist door de StrongPity-achterdeurcode worden toegevoegd aan de Telegram-app's AndroidManifest.xml het dossier. Zoals te zien is in figuur 9, maakt dit het gemakkelijk om te zien welke machtigingen nodig zijn voor de malware.
Uit het Android-manifest kunnen we zien dat er kwaadaardige klassen zijn toegevoegd in de org.telegram.messenger pakket verschijnen als onderdeel van de oorspronkelijke app.
De initiële kwaadaardige functionaliteit wordt geactiveerd door een van de drie uitzendontvangers die worden uitgevoerd na gedefinieerde acties: BOOT_COMPLETED, BATTERIJ BIJNA LEEGof GEBRUIKER_PRESENT. Na de eerste start registreert het dynamisch extra uitzendontvangers om te monitoren SCHERM AAN, SCHERM UIT en CONNECTIVITEIT_WIJZIG evenementen. De nep-Shagle-app gebruikt vervolgens IPC (interprocess-communicatie) om te communiceren tussen zijn componenten om verschillende acties te activeren. Het maakt via HTTPS contact met de C&C-server om basisinformatie over het gecompromitteerde apparaat te verzenden en ontvangt een AES-gecodeerd bestand met 11 binaire modules die dynamisch worden uitgevoerd door de bovenliggende app; zie afbeelding 10. Zoals te zien is in afbeelding 11, worden deze modules opgeslagen in de interne opslag van de app, /data/user/0/org.telegram.messenger/files/.li/.
Elke module is verantwoordelijk voor verschillende functionaliteiten. De lijst met modulenamen wordt opgeslagen in lokale gedeelde voorkeuren in het gedeeldeconfig.xml het dossier; zie figuur 12.
Modules worden indien nodig dynamisch geactiveerd door de bovenliggende app. Elke module heeft zijn eigen modulenaam en is verantwoordelijk voor verschillende functionaliteiten zoals:
- libarm.jar (cm-module) – neemt telefoongesprekken op
- libmpeg4.jar (nt-module) - verzamelt tekst van inkomende meldingsberichten van 17 apps
- lokaal.jar (fm/fp-module) – verzamelt bestandenlijst (bestandsboom) op het apparaat
- telefoon.jar (ms-module) - misbruikt toegankelijkheidsservices om berichten-apps te bespioneren door de naam, het chatbericht en de datum van de contactpersoon te exfiltreren
- bronnen.jar (sm-module) – verzamelt sms-berichten die op het apparaat zijn opgeslagen
- diensten.jar (lo module) – verkrijgt apparaatlocatie
- systemui.jar (sy module) - verzamelt apparaat- en systeeminformatie
- timer.pot (ia module) – verzamelt een lijst met geïnstalleerde apps
- toolkit.jar (cn-module) - verzamelt contactenlijst
- watchkit.jar (ac-module) - verzamelt een lijst met apparaataccounts
- wearkit.pot (cl-module) - verzamelt een lijst met oproeplogboeken
Alle verkregen gegevens worden opgeslagen in de clear in /data/user/0/org.telegram.messenger/databases/outdata, voordat ze worden versleuteld met behulp van AES en verzonden naar de C&C-server, zoals u kunt zien in afbeelding 13.
Deze StrongPity-achterdeur heeft uitgebreide spionagefuncties in vergelijking met de eerste StrongPity-versie die voor mobiel werd ontdekt. Het kan het slachtoffer vragen om toegankelijkheidsdiensten te activeren en toegang tot meldingen te krijgen; zie figuur 14. Als het slachtoffer ze inschakelt, bespioneert de malware binnenkomende meldingen en misbruikt hij toegankelijkheidsdiensten om chatcommunicatie van andere apps te exfiltreren.
Figuur 14. Malwareverzoeken, van het slachtoffer, meldingstoegang en toegankelijkheidsdiensten
Met toegang tot meldingen kan de malware ontvangen meldingsberichten lezen die afkomstig zijn van 17 gerichte apps. Hier is een lijst met hun pakketnamen:
- Messenger (com.facebook.orca)
- boodschapper licht (com.facebook.mlite)
- Viber - Veilig chatten en bellen (com.viber.voip)
- Skypen (com.skype.raider)
- LINE: Oproepen & Berichten (jp.naver.line.android)
- Kik - Berichten- en chat-app (kik.android)
- tango-livestream & videochat (com.giechel.productie)
- Hangouts (com.google.android.talk)
- telegram (org.telegram.messenger)
- WeChat (com.tencent.mm)
- Snapchat (com.snapchat.android)
- Tondel (com.tinder)
- Wandelnieuws en inhoud (com.bsb.hike)
- Instagram (com.instagram.android)
- Twitter (com.twitter.android)
- Gmail- (com.google.android.gm)
- imo-Internationaal bellen en chatten (com.imo.android.imoim)
Als het apparaat al is geroot, probeert de malware in stilte toestemming te verlenen WRITE_SETTINGS, WRITE_SECURE_SETTINGS, OPNIEUW BOOT, MOUNT_FORMAT_FILESYSTEMS, MODIFY_PHONE_STATE, PACKAGE_USAGE_STATS, READ_PRIVILEGED_PHONE_STATE, om toegankelijkheidsservices in te schakelen en om toegang tot meldingen te verlenen. De StrongPity-achterdeur probeert vervolgens de SecurityLogAgent-app uit te schakelen (com.samsung.android.securitylogagent), een officiële systeem-app die de beveiliging van Samsung-apparaten helpt beschermen en alle app-meldingen uitschakelt die afkomstig zijn van de malware zelf en die in de toekomst aan het slachtoffer kunnen worden weergegeven in geval van app-fouten, crashes of waarschuwingen. De StrongPity-achterdeur probeert zelf niet een apparaat te rooten.
Het AES-algoritme gebruikt de CBC-modus en hardcoded sleutels om de gedownloade modules te decoderen:
- AES-sleutel – aaaanniets onmogelijkbbb
- AES IV – aaaannietsimpos
Conclusie
De mobiele campagne van de StrongPity APT-groep deed zich voor als een legitieme service om zijn Android-backdoor te verspreiden. StrongPity heeft de officiële Telegram-app opnieuw verpakt met een variant van de achterdeurcode van de groep.
Die kwaadaardige code, de functionaliteit, klassenamen en het certificaat dat is gebruikt om het APK-bestand te ondertekenen, zijn hetzelfde als van de vorige campagne; daarom geloven we met groot vertrouwen dat deze operatie tot de StrongPity-groep behoort.
Op het moment van ons onderzoek was het voorbeeld dat beschikbaar was op de copycat-website uitgeschakeld vanwege de API_ID_PUBLISHED_FLOOD fout, wat ertoe leidt dat schadelijke code niet wordt geactiveerd en dat potentiële slachtoffers mogelijk de niet-werkende app van hun apparaten verwijderen.
Code-analyse onthult dat de achterdeur modulair is en dat aanvullende binaire modules worden gedownload van de C&C-server. Dit betekent dat het aantal en type gebruikte modules op elk moment kan worden gewijzigd om aan de campagneverzoeken te voldoen wanneer deze worden beheerd door de StrongPity-groep.
Op basis van onze analyse lijkt dit de tweede versie van StrongPity's Android-malware te zijn; in vergelijking met de eerste versie maakt het ook misbruik van toegankelijkheidsdiensten en toegang tot meldingen, slaat het verzamelde gegevens op in een lokale database, probeert het uit te voeren su commando's, en voor het grootste deel van de gegevensverzameling worden gedownloade modules gebruikt.
IoC's
Bestanden
SHA-1 | Bestandsnaam | ESET-detectienaam | Omschrijving |
---|---|---|---|
50F79C7DFABECF04522AEB2AC987A800AB5EC6D7 | video.apk | Android/StrongPity.A | StrongPity-achterdeur (legitieme Android Telegram-app opnieuw verpakt met schadelijke code). |
77D6FE30DAC41E1C90BDFAE3F1CFE7091513FB91 | libarm.jar | Android/StrongPity.A | StrongPity mobiele module verantwoordelijk voor het opnemen van telefoongesprekken. |
5A15F516D5C58B23E19D6A39325B4B5C5590BDE0 | libmpeg4.jar | Android/StrongPity.A | StrongPity mobiele module verantwoordelijk voor het verzamelen van tekst van ontvangen meldingen. |
D44818C061269930E50868445A3418A0780903FE | lokaal.jar | Android/StrongPity.A | StrongPity mobiele module die verantwoordelijk is voor het verzamelen van een bestandslijst op het apparaat. |
F1A14070D5D50D5A9952F9A0B4F7CA7FED2199EE | telefoon.jar | Android/StrongPity.A | StrongPity mobiele module verantwoordelijk voor het misbruiken van toegankelijkheidsdiensten om andere apps te bespioneren. |
3BFAD08B9AC63AF5ECF9AA59265ED24D0C76D91E | bronnen.jar | Android/StrongPity.A | StrongPity mobiele module die verantwoordelijk is voor het verzamelen van sms-berichten die op het apparaat zijn opgeslagen. |
5127E75A8FAF1A92D5BD0029AF21548AFA06C1B7 | diensten.jar | Android/StrongPity.A | StrongPity mobiele module verantwoordelijk voor het verkrijgen van apparaatlocatie. |
BD40DF3AD0CE0E91ACCA9488A2FE5FEEFE6648A0 | systemui.jar | Android/StrongPity.A | StrongPity mobiele module die verantwoordelijk is voor het verzamelen van apparaat- en systeeminformatie. |
ED02E16F0D57E4AD2D58F95E88356C17D6396658 | timer.pot | Android/StrongPity.A | StrongPity mobiele module verantwoordelijk voor het verzamelen van een lijst met geïnstalleerde apps. |
F754874A76E3B75A5A5C7FE849DDAE318946973B | toolkit.jar | Android/StrongPity.A | StrongPity mobiele module verantwoordelijk voor het verzamelen van de contactenlijst. |
E46B76CADBD7261FE750DBB9B0A82F262AFEB298 | watchkit.jar | Android/StrongPity.A | StrongPity mobiele module verantwoordelijk voor het verzamelen van een lijst met apparaataccounts. |
D9A71B13D3061BE12EE4905647DDC2F1189F00DE | wearkit.pot | Android/StrongPity.A | StrongPity mobiele module verantwoordelijk voor het verzamelen van een lijst met oproeplogboeken. |
Netwerk
IP | leverancier | Eerst gezien | Details |
---|---|---|---|
141.255.161[.]185 | NameCheap | 2022-07-28 | intagrefcircuitchip[.]com C&C |
185.12.46[.]138 | Varkenshaas | 2020-04-21 | netwerksoftwaresegment[.]com C&C |
MITRE ATT&CK-technieken
Deze tafel is gemaakt met behulp van versie 12 van het MITRE ATT&CK-raamwerk.
Tactiek | ID | Naam | Omschrijving |
---|---|---|---|
Volharding | T1398 | Opstart- of aanmeldingsinitialisatiescripts | De StrongPity-achterdeur ontvangt de BOOT_COMPLETED uitzendintentie om te activeren bij het opstarten van het apparaat. |
T1624.001 | Door gebeurtenis geactiveerde uitvoering: uitzendontvangers | De StrongPity-achterdeurfunctionaliteit wordt geactiveerd als een van deze gebeurtenissen zich voordoet: BATTERIJ BIJNA LEEG, GEBRUIKER_PRESENT, SCHERM AAN, SCHERM UITof CONNECTIVITEIT_WIJZIG. | |
verdediging ontduiking | T1407 | Nieuwe code downloaden tijdens runtime | De StrongPity-achterdeur kan aanvullende binaire modules downloaden en uitvoeren. |
T1406 | Verduisterde bestanden of informatie | De StrongPity-achterdeur gebruikt AES-codering om gedownloade modules te verdoezelen en om strings in zijn APK te verbergen. | |
T1628.002 | Artefacten verbergen: gebruikersontduiking | De StrongPity-achterdeur kan alle app-meldingen uitschakelen die afkomstig zijn van de malware zelf om zijn aanwezigheid te verbergen. | |
T1629.003 | Afweer tegengaan: Tools uitschakelen of wijzigen | Als de StrongPity-achterdeur root heeft, wordt SecurityLogAgent (com.samsung.android.securitylogagent) indien aanwezig. | |
De reis van mijn leven | T1420 | Bestands- en directorydetectie | De StrongPity-achterdeur kan beschikbare bestanden op externe opslag weergeven. |
T1418 | Software ontdekken | De StrongPity-achterdeur kan een lijst met geïnstalleerde applicaties verkrijgen. | |
T1422 | Detectie van systeemnetwerkconfiguratie | De StrongPity-achterdeur kan IMEI, IMSI, IP-adres, telefoonnummer en land extraheren. | |
T1426 | Ontdekking van systeeminformatie | De StrongPity-achterdeur kan informatie over het apparaat extraheren, waaronder het type internetverbinding, het SIM-serienummer, het apparaat-ID en algemene systeeminformatie. | |
Collectie | T1417.001 | Invoer vastleggen: Keylogging | De StrongPity-achterdeur registreert toetsaanslagen in chatberichten en oproepgegevens van gerichte apps. |
T1517 | Toegang tot meldingen | De StrongPity-achterdeur kan meldingsberichten verzamelen van 17 gerichte apps. | |
T1532 | Archiveer verzamelde gegevens | De StrongPity-achterdeur versleutelt geëxfiltreerde gegevens met behulp van AES. | |
T1430 | Locatie volgen | De StrongPity-achterdeur volgt de locatie van het apparaat. | |
T1429 | Audio Capture | De StrongPity-achterdeur kan telefoongesprekken opnemen. | |
T1513 | Screen Capture | De StrongPity-achterdeur kan het scherm van het apparaat opnemen met behulp van de MediaProjectionManager API. | |
T1636.002 | Beschermde gebruikersgegevens: oproeplogboeken | De StrongPity-achterdeur kan oproeplogboeken extraheren. | |
T1636.003 | Beschermde gebruikersgegevens: lijst met contactpersonen | De StrongPity-achterdeur kan de contactenlijst van het apparaat extraheren. | |
T1636.004 | Beschermde gebruikersgegevens: sms-berichten | De StrongPity-achterdeur kan sms-berichten extraheren. | |
Command and Control | T1437.001 | Applicatielaagprotocol: webprotocollen | De StrongPity-achterdeur gebruikt HTTPS om te communiceren met zijn C&C-server. |
T1521.001 | Versleuteld kanaal: symmetrische cryptografie | De StrongPity-achterdeur gebruikt AES om zijn communicatie te versleutelen. | |
exfiltratie | T1646 | Exfiltratie via C2-kanaal | De StrongPity-achterdeur exfiltreert gegevens met behulp van HTTPS. |
- Door SEO aangedreven content en PR-distributie. Word vandaag nog versterkt.
- Platoblockchain. Web3 Metaverse Intelligentie. Kennis versterkt. Toegang hier.
- Bron: https://www.welivesecurity.com/2023/01/10/strongpity-espionage-campaign-targeting-android-users/