Översikt
Under flera år har Proofpoint-forskare spårat användningen av nedladdare som används av hotbildare för att installera andra former av skadlig kod under och efter deras skadliga e-postkampanjer. Särskilt under de senaste två åren har dessa nedladdare blivit alltmer robusta och ger avancerade profilerings- och målinriktningsfunktioner.
Mer viktigt är att nedladdare och annan skadlig kod som botnät och banktrojaner har ersatt utpressningstrojaner som primära nyttolaster, vilket ger hotaktörer flexibiliteten att distribuera en rad olika typer av skadlig kod i sekundära infektioner. Till exempel har en av de vanligaste, Smoke Loader, använts flitigt för att släppa nyttolaster som Ursnif och The Trick banktrojaner, samt använt sina egna moduler för att stjäla referenser och annan information och data, bland andra skadliga funktioner.
Sedan slutet av augusti 2019 har Proofpoint-forskare spårat utvecklingen och försäljningen av en ny modulär laddare med namnet Buer av dess författare. Buer har funktioner som är mycket konkurrenskraftiga med Smoke Loader, säljs aktivt på framstående underjordiska marknadsplatser och är avsedd för att användas av aktörer som söker en nyckelfärdig, färdig lösning.
Kampanjer
28 augusti 2019
Den 28 augusti observerade Proofpoint-forskare skadliga e-postmeddelanden som ser ut att svara på tidigare legitima e-postkonversationer. De innehöll Microsoft Word-bilagor som använder Microsoft Office-makron för att ladda ner nästa steg av nyttolasten.
Figur 1: Exempel på en Microsoft Word-bilaga som används i kampanjen den 28 augusti 2019
Vi observerade att nästa steg av nyttolasten laddades ner från följande webbadresser:
hxxp://jf8df87sdfd.yesteryearrestorationsnet/gate.php
hxxp://93345fdd.libertycolegioscom/gate.php
Den nedladdade nyttolasten hette verinstere222.xls eller verinstere33.exe (en namnkonvention som aktören använde sig av under den perioden). Istället för Dreambot-varianten av Ursnif, som ofta förknippas med denna aktör, var nyttolasten en odokumenterad laddare som inte tidigare observerats i naturen.
Under de följande veckorna i september och oktober observerade Proofpoint-forskare och andra medlemmar av infosec-communityt flera kampanjer från samma aktör som släppte antingen Dreambot-varianten av Ursnif eller denna nya laddare.
Oktober 10, 2019
Den 10 oktober observerade Proofpoint-forskare en kampanj i Australien som omdirigerade till Fallout Exploit Kit (EK) med den nya laddaren.
Figur 2: Spårning av HTTP-nätverkstrafik med Fallout EK som utnyttjar sårbara webbläsare
Laddaren släppte sedan flera andra stadiets skadliga nyttolaster, inklusive KPOT stealer, Amadey och Smoke Loader.
21 oktober 2019
Sedan början av juli har Proofpoint-forskare observerat cirka 100 kampanjer med Ostap som nästan uteslutande laddar flera instanser av The Trick. Den 21 observerade dock Proofpoint-forskare skadliga e-postmeddelanden med ämnesrader som ”Penalty Notice # PKJWVBP” som innehåller Microsoft Word-bilagor. Dokumenten innehöll makron som, om de aktiverades, skulle köra Ostap. Vi observerade att Ostap hämtade denna laddare från
hxxps://185.130.104187/nana/kum.php?pi=18b&
som i sin tur laddade The Trick ”ono22” från sin C&C: garrisontxus
Figur 3: Nätverkstrafik som observerades när makrot i de skadliga dokumenten aktiverades.
Figur 4: Exempel på Microsoft Word-bilaga som användes i kampanjen den 21 oktober
Marknadsplats &Funktionsanalys
Då vi började observera att den här nya laddaren användes i flera olika, skilda kampanjer, förväntade vi oss att den såldes på en underjordisk marknadsplats till flera aktörer. Dessutom upptäckte vi en annons från den 16 augusti på ett underjordiskt forum som beskrev en laddare vid namn ”Buer” som matchade funktionaliteten hos den skadlig kod som observerades i ovanstående kampanjer.
Funktionerna som lades till och annonserades under de följande veckorna stämmer exakt överens med utvecklingen av den laddare som hittades i dessa kampanjer.
Vi hämtade text från ett anslag på en anslagstavla av författaren, på ryska, där denne begärde 400 dollar för den skadlig kod och erbjöd sina tjänster för att sätta upp programvaran för potentiella kunder så att den skulle kunna komma igång. Författaren konstaterar också att uppdateringar och buggfixar är gratis, men att det finns en tilläggsavgift på 25 dollar för att ”bygga om till nya adresser”.
Följande text, som Proofpoint också hämtat från den underjordiska marknadsplatsen, och som antas vara skriven av författaren till skadlig kod, är en sammanfattning av funktionaliteten hos laddaren enligt beskrivningen i den ryska originaltexten:
Figur 5. Text från underjordiskt foruminlägg som beskriver funktionaliteten hos Buer Loader bot
På liknande sätt listar reklamen också funktionaliteten hos kontrollpanelen. Författaren noterar att den modulära roboten är skriven helt och hållet i C, med hjälp av en kontrollpanel skriven i .NET Core, och betonar högre prestanda i både klient och server på grund av valet av programmeringsspråk.
- Enligt beskrivningen har roboten en total nyttolast på 55 till 60 kilobyte, fungerar som en inhemsk körbar fil för Windows och ett dynamiskt länkbibliotek, körs helt och hållet i det residenta minnet, och är kompatibel med 32-bitars och 64-bitars operativsystem för Microsoft Windows.
- Botten kommunicerar via en HTTPS-anslutning och kan uppdateras på distans från kontrollpanelen efter dekryptering samt återuppbyggnad.
- Författaren noterar också att laddaren körs som en surrogatprocess för en betrodd applikation och fungerar med hjälp av privilegier på användarnivå.
- Mast anmärkningsvärt är att programvaran inte kommer att köras i OSS (f.d. sovjetstater, t.ex. Ryssland).
Anmälan beskriver följande funktioner för servern och kontrollpanelen:
- Kontrollpanelen annonseras som att den också är skriven i .NET Core, vilket noterar enkel installation på Ubuntu/Debian Linux-serversystem.
- Servern tillhandahåller ett brett utbud av statistik, inklusive räknare för online, levande, döda och totala botar, en uppdatering i realtid för listan över botar, en räknare för filhämtning och en möjlighet att filtrera system efter typ av operativsystem, åtkomsträttigheter för installerade botar och antal logiska CPU-kärnor.
- De nedladdade filerna från de infekterade systemen lagras i krypterad form på servern, med åtkomst beviljad genom en token.
- Det viktigaste är att författaren, precis som robotarna själva, noterar att servern inte behandlar API-förfrågningar som skickas från länder som är medlemmar i OSS.
Foruminlägget innehöll också tekniska versionsanteckningar för Buer-laddaren och kontrollpanelen (version 1.1.2). I inledningen noterade författaren att lanseringen av laddaren nu består av tre steg – om de två första stegen misslyckas på det infekterade systemet och injektionen i surrogatprocessen misslyckas (t.ex. på grund av inkompatibilitet med själva kryptan), kommer laddaren att köras under sin egen process i stället.
I versionsanteckningarna anges följande för laddaren:
- Laddaren använder en FastFlux-arkitektur.
- Laddaren fungerar under en betrodd process i Microsoft Windows. MemLoadEx-processen har nu stöd för x64 exe som en betrodd applikation.
- MemLoad har uppdaterats och har nu stöd för native x32 exe.
I versionsanteckningarna nämns följande funktioner för kontrollpanelen:
- Access till API:n sker med hjälp av HTTPS med stöd för självsignerade certifikat.
- Stöd för redigering av uppgifter i panelen. Användaren kan stoppa uppgiften under utförandet och ändra nyttolasten och antalet utföranden.
- Har lagt till möjligheten att skapa en uppgift efter bot-ID. Mycket lämplig för punktlaster.
- Ett fönster för att skapa uppgifter steg för steg.
- En avisering som gör det möjligt att lära sig om nödvändiga botar online.
- Den unika karaktären hos bot-id:t har ökats.
- Taggar har lagts till i panelen, vilket gör det möjligt att sortera botar för efterföljande åtgärder med dem.
- Visar datorns namn i tabellen.
- Förbättrad kryptokompatibilitet.
- Läggs till bothistorik.
- ”Panelen expanderar nu till Docker” (stöd för Docker-containrar).
- Proofpoint Researcher Note: Vi förmodar att den här funktionen är till för att underlätta integrationen i leasade Docker-värdar, vilket förenklar installationen, även om panelen/C&C potentiellt kan installeras på en komprometterad Docker-värd.
- Validering av filen på panelen. Nu kommer panelen inte att missa filen som laddaren inte kan ladda ner och meddelar klienten om detta.
- Tasker kan nu upprepas.
Författaren beskrev slutligen följande tekniska ändringar för version 1.1.9. Dessa är anmärkningsvärda eftersom de visar att det skadliga programmet är under aktiv, professionell utveckling.
- Laddaren har fått en ny metod för att starta External för lokala filer. Fördelarna med metoden är entydighet och ingen CreateProcess / ShellExecute genom laddaren. Lanseringen ger en betrodd process utan några kommandon till den.
- Panelen har möjlighet att märka alla robotar som har utfört en viss uppgift. Detta gör det möjligt för användaren att distribuera nyttolasten till vissa grupper av bots.
- Implementerat integrations-API. Tillgänglig dokumentation för det.
- Läggs till möjligheten att skicka en fil som referens i proxyläge. Filen överförs till roboten i krypterad form.
- Buggen med att räkna robotar efter land har rättats och andra förbättringar har lagts till.
Skärmavbildningar av kontrollpanelen
Följande skärmavbildningar av kontrollpanelen ingick i den underjordiska reklamen, och visar några av de backend-funktioner som är tillgängliga för kunderna, inklusive telemetriövervakning, värdfiltrering med mera.
Figur 6: Kontrollpanelens inloggnings-UX för Buer Loader C&C
Figur 7: Skärm för övervakning av telemetri för Buer-kontrollpanelen.
Figur 8: Skärm för övervakning av telemetri av robotar i mörkt läge för Buer-kontrollpanelen.
Figur 9: Filtervyn för kontrollpanelen som visar fjärrrobotar filtrerade enligt Microsoft Windows-arkitektur.
Figur 10: Kontrollpanelens vy som visar filhantering för laddningsuppgifter
Figur 11: Kontrollpanelens vy över fjärrstyrda robotar sorterade efter användarrättigheter.
Figur 12: Kontrollpanelvy, uppgiftsstatus
Figur 13: Kontrollpanelvy, skapande av en uppgift
Malwareanalys
Buer Loader är ett nytt nedladdningsskadligt kodprogram som laddar ner och utför ytterligare nyttolaster.
Antianalysfunktioner
Buer Loader innehåller vissa grundläggande antianalysfunktioner:
- Kontrollerar om det finns felsökare genom att inspektera NtGlobalFlagg i Process Environment Block (PEB) och Thread Environment Block (TEB)
- Kontrollerar om det finns virtuella maskiner med hjälp av Red Pill , No Pill och relaterade mekanismer
- Kontrollerar lokalitet för att se till att skadlig kod inte körs i vissa länder (Figur 14)
Figur 14: Kontroll av skadlig kod för att säkerställa att den inte körs i vissa länder
Persistens
Persistens konfigureras genom att konfigurera en RunOnce-post i registret. Beroende på version kommer registerposten att exekvera skadlig kod direkt eller schemalägga en uppgift för att exekvera den.
Krypterade strängar
Detta exempel innehåller en funktion för att kryptera strängar.
Figur 15: Dekrypteringssekvens för strängar
Följande funktion är ett exempel på hur man dekrypterar krypterade strängar i Ghidra med hjälp av Jython:
Figur 16: Dekrypteringssekvens för strängar (Python-version)
Figur 17: Exempel på dekryptering av strängar
Windows API-anrop
Detta exempel använder en hash-algoritm för att lösa de flesta av sina Windows API-anrop. Hashing-algoritmen säkerställer att varje tecken i API-namnet är en stor bokstav. Den roterar sedan till höger (ROR) varje tecken med 13 och adderar dem tillsammans.
Figur 18: Hashing-algoritm för att lösa Windows API-anrop
Följande funktion är ett exempel på hur Python kan användas för att hjälpa till att lösa API-anrop.
Figur 19: Exempel på Python-skript som används för att hjälpa till att lösa hashade Windows API-anrop
Följande tabell innehåller en lista över några utvalda hashade som används och deras motsvarande Windows API-namn:
CreateMutexW |
0xed619452 |
OpenMutexW |
0x7bffe25e |
CreateProcessW |
0xb4f0f46f |
WinHttpOpen |
0xaf7f658e |
WinHttpCrackUrl |
0x8ef04f02 |
WinHttpConnect |
0x9f47a05e |
WinHttpOpenRequest |
0x1dd1d38d |
Tabell 1: Windows API-anrop med utvalda hashkoder
Skommando och kontroll
Skommando- och kontrollfunktioner (C&C) hanteras via HTTP(S) GET-förfrågningar. Ett exempel på en kommandobakgrund ser ut som i figur 20:
Figur 20: Exempel på kommandobakgrund
Dessa förfrågningar går till ”update API” och innehåller en krypterad parameter. Denna parameter kan avkrypteras genom:
- Base64 avkodning
- Hex avkodning
- RC4 avkodning (nyckeln som användes i de analyserade exemplen var ”CRYPTO_KEY”)
Ett exempel på en klartextparameter är:
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|ab21d61b35a8d1dc4ffb3cc4b75094c31b8c00de3ffaaa17ce1ad15e876dbd1f|Windows 7|x64|4|Admin|RFEZOWGZPBYYOI
Den innehåller pipe-avgränsade data som består av följande:
- Bot-ID (SHA-256 hexadigest av olika systemparametrar, t.ex. GUID och namn på maskinvaruprofilen, datorns namn, volymens serienummer, och CPUID)
- En SHA-256-hash av den egna körbara avbildningen
- Windows-version
- Arkitekturtyp
- Antal processorer
- Användarrättigheter
- Datornamn
Ett exempel på ett beacon-svar för ett kommandobeteende visas i Figur 21:
Figur 21: Exempel på svar på kommandobakgrundsinformation
Det kan avkrypteras på samma sätt som begäransparametern ovan, med undantag för att de hex-kodade bytena är separerade med bindestreck. Ett exempel på ett svar i klartext visas i figur 22:
Figur 22: Klartextkommando beacon-svar
Den dekrypterade texten är ett JSON-objekt som innehåller olika alternativ för hur en nyttolast ska laddas ner och exekveras:
- typ – det finns två typer:
- uppdatera – uppdatera sig själv
- nedladdning_och_utförande – hämta och utföra
- optioner – anger alternativ för den nyttolast som ska hämtas:
- Hash – gäller endast för typen ”update” för att avgöra om en ny uppdatering är tillgänglig
- x64 – om nyttolasten är 64-bitars
- FileType – används inte i de analyserade exemplen
- AssemblyType – används inte i analyserade prover
- AccessToken – används för att ladda ner nyttolasten (se nedan)
- External – anger om nyttolasten laddas ner från C&C eller en extern URL
- method – utförandemetod:
- exelocal – skapa process
- memload – injicera och manuellt ladda nyttolast
- memloadex – injicera och manuellt ladda nyttolast
- addllmem – injicera och manuellt ladda nyttolast
- parametrar – parametrar som ska överföras på kommandoraden
- pathToDrop – används inte i analyserade prover
- autorun – anger om man ska ställa in Registry RunOnce persistens för nyttolasten
- modules – se avsnittet Modules nedan
- timeout – används inte i analyserade prover
Nyttolaster som laddas ner från C&C-servern sker via förfrågningar till ”download API”, vilket framgår av figur 23:
Figur 23: Nedladdning av nyttolast från C&C
Ett exempel på en begäransparameter i klartext visas nedan:
88a5e68a2047fa5ebdc095a8500d8fae565a6b225ce94956e194b4a0e8a515ae|58007044-67d4-4963-9f5f-400dfbc69e74
Den innehåller botens ID och ”AccessToken” från svaret på kommandobaken. Om nyttolasten hämtas från C&C krypteras den med RC4. I de analyserade exemplen var nyckeln ”CRYPTO_KEY”.
Moduler
Svaret från kommandobaketen innehåller en lista över ”moduler”. Proofpoints forskare har inte observerat att Buer-moduler används i naturen ännu, men baserat på koden kommer denna lista att innehålla modulen AccessTokens. Modulens filnamn efterfrågas genom att skicka en AccessToken till ”module API” i C&C. Modulen hämtas sedan med hjälp av ”downloadmodule API”. När den väl är nedladdad och dekrypterad laddas den med hjälp av metoden ”loaddllmem”.
Slutsats
En ny nedladdare, Buer, har nyligen dykt upp i en mängd olika kampanjer, via malvertising som leder till exploit kits; som sekundär nyttolast via Ostap; och som primär nyttolast som laddar ner skadlig kod som The Trick banking Trojan.
Den nya laddaren har robusta funktioner för geotargeting, systemprofilering och anti-analys och marknadsförs för närvarande på underjordiska forum med installationstjänster med mervärde. Den rysktalande författaren/författarna utvecklar aktivt nedladdaren med sofistikerade kontrollpaneler och en rik funktionsuppsättning, vilket gör skadlig kod konkurrenskraftig på underjordiska marknader.
Laddaren är skriven i C medan kontrollpanelen är skriven i .NET core, vilket tyder på optimering för prestanda och litet nedladdningsavtryck, samt förmågan att enkelt installera kontrollpanelen på Linux-servrar – inbyggt stöd för Docker-containrar kommer att ytterligare underlätta spridningen på hyrda värdar som används i illasinnade syften, och potentiellt även på komprometterade värdar. Den sistnämnda möjligheten finns med i de annonserade funktionerna och i versionsanvisningarna.
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
Indikatorer för kompromisser (IOCs)
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 instans tappar Buer – 2019-10-21 |
753276c5887ba5cb81818360e797b94d1306069c6871b61f60ecc0d31c78c6d31e |
sha256 |
Buer 2019-11-28 |
ffload01[.top|185.125.58[.11 ffload01[.top|185.186.141[.129 |
domän|IP |
Buer C&C 2019-11-28 |
ET och ETPRO Suricata/Snort signaturer
2029077 || ET TROJAN Buer Loader Update Request
2029079 || ET TROJAN Buer Loader Response
2029078 || ET TROJAN Buer Loader begäran om nedladdning
2839684 || ET TROJAN Buer Loader framgångsrik nedladdning av nyttolast
2029080 || SSL/TLS certifikat observerat (Buer Loader)