c’t 07/2026
Wat is er waar van IT-mythes?
Cover van
Cover voor Malware-analyse met Binary Refinery: efficiënt onderzoeken vanaf de commandline

Malware-analyse met Binary Refinery: efficiënt onderzoeken vanaf de commandline

Een gratis en krachtige professionele toolkit brengt schadelijke code en andere bedreigingen in kaart – zelfs beginners kunnen met de veelzijdige commando’s hun eerste stappen zetten.

Lees verder na de advertentie

Een tool voor efficiënte malwaretriage

Bij een pas ontdekte malware-infectie telt letterlijk elke minuut: hoe sneller de eerste dreigingsbeoordeling (triage) lukt, des te sneller je passende maatregelen kunt bedenken en nemen om het gevaar effectief te bestrijden. Dan is het handig als je typische analyseprocessen met zo min mogelijk tools kunt afhandelen. Of, nog beter, met slechts één: Binary Refinery.

Het project combineert talrijke handige triagefuncties en maakt het mogelijk om die flexibel te combineren via de commandline. Zo kun je met één enkele commando schadelijke code uit een archief halen, die doorzoeken op versleutelde strings, de vondsten decoderen en ze uiteindelijk in een apart bestand opslaan.

Dat soort snelle, op maat gemaakte onderzoeken kun je met Binary Refinery toepassen op de meest uiteenlopende formaten – van uitvoerbare bestanden en Office-documenten tot versleutelde strings en zelfs versluierde, oftewel kunstmatig ingewikkeld en ondoorzichtig gemaakte downloaderscripts.

Binary Refinery voor gratis malware-analyse

In dit artikel stellen we deze gratis toolkit voor Windows en Linux kort voor, die is gebaseerd op een uitgebreide verzameling Python-scripts. We geven daarbij eenvoudige voorbeelden van toepassingen die niet alleen handig zijn voor de gedetailleerde analyse van schadelijke code, maar bijvoorbeeld ook bij een snelle zoektocht naar mogelijke Indicators of Compromise (IoC’s).

Sommige toepassingen, zoals het extraheren van URL’s en IP-adressen uit tekst- en logbestanden via een eenvoudige reeks commando’s, zijn waarschijnlijk ook interessant en handig voor als je helemaal niets met schadelijke code te maken hebt. In het algemeen richt Binary Refinery zich echter vooral op professionals die hun analyseprocessen willen optimaliseren en daarbij willen profiteren van maximale flexibiliteit op de commandline.

Lees dit artikel verder

Lees over tech-trends en achtergronden, nieuwe apparatuur, software en toepassingen voor professioneel gebruik. Met c’t heb je altijd de juiste tech-informatie. Word abonnee en lees onbeperkt alle artikelen.
Bekijk abonnementen Al abonnee? Log in

Als je zonder veel inwerktijd – en zelfs zonder voorafgaande installatie – gewoon eens wilt experimenteren met gecombineerde gegevensbewerkingen, kun je in plaats daarvan je hart ophalen met de webversie van CyberChef. Met die app kun je allerlei bewerkingen combineren via slepen en neerzetten, en de resultaten worden direct in de GUI weergegeven.

Toolkit in actie

Om het voorbeeld uit de eerste alinea veilig na te bootsen zonder malware, maak je een tekstbestand aan met de naam test.txt. Typ er wat tekst in en plaats vervolgens de volgende Base64-gecodeerde string ertussen: RXJmb2xncmVpY2ggZW50c2NobHVlc3NlbHQ= Als je het resultaat dan nog in een ZIP-archief verpakt (voorbeeld.zip), is het eerste voorbeeld klaar.

Zo laat je Binary Refinery erop los:

emit voorbeeld.zip | xtzip | b64 | dump output.txt

Als alles goed is gegaan, staat de gedecodeerde string in het nieuw aangemaakte bestand output.txt. Zonder padopgave komt dat bestand in dezelfde map terecht als voorbeeld.zip.

Met vereende krachten

Ter uitleg van het voorbeeld: Binary Refinery werkt met zogenaamde units – eenheden die elk een specifieke taak uitvoeren. Met pipe-operatoren, die de retourwaarde van een unit van links als invoer doorgeven aan de volgende unit rechts ervan, kun je deeltaken aan elkaar koppelen:

emit specificeert in ons voorbeeld het bestand dat door de overige units verder moet worden verwerkt, maar kan ook afzonderlijk worden gebruikt om de inhoud ervan gewoon op de console weer te geven. Dat werkt ook met binaire gegevens. Als je alleen emit intypt zonder verdere parameters, verwerkt het commando de huidige inhoud (bijvoorbeeld een gekopieerde string) uit het klembord van het besturingssysteem. Ook een simpele emit Hello World! of het meegeven à la emit RXJmb2xncmV pY2ggZW50c2NobHVlc3NlbHQ= | b64 om de string direct in de terminal te decoderen, is toegestaan.

xtzip haalt test.txt uit voorbeeld.zip voor verdere verwerking. Met de parameter --pwd (wachtwoord) opent het ook met een wachtwoord beveiligde archieven.

b64 spoort de Base64-gecodeerde string op en decodeert die, maar is in andere contexten ook bruikbaar voor de omgekeerde bewerking.

dump schrijft het resultaat van de voorgaande bewerkingen naar output.txt. Als je deze unit weglaat, komt de gedecodeerde string in plaats daarvan in de terminal terecht.

Phishing ontmaskeren

Een andere toepassing van Binary Refinery, die je helemaal zonder schadelijke code zelf kunt uitproberen, is het analyseren van verdachte documenten. Maak daarvoor een test.txt-bestand aan en vul het met URL’s, domeinen en e-mailadressen. De unit xtp vindt die op basis van hun structuur, en de unit defang neutraliseert de treffers door vierkante haakjes toe te voegen volgens het patroon www[.]test[.]nl.

emit test.txt | xtp | defang

Binary Refinery schrijft het resultaat naar de console. Zoals eerder gezegd kun je met xtp niet alleen onderdelen van schadelijke code, maar ook logbestanden in PCAP of andere formaten snel en eenvoudig doorzoeken op verdacht verkeer.

Trouwens: met extra parameters kan xtp naast de genoemde standaardpatronen ook zoeken naar andere typische patronen, zoals IPv4/v6-adressen, hashes en paden.

Bovendien begrijpt de unit reguliere expressies. Om die bijvoorbeeld gericht in te zetten voor het opsporen van Indicators of Compromise (IoC’s), is het de moeite waard om de beschikbare opties in de documentatie te bekijken.

Hoe en waar je het onderzoek het beste kunt aanpakken, vertellen we later.

Werken met voorbeelden

Terug naar de voorbeelden: gevaarlijke phishing- en downloadlinks zitten vooral vaak verstopt in e-mails, PDF’s en Office-documenten. Om de specifieke structuur ervan te parsen en de elementen eruit te halen voordat je ze bijvoorbeeld met xtp verder kunt onderzoeken, biedt Binary Refinery ook speciale units. Daaronder vallen xtmail, xtpdf, xtdoc en xtvba (die laatste voor het extraheren van macrocode).

Als je dat ook eens wilt uitproberen, maak dan gewoon een PDF-bestand aan met een willekeurige afbeelding, wat tekst en een URL. Sla dat op en laat Binary Refinery vervolgens de elementen die erin zitten, samen met de paden, weergeven:

emit test.pdf | xtpdf -list

Afbeeldingen in de teruggegeven lijst met elementen kun je herkennen aan hun bestandsextensies. Ook verschijnt de ingebouwde tekst als een bestand met de extensie .txt (in onze test concreet: page0.txt). Met emit test.pdf | xtpdf (bestandsnaam.extensie) | dump (doelbestand) haal je de gewenste elementen er één voor één uit voor verdere analyse.

Of je maakt gebruik van de combinatiemogelijkheden van Binary Refinery om de geëxtraheerde tekst direct verder te verwerken met xtp en defang:

emit test.pdf | xtpdf (tekstbestand) | xtp | defang

Onderzoekshulpmiddelen

Van units zoals blowfish, aes en camellia voor het versleutelen en ontsleutelen van gegevens, via asm voor het disassembleren van code, tot kramer of xlmdeobf voor het ontrafelen van malware-versleutelingen: het is, gezien de hoeveelheid beschikbare units en de combinatiemogelijkheden, onmogelijk en ook niet zinvol om alle mogelijkheden van Binary Refinery op te sommen.

Na het voorproefje in dit artikel is het daarom aan jou om zelf met de toolkit te gaan experimenteren en in de online documentatie de units en beschikbare parameters te zoeken die op dat moment voor jou nuttig zijn.

De in Binary Refinery geïntegreerde zoekfunctie is heel handig om de documentatie door te spitten. Die kun je oproepen met binref --help.

Het commando binref (trefwoord) zoekt naar één of meerdere trefwoorden en geeft vervolgens de korte beschrijvingen weer van alle units waarin de term in de documentatie voorkomt.

De parameter all breidt de weergave van de units uit met hun volledige uitleg uit de documentatie. Ook erg handig: --words zorgt ervoor dat het trefwoord op zichzelf voorkomt in de doorzochte tekst in plaats van alleen als een deel van een string.

Tutorials en how-to’s

Als je je verder verdiept in Binary Refinery, kom je al in het Readme.MD-bestand voorbeelden tegen die aanzienlijk complexer zijn dan de voorbeelden in dit artikel.

Hoe die precies werken, wordt niet meteen duidelijk als je even snel in de documentatie kijkt. Zo is het volgende commando bijvoorbeeld bedoeld om een configuratiebestand uit een voorbeeld van de HawkEyeKeylogger te halen:

emit (sample) | put cfg perc[RCDATA]:c:: [| xtp guid | pbkdf2 48 rep[8]:h:00 | cca eat:cfg | aes -Q x::32 –iv x::16 ] | dnd

Nog vragen? – Waarschijnlijk heel veel.

Tutorials op basis van praktische voorbeelden kunnen je helpen om dergelijke ingewikkelde gebruikssituaties te doorgronden. In de GitHub-repository van Binary Refinery staan talrijke tutorials over verschillende soorten malware – bijvoorbeeld over de NetWalker-dropper, Amadey-loader en QakBot-config-decoder – en ook de malwaresamples waarop ze betrekking hebben.

Het kan ook handig zijn om experts te zien werken met Binary Refinery: op YouTube staat een handige afspeellijst over de toolkit, inclusief een opgenomen livestream waarin de ontwikkelaar van de toolkit, Jesko Hüttenhain, een multistage-downloader ontleedt.

De tijd die je in zo’n verdieping steekt, loont zeker de moeite: hoe dieper je erin duikt, des te meer flexibiliteit en mogelijkheden Binary Refinery je biedt bij het analyseren van schadelijke code.

Maar ook zonder zo’n diepgaande verdieping kan de toolkit je een hoop werk uit handen nemen door hem deelopdrachten te geven en te combineren met andere tools. Zo kun je met xtp en soortgelijke units geëxtraheerde IP-adressen, e-mailbijlagen en schadelijke code in een tweede stap doorgeven aan andere tools zoals Capa en vtcli.

Capa identificeert specifieke malwarecapaciteiten op basis van de kennisdatabase met aanvalspatronen van het MITRE-ATT&CK-framework. De tool vtcli maakt de scan- en zoekfuncties van het VirusTotal-platform van Google beschikbaar via de commandline.

Tips voor het installeren

Als je zin hebt gekregen om Binary Refinery zelf eens uit te proberen, volg dan gewoon de installatie-instructies uit het Readme.MD-bestand van de GitHub-repository (zie de link bij dit artikel).

Tijdens onze test verliep het proces zowel onder Windows als onder Linux snel en zonder problemen. Maar let op: als je de toolkit op echte malware wilt gebruiken, moet je hem absoluut in een geïsoleerde omgeving zoals een sandbox of virtuele machine gebruiken.

Ook is het belangrijk om de aanbeveling van de ontwikkelaar op te volgen om Binary Refinery met behulp van de meegeleverde Python-module venv in een geïsoleerde map (virtuele omgeving) met een eigen Python-installatie in te richten. Dat is onder andere bedoeld om versieconflicten van Python-bibliotheken te voorkomen en ervoor te zorgen dat de eigen commando’s van de toolkit niet botsen met die van andere programma’s op het systeem.

De commando’s voor het aanmaken en vervolgens activeren van de venv-omgeving variëren per besturingssysteem en de gebruikte shell. Aangezien de Readme.MD die verschillende gevallen niet uitlegt, raden we je aan om indien nodig nog even het venv-gedeelte van de Python-documentatie te raadplegen.

Tot slot nog een tip voor gebruikers van REMnux: de kant-en-klare Docker-container bespaart je het installatiewerk.

De moeite waard

Binary Refinery belichaamt bijna in zijn puurste vorm de traditionele Unix-filosofie van zeer gespecialiseerde, maar krachtige tools die je flexibel kunt combineren om complexe taken aan te pakken. Het kan dan ook even duren voordat je ermee vertrouwd raakt.

Maar als je regelmatig gegevens uit bestanden moet halen, verdient de geïnvesteerde tijd zich snel terug en dan wil je Binary Refinery niet meer missen. Niet voor niets is de toolkit een vaste waarde geworden in de toolkist van ervaren malware-analisten.

Olivia von Westernhagen en Noud van Kruysbergen

Inspiratie in je mailbox

Blijf bij op IT-gebied en verbreed je expertise. Ontvang elke week artikelen over de laatste tech-ontwikkelingen, toepassingen, nieuwe hard- en software én ontvang tips en aanbiedingen.

Loginmenu afsluiten