PsExec e le cose brutte che può fare

0 Comments

La maggior parte degli strumenti che usiamo per amministrare le reti tendono ad essere un’arma a doppio taglio. Questi strumenti offrono una grande flessibilità e consentono una gestione semplificata di dispositivi, servizi e software. Nelle mani giuste non abbiamo nulla di cui preoccuparci, ma nelle mani sbagliate i nostri strumenti di amministrazione remota diventano armi potenti che possono essere utilizzate dagli aggressori per eseguire una vasta gamma di attività dannose., In questo articolo ho intenzione di parlare di uno strumento che si adatta a questa descrizione. Questo strumento è lo strumento Microsoft Sysinternals PsExec. In questo articolo ho intenzione di dare una panoramica di ciò che PsExec è e quali sono le sue capacità sono da un punto di vista amministrativo. A seguito di questo, ho intenzione di prendere il ruolo di un avversario e dimostrare alcune delle cose brutte che può essere utilizzato per su una rete.

Questo articolo mira a servire due tipi di pubblico., Il primo pubblico è costituito dagli amministratori di sistema che è responsabile della protezione delle loro reti dall’uso di strumenti come PsExec per scopi dannosi. L’altro pubblico previsto è costituito da hacker etici e penetration tester professionisti che potrebbero trarre beneficio dal sapere un po ‘ di più su alcune delle cose per cui PsExec può essere utilizzato., Indipendentemente da quale pubblico si cade nel suo importante che fornisco il disclaimer che alcuni dei comandi e delle tecniche che discuto qui possono essere abbastanza illegali a seconda della circostanza in cui vengono utilizzati, quindi esorto a procedere con cautela se qualsiasi azione che si sta assumendo può essere discutibile.

Che cos’è PsExec?

L’utilità PsExec è stata progettata come parte della suite PsTools, originariamente sviluppata da Mark Russinovich di Sysinternals, ora di proprietà di Microsoft., Lo strumento è coniato come strumento di amministrazione remota basato su riga di comando e consente l’esecuzione remota di processi su altri sistemi. È molto flessibile in quanto consentirà l’uso di credenziali di autenticazione alternative piuttosto che quelle dell’utente che lo esegue, il che significa che è possibile gestire i dispositivi separati dai confini del dominio e del sito. Non solo PsExec può eseguire programmi su un sistema remoto, ma può anche reindirizzare l’input e l’output della console tra i sistemi in modo da poter utilizzare strumenti interattivi in remoto.,

A differenza della maggior parte dei software associati a Microsoft, il funzionamento interno di PsExec non è un segreto e è abbastanza semplice. PsExec consente di reindirizzare l’input e l’output di un eseguibile avviato da remoto attraverso l’uso di SMB e la condivisione hidden ADMIN ADMIN sul sistema remoto. Con questa condivisione, PsExec utilizza l’API di Windows Service Control Manager per avviare il servizio PsExecsvc sul sistema remoto che crea una named pipe con cui PsExec comunica. Questa named pipe è ciò che consente il reindirizzamento di input/output al sistema che ha lanciato PsExec.,

Giocare bene con PsExec

Come per il suo design originale, PsExec può essere utilizzato per fare una serie di cose molto utili che possono aiutare gli amministratori di sistema. Uno di questi scenari che mi sono trovato in un certo numero di volte è quello in cui ho conosciuto il nome DNS di un computer, ma non le impostazioni di configurazione IP esatte (server DNS, gateway predefinito, ecc.). In circostanze normali userei ipconfig sul sistema locale per determinare queste informazioni., Nella stragrande maggioranza dei casi tuttavia, questo potrebbe significare che avrei dovuto guidare in un”altra posizione o prendere in prestito il computer di un utente, intrinsecamente riducendo la loro produttività per il giorno. Poiché ipconfig non ha capacità per essere eseguito su una macchina non locale, posso usare PsExec per avviarlo correttamente, come mostrato in Figura 1.

Figura 1: Utilizzo di PsExec per avviare ipconfig su un sistema remoto

Dopo la chiamata di PsExec, il computer remoto viene designato dopo la doppia barra (\\), seguita dal comando ipconfig., Quando si esegue PsExec, il valore predefinito è la directory % SYSTEM % sul sistema remoto su cui si sta tentando di eseguire il comando, motivo per cui non è stato necessario specificare un percorso completo qui. Infine, l’interruttore /all per ipconfig è specificato per emettere tutte le informazioni ipconfig disponibili.

Un’altra implementazione comune di PsExec è quella di usarlo per la distribuzione di aggiornamenti, patch e hotfix. Sebbene il tipico metodo preferito per farlo sia attraverso Criteri di gruppo, potrebbero esserci casi in cui tale metodo è troppo lento., Sono stato in molte situazioni in cui ho avuto bisogno di distribuire una patch di sicurezza ad alta priorità che non può aspettare la durata del tempo di aggiornamento criteri di gruppo standard, così mi sono rivolto a PsExec per distribuire il file in modo più rapido. Un esempio di questo è visto in Figura 2.

Figura 2: Avvio di una patch eseguibile da remoto

L’immagine del comando sopra utilizza alcune funzionalità aggiuntive. Innanzitutto, si noti che ci sono due nomi di computer separati da virgole dopo la doppia barra (\\)., PsExec consente di specificare più dispositivi di destinazione qui, o in alternativa, un file contenente un elenco di nomi o indirizzi dei dispositivi. Il comando include anche l’opzione / c, che viene utilizzata quando si desidera specificare un file sul sistema locale da eseguire sul sistema remoto. In questo caso ho specificato la patch del file.exe. Il file si trova sul mio sistema locale alla radice del disco C, così ho dovuto specificare il percorso completo del file. L’opzione / c appare nella directory %SYSTEM% sul sistema locale per impostazione predefinita., Come puoi vedere, il file viene eseguito correttamente e l’output viene reindirizzato alla console locale da cui stiamo eseguendo PsExec.

Un ultimo utilizzo amichevole di PsExec che ho trovato molto conveniente è usarlo per amministrare da remoto sistemi di un livello di privilegio più elevato mentre si utilizza un sistema con un account privilegiato inferiore. Non riesco a contare il numero di volte in cui sono stato sul posto a lavorare su un computer degli utenti e ho ricevuto una chiamata che mi richiede di eseguire una funzione amministrativa come una modifica della password., Ovviamente, in un ambiente Active Directory ho potuto solo RDP in un controller di dominio ed eseguire questa modifica, ma ho avuto diversi client che non utilizzano active directory o RDP per vari motivi. Quando questo è il caso è abbastanza facile da inserire in un’unità flash USB e accedere alla copia di PsExec che ho installato su di esso. Nel caso di Figura 3, ho usato PsExec per reimpostare una password degli utenti su un sistema elevando i privilegi” dello strumento net come eseguito da PsExec.,

Figura 3: La modifica di un utente”password elevando PsExec”s privilegi

di Fare le Cose Brutte con PsExec

Ora facciamo”s fare una passeggiata sul lato oscuro e guardare alcune cose che possono essere fatte con PsExec da parte di coloro che potenzialmente cattive intenzioni. Prima di tutto, consideriamo uno scenario in cui un utente malintenzionato ha ottenuto le credenziali per un sistema, ma non ha alcun accesso diretto ad esso., In questo caso, l’utente malintenzionato mira a ottenere il controllo della GUI o della riga di comando del sistema, ma le vie disponibili per l’uso di queste credenziali potrebbero essere limitate. Un metodo che può essere utile in questa situazione è quello di utilizzare PsExec per eseguire un eseguibile backdoor sul sistema, come quello mostrato in Figura 4.

Figura 4: Un eseguibile dannoso lanciato in remoto

Nel caso di questa schermata un utente malintenzionato remoto sta usando PsExec con l’interruttore / c per eseguire il file locale nc.exe sul sistema remoto., Insieme a questo, le opzioni-u e-p vengono utilizzate per specificare il nome utente e la password compromessi in modo che il file possa essere eseguito con privilegi di livello root. All’insaputa della vittima, il file che viene eseguito in silenzio in realtà una backdoor che permetterà all’attaccante di connettersi al sistema e ricevere un prompt dei comandi amministrativo.

Una cosa interessante dell’attacco che abbiamo appena visto è che in realtà non hai nemmeno bisogno della password di un utente per eseguirlo. In tutta la realtà, tutto ciò che serve è il nome utente e la password hash dell’utente., In Windows, i calcoli matematici vengono applicati alle password fornite dall’utente al fine di rendere tali password in una stringa di lunghezza fissa crittografata, chiamata hash. Questi hash sono una funzionalità di sicurezza progettata per impedire la trasmissione di password in chiaro su una rete. Quando si verifica l’autenticazione, questi hash delle password vengono inviati da un host a un altro. Usando PsExec questo può essere sfruttato semplicemente fornendo l’hash della password invece della password, mostrata in Figura 5.,

Figura 5: Utilizzo di un hash password per eseguire un file da remoto

Questo esempio è lo stesso di quello visto in Figura 4, l’unica differenza è che un hash password viene utilizzato al posto della password. Il sistema di ricezione non ha problemi ad accettare questo hash per scopi di autenticazione. Esistono vari metodi per ottenere gli hash delle password che vanno un po ‘ oltre lo scopo di questo articolo. Ho scritto un altro articolo su questo argomento che possono essere visualizzati qui.,

Un altro trucco pulito che PsExec rende possibile è la possibilità di accedere ai file e generare processi con l’account integrato del sistema. L”account di sistema su una macchina Windows è l” account più potente e consente l “accesso a praticamente qualsiasi cosa, compresi alcuni elementi che non sono accessibili dall” account amministratore e account utente creati.. Figura 6 fornisce un esempio per l’accesso all’applicazione regedit.,

Figura 6: Accesso al registro della vittima

Il comando precedente viene eseguito direttamente su un sistema locale ma specifica l’opzione-s per utilizzare l’account di sistema locale. Questo è combinato con l’opzione-I (interattiva) che esegue regedit in modalità interattiva. L’esecuzione di questo comando lancerà regedit con accesso al sistema che fornisce un accesso aggiuntivo ad alcuni file interessanti. Un esempio di questo è il file SAM che contiene gli hash delle password dell’utente., Data la giusta motivazione, un utente malintenzionato con accesso a un sistema e PsExec potrebbe facilmente estrarre tutti gli hash delle password dal sistema utilizzando questa tecnica, potenzialmente fornendogli informazioni che potrebbero consentire il compromesso di altri sistemi o account.

Alcuni avvertimenti

Credenziali in chiaro – Se sei preoccupato per chi potrebbe essere in ascolto sulla tua attività di rete, PsExec probabilmente non è lo strumento migliore da usare., PsExec trasmette tutte le credenziali utente fornite in chiaro, il che significa che se si fornisce un nome utente e una password per accedere a un sistema in remoto, chiunque abbia una copia di Wireshark o Tcpdump in esecuzione può intercettare le credenziali.

Rilevamento antivirus-Questo non era tanto un problema, ma ora che la maggior parte delle applicazioni di scansione antivirus fa un certo livello di monitoraggio del sistema e della memoria, la maggior parte di esse catturerà PsExec in uso sul sistema che stanno monitorando., Se si sta facendo un test di penetrazione su un sistema Windows e PsExec non funziona come dovrebbe essere allora è probabile che si sono sempre bloccati da antivirus, e peggio ancora, si può essere lasciando l”utente finale sapere che si sta giocando con il loro sistema.

PsExec e Metasploit – Quando possibile non uso più PsExec da solo. Una versione modificata di PsExec è ora inclusa nel framework Metasploit. Metasploit è un framework di test di penetrazione che fornisce un po ‘ di funzionalità., Se si desidera utilizzare PsExec per una qualche forma di valutazione della sicurezza, considerare la possibilità di esaminare le funzionalità aggiunte fornite da Metasploit. In realtà ho usato questa versione di PsExec in un articolo che ho scritto in precedenza sul passaggio delle tecniche di Hash.

Conclusione

Lo strumento PsExec ha molti usi per una varietà di intenzioni dell’utente. Si spera, questo articolo ha contribuito a educare su alcune delle sue caratteristiche e come possono essere utilizzati per wrong-doing. PsExec è il tipo di strumento che consente a un utente malintenzionato di essere creativo., Anche se ho coperto solo alcuni usi unici dello strumento qui oserei dire che decine o addirittura centinaia di vettori di attacco interessanti sono disponibili utilizzando il suo set di funzionalità. Ad un certo punto penserò di scrivere un articolo di follow-up contenente usi più interessanti e avanzati per PsExec. Nel frattempo, se hai qualche trucco PsExec interessante, sentiti libero di scrivermi direttamente per l’inclusione nel prossimo articolo.


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *