Simovits

Hur skadlig kod kringgår MOTW och analys

MOTW

I september 2022 ändrade Microsoft de förvalda inställningarna i Office-applikationer till att blockera exekvering av makron i filer från internet. Detta implementeras genom att Office-dokument från internet eller e-post-bilagor markeras med ett fält MOTW (mark of the web) knytet till zon-information. Makron i Office-dokument har fram tills detta varit en vanlig vektor för initial åtkomst för skadlig kod på Windows system. [1][2]

Hur skadlig kod kringgår MOTW

Office-dokument med skadliga makron kan enkelt kringgå MOTW genom paketering. Så länge Office-dokumentet är inbäddat i en behållar-fil såsom ZIP-akriv eller ISO-diskavbilder så taggas inte de inneslutna filerna med korrekt zonangivelse eller MOTW då extraherade filer inte ärver detta.

Detta kan kombineras med Windows-genvägar (LNK-filer) som kan användas för att ladda ned fler resurser till klienten [2] eller extrahera skadlig kod som är paketerad eller inbäddad i andra filer då länkfiler kan exekvera powershell, cmd eller mshta.

Till exempel kan följande anges som mål i en genväg:

C:\Windows\System32\cmd.exe /c "%userprofile%\Downloads\Downloads\7z.exe e -ppassword %userprofile%\Downloads\Downloads\calc.7z calc.exe && %userprofile%\Downloads\Downloads\calc.exe"

Här extraheras calc.exe från ett lösenordsskyddat 7z-akriv med 7z.exe som packas med i ett zip akriv Downloads.zip som med förvalda inställningar packas upp till en mapp Downloads i Downloads-mappen. Det går i princip att göra vad som helst med genvägar.

Hur skadlig kod kan undvika analys

Filer som packas upp från arkiv genomgår normalt sett en analys av antivirusprogram för att bedöma om filen är säker att öppna. För att denna analysen inte skall ta allt för lång tid eller kräva allt för mycket resurser brukar denna analys begränsas på dessa två parametrar. Det vill säga om en fil är tillräckligt stor eller komplex kommer analysen att avbrytas i förtid. Detta gäller även sandlådeanalyser på internet.

Detta kan utnyttjas av skadlig kod som levereras med zip-arkiv då en fil kan göras mycket stor genom att lägga till ett skräpdata, som ändå komprimeras till en liten zip-fil. Analysverktyg och sandlådor hanterar inte alltid t.ex. 700 MB stora filer. Till exempel kraschar PeStudio [3] vid sådana stora filer.

Statisk analys av stora körbara filer

Stora körbara PE-filer kan dock analyseras med andra verktyg som inte har lika stor minnesanvändning såsom CFF Explorer [4] och statiska UTF-16 strängar kan skannas efter med strings -e l eller dylikt.

Det går också att extrahera ut alla sektioner i PE-filer eller alla filer packade i msi-filer med till exempel 7-Zip [5] för att ta ut hash-summor för de olika sektionerna eller analysera de mindre sektionerna för sig. Det finns också verktyg såsom HashMyFiles [6] som räknar ut hash-summor för alla filer i en mapp och kan exportera resultatet till en textfil.

Ändamålsenliga hash-algoritmer

Skadlig kod kan givetvis undvika igenkänning på hash-summor från vanliga hash-algoritmer genom minimala fil-ändringar då en modifierad, tillagd eller borttagen bit genererar en helt annan hash-summa för MD5, SHA-1 eller SHA-256. Vanliga kryptografiska hash-algoritmer är alltså inte alltid ändamålsenliga för analys av skadlig kod där det finns ett värde av att små förändringar i data ger små förändringar i hash-summan.

Lyckligtvis finns det kontext-reagerande rullande hash-algoritmer som är designade för att generera hash-summor där nästan samma filer ger nästan samma hash-summa. SSDEEP är en sådan hash-algoritm som är designad för att identifiera nästan identiska filer. [7]

Experiment med SSDEEP

Som experiment tog jag en 1GB fil med slumpdata där jag flippade en bit och jämförde både MD5 och SSDEEPs hash-summor.

SSDEEP hash-summa på fil 1 och 2

25165824:GrvBniySuZeN4c7yvVPrYZNFNO6tvAvpjNeUA:GzBniSeN4iQ8F0pLA
25165824:krvBniySuZeN4c7yvVPrYZNFNO6tvAvpjNeUA:kzBniSeN4iQ8F0pLA

MD5 hash-summa på fil 1 och 2

932f1c407785e0be85dc5c4c2f4b6e75
81e41914a4b9eead99300f0afb2113f5

Endast ett tecken ändrades i SSDEEP hash-summan så om någon försöker distribuera skadlig kod genom att göra små förändringar i varje utgåva så skulle förändringsavståndet på SSDEEP hash-summan ändå varit lågt.

Referenser