Malware verstehen Wie ist moderne Malware aufgebaut und was können wir daraus lernen? Daniel Marquardt Systems Engineer Copyright Fortinet Inc. All rights reserved.
Was ist eigentlich Malware? Malware = malicious software Schirmbegriff für Software, die das Ziel schädliche oder bösartige Befehle auf einem Zielsystem auszuführen Umfasst also den Gesamtprozess. 2
Die moderne Malware Dropper bzw. Downloader lädt weiterführenden Code herunter speziell gerüstet zur Erstinfektion Exploit-Code Softwareschwachstelle im Zielsystem Meist mit dem Ziel erweiterte Kontrolle über das System zu erlangen Payload Zielgerichteter Schadcode, der die eigentliche Infektion umsetzt 3
Der Dropper bzw. Downloader Bedient sich i.d.r. diverser Techniken um sich vor statischer und dynamischer Analyse (Sandbox) zu schützen:» Code Obfuscation & Garbage Instructions» Bloating (Größe der Datei durch Garbage Instructions erhöhen)» Verzögerungstechniken um Analyse zu erschweren, VM-Erkennung Fest einprogrammierten URLs / IP IOC 4
Exploit-Code Oftmals bekannte Schwachstellen um Shellcode auszuführen. Benutzt oftmals Lücken im Programmablauf z.b.» Buffer Overflow» Heap Spray... Oftmals Modifikation von bekanntem Code z.b. von GitHub charshellcode[] = "\x31\xc9" //xor ecx,ecx "\x64\x8b\x71\x30" //mov esi,[fs:ecx+0x30] "\x8b\x76\x0c" //mov esi,[esi+0xc] "\x8b\x76\x1c" //mov esi,[esi+0x1c] "\x8b\x36" //mov esi,[esi] "\x8b\x06" //mov eax,[esi] "\x8b\x68\x08" //mov ebp,[eax+0x8] "\xeb\x20" //jmp short 0x35 "\x5b" //pop ebx "\x53" //push ebx "\x55" //push ebp "\x5b" //pop ebx "\x81\xeb\x11\x11\x11\x11" //sub ebx,0x1111 "\x81\xc3\xda\x3f\x1a\x11" //add ebx,0x111a "\xff\xd3" //call ebx "\x81\xc3\x11\x11\x11\x11" //add ebx,0x1111 "\x81\xeb\x8c\xcc\x18\x11" //sub ebx,0x1118 "\xff\xd3" //call ebx "\xe8\xdb\xff\xff\xff" //call dword "cmd" "\x63\x6d\x64"; 5
Der moderne Payload Eigentliche Software für die Intention hinter dem Schadcode:» Ransomware» Crypto-Miner» Botnet (DDoS)» Spionage» Keylogger» Remote Access Trojaner (RAT)» Banker»... 6
Meltdown & Spectre (Multicore)-CPU-basiert Problem bei kritischen CPU-Features Malware...? NEIN Bug...? JA Exploit-Code verfügbar...ja CVE-2017-5753 Variant 1, Bounds Check Bypass (Spectre) CVE-2017-5715 Variant 2, Branch Target Injection (Spectre) CVE-2017-5754 Variant 3, Rogue Data Cache Load (Meltdown) CVE-2018-3640 Variant 3a, Rogue System Register Read (RSRE) CVE-2018-3639 Variant 4: Speculative Store Bypass (SSB) No CVE assigned: Eight additional Spectre-class flaws (Spectre-NG) 7
Meltdown & Spectre High-Level Lässt Hardware-seitige Security Maßnahmen schmelzen Out-of-order Execution Kann Kernel-Memory auslesen aus einem Prozess mit User-Rechten» Kann alle möglichen Informationen beinhalten. Leicht umzusetzen:» Kernel Memory Access Code ist verhältnismäßig universell. Speculative Execution / Predicition Nutzt einen Side-Channel bei der Spekulation um eigentlich geschützte Daten sichtbar zu machen» Kann gezielter Informationen abgreifen Schwierig umzusetzen: braucht maßgeschneiderten Exploit-Code» CPU-Architektur» Deep-Dive in Zielprozesse Aber: gefährlicher! 8
Die Security Fabric und Meltdown / Spectre Tatsächlich sind FORTINET-Produkte so konzipiert, dass sie keine beliebige Codeausführung im Benutzerbereich unter normalen Bedingungen erlauben. Daher sind Angriffe mit Meltdown/Spectre und ihre Varianten nur möglich, wenn der Angriff mit einer zusätzlichen Local oder Remote Code Execution Exploits kombiniert wird. Meltdown und Spectre können dann die Situation verschlimmern, wenn solche Schwachstellen bestehen und erfolgreich ausgenutzt werden. 9
Beispiel: Cobalt Malware (CVE-2017-11882) Nov. 17 Payload entliehen kommerziellem Tool: Cobalt Strike 10
Beispiel: Cobalt Malware (CVE-2017-11882) Nov. 17 CVE-2017-11882 behoben am Patch-Day Nov. 2017 Microsoft Equation Editor (EQNEDT32.EXE)» alter Formeleditor in Dokumenten» bspw. WORDPAD (RTF) Sicherheitslücke, die die Ausführung von Code ermöglicht. Shellcode wird mittels Buffer Overflow injiziert. 11
Beispiel: Cobalt Malware (CVE-2017-11882) Nov. 17 64Bit-Exploit: Pipeline in Drucker-Spool Prozess für Privilegien JavaScript Download-IP bleibt als IOC gleich Wird mit Microsoft HTML (mshta.exe) ausgeführt 12
Beispiel: Cobalt Malware (CVE-2017-11882) Nov. 17 Obfuscated Variablen im Javascript Lädt Powershell-Skript 13
Beispiel: Cobalt Malware (CVE-2017-11882) Nov. 17 Ver- und Entschlüsselung des weiteren Downloaders 14
Beispiel: Cobalt Malware (CVE-2017-11882) Nov. 17 Lädt DLL / Code der Malware direkt in den von PowerShell allokierten Speicher» Erschwert Anti-Virus Erkennung 15
Mai 2018: CVE-2017-11882 verbreitet neue Malware Remcos RAT, Version 2.0.4 Pro Shellcode mit Downloader für ein komprimiertes Install-Script hxxp://persianlegals.com/wp-includes/js/gist.exe zu namegh.exe 17
...der Rest ist relativ einfach: 18
3 Tools werden installiert: 19
3 Tools werden installiert: Deamon um Browser-Caches zu leeren Erzwingt neue Eingabe aller Passwörter Deamons für Health Check, redundante Anbindung an C&C Server 20
3 Tools werden installiert: 21
Was lernen wir daraus? Rückmeldung mit Risk-Rating FortiSandbox FortiWeb Malware Server FortiMail Mailserver FortiGate FortiClient 23
FORTINET 2018 Lösungsübersicht (Auszug) SaaS / CASB Cloud Security Email WAF ADC FMG FAZ SIEM WLC Internet Virtual FW NGFW NGFW ISFW.1 Switch.1 WiFi.1 FortiCloud ISFW.2 Switch.2 WiFi.2 CLIENTS (DEVICES) ENDPOINT SECURITY HOSTED SYSTEMS / APPS SD-WAN NGFW 3G/4G Advanced Threat Protection PROXY Secure Access FORTINET SECURITY FABRIC 24