
Scanning tool for identifying local privilege escalation issues in vulnerable MSI installers
This Python script for Linux can analyze Microsoft Windows *.msi Installer files and point out potential vulnerabilites. It was developed by Michael Baer (@derbaer0) in the SEC Consult Vulnerability Lab.
Currently, it is mostly suited for a local privilege escalation also described in our blog post: https://r.sec-consult.com/msi.
Microsoft assigned CVE-2024-38014 and also provided a patch for this vulnerability at the September 2024 patch day: https://msrc.microsoft.com/update-guide/en-US/advisory/CVE-2024-38014.
The script can also be used to get an overview of an installer and identify potential weaknesses.
You need some python packages. sqlite3, termcolor, maybe more. Otherwise, no installation is required. Just run the script from the main folder.
Install the (apt) package msitools. It contains msiinfo and msiextract that are needed as well.
sudo apt install msitools
The SetOpLock binary helpful to exploit the vulnerability can be found here: https://github.com/googleprojectzero/symboliclink-testing-tools/tree/main/SetOpLock
python msiscan.py <Installer>./runall.sh <directory>Now scan the result for unusual colors (red) for quick wins. Advise: If there is something red, repair it with ProcMon and do the manual approach.
There will be errors. Just ignore them. The analysis tries to continue if possible.
If you see a red line in the beginning Repairmode disabled ..., you will not be able to trigger the repair function.
Now, a few explanations to understand the output if you want to invest some time in deeper analysis:

CreateObject ("WScript.Shell")).I believe there is still a lot to extract from installer packages. E.g., permissions of folders and services that get installed might quickly identify more LPE vectors.