Overview
Sinds enkele jaren volgen Proofpoint-onderzoekers het gebruik van first-stage downloaders, die door dreigingsactoren worden gebruikt om andere vormen van malware te installeren tijdens en na hun kwaadaardige e-mailcampagnes. Met name de afgelopen twee jaar zijn deze downloaders steeds robuuster geworden en bieden ze geavanceerde profilerings- en targetingmogelijkheden.
Belangrijker is dat downloaders en andere malware zoals botnets en banking trojans ransomware hebben verdrongen als primaire payloads, waardoor dreigingsactoren de flexibiliteit hebben om een scala aan malware in te zetten in secundaire infecties. Een van de meest voorkomende, Smoke Loader, is bijvoorbeeld op grote schaal gebruikt om payloads zoals Ursnif en The Trick banking Trojans te droppen, maar ook om zijn eigen modules te gebruiken voor het stelen van credentials en andere informatie en gegevens, naast andere kwaadaardige functies.
Sinds eind augustus 2019 hebben onderzoekers van Proofpoint de ontwikkeling en verkoop van een nieuwe modulaire loader met de naam Buer door de auteurs ervan gevolgd. Buer heeft functies die sterk concurreren met Smoke Loader, wordt actief verkocht op prominente ondergrondse marktplaatsen, en is bedoeld voor gebruiksactoren die op zoek zijn naar een kant-en-klare, kant-en-klare oplossing.
Campagnes
August 28, 2019
Op 28 augustus observeerden Proofpoint-onderzoekers kwaadaardige e-mailberichten die een antwoord lijken te zijn op eerdere legitieme e-mailconversaties. Ze bevatten Microsoft Word-bijlagen die Microsoft Office-macro’s gebruiken om de volgende fase van de payload te downloaden.
Figuur 1: Voorbeeld van Microsoft Word-bijlage gebruikt in de campagne van 28 augustus 2019
We observeerden dat de volgende fase van de payload werd gedownload van URL’s met inbegrip van:
hxxp://jf8df87sdfd.yesteryearrestorationsnet/gate.php
hxxp://93345fdd.libertycolegioscom/gate.php
De gedropte payload kreeg de naam verinstere222.xls of verinstere33.exe (een naamgevingsconventie die de acteur in die periode gebruikte). In plaats van de Dreambot-variant van Ursnif die vaak wordt geassocieerd met deze acteur, was de payload een ongedocumenteerde loader die nog niet eerder in het wild was waargenomen.
In de daaropvolgende weken in september en oktober hebben onderzoekers van Proofpoint en andere leden van de infosec-gemeenschap verschillende campagnes van dezelfde acteur waargenomen die ofwel de Dreambot-variant van Ursnif of deze nieuwe loader lieten vallen.
October 10, 2019
Op 10 oktober observeerden Proofpoint-onderzoekers een malvertising-campagne in Australië die doorverwees naar de Fallout Exploit Kit (EK) en de nieuwe loader dropte.
Figuur 2: HTTP-netwerkverkeerstrace met de Fallout EK die kwetsbare browsers uitbuit
De loader dropte vervolgens verschillende tweede-fase malware payloads waaronder KPOT stealer, Amadey, en Smoke Loader.
October 21, 2019
Sinds begin juli hebben Proofpoint-onderzoekers ongeveer 100 campagnes waargenomen waarbij Ostap bijna uitsluitend verschillende instanties van The Trick laadde. Op de 21 observeerden Proofpoint-onderzoekers echter kwaadaardige e-mailberichten met onderwerpregels als “Boetebericht # PKJWVBP” die Microsoft Word-bijlagen bevatten. De documenten bevatten macro’s die, indien ingeschakeld, Ostap zouden uitvoeren. We hebben waargenomen dat Ostap deze loader downloadde van
hxxps://185.130.104187/nana/kum.php?pi=18b&
die op zijn beurt The Trick “ono22” laadde van zijn C&C: garrisontxus
Figuur 3: Netwerkverkeer dat is waargenomen zodra de macro in de schadelijke documenten is ingeschakeld.
Figuur 4: Voorbeeld van Microsoft Word-bijlage gebruikt in de 21 oktober-campagne
Marktplaats & Eigenschapanalyse
Omdat we deze nieuwe lader in meerdere, verschillende campagnes in gebruik zagen, verwachtten we dat hij op een ondergrondse marktplaats aan meerdere actoren werd verkocht. Bovendien ontdekten we een advertentie van 16 augustus op een ondergronds forum waarin een loader met de naam “Buer” werd beschreven die overeenkwam met de functionaliteit van de malware die in de bovenstaande campagnes was waargenomen.
De functies die in de daaropvolgende weken werden toegevoegd en waarvoor werd geadverteerd, komen precies overeen met de evolutie van de loader die in deze campagnes werd aangetroffen.
We vonden tekst terug van een bulletinboard-post van de auteur, in het Russisch, waarin deze vraagt om een betaling van $ 400 voor de malware en zijn diensten aanbiedt om de software voor potentiële klanten in te stellen om deze aan de gang te krijgen. De auteur merkt ook op dat updates en bugfixes gratis zijn, maar dat er een toeslag van $25 wordt gerekend voor “rebuild to new addresses.”
De volgende tekst, die Proofpoint ook van de ondergrondse marktplaats heeft gehaald en die vermoedelijk is geschreven door de auteur van de malware, is een samenvatting van de functionaliteit van de loader zoals beschreven in het oorspronkelijke Russisch:
Figuur 5. Tekst van een ondergronds forumbericht dat de functionaliteit van de Buer Loader-bot beschrijft
Ook in de advertentie wordt de functionaliteit van het controlepaneel vermeld. De auteur merkt op dat de modulaire bot volledig in C is geschreven, met behulp van een controlepaneel geschreven in .NET Core, waarbij de nadruk ligt op hogere prestaties in zowel de client als de server als gevolg van de keuze van de programmeertaal.
- Volgens de beschrijving heeft de bot een totale payload van 55 tot 60 kilobytes, functioneert als een native Windows executable en dynamic link library, draait volledig in resident geheugen, en is compatibel met 32-bit en 64-bit Microsoft Windows-besturingssystemen.
- De bot communiceert via een HTTPS-verbinding en kan op afstand worden bijgewerkt vanuit het configuratiescherm na zowel de decryptie als de rebuild.
- De auteur merkt ook op dat de loader draait als een surrogaatproces van een vertrouwde toepassing, en functioneert met behulp van privileges op gebruikersniveau.
- Het meest opmerkelijk is dat de software niet zal draaien in het GOS (voormalige Sovjet-staten, zoals Rusland).
De advertentie beschrijft de volgende kenmerken voor de server en het bedieningspaneel:
- Het bedieningspaneel wordt geadverteerd als zijnde ook geschreven in .NET Core, met vermelding van eenvoudige installatie op Ubuntu / Debian Linux-serversystemen.
- De server biedt een breed scala aan statistieken, waaronder tellers voor online, levende, dode en totale bots; een real-time update voor de lijst van bots; een bestand downloadteller; en een mogelijkheid om systemen te filteren op type besturingssysteem, toegangsrechten van geïnstalleerde bots, en het aantal logische CPU-kernen.
- Gedownloade bestanden van de geïnfecteerde systemen worden versleuteld opgeslagen op de server, waarbij toegang wordt verleend door een token.
- Het belangrijkste, net als de bots zelf, merkt de auteur op dat de server geen API-verzoeken verwerkt die zijn verzonden vanuit landen die lid zijn van het GOS.
Het forumbericht bevatte ook technische release-opmerkingen voor de Buer-lader en het controlepaneel (versie 1.1.2). In de inleiding merkte de auteur op dat het starten van de loader nu uit drie stappen bestaat — als de eerste twee stappen niet succesvol zijn op het geïnfecteerde systeem, en de injectie in het surrogaat proces mislukt (bijvoorbeeld door incompatibiliteit met de crypt zelf), zal de loader in plaats daarvan onder zijn eigen proces worden uitgevoerd.
De release notes noemen het volgende voor de loader:
- De loader gebruikt een FastFlux architectuur.
- De loader werkt vanuit een vertrouwd proces binnen Microsoft Windows. Het MemLoadEx proces ondersteunt nu x64 exe als een vertrouwde toepassing.
- MemLoad is bijgewerkt en ondersteunt nu native x32 exe.
De release notes noemen de volgende functies voor het controle paneel:
- API toegang wordt bereikt met behulp van HTTPS met ondersteuning voor zelf-ondertekende certificaten.
- Ondersteuning voor het bewerken van taken in het paneel. De gebruiker kan de taak tijdens de uitvoering stoppen en de payload en het aantal uitvoeringen wijzigen.
- De mogelijkheid is toegevoegd om een taak aan te maken op basis van bot ID. Zeer geschikt voor puntladingen.
- Een stap-voor-stap venster voor het maken van taken.
- Een notificatie die u in staat stelt om te leren over de nodige bots online.
- De uniciteit van de bot ID is verhoogd.
- Tags zijn toegevoegd aan het paneel, waardoor het mogelijk is om bots te sorteren voor latere acties met hen.
- De naam van de computer wordt weergegeven in de tabel.
- Verbeterd crypto compatibiliteit.
- Bot geschiedenis toegevoegd.
- “Het paneel breidt zich nu uit naar Docker” (Docker container ondersteuning).
- Proofpoint Researcher Opmerking: We veronderstellen dat deze functie is voor het gemak van integratie in gehuurde Docker hosts, het vereenvoudigen van de installatie, hoewel mogelijk het paneel/C&C kan worden geïnstalleerd op een gecompromitteerde Docker host.
- Validatie op het bestand op het paneel. Nu zal het paneel het bestand niet missen dat de loader niet kan downloaden en zal de client hiervan op de hoogte stellen.
- Taken kunnen nu worden herhaald.
Tot slot beschreef de auteur de volgende technische wijzigingen voor versie 1.1.9. Deze zijn opmerkelijk omdat ze aantonen dat de malware in actieve, professionele ontwikkeling is.
- De loader heeft een nieuwe methode gekregen voor het starten van Externe voor lokale bestanden. De voordelen van de methode zijn uniciteit en geen CreateProcess / ShellExecute door de loader. De lancering produceert een vertrouwd proces zonder enige commando’s aan het.
- Het paneel heeft de mogelijkheid om alle bots die een specifieke taak hebben uitgevoerd taggen. Dit stelt de gebruiker in staat om de payload te verdelen over bepaalde groepen bots.
- Integratie API geïmplementeerd. Beschikbare documentatie voor it.
- De mogelijkheid toegevoegd om een bestand per referentie in proxy-modus te verzenden. Het bestand wordt versleuteld naar de bot verstuurd.
- De bug van het tellen van bots per land is verholpen en andere verbeteringen zijn toegevoegd.
Configuratiescherm Screenshots
De volgende configuratiescherm screenshots zijn opgenomen in de ondergrondse advertentie, en laten een aantal van de back-end mogelijkheden zien die beschikbaar zijn voor klanten, inclusief telemetrie monitoring, host filtering, en meer.
Figuur 6: Control panel login UX voor de Buer Loader C&C
Figuur 7: Bot telemetrie monitoring scherm voor het Buer controle paneel.
Figuur 8: Bot telemetrie monitoring scherm in donkere modus voor het Buer controle paneel.
Figuur 9: Controle paneel filter weergave met weergave van remote bots gefilterd door Microsoft Windows architectuur.
Figuur 10: Weergave van het bedieningspaneel met bestandsbeheer voor laadtaken
Figuur 11: Weergave van het bedieningspaneel van externe bots gesorteerd op gebruikersrechten.
Figuur 12: Weergave bedieningspaneel, taakstatus
Figuur 13: Weergave bedieningspaneel, maken van een taak
Malware-analyse
Buer Loader is een nieuwe downloader-malware die extra payloads downloadt en uitvoert.
Anti-analyse functies
De loader bevat wat basis anti-analyse functionaliteit:
- Controleert op debuggers door de NtGlobalFlag in het Process Environment Block (PEB) en Thread Environment Block (TEB) te inspecteren
- Controleert op virtuele machines met behulp van de Red Pill , No Pill , en verwante mechanismen
- Controleert de locale om er zeker van te zijn dat de malware niet in specifieke landen wordt uitgevoerd (figuur 14)
Figuur 14: Malware controleren om er zeker van te zijn dat deze niet in specifieke landen wordt uitgevoerd
Persistentie
Persistentie wordt ingesteld door een register RunOnce-vermelding te configureren. Afhankelijk van de versie, zal de registervermelding de malware direct uitvoeren of een taak plannen om het uit te voeren.
Gecodeerde tekenreeksen
Dit voorbeeld bevat een functie om tekenreeksen te coderen.
Figuur 15: Ontcijferingsreeks voor tekenreeksen
De volgende functie is een voorbeeld van hoe de versleutelde tekenreeksen in Ghidra met behulp van Jython kunnen worden ontcijferd:
Figuur 16: Ontcijferingsreeks voor tekenreeksen (Python-versie)
Figuur 17: Voorbeeld van ontcijfering van tekenreeksen
Windows API-aanroepen
Dit voorbeeld gebruikt een hashing-algoritme om de meeste van zijn Windows API-aanroepen op te lossen. Het hashing algoritme zorgt ervoor dat elk karakter van de API naam een hoofdletter is. Vervolgens wordt elk teken 13 keer naar rechts gedraaid (ROR) en bij elkaar opgeteld.
Figuur 18: Hashing-algoritme om Windows API-oproepen op te lossen
De volgende functie is een voorbeeld van hoe Python kan worden gebruikt om te helpen bij het oplossen van de API-oproepen.
Figuur 19: Voorbeeld van Python-script dat wordt gebruikt om gehashte Windows API-oproepen te helpen oplossen
De volgende tabel bevat een lijst met enkele geselecteerde hashes die zijn gebruikt en de bijbehorende Windows API-naam:
CreateMutexW |
0xed619452 |
OpenMutexW |
0x7bffe25e |
CreateProcessW |
0xb4f0f46f |
WinHttpOpen |
0xaf7f658e |
WinHttpCrackUrl |
0x8ef04f02 |
WinHttpConnect |
0x9f47a05e |
WinHttpOpenRequest |
0x1dd1d38d |
Tabel 1: Windows API-oproepen met geselecteerde hashes
Command and Control
Command and control (C&C) functies worden afgehandeld via HTTP(S) GET-verzoeken. Een voorbeeld van een opdrachtbaken ziet er als volgt uit:
Figuur 20: Voorbeeld van een opdrachtbaken
Deze verzoeken gaan naar de “update-API” en bevatten een versleutelde parameter. Deze parameter kan worden gedecodeerd door:
- Base64-decodering
- Hex-decodering
- RC4-decodering (de sleutel die in de geanalyseerde monsters werd gebruikt was “CRYPTO_KEY”)
Een voorbeeld van de onbewerkte parameter is:
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|ab21d61b35a8d1dc4ffb3cc4b75094c31b8c00de3ffaaa17ce1ad15e876dbd1f|Windows 7|x64|4|Admin|RFEZOWGZPBYYOI
Het bevat door een pipe-gelimiteerde gegevens bestaande uit:
- Bot ID (SHA-256 hex digest van diverse systeemparameters zoals hardware profiel GUID en naam, computer naam, volume serienummer, en CPUID)
- Een SHA-256 hash van zijn eigen uitvoerbare image
- Windows-versie
- Architectuurtype
- Aantal processors
- Gebruikersrechten
- Computernaam
Een voorbeeld van een opdrachtbaken-antwoord wordt getoond in Figuur 21:
Figuur 21: Voorbeeld van een opdrachtbakenantwoord
Het kan op dezelfde manier worden gedecodeerd als de verzoekparameter hierboven, behalve dat de hex-gecodeerde bytes worden gescheiden door streepjes. Een voorbeeld van een antwoord in platte tekst is te zien in figuur 22:
Figuur 22: Antwoord op commando baken in platte tekst
De gedecodeerde tekst is een JSON-object met verschillende opties voor het downloaden en uitvoeren van een payload:
- type – er zijn twee types:
- update – update zelf
- download_and_exec – downloaden en uitvoeren
- options – specificeert opties voor de te downloaden payload:
- Hash – alleen van toepassing op “update”-type om te bepalen of een nieuwe update beschikbaar is
- x64 – of de payload 64-bit is
- FileType – niet gebruikt in geanalyseerde monsters
- AssemblyType – niet gebruikt in geanalyseerde monsters
niet gebruikt in geanalyseerde steekproeven
- AccessToken – gebruikt om de payload te downloaden (zie hieronder)
- External – geeft aan of de payload wordt gedownload van de C&C of een externe URL
- exelocal – proces aanmaken
- memload – payload injecteren en handmatig laden
- memloadex – payload injecteren en handmatig laden
- loaddllm – payload injecteren en handmatig laden
Payloads die van de C&C server worden gedownload, worden gedaan via verzoeken aan de “download API”, zoals te zien is in Figuur 23:
Figuur 23: Payload downloaden van C&C
Een voorbeeld van de plaintext request parameter is hieronder te zien:
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|58007044-67d4-4963-9f5f-400dfbc69e74
Het bevat de bot’s ID en “AccessToken” van het commando beacon antwoord. Als de payload van de C&C is gedownload, is deze versleuteld met RC4. In de geanalyseerde monsters was de sleutel “CRYPTO_KEY”.
Modules
De command beacon respons bevat een “modules” lijst. Onderzoekers van Proofpoint hebben nog niet waargenomen dat Buer modules in het wild gebruikt, maar op basis van de code zal deze lijst module AccessTokens bevatten. De bestandsnaam van de module wordt opgevraagd door een AccessToken te sturen naar de “module API” van de C&C. De module wordt dan gedownload met de “downloadmodule API”. Eenmaal gedownload en gedecodeerd, wordt het geladen met behulp van de “loaddllmem” methode.
Conclusie
Een nieuwe downloader, Buer, is onlangs verschenen in een verscheidenheid van campagnes, via malvertising die leidt tot exploit kits; als een secundaire payload via Ostap; en als een primaire payload die malware downloadt, zoals The Trick banking Trojan.
De nieuwe loader heeft robuuste geotargeting, systeemprofilering en anti-analyse functies en wordt momenteel op de markt gebracht op ondergrondse forums met setup diensten met toegevoegde waarde. De Russischtalige auteur(s) is (zijn) actief bezig met de ontwikkeling van de downloader met geavanceerde controlepanelen en een rijke functieset, waardoor de malware concurrerend wordt op ondergrondse markten.
De downloader is geschreven in C, terwijl het controlepaneel is geschreven in .NET core, wat duidt op optimalisatie voor prestaties en een kleine download-voetafdruk, evenals de mogelijkheid om het controlepaneel eenvoudig te installeren op Linux-servers – ingebouwde ondersteuning voor Docker-containers zal de verspreiding ervan op gehuurde hosts die worden gebruikt voor kwaadaardige doeleinden, en mogelijk ook gecompromitteerde hosts, nog verder vergemakkelijken. De laatste mogelijkheid is opgenomen in de geadverteerde functies en release notes.
Got it, but I don't know what this is. Downloaded Word doc: https://t.co/Y8tX8wTsOa – Follow-up EXE persistent on the infected Windows host: https://t.co/sowNIRDPbI pic.twitter.com/4isqbsMAa9
— Brad (@malware_traffic) October 11, 2019
https://www.cert.pl/en/news/single/ostap-malware-analysis-backswap-dropper/
https://www.proofpoint.com/us/threat-insight/post/ostap-bender-400-ways-make-population-part-with-their-money
https://www.aldeid.com/wiki/X86-assembly/Instructions/sidt
https://www.aldeid.com/wiki/X86-assembly/Instructions/sldt
Indicators of Compromise (IOC’s)
IOC |
IOC Type |
Description |
fa699eab565f613df563ce47de5b82bde16d69c5d0c05ec9fc7f8d86ad7682ce |
sha256 |
|
http[://45.76.247[.177:8080/api/update/ |
URL |
Buer C&C callback |
6c694df8bde06ffebb8a259bebbae8d123effd58c9dd86564f7f70307443ccd0 |
sha256 |
|
197163b6eb2114f3b565391f43b44fb8d61531a23758e35b11ef0dc44d349e90 |
sha256 |
|
https[://173.212.204[.171/api/update/ |
URL |
Buer C&C callback |
9e8db7a722cc2fa13101a306343039e8783df66f4d1ba83ed6e1fe13eebaec73 |
sha256 |
(Fallout Drop) |
http[://134.0.119[.53:8080/api/update/ |
URL |
Buer C&C callback |
ab21d61b35a8d1dc4ffb3cc4b75094c31b8c00de3ffaaa17ce1ad15e876dbd1f |
sha256 |
(Ostap drop) |
https[://garrisontx[.us/api/update/ |
URL |
Buer C&C callback |
https[://185.130.104[.187/nana/kum.php?pi=18b |
URL |
Ostap instance dropping Buer – 2019-10-21 |
753276c5887ba5cb818360e797b94d1306069c6871b61f60ecc0d31c78c6d31e |
sha256 |
Buer 2019-.11-28 |
ffload01[.top|185.125.58[.11 ffload01[.top|185.186.141[.129 |
domein|IP |
Buer C&C 2019-11-28 |
ET en ETPRO Suricata/Snort Handtekeningen
2029077 || ET TROJAN Buer Loader Update Request
2029079 || ET TROJAN Buer Loader Response
2029078 || ET TROJAN Buer Loader Download Verzoek
2839684 || ET TROJAN Buer Loader Succesvolle Payload Download
2029080 || SSL/TLS Certificaat Waargenomen (Buer Loader)