
Genera payload di accesso iniziale abusando di AddInProcess.exe tramite deserializzazione .NET, supportando modelli HTA, VBA, JS e CHM per l'esecuzione di codice in memoria.
.-.
[.-''-.,
| //`~)\
(<| 0\0|>_
";\ _"/ \\_ _,
__\|'._/_ \ '='-,
/\ \ || )_///_\>>
( '._ T |\ | _/),-'
'. '._.-' /'/ |
| '._ _.'`-.._/
,\ / '-' |/
[_/\-----j
_.--.__[_.--'_\__
/ `--' '---._
/ '---. -'. .' _.-- '.
\_ '--.___ _;.-o /
'.__ ___/______.__8----'
c-'----'
Lefty @lefterispan - Nettitude Red Team - 2022 / 2023
Aladdin è una tecnica di generazione di payload basata sul lavoro di James Forshaw (@tiraniddo) che permette la deserializzazione di un payload .NET e l'esecuzione in memoria. Il vettore originale è stato documentato su https://www.tiraniddo.dev/2017/07/dg-on-windows-10-s-executing-arbitrary.html.
Generando il processo AddInProcess.exe con gli argomenti /guid:32a91b0f-30cd-4c75-be79-ccbd6345de99 e /pid:, il processo avvierà una named pipe sotto \\.\pipe\32a91b0f-30cd-4c75-be79-ccbd6345de99 e attenderà un oggetto .NET Remoting. Se generiamo un payload con i byte di pacchetto appropriati necessari per comunicare con un listener .NET remoting, saremo in grado di attivare la classe ActivitySurrogateSelector da System.Workflow.ComponentModel e ottenere l'esecuzione di codice.
Originariamente, James Forshaw ha rilasciato un POC su https://github.com/tyranid/DeviceGuardBypasses/tree/master/CreateAddInIpcData. Tuttavia, questo POC fallirà sulle versioni recenti di Windows poiché Microsoft ha provveduto a correggere la vulnerabile System.Workflow.ComponentModel (https://github.com/microsoft/dotnet-framework-early-access/blob/master/release-notes/NET48/dotnet-48-changes.md).
Nick Landers (@monoxgas), tuttavia, ha identificato un modo per disabilitare il controllo introdotto da Microsoft e ha scritto un articolo dettagliato su https://www.netspi.com/blog/technical/adversary-simulation/re-animating-activitysurrogateselector/ . Il bypass è documentato su https://github.com/pwntester/ysoserial.net/pull/41 .
Aladdin è uno strumento di generazione di payload che, utilizzando lo specifico bypass insieme ai byte di intestazione necessari del protocollo .NET remoting, è in grado di generare payload di accesso iniziale che abusano di AddInProcess come documentato originariamente.
I template forniti sono:
* HTA
* VBA
* JS
* CHM
Affinché l'attacco abbia successo, l'assembly .NET deve contenere una singola classe pubblica con un costruttore vuoto per fungere da punto di ingresso durante la deserializzazione. Un assembly di esempio è incluso nel progetto.
public class EntryPoint {
public EntryPoint() {
MessageBox.Show("Hello");
}
}
Usage:
-w, --scriptType=VALUE Imposta su js / hta / vba / chm.
-o, --output=VALUE Il file generato, ad esempio: -o
C:\Users\Nettitude\Desktop\payload
-a, --assembly=VALUE DLL dell'assembly fornito, ad esempio: -a
C:\Users\Nettitude\Desktop\popcalc.dll
-h, --help Aiuto
Il binario .NET fornito dall'utente verrà eseguito sotto AddInProcess.exe che viene generato dal payload HTA / JS. La creazione dei processi avviene attualmente utilizzando l'oggetto COM 9BA05972-F6A8-11CF-A442-00A0C90A8F39 (https://dl.packetstormsecurity.net/papers/general/abusing-objects.pdf) che avvierà il processo come figlio del processo Explorer.exe.
Il GUID fornito nei parametri del processo di AddInProcess.exe può essere controllato dall'utente. Al momento il GUID è hardcoded nel template e nel codice.
CHM esegue lo JScript attraverso la trasformazione XSLT
Addinprocess.exe verrà sempre avviato con /guid e /pid. Stabilisci una base di riferimento per il tuo ambiente per gli utilizzi legittimi - monitora il resto.* 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/
Il codice si basa sui seguenti repository:
* https://github.com/tyranid/DeviceGuardBypasses/tree/master/CreateAddInIpcData
* https://github.com/pwntester/ysoserial.net
Ringraziamenti a: