Ostap Bender : 400 manières d'obliger la population à mettre la main à la poche

December 08, 2016
Proofpoint Staff
cyber security

Présentation

À la fin du mois d'octobre, les chercheurs de Proofpoint ont identifié, puis commencé à surveiller un groupe de pirates particulièrement cupides. Ce groupe avait accès à des chevaux de Troie bancaires et autres logiciels malveillants tels que Dridex, Ursnif, Tinba ou le malware pour Point de vente (POS) AbaddonPOS et son chargeur, TinyLoader. Plus important encore, ce groupe exploite également une porte dérobée JavaScript encore inédite, intitulée « Ostap », et un injecteur Delphi nommé « MrWhite ». L'injecteur MrWhite est capable d'établir le profil des systèmes de la victime pour y déceler la présence de logiciels de POS avant d'y déposer des charges utiles pour POS. Grâce à cette couche supplémentaire de filtrage, ils peuvent concentrer leurs efforts sur les cibles prometteuses et échapper à toute détection due à la présence de logiciels malveillants connus.

Jusqu'à présent, ces campagnes ont visé l'Allemagne, l'Autriche et le Royaume-Uni. Bien que les secteurs visés varient, nous avons tout de même constaté que les services financiers étaient une cible de choix.

Propagation et ciblage

Cette campagne utilise des e-mails avec pièces jointes Microsoft Word contenant des macros. Les volumes allaient de quelques messages relativement ciblés à plusieurs milliers disséminés plus largement. Notre analyse nous a permis de découvrir que la majeure partie de ces e-mails s'adressaient aux germanophones et/ou étaient rédigés en allemand ; d'autres étaient rédigés en anglais. L'e-mail suivant, par exemple, avec facture leurre, visait les germanophones.

Figure 1 : Exemple d'e-mail rédigé en allemand et utilisé pour propager le document avec macro du 24 novembre dernier

Figure 2 : Exemple d'e-mail rédigé en anglais et ciblant les utilisateurs du Royaume-Uni le 2 décembre dernier

Figure 3 : Généralement vides, les documents joints à ces e-mails ne contenaient pas de leurre particulier.

Analyse de la porte dérobée Ostap

La macro masquée incluse dans le document dépose un fichier .jse (JScript) sur le Bureau, puis l'exécute avant d'afficher un message d'erreur factice tel que : « Une erreur est survenue à l'ouverture de ce document. » Le fichier JScript est une porte dérobée que nous appelons « Ostap », car il communique avec un fichier PHP « ostap.php » présent sur le serveur de commande et de contrôle (C&C). « Ostap » fait en réalité référence au prénom du personnage « Ostap Bender », escroc bien connu de certains films et romans très populaires de l'ex-Union soviétique [5].  Voici la liste des fonctionnalités décelées lors de l'analyse d'un échantillon antérieur de cette porte dérobée :

  • Continuer à s'exécuter et à communiquer avec le serveur C&C après la fermeture du document
  • Créer une copie de la porte dérobée dans le dossier de démarrage de l'utilisateur pour chargement systématique à chaque redémarrage
  • Communiquer le nom de l'ordinateur au serveur C&C
  • Recevoir la charge utile exécutable transmise par le serveur C&C et l'exécuter
  • Recevoir le fichier script (avec « certutil ») transmis par le serveur C&C et l'exécuter

Figure 4 : Copie d'Ostap dans le dossier Démarrage. Comme le montre l'éditeur de texte, le script est obfusqué.

Figure 5 : Paramètres codés en dur incluant une partie de l'URL du serveur C&C (après désobfuscation du script)

Figure 6 : Script analysant la réponse du serveur pour déterminer si les données renvoyées sont un fichier exécutable (commençant par « MZ ») ou non

En général, Ostap télécharge une charge utile exécutable depuis le serveur C&C. Les différentes charges utiles sont détaillées dans les sections suivantes, mais nous avons observé plusieurs chevaux de Troie bancaires, de même que le malware MrWhite.

Chevaux de Troie bancaires

Le pirate alternait chaque jour les charges utiles téléchargées par Ostap. Les chevaux de Troie bancaires suivants ont été téléchargés ou décelés en état de l'être via le serveur C&C :

  • Dridex botnet ID 3302 (visant les organisations britanniques et françaises)
  • Ursnif ID 1068 (visant la Pologne)
  • Tinba (visant les organisations allemandes et autrichiennes)

Analyse des charges utiles pour POS

MrWhite (dont le nom s'inspire de l'agent utilisateur « Mr.White ») est une autre charge utile téléchargée par Ostap. Cet injecteur est rédigé en langage Delphi. Son seul objectif est de comparer les noms des processus en exécution sur la machine contaminée avec une liste codée en dur des noms de processus recherchés (séparés par le caractère « | »). Lorsqu'il détecte un tel processus, MrWhite transmet la liste complète des processus au serveur C&C et dépose le chargeur TinyLoader [1,2]. Pour ce faire, MrWhite reste d'abord en dormance pendant 120 secondes. Ensuite, il combine la liste codée en dur des processus (Figure 7) dans une même chaîne avant d'en inverser l'ordre.

Figure 7 : Liste codée en dur des noms de processus pour POS. Les chaînes sont stockées en ordre inverse.

Ensuite encore, la chaîne 'VSC OF/ tsilksat' est inversée et transformée en 'tasklist /FO CSV', et cette commande est exécutée. Elle génère une liste des processus en exécution au format csv (séparation par des virgules). Le logiciel malveillant examine alors le résultat de la commande pour tous les processus intéressants dans la liste codée en dur. Lorsqu'il identifie un tel processus (ou plusieurs), il transmet le résultat de la commande qui dresse la liste des tâches à son serveur C&C via HTTPS (Figure 8). Nous avons observé deux adresses distinctes de serveur C&C MrWhite, obfusquées par deux méthodes différentes, mais simples. L'une de ces adresses (217[.]28[.]218[.]231) était stockée en ordre inverse, comme la liste des processus. L'autre adresse de serveur C&C était stockée dans deux chaînes distinctes : ‘boratorium[.]pl’ et ‘studiomarco-la’ qui, une fois combinées, composaient la véritable adresse C2 : studiomarco-laboratorium[.]pl.

Figure 8 : MrWhite envoie la liste des tâches à son serveur C&C. Notez le chemin d'accès de l'URL « /GOLD/bender.php », qui une fois encore, fait référence à « Ostap Bender », escroc populaire des films et romans de l'ex-Union soviétique [5].

Trois des exemples de MrWhite analysés dans le cadre de cette étude déposaient, puis exécutaient un chargeur TinyLoader incorporé, immédiatement après l'envoi de la liste des tâches au serveur C&C (Figure 9). Ces trois échantillons déposaient exactement la même instance de TinyLoader ; le nom de fichier était toutefois systématiquement différent : ‘000.exe’, ‘001.exe’ et ‘5678987654.exe’.

Figure 9 : MrWhite déposant et exécutant TinyLoader après envoi de la liste des tâches

Dans les trois cas, l'instance de TinyLoader était identique et communiquait avec le serveur C&C via l'adresse 62[.]210[.]36[.]112:10500 (Figure 10).

Figure 10 : Adresse IP du serveur C&C de TinyLoader

Nous n'avons pas décelé d'autres commandes transmises à TinyLoader pour télécharger des charges utiles supplémentaires. Toutefois, par le passé, TinyLoader téléchargeait AbaddonPOS. Après examen des charges utiles AbaddonPOS précédentes, nous en avons détecté une version récente qui communique avec la même adresse IP que le chargeur TinyLoader déposé par MrWhite (Figure 11).

Figure 11 : Adresse IP et port utilisés dans l'exemple AbaddonPOS

La variante AbaddonPOS associée à MrWhite est très proche de celles que nous avons déjà analysées [1][2]. Elle recherche toujours des données de cartes bancaires au moyen d'un algorithme personnalisé, puis les exfiltre vers son serveur C&C. La technique d'encodage des données exfiltrées est également identique, mais dans ce cas, la seconde clé XOR correspond à l'adresse IP (Figure 12). Après décodage du trafic encodé, les données de cartes bancaires exfiltrées sont là encore transmises de la même manière que les charges utiles AbaddonPOS précédentes (Figure 13).

Figure 12 : La seconde clé XOR et l'adresse IP sont identiques.

Figure 13 : Données exfiltrées par AbaddonPOS après décodage

Conclusion

Les pirates cherchent constamment de nouvelles approches pour propager et monétiser les logiciels malveillants. Dans le cas présent, un nouveau groupe exploite une porte dérobée encore inédite et un nouveau chargeur pour propager des chevaux de Troie bancaires et des malware pour POS déjà connus. En introduisant de nouvelles variantes de malware, qui déposent toutes deux des charges utiles souvent détectées par les mécanismes de protection existants, ce groupe de pirates rend cette détection bien plus difficile tout en simplifiant l'échange des charges utiles finales. À la lumière de ces différents facteurs, il est d'autant plus indispensable que les entreprises interceptent les courriers électroniques malveillants avant même qu'ils n'atteignent leurs destinataires, car l'e-mail est le principal vecteur de propagation des nouveaux logiciels malveillants de cette campagne.

Références

[1] https://www.proofpoint.com/us/threat-insight/post/AbaddonPOS-A-New-Point-Of-Sale-Threat-Linked-To-Vawtrak

[2] https://www.proofpoint.com/us/threat-insight/post/abaddonpos-now-targeting-specific-pos-software

[3]https://www.proofpoint.com/us/threat-insight/post/zeuspos-newposthings-point-of-sale-malware-traffic-quadruples-black-friday

[4]https://www.proofpoint.com/us/threat-insight/post/august-in-december-new-information-stealer-hits-the-scene

[5] https://en.wikipedia.org/wiki/Ostap_Bender

Indicateurs de compromission (IOC)

Document injecteur n°1

SHA256 : f89edff923d1d2daf6b2ab36595e873ed7d1cd52c2f6b66b590fa636c17dced2
MD5 : 60d6bf2b1471ba0b2e63ddad240a16e8

Ostap n°1

SHA256 : fc205110d59461412766345ae83b86a34bad748a863e4ffeaaca9f743ec66ca9
MD5 : 4661cfbf6e560c76e39e84e1dabf91b3
C2 : hxxps://185[.]130[.]104[.]156:4433/PICASSO1/ostap.php?
Remarque : déposé par « Document injecteur n°1 » dans « \plugins.refresh.jse »

Document injecteur n°2

SHA256 : c173085b954ff1055fb859e6584a9e0bb3919740752351ad50706c0b7be37b51
MD5 : 569748d6942ea9bbcfb72defc7ac37a0

Ostap n°2

SHA256 : 6dd4ce1a1eb29a226fc22443494dc3dc03a217d14a5065d4efb63766504a44ce
MD5 : 62aaa2862986ed6f15357b7e7eedb65c
C2 : hxxps://185[.]130[.]104[.]156:4433/DA_VINCI/ostap.php
Remarque : déposé par « Document injecteur n°2 » dans « \officeupdater.jse »

Tinba

SHA256 : f9ae407ec793386d8306b6d06a8f53bcd489d04442cbffaa3e715622519e1b69
MD5 : 95732f3e380e670719af2f78dbab3b79
C2 : hxxp://communicationen[.]top/gg/index.php

Dridex 3302

SHA256 : 00a4dc98870c37edd6d65619f1bed61326bc51fc735d8c4b74b3ea3f080e36bf
MD5 : 28dcbb393fac147607e3b644a2dd3ec0
C2 : 185[.]8[.]165[.]33:8343 (et autres)

Ursnif

SHA256 : 616bf33bd455296b9d514dd4b3aa90a2f8714ee08222c1383fa2b24a20383f30
MD5 : 47f19afe59e40eb2882c3dc755a0b283
C2 : 85[.]204[.]74[.]158

MrWhite n°1

SHA256 : cc4382a0602e67bca990e0be14202d87bbd7bebe3a14d7ec65fb91e5073248af
MD5 : 4bc1811f05c6cac676dd43cec1f5ae31
C2 : hxxps://studiomarco-laboratorium[.]pl/GOLD/bender.php

Liste des processus :
CCS.exe|MICROS.exe|IberQS.exe|PaymentStandard.exe|RPRO8.exe|ISSPOS.exe|DSIConcordIP_Host.exe|DDCDSRV1.exe|ClientSitef.exe|Active-Charge.exe|Rock.exe|CRE2004.exe|OmniPOS.exe|EdcSvr.exe|AFR38.exe|POS_retail.exe|qbpos.exe|RWPOS.exe|QBPOSShell.exe|JPOS touchPOS.exe|bosrv.exe|PowerPay.exe|DSIHeartlandIP_Term.exe|POSINIT.exe|DSIHeartlandIP_TermSL.exe|CreditCardService.exe|DSIVitalTNSIP_Term.exe|PaymentServer.exe|RoomKey.exe|XChrgSrv.exe|Cashmate.exe|FiveStarCreditCardIntegration.exe|PaymentBridge.exe|CashClub.exe|FiveStarCreditCardIntegration.exe|PaymentBridge.exe|CashClub.exe|CXSRetailPOS.exe|finchart.exe|Payment Gateway Swipe.exe|ElectronicLockbox.exe|CPS.POSExpressV3.exe|DSICardnetIP_Term.exe|Magtek Signature Capture.exe|Aldelo.EDC.AFRService.exe|XCharge.exe|Gym Assistant 20.exe|e7.exe|ebmain.exe|elba5.exe

TinyLoader : Oui

MrWhite n°2

SHA256 : 435e3ee12bd73ae03a8037cb394c77b92d4f3d97d2b6a956d11564d925924c79
MD5 : d80dc01b4a5269c797c7b3e0c66a4965
C2 : hxxps://studiomarco-laboratorium[.]pl/GOLD/bender.php

Liste des processus :
payment|trust|bank|CCS.exe|MICROS.exe|IberQS.exe|PaymentStandard.exe|RPRO8.exe|ISSPOS.exe|DSIConcordIP_Host.exe|DDCDSRV1.exe|ClientSitef.exe|Active-Charge.exe|Rock.exe|CRE2004.exe|OmniPOS.exe|EdcSvr.exe|AFR38.exe|POS_retail.exe|qbpos.exe|RWPOS.exe|QBPOSShell.exe|JPOS touchPOS.exe|bosrv.exe|PowerPay.exe|DSIHeartlandIP_Term.exe|POSINIT.exe|DSIHeartlandIP_TermSL.exe|CreditCardService.exe|DSIVitalTNSIP_Term.exe|PaymentServer.exe|RoomKey.exe|XChrgSrv.exe|Cashmate.exe|FiveStarCreditCardIntegration.exe|PaymentBridge.exe|CashClub.exe|FiveStarCreditCardIntegration.exe|PaymentBridge.exe|CashClub.exe|CXSRetailPOS.exe|finchart.exe|Payment Gateway Swipe.exe|ElectronicLockbox.exe|CPS.POSExpressV3.exe|DSICardnetIP_Term.exe|Magtek Signature Capture.exe|Aldelo.EDC.AFRService.exe|XCharge.exe|Gym Assistant 20.exe|e7.exe|ebmain.exe|elba5.exe

TinyLoader : Non

MrWhite n°3

SHA256 : 34bf0a10955e1f010b2369d5815a2dcab660f1d3bceea526aab83aad517b34ce
MD5 : 2cc76c39999254ea88507937754d8c47
C2 : hxxps://studiomarco-laboratorium[.]pl/GOLD/bender.php

Liste des processus :

CCS.exe|MICROS.exe|IberQS.exe|PaymentStandard.exe|RPRO8.exe|ISSPOS.exe|DSIConcordIP_Host.exe|DDCDSRV1.exe|ClientSitef.exe|Active-Charge.exe|Rock.exe|CRE2004.exe|OmniPOS.exe|EdcSvr.exe|AFR38.exe|POS_retail.exe|qbpos.exe|RWPOS.exe|QBPOSShell.exe|JPOS touchPOS.exe|bosrv.exe|PowerPay.exe|DSIHeartlandIP_Term.exe|POSINIT.exe|DSIHeartlandIP_TermSL.exe|CreditCardService.exe|DSIVitalTNSIP_Term.exe|PaymentServer.exe|RoomKey.exe|XChrgSrv.exe|Cashmate.exe|FiveStarCreditCardIntegration.exe|PaymentBridge.exe|CashClub.exe|FiveStarCreditCardIntegration.exe|PaymentBridge.exe|CashClub.exe|CXSRetailPOS.exe|finchart.exe|Payment Gateway Swipe.exe|ElectronicLockbox.exe|CPS.POSExpressV3.exe|DSICardnetIP_Term.exe|Magtek Signature Capture.exe|Aldelo.EDC.AFRService.exe|XCharge.exe|Gym Assistant 20.exe|e7.exe|ebmain.exe|elba5.exe

TinyLoader : Oui

MrWhite n°4

SHA256 : 1b50af4ff0b300c680829f7b394a1db9126659a00f2088d0cd831970e31792a9
MD5 : be9365524aae756edb5f811b9da567aa
C2 : hxxps://217[.]28[.]218[.]231:4433/GOLD/bender.php

Liste des processus :
|POS|CCS.exe|MICROS.exe|IberQS.exe|PaymentStandard.exe|RPRO8.exe|ISSPOS.exe|DSIConcordIP_Host.exe|DDCDSRV1.exe|ClientSitef.exe|Active-Charge.exe|Rock.exe|CRE2004.exe|OmniPOS.exe|EdcSvr.exe|AFR38.exe|POS_retail.exe|qbpos.exe|RWPOS.exe|QBPOSShell.exe|JPOS touchPOS.exe|bosrv.exe|PowerPay.exe|DSIHeartlandIP_Term.exe|POSINIT.exe|DSIHeartlandIP_TermSL.exe|CreditCardService.exe|DSIVitalTNSIP_Term.exe|PaymentServer.exe|RoomKey.exe|XChrgSrv.exe|Cashmate.exe|FiveStarCreditCardIntegration.exe|PaymentBridge.exe|CashClub.exe|FiveStarCreditCardIntegration.exe|PaymentBridge.exe|CashClub.exe|CXSRetailPOS.exe|finchart.exe|Payment Gateway Swipe.exe|ElectronicLockbox.exe|CPS.POSExpressV3.exe|DSICardnetIP_Term.exe|Magtek Signature Capture.exe|Aldelo.EDC.AFRService.exe|XCharge.exe|Gym Assistant 20.exe|e7.exe|ebmain.exe|elba5.exe
TinyLoader : Oui

TinyLoader

SHA256 : 6834b3daff4e76973d21177875d9c1380eabc56ef25d3bd3e36780a5c915fc0e
MD5 : 688f2d1ef1fea91065110d96c0596ee9
C2 : 62[.]210[.]36[.]112:10050

AbaddonPOS

SHA256 : 631156fcd1e0804e915bfb933cbc275f7d3036d47e10d6328816e0b7693a2b05
MD5 : ed06bf280c1694d4d41a23d6a5240b2a
C2 : 62[.]210[.]36[.]112:27117

Couverture ET et ETPRO Suricata/Snort

2823657          Cert SSL malveillant observé pour ETPRO TROJAN (téléchargeur JS/Ostap)
2020150          ET TROJAN TinyLoader.A Enregistrement x86
2020151          ET TROJAN TinyLoader.A Enregistrement x64
2020152          ET TROJAN TinyLoader.A transmettant UUID et processus x86
2020153          ET TROJAN TinyLoader.A transmettant UUID et processus x64
2020849          ET TROJAN TinyLoader.B1 Enregistrement x86
2020850          ET TROJAN TinyLoader.B1 Enregistrement x64
2020851          ET TROJAN TinyLoader.B2 Enregistrement sans architecture
2020852          ET TROJAN TinyLoader.B1 transmettant des processus
2022072          ET TROJAN TinyLoader.B2 Enregistrement x64
2812523          ETPRO TROJAN TinyLoader.C CnC Beacon x86
2812524          ETPRO TROJAN TinyLoader.C CnC Beacon x64
2814778          ETPRO TROJAN TinyLoader.D CnC Beacon x86
2814779          ETPRO TROJAN TinyLoader.D CnC Beacon x64
2814803          ETPRO TROJAN Win64.TinyLoader CnC Beacon
2814810          ETPRO TROJAN TinyDownloader récupérant PE
2823172          ETPRO TROJAN Tinba Enregistrement de la variante
2820263          ETPRO TROJAN Gozi ISFB Enregistrement CnC
2823044          ETPRO TROJAN W32.Dreambot Enregistrement
2021813          ET TROJAN Ursnif Variant CnC Beacon