
Ein C# MS SQL Toolkit, das für offensive Aufklärung und Post-Exploitation entwickelt wurde.
SQLRecon ist ein Microsoft-SQL-Server-Toolkit, das für offensive Aufklärung und Post-Exploitation entwickelt wurde. Detaillierte Informationen zur Verwendung der einzelnen Techniken finden Sie im Wiki.
Sie können eine Kopie von SQLRecon über die Seite Releases herunterladen. Alternativ können Sie die Lösung auch selbst kompilieren. Das sollte so unkompliziert sein wie das Klonen des Repos, das Doppelklicken auf die Lösungsdatei und das Erstellen.
Präventions-, Erkennungs- und Abhilfehinweise wurden ebenfalls für alle Verteidiger unter Ihnen bereitgestellt.
Schauen Sie sich meinen Blogbeitrag auf der IBM Security Intelligence-Website an. Wenn Sie Videos bevorzugen, sehen Sie sich meine Präsentation auf der Black Hat an.
Aufklärungsmodule erfordern keinen anzugebenden Authentifizierungsanbieter. Diese Module müssen an 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.
# 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.
/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.master, dies kann jedoch optional geändert werden, indem über das Datenbank-Flag (/database:) ein benutzerdefinierter Datenbankname angegeben wird./debug ist optional und zeigt alle SQL-Abfragen an, die von einem Modul ausgeführt werden, ohne sie tatsächlich auf den entfernten Host(s) auszuführen. Ein Beispiel hierfür finden Sie im Wiki.1433 mit Datenbanken, dies kann jedoch optional über das Flag /port: geändert werden.3 Sekunden, dieser Wert kann jedoch optional geändert werden, indem ein Timeout-Wert (/t:, /timeout:) angegeben wird, der der Anzahl der Sekunden vor dem Beenden des Verbindungsversuchs entspricht.Bitte beachten Sie, dass der Authentifizierungsanbieter EntraID voraussetzt, dass die Azure Active Directory Authentication Library (ADAL) oder Microsoft Authentication Library (MSAL) auf dem System vorhanden ist, von dem SQLRecon ausgeführt wird. Dies dient der Azure-EntraID-Authentifizierungs- und Autorisierungsfunktionalität.
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.
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.
Impersonations-Module werden gegen eine oder mehrere Instanzen von Microsoft SQL Server ausgeführt, im Kontext eines impersonierten SQL-Benutzers. Alle Impersonations-Module haben die folgenden Mindestanforderungen:
/i:, /iuser:)./m:, /module:).Das Wiki enthält Details zur Verwendung jedes Moduls, das die Ausführung mithilfe von Impersonation unterstützt.
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:
/l:, /link:). Das Link-Flag erlaubt 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./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.
Module für verknüpfte Ketten werden auf dem letzten Microsoft SQL Server in einer Kette verknüpfter Server ausgeführt. Alle Module für verknüpfte Ketten haben die folgenden Mindestanforderungen:
/l:, /link: angegeben werden. Wenn SQL01 einen Link zu SQL02 hat und SQL02 einen Link zu PAYMENTS01, und Sie ein Modul auf PAYMENTS01 ausführen möchten, wäre das Argument /l:SQL02,PAYMENTS01./chain muss enthalten sein, um das Modul gegen den letzten SQL-Server in der angegebenen verknüpften Kette auszuführen./m:, /module:).Das Wiki enthält Details zur Verwendung jedes Moduls, das die Ausführung auf dem letzten in einer Kette verknüpfter SQL-Server angegebenen SQL-Server unterstützt.
SQLRecon verfügt über mehrere Module, die bei der Enumeration und dem Angriff auf Microsoft System Center Configuration Manager (SCCM) und Microsoft Endpoint Configuration Manager (ECM) helfen können. Der SCCM- oder ECM-Server benötigt eine Microsoft-SQL-Datenbank, die entweder lokal oder remote verfügbar gemacht ist.
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.
Users listet alle Benutzer in der Tabelle RBAC_Admins auf. Dies sind alle Benutzer, die für eine bestimmte Zugriffsebene auf SCCM konfiguriert sind.Sites listet alle anderen Standorte mit Daten auf, die in der Tabelle DPInfo der SCCM-Datenbanken gespeichert sind. Dies kann zusätzliche Angriffswege bieten, da verschiedene Standorte auf unterschiedliche (unsichere) Weisen konfiguriert sein können.Logons fragt die Tabelle Computer_System_DATA ab, um alle zugeordneten 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.TaskList liefert eine Liste aller in der SCCM-Datenbank gespeicherten Tasksequenzen, greift aber nicht auf die tatsächlichen Task-Dateninhalte zu.TaskData stellt alle in der SCCM-Datenbank gespeicherten Tasksequenzen wieder her und entschlüsselt sie in Klartext. Tasksequenzen können Anmeldedaten für das Hinzufügen von Systemen zu Domänen, das Zuordnen von Freigaben, das Ausführen von Befehlen usw. enthalten.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.
Das Ziel ist es, SQLRecon kontinuierlich zu verbessern. Nachfolgend sind einige geplante Forschungsbereiche aufgeführt:
Die folgenden Personen haben direkt oder indirekt zu verschiedenen Aspekten von SQLRecon beigetragen.
whoami (JBalanza).adsi, bei dem der LDAP-Server nicht zur msdb-Datenbank hinzugefügt werden muss; die erstellte Funktion wird nun auch ordnungsgemäß entfernt.SQL01 einen Link zu SQL02 hat, SQL02 einen Link zu SQL03 und SQL03 einen Link zu PAYMENTS01, ist es nun möglich, Befehle von SQL01 auf PAYMENTS01 über die Kette verknüpfter Server auszuführen (/link:SQL02,SQL03,PAYMENTS01 /chain). Dank an Azaël Martin (n3rada).l' und 'i' entfernt und Kontextlogik eingeführt, sodass Modulnamen für Standard-, Impersonations-, verknüpfte und Kettenausführung gleich sein können./debug) hinzugefügt, das verschiedene Debug-Informationen und alle SQL-Abfragen anzeigt, die von einem Modul ausgeführt werden, ohne sie auszuführen./host oder /h angegeben sind, wird nun mit durch Kommas getrennten Werten unterstützt./link oder /l angegeben sind, wird nun mit durch Kommas getrennten Werten unterstützt./lhost in /link geändert.s'-Module entfernt und den Schalter /s, /sccm für SCCM-Module erstellt.DecryptCredentials./enum) namens info hinzugefügt, das einen nicht authentifizierten Kontext nutzen kann, um SQL-Serverinformationen einschließlich Instanzname und TCP-Port über das UDP-Protokoll zu erhalten.adsi-Ausführung den LDAP-Server nicht entfernte.adsi entfernt, zugunsten von openquery/rpc./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 umbenannt.smb hinzugefügt.info hinzugefügt.info hinzugefügt.rows, iRows und lRows erstellt.sLogons aktualisiert, um einen optionalen Filter einzuschließen.xp_cmdshell-Module die Befehlsausgabe nicht auf der Konsole ausgaben.SetEnumerationType.cs erstellt.domain in SqlSpns geändert.ExecuteImpersonationQuery und ExecuteImpersonationCustomQuery erstellt.Impersonate.cs gelöschtcheckRpc hinzugefügt.iCheckRpc hinzugefügt.lCheckRpc hinzugefügt.EnableDisable.cs in ConfigureOptions.cs umbenanntExecuteLinkedCustomQueryRpcExec aufgerufen wird. PrintUtils.cs, das eine Print-Klasse für standardisierte Ausgabe implementiert.TablePrinter von Help.cs nach PrintUtils.cs verschoben.PrintUtils standardisiert.querysearchtableslColumnslQuerylSearchlTablesiColumnsAzure in AzureAD geändert.AzureLocal erstellt.disableRpc hinzugefügt.enableRpc hinzugefügt.iEnableRpc hinzugefügt.iDisableRpc hinzugefügt.lEnableRpc entfernt.lDisbleRpc entfernt.lAgentCmd.clr, iClr und lClr durch Verwendung von SqlCommand.ExecuteNonQuery beim Erstellen der gespeicherten Prozedur behoben.lClr behoben, bei dem erstellte Assemblys oder gespeicherte Prozeduren nicht entfernt wurden.columns hinzugefügt.iColumns hinzugefügt.iDatabases hinzugefügt.iSearch hinzugefügt.iTables hinzugefügt.lColumns hinzugefügt.lSearch hinzugefügt.ExecuteLinkedCustomQueryRpcExec verbessert.x geändert.Random.cs in das Verzeichnis utilities verschoben.Windows in WinToken geändert.WinDomain erstellt, die AD-Domänenbenutzername und -passwort zur Authentifizierung über Impersonation verwendet. Siehe Impersonation.cs.ArgumentLogic.cs, SQLAuthentication.cs und ModuleHandler.cs überarbeitet.ModuleHandler.cs verwendet keine massive if/else if/else-Anweisung mehr, um Module auszuführen. Stattdessen wird jetzt Reflection verwendet, um Methoden aufzurufen, die den Namen der Befehlsmodule entsprechen.commands hinzugefügt, das globale Variablen enthält, die im gesamten Programm verwendet werden.SQLAuthentication.cs zusammengeführt.Program.cs nach ArgumentLogic.cs verschoben.sccm ausgeführt werden können.roles, iRoles und lRoles abgefragt werden.users, iUsers und lUsers erstellt.sp_drop_trusted_assembly in den Modulen clr und iClr entfernt wurde.lAgentCmd erstellt.lClr erstellt.info hinzugefügt.Local und Azure behoben.-e domain).-r in den Authentifizierungsmodi Windows und Local hinzugefügt, damit nicht standardmäßige TCP-Ports angegeben werden können.Environment.Exit aus TestAuthentication.cs entfernt.AgentJobs.cs erstellt.agentStatus erstellt.iAgentStatus erstellt.lAgentStatus erstellt.agentCmd erstellt.iAgentCmd erstellt.clr erstellt.iEnableClr erstellt.iDisbleClr erstellt.iClr erstellt.iWhoami erstellt.iMapped erstellt.iRoles erstellt.lEnableRpc erstellt.lDisableRpc erstellt.lWhoai erstellt.lEnableXp erstellt.lDisableXp erstellt.lEnableOle erstellt.lDisableOle erstellt.lSmb erstellt.lWhoami erstellt.lRoles erstellt.oldCmd behoben.iOleCmd behoben.lDatabases behoben.lTables behoben./v, /verbose ist optional und zeigt alle SQL-Abfragen an, die von einem Modul ausgeführt werden, bevor sie auf den entfernten Host(s) ausgeführt werden. Ein Beispiel hierfür finden Sie im Wiki.| Modulname | Beschreibung | Impersonation | Verknüpfte Ausführung | Verkettete Ausführung | Erfordert privilegierten Kontext |
|---|
CheckRpc | Listet verknüpfte Server und deren RPC-Status auf. | ✅ | ✅ | ✅ | ❎ |
Databases | Zeigt alle Datenbanken an. | ✅ | ✅ | ✅ | ❎ |
Impersonate | Listet Benutzerkonten auf, die impersoniert werden können. | ✅ | ✅ | ✅ | ❎ |
Info | Zeigt Informationen über den SQL-Server an. | ✅ | ✅ | ✅ | ❎ |
Links | Listet verknüpfte SQL-Server auf. | ✅ | ✅ | ✅ | ❎ |
Users | Zeigt an, welche Benutzerkonten und Gruppen sich an der Datenbank authentifizieren können. | ✅ | ✅ | ✅ | ❎ |
Whoami | Zeigt Ihre Berechtigungen an. | ✅ | ✅ | ✅ | ❎ |
Query /c:QUERY | Führt eine SQL-Abfrage aus. | ✅ | ✅ | ✅ | ❎ |
Smb /unc:UNC_PATH | Erfasst NetNTLMv2-Hash. | ✅ | ✅ | ✅ | ❎ |
Columns /db:DATABASE /table:TABLE | Zeigt alle Spalten in der angegebenen Datenbank und Tabelle an. | ✅ | ✅ | ✅ | ❎ |
Rows /db:DATABASE /table:TABLE | Zeigt die Anzahl der Zeilen in der angegebenen Datenbanktabelle an. | ✅ | ✅ | ✅ | ❎ |
Search /keyword:KEYWORD | Sucht Spaltennamen in der angegebenen Tabelle der verbundenen Datenbank. | ✅ | ✅ | ✅ | ❎ |
Tables /db:DATABASE | Zeigt alle Tabellen in der angegebenen Datenbank an. | ✅ | ✅ | ✅ | ❎ |
EnableRpc /rhost:LINKED_HOST | Aktiviert RPC und RPC out auf einem verknüpften Server. | ✅ | ❌ | ❌ | ✔️ |
EnableClr | Aktiviert CLR-Integration. | ✅ | ✅ | ✅ | ✔️ |
EnableOle | Aktiviert OLE-Automatisierungsprozeduren. | ✅ | ✅ | ✅ | ✔️ |
EnableXp | Aktiviert xp_cmdshell. | ✅ | ✅ | ✅ | ✔️ |
DisableRpc /rhost:LINKED_HOST | Deaktiviert RPC und RPC out auf einem verknüpften Server. | ✅ | ❌ | ❌ | ✔️ |
DisableClr | Deaktiviert CLR-Integration. | ✅ | ✅ | ✅ | ✔️ |
DisableOle | Deaktiviert OLE-Automatisierungsprozeduren. | ✅ | ✅ | ✅ | ✔️ |
DisableXp | Deaktiviert xp_cmdshell. | ✅ | ✅ | ✅ | ✔️ |
AgentStatus | Zeigt an, ob der SQL-Agent ausgeführt wird, und ruft Agent-Aufträge ab. | ✅ | ✅ | ✅ | ✔️ |
AgentCmd /c:COMMAND | Führt einen Systembefehl mithilfe von Agent-Aufträgen aus. | ✅ | ✅ | ✅ | ✔️ |
Adsi /adsi:SERVER_NAME /lport:LOCAL_PORT | Ruft Klartext-ADSI-Anmeldedaten von einem verknüpften ADSI-Server ab. | ✅ | ✅ | ✅ | ✔️ |
Clr /dll:DLL /function:FUNCTION | Lädt und führt eine .NET-Assembly in einer benutzerdefinierten gespeicherten Prozedur aus. | ✅ | ✅ | ✅ | ✔️ |
OleCmd /c:COMMAND /subsystem:(OPTIONAL) | Führt einen Systembefehl mithilfe von OLE-Automatisierungsprozeduren aus. | ✅ | ✅ | ✅ | ✔️ |
XpCmd /c:COMMAND | Führt einen Systembefehl mithilfe von xp_cmdshell aus. | ✅ | ✅ | ✅ | ✔️ |
| Modulname | Beschreibung | Impersonation | Erfordert privilegierten Kontext |
|---|
Users | Zeigt alle SCCM-Benutzer an. | ✅ | ❎ |
Sites | Zeigt alle anderen Standorte mit gespeicherten Daten an. | ✅ | ❎ |
Logons | Zeigt alle zugeordneten SCCM-Clients und den zuletzt angemeldeten Benutzer an. | ✅ | ❎ |
Credentials | Zeigt verschlüsselte Anmeldedaten an, die von SCCM sicher gespeichert werden. | ✅ | ❎ |
TaskList | Zeigt alle Tasksequenzen an, greift jedoch nicht auf die Taskdateninhalte zu. | ✅ | ❎ |
TaskData | Entschlüsselt alle Tasksequenzen in Klartext. | ✅ | ❎ |
DecryptCredentials | Entschlüsselt einen SCCM-Anmeldeinformations-Blob. Muss in einem Prozess mit hoher Integrität oder als SYSTEM auf dem SCCM-Server ausgeführt werden. | ❌ | ✔️ |
AddAdmin /user:DOMAIN\USERNAME /sid:SID | Stuft ein angegebenes Konto in SCCM zu einem 'Volladministrator' hoch. | ✅ | ✔️ |
RemoveAdmin /user:ADMIN_ID /remove:STRING | Entfernt Berechtigungen eines Benutzers oder entfernt einen Benutzer vollständig aus der SCCM-Datenbank. | ✅ | ✔️ |
Credentials listet Anmeldedaten auf, die von SCCM für verschiedene Funktionen sicher gespeichert werden. Diese Anmeldedaten können nicht remote entschlüsselt werden, da der Schlüssel auf dem SCCM-Server gespeichert ist. Dieses Modul liefert jedoch Hinweise, ob es sinnvoll ist, zu versuchen, den Schlüssel zu erlangen.DecryptCredentials versucht, wiederhergestellte SCCM-Anmeldeinformations-Blobs zu entschlüsseln. Dieses Modul muss in einem Prozess mit hoher Integrität oder als SYSTEM auf einem SCCM-Server ausgeführt werden.AddAdmin stuft das angegebene Konto innerhalb von SCCM zu einem 'Volladministrator' hoch. Wenn der Zielbenutzer bereits ein SCCM-Benutzer ist, fügt dieses Modul stattdessen die erforderlichen Berechtigungen hinzu, um die Höherstufung zu erreichen. Geben Sie zwei Argumente an, entweder /user:current /sid:current, wenn der Benutzer, der derzeit den SQLRecon-Prozess ausführt, als 'Volladministrator' in SCCM hinzugefügt werden soll. Wenn Sie einen anderen Benutzer als 'Volladministrator' in SCCM hinzufügen möchten, geben Sie dessen Domänenbenutzernamen und 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.RemoveAdmin entfernt die Berechtigungen eines Benutzers, indem ein neu hinzugefügter Benutzer vollständig aus der SCCM-Datenbank entfernt wird. 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 Befehls sAddAdmin bereitgestellt werden, um diesen Befehl auszuführen. Dieses Modul erfordert sysadmin- oder ähnliche Berechtigungen, da das Schreiben in SCCM-Datenbanktabellen erforderlich ist.Verbose (/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 den SQL-Server-Datenbankverbindungs-Timeout akzeptiert.links verbessert, um detaillierte Informationen einzuschließen. Dank an Azaël Martin (n3rada).whoami verbessert, um Windows-Prinzipale und Datenbankbenutzer einzuschließen. Dank an Azaël Martin (n3rada).impersonation verbessert, um Windows-Prinzipale und Datenbankbenutzer einzuschließen. Dank an Azaël Martin (n3rada).sqlspns aufgenommen. Dank an Azaël Martin (n3rada)./enum:info hinzugefügt./subsystem zum Modul olecmdexec hinzugefügt, das die Ausführung mithilfe der OLE-Automatisierungs-Subsysteme CmdExec oder PowerShell akzeptiert.AzureAD-Authentifizierung zu EntraID geändert.ModuleHandler.cs verschoben, um Vereinfachung und Erweiterbarkeit zu fördern.Queries.cs verschoben.EnumerationModules.cs erstellt.FormatQuery.cs erstellt.SccmModules.cs erstellt.ModuleHandler.cs in SqlModules.cs umbenannt.OleAutomation.csPrintUtils.cs in Print.cs umbenannt.SQLServerInfo.cs in Info.cs umbenannt.iQueryiSearchauthentication entfernt.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.lEnableClr erstellt.lDisableClr erstellt.lXpCmd erstellt.lXpOle erstellt.Random.cs erstellt.EnableDisable.cs erstellt.clr implementiert.ole implementiert.mapped und roles in whoami zusammengeführt.lMapped und lRoles in lWhoami zusammengeführt.iMapped und iRoles in iWhoami zusammengeführt.