Hunten met strings en hex
Malwareartefacten matchen
Hunten met strings en hex is een gratis Cyber Security Academy-les op CoddyKit. Dit is les 3 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Cyber Security Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Cyber Security Academy bevat in totaal 4 lessen.
Van voorbeeld naar regel
Opsporing begint met een voorbeeld. Je verzamelt kenmerkende artefacten, bepaalt welke duurzaam zijn en verwerkt ze in een regel die de familie detecteert zonder legitieme bestanden als verdacht aan te merken.
De werkwijze: het voorbeeld sorteren, tekenreeksen en structurele kenmerken verzamelen, signaal van ruis scheiden, de regel opstellen en die vervolgens testen tegen zowel de familie als een corpus met schone bestanden voordat je de regel uitrolt.
Kandidaattekenreeksen verzamelen
Begin met het hulpprogramma strings om afdrukbare reeksen op te sommen en zowel ASCII- als UTF-16-tekst (wide) vast te leggen. Malware voor Windows slaat tekenreeksen vaak in wide-formaat op.
Doorzoek de uitvoer op C2-URL's, mutexnamen, registerypaden, aangepaste foutmeldingen, PDB-paden en opvallend specifieke tekst. Negeer algemene tekenreeksen uit runtime en compiler.
strings -a sample.bin > ascii.txt
strings -e l sample.bin > wide.txt # UTF-16LE
grep -iE 'http|mutex|\\\\pipe\\\\|\.pdb' ascii.txt wide.txtDuurzame tekenreeksen kiezen
Niet elke tekenreeks hoort in een regel. Geef de voorkeur aan artefacten die de auteur niet zonder veel moeite kan wijzigen:
- Hardgecodeerde mutex- en pipenamen die uniek zijn voor de familie
- Aangepaste protocolmarkeringen of configuratiesleutels
- Ongebruikelijke foutopsporings- of paniekberichten
- Ingebedde PDB-paden die de bouwomgeving onthullen
Vermijd standaardtekst uit bibliotheken, algemene API-namen en versietekenreeksen die door legitieme software worden gedeeld en fout-positieven veroorzaken.
strings:
$mutex = "Global\\Zx7yQ_lock" wide
$cfgkey = "x0r_cfg_begin" ascii
$pdb = "C:\\build\\loader\\release\\loader.pdb"Eenvoudige versluiering omzeilen
Veel families versleutelen tekenreeksen met XOR of coderen ze op een andere eenvoudige manier. Als tekenreeksen in klare tekst schaars zijn, zoek dan naar de gecodeerde vorm of de decoderingsroutine.
Je kunt de met XOR gecodeerde bytes van bekende klare tekst berekenen en daarop zoeken, of de xor-modificator van YARA gebruiken om een tekenreeks automatisch met elke XOR-sleutel van één byte te laten overeenkomen.
strings:
// matches "http://" under any single-byte XOR key
$u = "http://" xor
// or a fixed key range
$k = "config" xor(0x01-0xff)Zoeken met hexpatronen
Wanneer tekenreeksen zijn versluierd maar de code niet, kun je bytepatronen uit de eigen logica van de malware gebruiken: een decryptieroutine, een uitpaklus of een unieke constante.
Disassembleer het voorbeeld, zoek een kenmerkende instructiereeks en vertaal de opcodes naar een hextekenreeks. Maak de bytes die variëren (adressen, directe waarden) tot jokertekens, zodat het patroon ook na opnieuw compileren blijft werken.
strings:
// XOR decrypt loop with wildcarded counter/address
$decrypt = { 8A ?? 34 ?? 88 ?? 4? 4? 75 ?? }Jokertekens en sprongen in de praktijk
De kunst van het zoeken met hex is bepalen welke bytes je tot jokertekens maakt. Een te strikt patroon breekt na opnieuw compileren; een te los patroon komt overal mee overeen.
- Maak relatieve offsets en directe waarden tot jokertekens, omdat de compiler ze wijzigt
- Houd opcodes vast, omdat het algoritme stabiel blijft
- Gebruik sprongen
[n-m]wanneer de lengte van instructies varieert
Streef naar een patroon dat lang genoeg is om uniek te zijn (vaak minstens 8 betekenisvolle bytes), maar flexibel blijft waar dat nodig is.
strings:
$stub = { 55 8B EC 83 EC [1-4] E8 ?? ?? ?? ?? 33 C0 }Structurele en PE-indicatoren
Statische kenmerken naast onbewerkte bytes leveren krachtige voorwaarden met weinig ruis op. Met de module pe kun je zoeken naar:
- imphash — hash van de importtabel, vaak stabiel in builds van dezelfde familie
- sectienamen — aangepaste packers voegen herkenbare secties toe
- specifieke imports — VirtualAllocEx + WriteProcessMemory + CreateRemoteThread duidt op injectie
import "pe"
condition:
pe.imphash() == "4e3a9f..." or
for any s in pe.sections : ( s.name == ".x0rsec" )Entropie als signaal
Ingepakte of versleutelde gebieden hebben een hoge entropie. De module math meet die entropie, zodat je voorbeelden kunt markeren waarvan de payloadsectie versleuteld lijkt, een kenmerk van packers.
Entropie op zichzelf geeft veel ruis (gecomprimeerde installatieprogramma's hebben ook een hoge entropie), dus combineer haar met andere indicatoren in plaats van er zelfstandig een waarschuwing op te baseren.
import "math"
condition:
math.entropy(0, filesize) >= 7.2 and $loader_stubIndicatoren combineren
De sterkste regels vereisen meerdere onafhankelijke indicatoren, zodat geen enkele toevallige overeenkomst een treffer veroorzaakt. Combineer een tekenreeks, een codepatroon en een structureel kenmerk.
Deze gelaagde voorwaarde is bestand tegen zowel fout-positieven (alle onderdelen moeten overeenkomen) als omzeiling (de auteur moet meerdere kenmerken tegelijk wijzigen).
condition:
uint16(0) == 0x5A4D and
filesize < 800KB and
$mutex and
$decrypt and
pe.imports("kernel32.dll", "CreateRemoteThread")Naamgeving, meta en versiebeheer
Een opsporingsregel is alleen bruikbaar als anderen erop kunnen vertrouwen en haar kunnen onderhouden. Geef elke regel een duidelijke naam met namespace en een volledige meta.
- Leg de hashes vast van de voorbeelden waarop de regel is gebaseerd
- Noteer de familie, auteur, datum en een referentie
- Verhoog het veld versie wanneer je de logica verfijnt
Wanneer de regel maanden later afgaat, vertelt deze metagegevens de behandelaar wat de treffer betekent en hoeveel vertrouwen die verdient. Zo wordt een eenmalige zoekactie een duurzame, deelbare detectie.
meta:
family = "X0rLoader"
author = "ir-team"
date = "2026-06-04"
hash = "9f1c...e2"
version = "2"Test voordat je vertrouwt
Valideer een nieuwe regel altijd tegen twee corpora:
- Terechte positieven — elk bekend voorbeeld van de familie moet een overeenkomst opleveren
- Goedaardige software — een grote schone verzameling (systeembestanden, veelgebruikte apps) mag GEEN overeenkomst opleveren
Eén fout-positief op een Windows-DLL kan kritieke bestanden in de hele omgeving in quarantaine plaatsen. Voer de regel uit, tel de resultaten, bekijk de gemiste en gevonden treffers en verfijn de regel voordat je haar breed uitrolt.
yara -r family.yar /malware_corpus/ # expect all to hit
yara -r family.yar /clean_corpus/ # expect zero hitsKorte controle
Kies de indicator die het best bestand is tegen variaties.
Samenvatting
Praktisch zoeken met YARA, van begin tot eind:
- Verzamel ASCII- en wide-tekenreeksen; behoud duurzame artefacten (mutexen, configuratiesleutels, PDB-paden)
- Omzeil lichte versluiering met de xor-modificator of gecodeerde patronen
- Zoek naar bytepatronen in code (decryptie- en uitpakroutines) wanneer tekenreeksen verborgen zijn
- Maak veranderlijke bytes tot jokertekens, houd opcodes vast en gebruik sprongen voor variabele lengtes
- Gebruik PE-imphash, secties en imports en entropie als structurele signalen
- Combineer meerdere indicatoren om fout-positieven en omzeiling tegen te gaan
- Test altijd tegen corpora met de familie en goedaardige software voordat je de regels uitrolt
Volgende: deze regels uitvoeren in een hele omgeving.
Leer Cyber Security Academy met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 76
- Lessen
- 303
Veelgestelde vragen
Is de les “Hunten met strings en hex” gratis?
Ja — je kunt hier op het web alle 3 lessen van het leerpad Cyber Security Academy, waaronder “Hunten met strings en hex”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Cyber Security Academy bevat in totaal 4 lessen.
Wat leer ik in “Hunten met strings en hex”?
Malwareartefacten matchen Je oefent met Cyber Security Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Cyber Security Academy te beginnen?
Ervaring vooraf is niet nodig. Cyber Security Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Hunten met strings en hex”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Cyber Security Academy?
Ja. Elke les over Cyber Security Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Waarvoor YARA dient
- Syntaxis van YARA-regels
- Hunten met strings en hex
- Scans schalen en automatiseren