
Erzeugt initiale Zugangspayloads, die AddInProcess.exe via .NET-Deserialisierung missbrauchen, und unterstützt HTA-, VBA-, JS- und CHM-Vorlagen für die In-Memory-Codeausführung.
.-.
[.-''-.,
| //`~\)
(<| 0\0|>_
";\ _"/ \\_ _,
__\|'._/_ \ '='-,
/\ \ || )_///_\>>
( '._ T |\ | _/),-'
'. '._.-' /'/ |
| '._ _.'`-.._/
,\ / '-' |/
[_/\-----j
_.--.__[_.--'_\__
/ `--' '---._
/ '---. -'. .' _.-- '.
\_ '--.___ _;.-o /
'.__ ___/______.__8----'
c-'----'
Lefty @lefterispan - Nettitude Red Team - 2022 / 2023
Aladdin ist eine Payload-Generierungstechnik, die auf der Arbeit von James Forshaw (@tiraniddo) basiert und die Deserialisierung einer .NET-Payload und Ausführung im Speicher ermöglicht. Der ursprüngliche Vektor wurde auf https://www.tiraniddo.dev/2017/07/dg-on-windows-10-s-executing-arbitrary.html dokumentiert.
Durch das Erzeugen des Prozesses AddInProcess.exe mit den Argumenten /guid:32a91b0f-30cd-4c75-be79-ccbd6345de99 und /pid: startet der Prozess eine benannte Pipe unter \\.\pipe\32a91b0f-30cd-4c75-be79-ccbd6345de99 und wartet auf ein .NET Remoting-Objekt. Wenn wir eine Payload generieren, die die entsprechenden Paketbytes enthält, die für die Kommunikation mit einem .NET Remoting-Listener erforderlich sind, können wir die Klasse ActivitySurrogateSelector aus System.Workflow.ComponentModel auslösen und Codeausführung erlangen.
Ursprünglich veröffentlichte James Forshaw einen POC unter https://github.com/tyranid/DeviceGuardBypasses/tree/master/CreateAddInIpcData. Dieser POC wird jedoch auf neueren Windows-Versionen fehlschlagen, da Microsoft die anfällige System.Workflow.ComponentModel gepatcht hat (https://github.com/microsoft/dotnet-framework-early-access/blob/master/release-notes/NET48/dotnet-48-changes.md).
Nick Landers (@monoxgas) identifizierte jedoch einen Weg, die von Microsoft eingeführte Prüfung zu deaktivieren, und schrieb einen detaillierten Artikel unter https://www.netspi.com/blog/technical/adversary-simulation/re-animating-activitysurrogateselector/ . Der Bypass ist unter https://github.com/pwntester/ysoserial.net/pull/41 dokumentiert.
Aladdin ist ein Tool zur Payload-Generierung, das unter Verwendung des spezifischen Bypasses sowie der notwendigen Header-Bytes des .NET Remoting-Protokolls in der Lage ist, initiale Zugriffspayloads zu generieren, die den AddInProcess wie ursprünglich dokumentiert missbrauchen.
Die bereitgestellten Vorlagen sind:
* HTA
* VBA
* JS
* CHM
Damit der Angriff erfolgreich ist, muss die .NET-Assembly eine einzelne öffentliche Klasse mit einem leeren Konstruktor enthalten, die als Einstiegspunkt während der Deserialisierung dient. Eine Beispielassembly wurde dem Projekt beigefügt.
public class EntryPoint {
public EntryPoint() {
MessageBox.Show("Hello");
}
}
Usage:
-w, --scriptType=VALUE Setzen auf js / hta / vba / chm.
-o, --output=VALUE Die generierte Ausgabe, z.B: -o
C:\Users\Nettitude\Desktop\payload
-a, --assembly=VALUE Bereitgestellte Assembly-DLL, z.B: -a
C:\Users\Nettitude\Desktop\popcalc.dll
-h, --help Hilfe
Die vom Benutzer bereitgestellte .NET-Binärdatei wird unter dem AddInProcess.exe ausgeführt, der aus der HTA/JS-Payload erzeugt wird. Das Erzeugen der Prozesse erfolgt derzeit mit dem COM-Objekt 9BA05972-F6A8-11CF-A442-00A0C90A8F39 (https://dl.packetstormsecurity.net/papers/general/abusing-objects.pdf), das den Prozess als Kind des Explorer.exe-Prozesses startet.
Die in den Prozessparametern von AddInProcess.exe angegebene GUID kann vom Benutzer gesteuert werden. Derzeit ist die GUID in der Vorlage und im Code fest codiert.
CHM führt das JScript durch XSLT-Transformation aus.
Addinprocess.exe wird immer mit /guid und /pid gestartet. Überprüfen Sie Ihre Umgebung auf legitime Verwendungen – überwachen Sie den Rest.* https://www.tiraniddo.dev/2017/07/dg-on-windows-10-s-executing-arbitrary.html
* https://www.netspi.com/blog/technical/adversary-simulation/re-animating-activitysurrogateselector/
Der Code basiert auf den folgenden Repos:
* https://github.com/tyranid/DeviceGuardBypasses/tree/master/CreateAddInIpcData
* https://github.com/pwntester/ysoserial.net
Dank an: