
Esecuzione di codice e persistenza nel servizio FAX eseguito come NETWORK SERVICE
Un'estensione di routing fax è una DLL che aggiunge funzionalità di routing al servizio fax. Più estensioni di routing fax possono risiedere sullo stesso server. Quando il server fax riceve una trasmissione fax, instrada il documento ricevuto attraverso ciascuna delle estensioni di routing fax in ordine di priorità. Un utente imposta la priorità di routing tramite l'applicazione di amministrazione del servizio fax, un componente aggiuntivo (snap-in) di Microsoft Management Console (MMC). Il servizio FAX viene eseguito manualmente quando un'applicazione richiede una connessione al servizio FAX (ad esempio durante il caricamento di fxsadmin in MMC). Sui desktop il servizio è presente ma andrà in timeout quando si tenta di impostare le estensioni, poiché richiede configurazione e ruolo. Ulteriori informazioni su MSDN. Per interagire con il servizio sono richiesti diritti di amministratore per impostazione predefinita; se un utente ha il ruolo FAX Config sul servizio FAX ed è elevato, può estendere il servizio FAX. Questo exploit richiede il ruolo di server FAX che non è disponibile sulle workstation per impostazione predefinita. Viene installato sui server che abilitano i servizi fax e stampa (Fax & Print Services).
Gli utenti del gruppo FAX che hanno il ruolo FAX Config possono anche aggiungere/rimuovere estensioni che potrebbero essere configurate con programmi fax di terze parti. Il ruolo FAX Config viene fornito per impostazione predefinita agli utenti del gruppo Amministratori locali o Amministratori di dominio; ulteriori utenti devono essere stati esplicitamente definiti nella configurazione utente del servizio FAX se lo si utilizza come parte di un percorso di escalation dei privilegi in Active Directory.
Scopri di più: https://docs.microsoft.com/en-us/previous-versions/windows/desktop/fax/-mfax-fax-routing-extension
Possiamo anche ottenere persistenza all'interno del servizio FAX: la nostra DLL verrà richiamata ogni volta che il servizio viene avviato, il che non viene chiamato automaticamente al riavvio, quindi offrirebbe persistenza solo sui server che utilizzano attivamente le funzionalità FAX; offre inoltre a un attaccante un percorso alternativo verso SYSTEM partendo dai privilegi di amministratore, poiché è possibile eseguire l'escalation da Network Service a SYSTEM.
Estende il servizio FAX per eseguire qualsiasi comando in c:\temp\run.bat una volta e ripulisce FXSSVC. Utilizza la DLL dell'estensione fax con callback appropriati per avviare/arrestare in modo affidabile il servizio FAX; l'estensione lancia comandi dal file batch. È possibile impedire la rimozione della DLL per scopi di "persistenza", che eseguirà il file di comandi batch ogni volta che il servizio FAX viene utilizzato, ad esempio quando si apre, si invia o si riceve un fax.
Compilare questo progetto con Visual Studio 22: verranno prodotti sia binari statici x86 che x64 che devono trovarsi nella stessa directory.
C:\Windows\system32>whoami
nt authority\network service
C:\Windows\system32>whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
============================= ========================================= ========
SeAssignPrimaryTokenPrivilege Replace a process level token Disabled
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeAuditPrivilege Generate security audits Enabled
SeChangeNotifyPrivilege Bypass traverse checking Enabled
SeImpersonatePrivilege Impersonate a client after authentication Enabled
SeCreateGlobalPrivilege Create global objects Enabled
Questi file sono disponibili sotto la licenza BSD a 3 clausole.