Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
Tools/GitHubGitHub/skahwah/sqlrecon
AufklärungExploitationInformationsbeschaffungPost-ExploitationPenetrationstestsAuthentifizierungRed TeamingDatenbanksicherheit
GitHubskahwah/sqlrecon

SQLRecon

Ein C#-MS-SQL-Toolkit für offensive Aufklärung und Post-Exploitation.

Repository anzeigen
814129vor 2 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
SQLRecon — Ein C#-MS-SQL-Toolkit für offensive Aufklärung und Post-Exploitation. | Kitploit

  licence badge wiki Badge stars badge forks badge issues badge

SQLRecon

SQLRecon ist ein Microsoft SQL Server-Toolkit, das für offensive Aufklärung und Post-Exploitation entwickelt wurde. Detaillierte Informationen zur Verwendung jeder Technik finden Sie im Wiki.

Sie können eine Kopie von SQLRecon von der Releases-Seite herunterladen. Alternativ können Sie die Lösung selbst kompilieren. Dies sollte so einfach sein wie das Klonen des Repos, Doppelklicken auf die Lösungsdatei und Erstellen.

Präventions-, Erkennungs- und Minderungsanleitung wurde auch für all die Verteidiger da draußen bereitgestellt.

Lesen Sie meinen Blogbeitrag auf der IBM Security Intelligence-Website. Wenn Sie Videos bevorzugen, sehen Sie sich meine Präsentation auf der Black Hat an.

Aufklärungsmodule

Aufklärungsmodule erfordern keinen Authentifizierungsanbieter. Diese Module müssen über das Flag für Aufklärungsmodule (/e:, /enum:) übergeben werden. Das Wiki enthält Details zur Verwendung von Aufklärungsmodulen.``` Info - Show information about the SQL server. /h:, /host -> SQL server hostname or IP. Multiple hosts supported. /port: -> (OPTIONAL) Defaults to 1434 (UDP). /t:, timeout: -> (OPTIONAL) Defaults to 3s.

SqlSpns - Use the current user token to enumerate the AD domain for MSSQL SPNs. /d:, /domain: -> (OPTIONAL) NETBIOS name or FQDN of domain.

root@kitploit:~
# Authentifizierungsanbieter

SQLRecon unterstützt eine Vielzahl von Authentifizierungsanbietern (`/a:, /auth:`), um die Interaktion mit einem Microsoft SQL Server zu ermöglichen.```
WinToken   - Use the current users token to authenticate against the SQL database
             /h:, /host:     -> SQL server hostname or IP

WinDomain  - Use AD credentials to authenticate against the SQL database
             /h:, /host:     -> SQL server hostname or IP. Multiple hosts supported.
             /d:, /domain:   -> NETBIOS name or FQDN of domain.
             /u:, /username: -> Username for domain user.
             /p:, /password: -> Password for domain user.

Local      - Use local SQL credentials to authenticate against the SQL database
             /h:, /host:     -> SQL server hostname or IP. Multiple hosts supported.
             /u:, /username: -> Username for local SQL user.
             /p:, /password: -> Password for local SQL user.

EntraID    - Use Azure EntraID credentials to authenticate against the Azure SQL database
             /h:, /host:     -> SQL server hostname or IP. Multiple hosts supported.
             /d:, /domain:   -> FQDN of domain (DOMAIN.COM).
             /u:, /username: -> Username for domain user.
             /p:, /password: -> Password for domain user.

AzureLocal - Use local SQL credentials to authenticate against the Azure SQL database
             /h:, /host:     -> SQL server hostname or IP. Multiple hosts supported.
             /u:, /username: -> Username for local SQL user.
             /p:, /password: -> Password for local SQL user.

Pth        - Authenticate using an NT hash (pass-the-hash) over raw TDS/NTLM. Elevated privileges or SeImpersonate is not required.
             /h:, /host:     -> SQL server hostname or IP. Multiple hosts supported.
             /d:, /domain:   -> NETBIOS domain name.
             /u:, /username: -> Domain username.
             /hash:          -> NT hash (32 hex chars, 8846f7eaee8fb117ad06bdd830b7586c) or LM:NT format.

Authentifizierungsanbieter – Zusätzliche Details

  • Hosts: Das Host-Flag (/h:, host:) ist erforderlich und ermöglicht einen oder mehrere SQL-Server. Wenn Sie ein Modul gegen mehrere SQL-Server ausführen möchten, trennen Sie die Hosts durch ein Komma, z. B. /h:SQL01,10.10.10.2,SQL03.
  • Datenbank: SQLRecon verbindet sich standardmäßig mit der master-Datenbank, dies kann jedoch optional geändert werden, indem ein benutzerdefinierter Datenbankname über das Datenbank-Flag (/database:) angegeben wird.
  • Debug: Das /debug-Flag ist optional und zeigt alle SQL-Abfragen an, die von einem Modul ausgeführt werden, ohne sie tatsächlich auf dem/den entfernten Host(s) auszuführen. Ein Beispiel hierfür finden Sie im Wiki.
  • Port: In einigen Fällen hört ein Microsoft SQL Server möglicherweise nicht auf einem Standard-TCP-Port. Beispiele hierfür sind Microsoft SQL Server Failover-Clustering oder dynamische TCP-Ports. SQLRecon verbindet sich standardmäßig über TCP-Port 1433 mit Datenbanken, dies kann jedoch optional mit dem /port:-Flag geändert werden.
  • Timeout: Die Standard-SQL-Datenbankverbindungszeit beträgt 3 Sekunden, dieser Wert kann jedoch optional durch Angabe eines Timeout-Werts (/t:, /timeout:) geändert werden, der der Anzahl der Sekunden vor dem Beenden des Verbindungsversuchs entspricht.

Bitte beachten Sie, dass der EntraID-Authentifizierungsanbieter erfordert, dass die Azure Active Directory Authentication Library (ADAL) oder die Microsoft Authentication Library (MSAL) auf dem System vorhanden ist, von dem SQLRecon ausgeführt wird. Dies dient der Azure EntraID-Authentifizierung und Autorisierungsfunktionalität.

SQL-Module

SQL-Module werden gegen eine oder mehrere Instanzen von Microsoft SQL Server ausgeführt. Diese Module müssen über das Modul-Flag (/m:, /module:) übergeben werden.

SQL-Module – Standard

Das Host-Flag (/h:, host:) ist erforderlich und ermöglicht einen oder mehrere SQL-Server. Wenn Sie ein Modul gegen mehrere SQL-Server ausführen möchten, trennen Sie die Hosts durch ein Komma, z. B. /h:SQL01,10.10.10.2,SQL03.

Das Wiki enthält Details zur Verwendung jedes Moduls, das die Ausführung auf einer oder mehreren Instanzen von SQL Server unterstützt.

SQL-Module – Impersonierung

Impersonierungsmodule werden gegen eine oder mehrere Instanzen von Microsoft SQL Server im Kontext eines impersonierten SQL-Benutzers ausgeführt. Alle Impersonierungsmodule haben die folgenden Mindestanforderungen:

  • Ein Impersonierungsbenutzer muss angegeben werden (/i:, /iuser:).
  • Ein Modul, das Impersonierung unterstützt, muss angegeben werden (/m:, /module:).

Das Wiki enthält Details zur Verwendung jedes Moduls, das die Ausführung unter Verwendung von Impersonierung unterstützt.

SQL-Module – Verknüpft

Verknüpfte Module werden auf einer oder mehreren Instanzen eines verknüpften Microsoft SQL Server ausgeführt. Alle verknüpften Module haben die folgenden Mindestanforderungen:

  • Ein verknüpfter SQL-Server muss angegeben werden (/l:, /link:). Das Link-Flag ermöglicht einen oder mehrere verknüpfte SQL-Server. Wenn SQL01 beispielsweise einen Link zu SQL02 und SQL01 einen Link zu DB04 hat, können Sie die verknüpften Hosts durch ein Komma trennen, und ein Modul wird auf jedem verknüpften SQL-Server ausgeführt, z. B. /l:SQL02,DB04.
  • Ein Modul, das die verknüpfte Ausführung unterstützt, muss angegeben werden (/m:, /module:).

Das Wiki enthält Details zur Verwendung jedes Moduls, das die Ausführung auf einer oder mehreren Instanzen eines verknüpften SQL-Servers unterstützt.

SQL-Module – Verkettete Kette

Verkettete Kettenmodule werden auf dem letzten Microsoft SQL-Server in einer verknüpften Serverkette ausgeführt. Alle verketteten Kettenmodule haben die folgenden Mindestanforderungen:

  • Eine verknüpfte SQL-Serverkette muss im /l:, /link:-Flag angegeben werden. Wenn SQL01 einen Link zu SQL02 und SQL02 einen Link zu PAYMENTS01 hat und Sie ein Modul auf PAYMENTS01 ausführen möchten, wäre das Argument /l:SQL02,PAYMENTS01.
  • Das /chain-Flag muss enthalten sein, um das Modul gegen den letzten SQL-Server in der angegebenen verknüpften Kette auszuführen.
  • Ein Modul, das die verkettete Kettenausführung unterstützt, muss angegeben werden (/m:, /module:).

Das Wiki enthält Details zur Verwendung jedes Moduls, das die Ausführung auf dem letzten SQL-Server in einer verknüpften SQL-Serverkette unterstützt.

SCCM-Module

SQLRecon verfügt über mehrere Module, die bei der Aufzählung und dem Angriff auf Microsoft System Center Configuration Manager (SCCM) und Microsoft Endpoint Configuration Manager (ECM) helfen können. Der SCCM- oder ECM-Server muss eine Microsoft SQL-Datenbank entweder lokal oder remote verfügbar machen.

SCCM-Module müssen über das SCCM-Modul-Flag (/s:, /sccm:) übergeben werden.

Die meisten SCCM-Module können im Kontext eines impersonierten SQL-Benutzers (/i:, /iuser:) ausgeführt werden.

Das Wiki enthält Details zur Verwendung jedes Moduls gegen eine SCCM/ECM-Datenbank.

SCCM-Module – Zusätzliche Details
  • Das Users-Modul listet alle Benutzer in der RBAC_Admins-Tabelle auf. Dies sind alle Benutzer, die für einen bestimmten Zugriff auf SCCM konfiguriert sind.
  • Das Sites-Modul listet alle anderen Sites mit Daten in der DPInfo-Tabelle der SCCM-Datenbanken auf. Dies kann zusätzliche Angriffsmöglichkeiten bieten, da verschiedene Sites auf unterschiedliche (unsichere) Weise konfiguriert sein können.
  • Das Logons-Modul fragt die Computer_System_DATA-Tabelle ab, um alle zugehörigen SCCM-Clients zusammen mit dem Benutzer abzurufen, der sich zuletzt bei ihnen angemeldet hat. HINWEIS: Dies wird standardmäßig nur einmal pro Woche aktualisiert und ist nicht zu 100 % aktuell. Verwenden Sie /option: als optionales (nicht erforderliches) Argument, um SCCM-Clients zu filtern.
  • Das TaskList-Modul liefert eine Liste aller in der SCCM-Datenbank gespeicherten Tasksequenzen, greift aber nicht auf die tatsächlichen Inhalte der Aufgabendaten zu.
  • Das TaskData-Modul stellt alle in der SCCM-Datenbank gespeicherten Tasksequenzen wieder her und entschlüsselt sie in Klartext. Tasksequenzen können Anmeldeinformationen zum Beitreten von Systemen zu Domänen, zum Zuordnen von Freigaben, zum Ausführen von Befehlen usw. enthalten.

SQLRecon erweitern

Wenn Sie daran interessiert sind, SQLRecon zu erweitern, lesen Sie bitte den Abschnitt zum Beitragen und Erweitern im Wiki.

Ich ermutige Sie, ein Issue zu eröffnen, wenn Sie Vorschläge oder Ideen haben.

Fahrplan

Das Ziel ist die kontinuierliche Verbesserung von SQLRecon. Nachfolgend sind einige geplante Forschungsbereiche aufgeführt:

  • Implementierung der Unterstützung für die Authentifizierung basierend auf NTLM-Hashes.
  • Untersuchung der enablerpc/disablerpc-Funktionalitäten für verknüpfte und verkettete SQL-Server.

Danksagungen

Die folgenden Personen haben direkt oder indirekt zu verschiedenen Aspekten von SQLRecon beigetragen.

  • Adam Chester (xpn)
  • Andrew Smith (jakxx)
  • Azaël Martin (n3rada)
  • Crusher (chryzsh)
  • Daniel Duggan (rasta-mouse)
  • Dave Cossa (G0ldenGunSec)
  • Dwight Hohnstein (djhohnstein)
  • Javier Balanza (JBalanza)
  • Joshua Magri (passthehashbrowns)

Versionsgeschichte

v4.0
  • NTLM-Pass-the-Hash-Authentifizierungsanbieter hinzugefügt (/auth:pth). Implementiert rohe TDS/NTLM-Authentifizierung über PTHTdsConnection, NtlmHelper und PthState, sodass alle Module ohne Klartext-Anmeldeinformationen oder erweiterte Berechtigungen funktionieren. Wichtige Korrekturen umfassen ANSI-Sitzungsoptionen nach dem Login, TDS-Aufteilung in mehrere Pakete, TCP-Fluss-Deadlock-Behandlung für gleichzeitige CLR-Verbindungen und OPENQUERY-Klammernotation-Kompatibilität.
  • Fehlerbehebungen in Impersonierungsmodulen.
  • Fehlerbehebungen in ADSI-Modulen.
  • Fehlerbehebungen in OLE-Modulen.
  • Fehlerbehebungen in _linkedChainRpcQuery.
  • Ein seit langem bestehendes Problem behoben, bei dem System.Byte[] nie korrekt konvertiert und auf der Konsole ausgegeben wurde.
  • Module credentialobjectss und proxies hinzugefügt (jakxx).
  • README.md aktualisiert.
  • Wiki aktualisiert.
v3.12
  • Proxy-Unterstützung für agentcmd hinzugefügt (jakxx).
  • Problem behoben, bei dem die Aufzählung von role über eine verknüpfte Kette nicht richtig funktionierte (passthehashbrowns).
  • Problem behoben, bei dem das impersonate-Modul über eine verknüpfte Kette nicht richtig funktionierte (passthehashbrowns).
  • Problem behoben, bei dem EnableRpc/DisableRpc nicht über verknüpfte Ketten verfügbar war (passthehashbrowns).
  • Problem behoben, bei dem das XpCmd-Modul nicht über verknüpfte Ketten funktionierte; jetzt wird auch die Ausgabe unterstützt (passthehashbrowns).
  • Problem behoben, bei dem verknüpfte Servernamen, die ein '.'-Zeichen enthalten, Probleme in EXEC AT-Abfragen verursachen, es sei denn, sie sind von Klammern umgeben, was Probleme verursacht, wenn der verknüpfte Servername eine IP-Adresse oder ein FQDN ist (passthehashbrowns).
  • Änderungen an der Logik zur Konstruktion einer verknüpften Serverkettenabfrage vorgenommen. Die bestehende Logik verwendet Rekursion und der Basisfall erwartet eine "0" als erstes Element im Array, aber dies führt zu unintuitivem Verhalten bei der Entwicklung von Modulen, bei denen eine Iteration über die verknüpfte Kette erforderlich ist, wie z. B. die .First-Funktion, die eine "0" zurückgibt. Ich habe es so aktualisiert, dass die LinkedChainQuery-Funktion ein neues Array mit einer "0" am Anfang erstellt und dann die bestehende Logik in einer separaten Funktion aufruft, die jetzt heißt (passthehashbrowns).
v3.11
  • Funktionalität hinzugefügt, um die Entschlüsselung von gespeicherten Anmeldeinformationen in Sites zu ermöglichen, die für Hochverfügbarkeit konfiguriert sind (mit aktiven + passiven Servern).
v3.10
  • Ein Problem im impersonate-Modul behoben, um sysadmin-Fälle korrekt zu behandeln (n3rada).
  • Zwei neue SCCM-Module scriptdata und cidata implementiert (G0ldenGunSec).
  • Lade- und Ausführungszeiten von CLR-DLLs optimiert (chryzsh).
  • Das Modul auditstatus erstellt, um zu prüfen, ob SQL-Überwachung vorhanden ist (chryzsh).
  • Testfälle aktualisiert.
  • README aktualisiert.
  • Wiki aktualisiert.
v3.9
  • Datenbanken, auf die der Benutzer Zugriff hat, im whoami-Modul hinzugefügt (JBalanza).
  • Ein Problem im adsi-Modul behoben, bei dem der LDAP-Server nicht zur msdb-Datenbank hinzugefügt werden musste; außerdem wird die erstellte Funktion jetzt ordnungsgemäß gelöscht.
  • Ein Problem behoben, bei dem RPC-Abfragen mit einer AT-Anweisung auf dem Zielserver fehlschlagen, wenn der angegebene Hostname ein FQDN ist.
  • README aktualisiert.
  • Wiki aktualisiert.
v3.8
  • Logik hinzugefügt, um die Ausführung von CLR-Assemblys auf SQL Server 2016 und niedriger zu unterstützen. Dies gilt für das clr-Modul. Die Ausführung wird in allen Kontexten unterstützt.
  • Logik hinzugefügt, um eine LDAP-Server-CLR-Assembly auf SQL Server 2016 und niedriger zu laden. Dies gilt für das adsi-Modul. Die Ausführung wird in allen Kontexten unterstützt.
  • README aktualisiert.
  • Wiki aktualisiert.
v3.7* Vollständige Überarbeitung der Codebasis. * Aktualisierte Dokumentation (Code-Kommentare, README und Wiki) * Ausführung gegen eine verknüpfte SQL-Server-Kette. Wenn z. B. `SQL01` eine Verknüpfung zu `SQL02` hat und `SQL02` eine Verknüpfung zu `SQL03` und `SQL03` eine Verknüpfung zu `PAYMENTS01`, ist es nun möglich, Befehle von `SQL01` auf `PAYMENTS01` unter Verwendung der verknüpften Serverkette auszuführen (`/link:SQL02,SQL03,PAYMENTS01 /chain`). Dank an Azaël Martin (n3rada). * Entfernt die Module '`l`' und '`i`' und führte Kontextlogik ein, sodass Modulnamen über Standard-, Impersonation-, verknüpfte und verkettete Ausführung hinweg gleich sein können. * Kettenunterstützung zu allen verknüpften Modulen hinzugefügt. * Unterstützung für Debug (`/debug`) hinzugefügt, das verschiedene Debug-Informationen und alle SQL-Abfragen anzeigt, die von einem Modul ausgeführt werden, ohne sie tatsächlich auszuführen. * Ausführlich (`/verbose, /v`) hinzugefügt, das alle SQL-Abfragen anzeigt, die während der Modulausführung ausgeführt werden. * Timeout (`/timeout, /t`) hinzugefügt, das einen ganzzahligen Wert für das SQL-Server-Datenbankverbindungs-Timeout akzeptiert. * `links`-Modul verbessert, um detaillierte Informationen zu enthalten. Dank an Azaël Martin (n3rada). * `whoami`-Modul verbessert, um Windows-Prinzipale und Datenbankbenutzer zu enthalten. Dank an Azaël Martin (n3rada). * `impersonation`-Modul verbessert, um Windows-Prinzipale und Datenbankbenutzer zu enthalten. Dank an Azaël Martin (n3rada). * IP-Adressabruf zum `sqlspns`-Aufzählungsmodul hinzugefügt. Dank an Azaël Martin (n3rada). * Konsolenausgabe standardisiert auf Markdown, wo anwendbar. Dank an Azaël Martin (n3rada). * DNS-Unterstützung zum Modul `/enum:info` hinzugefügt. * Optionales Argument `/subsystem` zum `olecmdexec`-Modul hinzugefügt, das die Ausführung mit den OLE-Automatisierungs-Subsystemen `CmdExec` oder `PowerShell` akzeptiert. * Test-Harnesses aktualisiert, um CLI-Änderungen und neue Module widerzuspiegeln. * `AzureAD`-Authentifizierung in `EntraID` geändert.
v3.6
  • Ausführung gegen mehrere SQL-Server, die im Flag /host oder /h angegeben werden, wird jetzt durch kommagetrennte Werte unterstützt.
  • Ausführung gegen mehrere verknüpfte SQL-Server, die im Flag /link oder /l angegeben werden, wird jetzt durch kommagetrennte Werte unterstützt.
  • /lhost in /link geändert.
  • 's'-Module entfernt und den Schalter /s, /sccm für SCCM-Module erstellt.
  • Impersonation-Unterstützung zu allen SCCM-Modulen hinzugefügt, mit Ausnahme von DecryptCredentials.
  • Ein neues Aufzählungsmodul (/enum) namens info hinzugefügt, das einen nicht authentifizierten Kontext verwenden kann, um SQL-Server-Informationen einschließlich Instanzname und TCP-Port über das UDP-Protokoll zu erhalten.
v3.5
  • Fehlerbehebung: Verknüpfte adsi-Ausführung entfernte den LDAP-Server nicht.
  • Agent-Job-Ausführung von verknüpftem adsi zugunsten von openquery/rpc entfernt.
  • /lhost in /adsi im adsi-Modul geändert.
  • /rhost in /unc im smb-Modul geändert.
  • CaptureHash.cs entfernt und Logik vereinfacht.
  • SetEnumerationType.cs entfernt und Logik vereinfacht.
  • Impersonation.cs in Impersonate.cs umbenannt.
  • OleCmdExec.cs in OleAutomation.cs umbenannt.
v3.4
  • Impersonation-Unterstützung für das smb-Modul hinzugefügt.
  • Impersonation-Unterstützung für das info-Modul hinzugefügt.
  • Verknüpfte Unterstützung für das info-Modul hinzugefügt.
v3.3
  • rows, iRows und lRows-Module erstellt.
  • sLogons um einen optionalen Filter aktualisiert.
  • Fehlerbehebung, bei der xp_cmdshell-Module die Befehlsausgabe nicht auf der Konsole ausgaben.
  • Hilfemenü bereinigt.
v3.2
  • Überarbeitung der Befehlszeilenargument-Analyse.
  • README, Testfälle und Wiki mit neuen Beispielen aktualisiert.
  • Aufzählungs- und Authentifizierungsbasierte Argumentanalyse überarbeitet.
  • SetEnumerationType.cs erstellt.
  • Aufzählungsmodul domain in SqlSpns geändert.
v3.1
  • Konstruktor von SetAuthenticationType.cs in eine neue Methode namens EvaluateAuthenticationType geändert.
  • CreateSqlConnectionObject in SetAuthenticationType.cs erstellt, das SQLRecon erweitert, um mehrere gleichzeitige SQL-Verbindungsobjekte zu unterstützen.
  • ADSI.cs erstellt, das ADSI-Anmeldeinformationsangriffe wie hier beschrieben, integriert.
  • adsi, iAdsi und lAdsi-Module erstellt.
  • lLinks und iLinks-Module erstellt.
  • README, Testfälle und Wiki mit neuen Beispielen aktualisiert.
v3.0
  • Fehlerprüfung für nicht existierende imitierte Benutzer implementiert.
  • ExecuteImpersonationQuery und ExecuteImpersonationCustomQuery erstellt.
  • Impersonate.cs gelöscht.
  • checkRpc-Modul hinzugefügt.
  • iCheckRpc-Modul hinzugefügt.
  • lCheckRpc-Modul hinzugefügt.
  • SCCM-Module überarbeitet.
  • SCCM-Argumentanalyse überarbeitet.
  • Befehle im Hilfemenü in CamelCase für bessere Lesbarkeit.
  • Tests mit neuen Modulen aktualisiert.
v2.9
  • EnableDisable.cs in ConfigureOptions.cs umbenannt.
  • Erweiterte Optionen-Konfigurationen überarbeitet.
  • RPC-Fehlerprüfung implementiert, wo ExecuteLinkedCustomQueryRpcExec aufgerufen wird.
v2.8
  • PrintUtils.cs erstellt, das eine Druckklasse für standardisierte Ausgabe implementiert.
  • TablePrinter von Help.cs nach PrintUtils.cs verschoben.
  • Druckformatierung für alle Konsolenausgaben mit der PrintUtils-Klasse standardisiert.
  • Zugriffsmodifikatoren für Klassen und Klassenvariablen geändert.
  • Prüfung hinzugefügt, ob das Ergebnis leer ist für:
    • query
    • search
    • tables
    • lColumns
    • lQuery
    • lSearch
    • lTables
    • iColumns
v2.7
  • Azure-Authentifizierung in AzureAD geändert.
  • AzureLocal-Authentifizierung erstellt.
  • disableRpc-Modul hinzugefügt.
  • enableRpc-Modul hinzugefügt.
  • iEnableRpc-Modul hinzugefügt.
  • iDisableRpc-Modul hinzugefügt.
  • lEnableRpc-Modul entfernt.
  • lDisableRpc-Modul entfernt.
  • Tests mit neuen Modulen aktualisiert.
v2.6.1
  • lAgentCmd-Fehlerbehebungen.
  • clr, iClr und lClr-Stabilität durch Verwendung von SqlCommand.ExecuteNonQuery beim Erstellen der gespeicherten Prozedur behoben.
  • lClr-Fehler behoben, bei dem erstellte Assemblys oder gespeicherte Prozeduren nicht entfernt wurden.
v2.6
  • columns-Modul hinzugefügt.
  • iColumns-Modul hinzugefügt.
  • iDatabases-Modul hinzugefügt.
  • iSearch-Modul hinzugefügt.
  • iTables-Modul hinzugefügt.
  • lColumns-Modul hinzugefügt.
  • lSearch-Modul hinzugefügt.
v2.5
  • Verschiedene Fehler in den SCCM-Modulen behoben.
  • Hilfemenü mithilfe einer Tabelle organisiert.
  • Ausgabe von ExecuteLinkedCustomQueryRpcExec verbessert.
  • Code-Kommentare durchgehend verbessert.
  • Konsistenz der Methodennamen über Befehlsausführungsfunktionen hinweg verbessert.
  • Modularität durch bessere Nutzung der objektorientierten Programmierung verbessert.
  • Benutzerdefiniertes SQL-Server-Port-Flag in x geändert.
  • Random.cs in das utilities-Verzeichnis verschoben.
  • Druckstil standardisiert, um ihn über alle Module hinweg konsistenter zu machen.
  • Standard-, Impersonation- und verknüpfte Test-Harnesses erstellt.
v2.4
  • Windows-Authentifizierung in WinToken geändert.
  • WinDomain-Authentifizierung erstellt, die AD-Domänenbenutzername und -Passwort für die Authentifizierung über Impersonation verwendet. Siehe Impersonation.cs.
  • Argumentanalyse und -verarbeitung über ArgumentLogic.cs, SQLAuthentication.cs und ModuleHandler.cs überarbeitet.
  • ModuleHandler.cs verwendet keine massive if/else if/else-Anweisung mehr zur Ausführung von Modulen. Stattdessen wird jetzt Reflektion verwendet, um Methoden aufzurufen, die mit den Befehlsmodulnamen übereinstimmen.
  • Verzeichnis commands hinzugefügt, das globale Variablen enthält, die im gesamten Programm verwendet werden.
  • Alle Authentifizierungsanbieter in SQLAuthentication.cs zusammengefasst.
  • Argumentanalyse von Program.cs nach ArgumentLogic.cs verschoben.
v2.3
  • SCCM-Funktionalität hinzugefügt.
  • SCCM-Module hinzugefügt, die mit dem Befehl sccm ausgeführt werden können.
  • Überprüfung des RPC-Status auf verknüpften SQL-Servern behoben.
  • Möglichkeit hinzugefügt, .NET-Assemblys über HTTP/S herunterzuladen.
v2.2
  • Erweiterte Rollen, die in den Modulen roles, iRoles und lRoles abgefragt werden.
  • Module users, iUsers und lUsers erstellt.
  • Fehler behoben, bei dem der Hash in sp_drop_trusted_assembly in den Modulen clr und iClr nicht gelöscht wurde.
  • lAgentCmd-Modul erstellt.
  • lClr-Modul erstellt.
v2.1.6
  • info-Modul hinzugefügt.
  • Korrekturen im Hilfemenü.
  • Probleme mit zwingenden Argumenten bei Local- und Azure-Authentifizierung behoben.
v2.1.5
  • Modul zum Aufzählen von Domänen-SPNs hinzugefügt (-e domain).
v2.1.4
  • Kleines Problem mit der Zeichenfolgenformatierung behoben.
v2.1.3
  • Flag -r zu den Authentifizierungsmodi Windows und Local hinzugefügt, damit nicht standardmäßige TCP-Ports angegeben werden können.
v2.1.2
  • Verbesserte Logik für leere Verbindungszeichenfolgen.
v2.1.1
  • Environment.Exit aus TestAuthentication.cs entfernt.
v2.1
  • AgentJobs.cs erstellt.
  • agentStatus erstellt.
  • iAgentStatus erstellt.
  • lAgentStatus erstellt.
  • agentCmd erstellt.
  • iAgentCmd erstellt.
v2.0
  • clr erstellt.
  • iEnableClr erstellt.
  • iDisableClr erstellt.
  • iClr erstellt.
  • iWhoami erstellt.
  • iMapped erstellt.
  • iRoles erstellt.
  • lEnableRpc erstellt.
  • lDisableRpc erstellt.
  • lWhoami erstellt.
  • lEnableXp erstellt.
  • lDisableXp erstellt.
  • lEnableOle erstellt.
  • lDisableOle erstellt.
v1.2
  • lSmb-Modul erstellt.
  • lWhoami-Modul erstellt.
  • lRoles-Modul erstellt.
v1.1
  • oldCmd-Modul behoben.
  • iOleCmd-Modul behoben.
  • lDatabases-Modul behoben.
  • lTables-Modul behoben.
  • Codebasis bereinigt.
  • Inkonsistenzen im Hilfemenü korrigiert.
Tool herunterladen
  • Verbose: Das /v, /verbose-Flag ist optional und zeigt alle SQL-Abfragen an, die von einem Modul ausgeführt werden, bevor sie auf dem/den entfernten Host(s) ausgeführt werden. Ein Beispiel hierfür finden Sie im Wiki.
  • ModulnameBeschreibungImpersonierungVerkettete AusführungVerkettete KettenausführungErfordert privilegierten Kontext
    AuditStatusPrüfen, ob SQL-Überwachung vorhanden ist.✅✅✅❎
    CheckRpcEine Liste der verknüpften Server und deren RPC-Status abrufen.✅✅✅❎
    DatabasesAlle Datenbanken anzeigen.✅✅✅❎
    ImpersonateBenutzerkonten auflisten, die impersoniert werden können.✅✅✅❎
    InfoInformationen über den SQL-Server anzeigen.✅✅✅❎
    LinksVerknüpfte SQL-Server auflisten.✅✅✅❎
    UsersAnzeigen, welche Benutzerkonten und Gruppen sich gegen die Datenbank authentifizieren können.✅✅✅❎
    WhoamiIhre Berechtigungen anzeigen.✅✅✅❎
    Query /c:QUERYEine SQL-Abfrage ausführen.✅✅✅❎
    Smb /unc:UNC_PATHNetNTLMv2-Hash erfassen.✅✅✅❎
    Columns /db:DATABASE /table:TABLEAlle Spalten in der angegebenen Datenbank und Tabelle anzeigen.✅✅✅❎
    Rows /db:DATABASE /table:TABLEDie Anzahl der Zeilen in der angegebenen Datenbanktabelle anzeigen.✅✅✅❎
    Search /keyword:KEYWORDSpaltennamen in der angegebenen Tabelle der verbundenen Datenbank durchsuchen.✅✅✅❎
    Tables /db:DATABASEAlle Tabellen in der angegebenen Datenbank anzeigen.✅✅✅❎
    EnableRpc /rhost:LINKED_HOSTRPC und RPC out auf einem verknüpften Server aktivieren.✅❌❌✔️
    EnableClrCLR-Integration aktivieren.✅✅✅✔️
    EnableOleOLE-Automatisierungsprozeduren aktivieren.✅✅✅✔️
    EnableXpxp_cmdshell aktivieren.✅✅✅✔️
    DisableRpc /rhost:LINKED_HOSTRPC und RPC out auf einem verknüpften Server deaktivieren.✅❌❌✔️
    DisableClrCLR-Integration deaktivieren.✅✅✅✔️
    DisableOleOLE-Automatisierungsprozeduren deaktivieren.✅✅✅✔️
    DisableXpxp_cmdshell deaktivieren.✅✅✅✔️
    AgentStatusAnzeigen, ob der SQL-Agent läuft, und Agent-Jobs abrufen.✅✅✅✔️
    AgentCmd /c:COMMAND /subsystem:(OPTIONAL) /proxy:(OPTIONAL)Einen Systembefehl unter Verwendung von Agent-Jobs ausführen. Optional kann ein Subsystem mit /subsystem: angegeben werden; standardmäßig wird 'PowerShell' verwendet. Optional kann ein SQL-Agent-Proxy-Konto mit /proxy: angegeben werden.✅✅✅✔️
    Adsi /adsi:SERVER_NAME /lport:LOCAL_PORTKlartext-ADSI-Anmeldeinformationen von einem verknüpften ADSI-Server abrufen.✅✅✅✔️
    Clr /dll:DLL /function:FUNCTIONEine .NET-Assembly in einer benutzerdefinierten gespeicherten Prozedur laden und ausführen.✅✅✅✔️
    CredentialObjectsAnmeldeinformationsobjekte aus sys.credentials abrufen.✅✅✅✔️
    OleCmd /c:COMMAND /subsystem:(OPTIONAL)Einen Systembefehl unter Verwendung von OLE-Automatisierungsprozeduren ausführen.✅✅✅✔️
    ProxiesSQL-Agent-Proxy-Informationen abrufen.✅✅✅✔️
    XpCmd /c:COMMANDEinen Systembefehl unter Verwendung von xp_cmdshell ausführen.✅✅✅✔️
    ModulnameBeschreibungImpersonierungErfordert privilegierten Kontext
    UsersAlle SCCM-Benutzer anzeigen.✅❎
    SitesAlle anderen Sites mit gespeicherten Daten anzeigen.✅❎
    LogonsAlle zugehörigen SCCM-Clients und den zuletzt angemeldeten Benutzer anzeigen.✅❎
    CredentialsVon SCCM gespeicherte verschlüsselte Anmeldeinformationen anzeigen.✅❎
    TaskListAlle Tasksequenzen anzeigen, aber nicht auf die Inhalte der Aufgabendaten zugreifen.✅❎
    TaskDataAlle Tasksequenzen entschlüsseln und als Klartext anzeigen.✅❎
    DecryptCredentialsEinen SCCM-Anmeldeinformations-Blob entschlüsseln. Muss in einem Prozess mit hoher Integrität oder SYSTEM auf dem SCCM-Server ausgeführt werden.❌✔️
    AddAdmin /user:DOMAIN\USERNAME /sid:SIDEin angegebenes Konto zu einem 'Volladministrator' in SCCM erheben.✅✔️
    RemoveAdmin /user:ADMIN_ID /remove:STRINGBerechtigungen eines Benutzers entfernen oder einen Benutzer vollständig aus der SCCM-Datenbank löschen.✅✔️
    ScriptDataAlle Skripte zurückgeben, die für die Ausführung in SCCM konfiguriert sind.✅✔️
    CIDataAlle KIs zurückgeben, die für die Ausführung von Skripten in SCCM konfiguriert sind.✅✔️
  • Das Credentials-Modul listet von SCCM für verschiedene Funktionen gespeicherte Anmeldeinformationen auf. Diese Anmeldeinformationen können nicht remote entschlüsselt werden, da der Schlüssel auf dem SCCM-Server gespeichert ist. Dieses Modul liefert jedoch Informationen darüber, ob es sinnvoll ist, zu versuchen, den Schlüssel zu erhalten.
  • Das DecryptCredentials-Modul versucht, wiederhergestellte SCCM-Anmeldeinformations-Blobs zu entschlüsseln. Dieses Modul muss in einem Prozess mit hoher Integrität oder SYSTEM auf einem SCCM-Server ausgeführt werden.
  • Das AddAdmin-Modul erhebt das angegebene Konto zu einem 'Volladministrator' in SCCM. Wenn der Zielbenutzer bereits ein SCCM-Benutzer ist, fügt dieses Modul stattdessen die erforderlichen Berechtigungen zur Erhöhung hinzu. Geben Sie zwei Argumente an, entweder /user:current /sid:current, wenn Sie den Benutzer, der gerade den SQLRecon-Prozess ausführt, als 'Volladministrator' in SCCM hinzufügen möchten. Wenn Sie einen anderen Benutzer als 'Volladministrator' in SCCM hinzufügen möchten, geben Sie seinen Domänenbenutzernamen und die vollständige SID an: /user:DOMAIN\USERNAME /sid:S-1-5-.... Dieses Modul erfordert sysadmin oder ähnliche Berechtigungen, da das Schreiben in SCCM-Datenbanktabellen erforderlich ist.
  • Das RemoveAdmin-Modul entfernt die Berechtigungen eines Benutzers, indem es einen neu hinzugefügten Benutzer vollständig aus der SCCM-Datenbank löscht. Wenn der Benutzer bereits in irgendeiner Form existierte, entfernt dieses Modul nur die drei Rollen, die dem Konto über Schreibvorgänge in die Berechtigungstabelle hinzugefügt wurden. Verwenden Sie die Argumente, die von der Ausgabe des sAddAdmin-Befehls bereitgestellt werden, um diesen Befehl auszuführen. Dieses Modul erfordert sysadmin oder ähnliche Berechtigungen, da das Schreiben in SCCM-Datenbanktabellen erforderlich ist.
  • LinkedChainQueryRecurse
  • Argumentlogik in einzelne Methoden in ModuleHandler.cs verschoben, um Vereinfachung und Erweiterbarkeit zu fördern.
  • Alle SQL-Abfragen in Queries.cs verschoben.
  • EnumerationModules.cs erstellt.
  • FormatQuery.cs erstellt.
  • SccmModules.cs erstellt.
  • ModuleHandler.cs in SqlModules.cs umbenannt.
  • PrintUtils.cs in Print.cs umbenannt.
  • SQLServerInfo.cs in Info.cs umbenannt.
  • iQuery
  • iSearch
  • Signifikante Zuverlässigkeits- und Funktionstests gegen alle Authentifizierungsanbieter und Module.
  • Verzeichnis authentication entfernt.
  • Codestil geändert, um besser dem Microsoft C#/.NET-Codestil-Leitfaden zu folgen.
  • Help.cs von einer Methode in einen Konstruktor geändert.
  • CaptureHash.cs von einer Methode in einen Konstruktor geändert.
  • Impersonate.cs von einer Methode in einen Konstruktor geändert.
  • Vollständige Überarbeitung der Codebasis.
  • lEnableClr erstellt.
  • lDisableClr erstellt.
  • lXpCmd erstellt.
  • lXpOle erstellt.
  • Random.cs erstellt.
  • EnableDisable.cs erstellt.
  • Zufällig generierte Assembly-Namen für clr implementiert.
  • Zufällig generierte Variablen- und Methodennamen für ole implementiert.
  • Module mapped und roles in whoami integriert.
  • Module lMapped und lRoles in lWhoami integriert.
  • Module iMapped und iRoles in iWhoami integriert.
  • Vollständige Überarbeitung der Codebasis.