Dynamic Analysis Flashcards
Hvad er dynamic analysis?
Det kan involvere at udføre og observere malwares adfærd i et kontrolleret miljø for at forstå, hvad der sker i koden, og forstå funktionaliteten.
Hvorfor laver man en dynamic analysis?
?
Hvornår udfører man en dynamic analysis?
Det gør man efter den statiske analyse.
Hvilken slags værktøj bruger man til dynamic analysis?
Man bruger en debugger.
Hvad er forskellen på den debugger, man bruger i REM, sammenlignet med den, man kender fra IDE’er?
- Den fra IDE’er er en debugger på source-level, som giver os mulighed for at sætte breakpoints i kildekoden for at undersøge de forskellige trin.
- Den man bruger i REM er Assembly-Level debuggere.
Hvorfor bruger man Assembly-Level debuggere i REM?
Fordi den ikke behøver adgang til kildekoden.
Når man beskæftiger sig med malware, får man ikke kildekoden, fordi man allerede ved, hvad malwaren gør.
Når man bruger x32dbg(debugger) bruger
man information om import fra vores statiske analyse, hvad er en import?
Det er eksterne biblioteker eller moduler, som en EXE- eller DLL-fil er afhængig af.
Det er defineret i det binære, men forventes at være tilgængeligt ved runtime.
Hvad er nogle eksempler på de importer, man bør kigge efter, når man går ind i debuggeren og starter den dynamiske analyse?
- isDebuggerPresent
- HttpOpenRequest
- HttpSendRequest
- InternetReadFile
- InternetOpen
- InternetConnect
- RegOpenKey
- RegSetKey
- CryptDecrypt
Hvad gør importen ‘isDebuggerPresent’?
Når exe-filen(programmet) køres, vil den som det første kontrollere, om den kører i en debugger.
Hvis programmet kører i en debugger, vil det nedbryde programmet.
Hvis ikke, vil den fortsætte med at udføre resten af koden.
Hvad er anti-analyse?
Det er teknikker eller metoder, der anvendes til at forhindre eller hindre analyse og reverse engineering af et program eller en kode.
Hvad er 2 muligheder for at omgå isDebuggerPresent-funktionen under kørsel?
- Skift output af isDebuggerPresent i runtime.
- Patch programmet, men vær forsigtig, da det kan indføre betydelige ændringer, herunder ændring af hash-værdier.
Hvordan skrifter man outputtet af “isDebuggerPresent” i runtime?
Man skal finde, hvor den registrerer, at debuggeren er til stede, og ændre værdien i det relevante register til det modsatte af, hvad det registrerede (normalt 0/1 for falsk/sand).