Cyber Security Academy · Lektion

Threat hunting med strängar och hex

Matcha artefakter från skadlig programvara.

Lektion 3 av 413 steg

Threat hunting med strängar och hex är en gratis lektion i Cyber Security Academy på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Cyber Security Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cyber Security Academy innehåller totalt 4 lektioner.

Från sample till regel

Jakt börjar med ett sample. Du extraherar särskiljande artefakter, avgör vilka som är beständiga och kodar in dem i en regel som fångar familjen utan att flagga rena filer.

Arbetsflödet är: triagera samplet, ta fram strängar och strukturella egenskaper, skilj signal från brus, skriv ett första regelutkast och testa det sedan mot både familjen och en ren korpus innan driftsättning.

Extrahera kandidatsträngar

Börja med verktyget strings för att lista utskrivbara sekvenser och fånga både ASCII- och UTF-16-text (wide). Windows-skadeprogram lagrar ofta strängar som wide-strängar.

Granska utdata efter C2-URL:er, mutexnamn, registersökvägar, anpassade felmeddelanden, PDB-sökvägar och ovanligt specifik text. Ignorera generiska runtime- och kompilatorsträngar.

strings -a sample.bin > ascii.txt
strings -e l sample.bin > wide.txt   # UTF-16LE
grep -iE 'http|mutex|\\\\pipe\\\\|\.pdb' ascii.txt wide.txt

Välj beständiga strängar

Alla strängar hör inte hemma i en regel. Föredra artefakter som upphovspersonen inte kan ändra utan betydande ansträngning:

  • Hårdkodade mutex- eller pipenamn som är unika för familjen
  • Anpassade protokollmarkörer eller konfigurationsnycklar
  • Ovanliga avlusnings- eller panikmeddelanden
  • Inbäddade PDB-sökvägar som avslöjar byggmiljön

Undvik standardtext från bibliotek, vanliga API-namn och versionssträngar som delas av legitim programvara, eftersom de ger falsklarm.

strings:
  $mutex = "Global\\Zx7yQ_lock" wide
  $cfgkey = "x0r_cfg_begin" ascii
  $pdb = "C:\\build\\loader\\release\\loader.pdb"

Motverka enkel obfuskering

Många familjer XOR-kodar eller kodar strängar på annat enkelt sätt. Om det finns få klartextsträngar kan du leta efter den kodade formen eller avkodningsrutinen.

Du kan beräkna XOR-kodade byte för en känd klartext och matcha dem, eller använda YARAs xor-modifierare för att automatiskt matcha en sträng med valfri XOR-nyckel på en byte.

strings:
  // matches "http://" under any single-byte XOR key
  $u = "http://" xor
  // or a fixed key range
  $k = "config" xor(0x01-0xff)

Sökning med hexmönster

När strängar är obfuskerade men koden inte är det kan du matcha byte-mönster från skadeprogrammets egen logik: en dekrypteringsstub, en uppackningsloop eller en unik konstant.

Disassemblera samplet, hitta en särskiljande instruktionssekvens och översätt opkoderna till en hexsträng. Ersätt de byte som varierar (adresser och immediates) med jokertecken så att mönstret överlever omkompilering.

strings:
  // XOR decrypt loop with wildcarded counter/address
  $decrypt = { 8A ?? 34 ?? 88 ?? 4? 4? 75 ?? }

Jokertecken och hopp i praktiken

Konsten med hexjakt är att välja vad som ska ersättas med jokertecken. Är mönstret för strikt går regeln sönder vid en omkompilering; är det för löst matchar den allt.

  • Ersätt relativa offsetar och immediates som kompilatorn ändrar med jokertecken
  • Behåll opkoder fasta, eftersom algoritmen är stabil
  • Använd hopp [n-m] där instruktionslängder varierar

Sikta på ett mönster som är tillräckligt långt för att vara unikt (ofta minst 8 meningsfulla byte), men flexibelt där det behövs.

strings:
  $stub = { 55 8B EC 83 EC [1-4] E8 ?? ?? ?? ?? 33 C0 }

Strukturella indikatorer och PE-indikatorer

Statiska egenskaper utöver råa byte ger starka villkor med få falsklarm. Med modulen pe kan du matcha:

  • imphash — en hash av importtabellen, ofta stabil mellan olika byggen av en familj
  • sektionsnamn — anpassade packare lägger till avslöjande sektioner
  • specifika importer — VirtualAllocEx + WriteProcessMemory + CreateRemoteThread signalerar injektion
import "pe"
condition:
  pe.imphash() == "4e3a9f..." or
  for any s in pe.sections : ( s.name == ".x0rsec" )

Entropi som signal

Packade eller krypterade områden har hög entropi. Modulen math mäter den, vilket gör att du kan flagga sample vars payload-sektion ser krypterad ut, ett kännetecken för packare.

Entropi ensam ger många brusiga resultat (komprimerade installationsprogram har också hög entropi), så kombinera den med andra indikatorer i stället för att larma på den ensam.

import "math"
condition:
  math.entropy(0, filesize) >= 7.2 and $loader_stub

Kombinera indikatorer

De starkaste reglerna kräver flera oberoende indikatorer så att ingen enskild tillfällighet utlöser en träff. Kombinera en sträng, ett kodmönster och en strukturell egenskap.

Detta lagerindelade villkor står emot både falsklarm (alla delar måste stämma överens) och undvikande (upphovspersonen måste ändra flera egenskaper samtidigt).

condition:
  uint16(0) == 0x5A4D and
  filesize < 800KB and
  $mutex and
  $decrypt and
  pe.imports("kernel32.dll", "CreateRemoteThread")

Namngivning, meta och versionshantering

En jaktregel är bara användbar om andra kan lita på och underhålla den. Ge varje regel ett tydligt namn med namnområde och komplett meta.

  • Registrera samplets hashar som regeln byggdes från
  • Ange familj, upphovsperson, datum och en referens
  • Öka fältet version när du förfinar logiken

När regeln utlöses månader senare berättar dessa metadata för incidenthanteraren vad den betyder och hur mycket den går att lita på. På så sätt blir en engångsjakt till en beständig och delbar detektion.

meta:
  family = "X0rLoader"
  author = "ir-team"
  date = "2026-06-04"
  hash = "9f1c...e2"
  version = "2"

Testa innan du litar på regeln

Validera alltid en ny regel mot två korpusar:

  • Sanna positiva träffar — alla kända sample av familjen måste matcha
  • Goodware — en stor ren uppsättning (systembinärer och vanliga appar) får INTE matcha

Ett enda falsklarm på en Windows-DLL kan sätta kritiska filer i karantän i hela miljön. Kör regeln, räkna, granska missarna och träffarna och förfina den sedan innan bred driftsättning.

yara -r family.yar /malware_corpus/   # expect all to hit
yara -r family.yar /clean_corpus/     # expect zero hits

Snabbkontroll

Välj den indikator som bäst står emot förändringar.

Sammanfattning

Praktisk YARA-jakt från början till slut:

  • Extrahera ASCII- och wide-strängar och behåll beständiga artefakter (mutexar, konfigurationsnycklar och PDB-sökvägar)
  • Motverka enkel obfuskering med xor-modifieraren eller kodade mönster
  • Matcha kodens byte-mönster (dekrypterings- och uppackningsstubbar) när strängar är dolda
  • Ersätt föränderliga byte med jokertecken, behåll opkoder fasta och använd hopp för varierande längder
  • Använd PE-imphash, sektioner och importer samt entropi som strukturella signaler
  • Kombinera flera indikatorer för att stå emot falsklarm och undvikande
  • Testa alltid mot korpusar med familjen och goodware innan driftsättning

Nästa steg: kör dessa regler över en hel miljö.

Gratis att börja

Lär dig Cyber Security Academy med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
76
Lektioner
303

Vanliga frågor

Är lektionen ”Threat hunting med strängar och hex” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Cyber Security Academy, inklusive ”Threat hunting med strängar och hex”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Cyber Security Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Threat hunting med strängar och hex”?

Matcha artefakter från skadlig programvara. Ni övar på Cyber Security Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cyber Security Academy?

Du behöver inga förkunskaper. Utbildningen i Cyber Security Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”Threat hunting med strängar och hex”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cyber Security Academy-lektionen?

Ja. Varje Cyber Security Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Vad YARA används till
  2. Syntax för YARA-regler
  3. Threat hunting med strängar och hex
  4. Skala upp och automatisera skanningar
← Tillbaka till Cyber Security Academy