Beispielanalyse einer MSSQL-Hintertür der Winnti-Hackergruppe

PHPz
Freigeben: 2023-05-27 21:04:30
nach vorne
1414 Leute haben es durchsucht

Seit einiger Zeit verfolgen ESET-Forscher die Aktivitäten von Winnti, einer Gruppe, die seit 2012 aktiv ist und es auf die Lieferketten der Videospiel- und Softwareindustrie abgesehen hat. Kürzlich wurde eine bisher nicht registrierte Hintertür entdeckt, die auf Microsoft SQL-Systeme (MSSQL) abzielt. Diese Hintertür weist viele Ähnlichkeiten mit der PortReuse-Hintertür auf, einem weiteren Tool, das von der Winnti Group verwendet und erstmals im Oktober 2019 dokumentiert wurde.

Mitglieder der Winnti-Gruppe haben ein neues Backdoor-Beispiel namens Skip-2.0 veröffentlicht, das dieses Jahr entdeckt wurde. Diese Hintertür zielt auf die MSSQL-Server 11 und 12 ab und ermöglicht es einem Angreifer, sich mit einem magischen Passwort mit jedem MSSQL-Konto zu verbinden, während diese Verbindungen automatisch in den Protokollen ausgeblendet werden. Angreifer können Hintertüren nutzen, um in die Datenbank einzudringen, deren Inhalte zu kopieren, zu ändern oder zu löschen und so die Spielwährung zu finanziellen Zwecken zu manipulieren. Nach unserem Kenntnisstand handelt es sich bei Skip-2.0 um die erste öffentlich registrierte MSSQL-Server-Hintertür.

Dieser Artikel konzentriert sich auf die technischen Details und Funktionen der MSSQL-Server-Hintertür sowie auf die technischen Ähnlichkeiten zwischen Skip.2-0 und dem bekannten Arsenal von Winnti (insbesondere der Portreuse-Hintertür und dem Shadowpad).

vmprotected launcher

Bei der Suche nach vmprotected launcher haben wir Skip-2.0 gefunden, dessen Nutzlast normalerweise Portreuse oder Shadowpad ist.

Eingebettete Nutzlast

Wie die verschlüsselten Portreuse- und Shadowpad-Nutzlasten ist auch Skip-2.0 in den vmprotected-Launcher eingebettet, wie in Abbildung 1 dargestellt:

Beispielanalyse einer MSSQL-Hintertür der Winnti-Hackergruppe

Verschlüsselung

Wie bei anderen Trägerraketen, die VMProtect verwenden, muss auch die Nutzlast vorhanden sein verschlüsselt. Diese Verschlüsselungsmethode verwendet den RC5-Algorithmus und der Schlüssel besteht aus volumeID und der Zeichenfolge „f@ukd!RCTO R$“.

Persistenz

Wie bei Portreuse und Shadowpad kann das Startprogramm bestehen bleiben, indem es einen DLL-Hijack ausnutzt, indem es es in c:windowssystem32tsvipsrv.dll installiert. Dies führt dazu, dass der Standard-Windows-SessionEnv-Dienst die DLL lädt, wenn das System startet.

Packager

bettet die Entschlüsselung der Nutzlast ein, bei der es sich eigentlich um einen benutzerdefinierten Packer der Winnti-Gruppe handelt. Bei diesem Packager handelt es sich um denselben Code, den wir im Whitepaper dokumentiert haben. Das Tool wurde verwendet, um die PortReuse-Hintertür zu packen und die Nutzlast in kompromittierte Videospiele einzubetten.

Konfiguration

Die Programmpaketkonfiguration enthält den zum Entschlüsseln der Binärdatei erforderlichen Schlüssel sowie den Namen, die Größe und den Ausführungstyp (exe oder dll) der Originaldatei. Die Nutzlastkonfiguration ist in Tabelle 1 dargestellt.

Beispielanalyse einer MSSQL-Hintertür der Winnti-Hackergruppe

Wie aus der Packager-Konfiguration ersichtlich ist, wird die Nutzlast als interner Loader bezeichnet. Internal Loader ist der Name eines Injektors, der Teil des Arsenals der Winnti-Gruppe ist und dazu dient, die Portreuse-Hintertür in Prozesse einzuschleusen, die bestimmte Ports überwachen.

Interner Loader

Dies ist eine Variante des internen Loaders, die nicht nach einem Prozess sucht, der an einem bestimmten Port lauscht, wie beim Einschleusen der Portreuse-Hintertür, sondern nach einem Prozess namens sqlserv.exe, der ein regulärer Prozess für MSSQL-Server ist Name. Wenn er gefunden wird, fügt der interne Loader die Nutzlast in diesen Prozess ein. Diese Nutzlast wird mit einem benutzerdefinierten Packer gepackt, dessen Konfiguration in Tabelle 2 aufgeführt ist.

Beispielanalyse einer MSSQL-Hintertür der Winnti-Hackergruppe

Der ursprüngliche Dateiname dieser injizierten Nutzlast lautet skip-2.0.dll.

skip-2.0

Nachdem Skip-2.0 vom internen Loader injiziert und gestartet wurde, prüft es zunächst, ob es im sqlserv.exe-Prozess ausgeführt wird, und ruft in diesem Fall ein Handle für sqllang.dll ab, das von sqlserv geladen wird .exe . Suchen Sie dann weiter nach mehreren Funktionen dieser DLL und binden Sie sie ein. Abbildung 2 beschreibt den laufenden Prozess von Skip-2.0.

Beispielanalyse einer MSSQL-Hintertür der Winnti-Hackergruppe

Hooking sqllang.dll

skip-2.0 verwendet einen Hook-Prozess, der Netagent sehr ähnlich ist, dem Portreuse-Modul, das für die Installation von Netzwerk-Hooks verantwortlich ist. Diese Hook-Bibliothek basiert auf dem Open-Source-Disstorm-Disassembler, der auch von mehreren Open-Source-Hooking-Frameworks verwendet wird. Um die Größe der einzubindenden Anweisungen korrekt zu berechnen, ist eine Disassemblierungsbibliothek erforderlich. Fast der gleiche Hook-Prozess wird von NetAgent und Skip-2.0 verwendet, wie in der folgenden Abbildung dargestellt.

Beispielanalyse einer MSSQL-Hintertür der Winnti-Hackergruppe

Abbildung 3 Hex-Rays-Ausgabevergleich zwischen den Hooking-Prozeduren von NetAgent (links) und Skip-2.0 (rechts)

Ein wesentlicher Unterschied besteht darin, dass die Hooking-Funktion in Skip-2.0 die Adresse des zu installierenden Hooks verwendet Als Parameter ist die Adresse des zu installierenden Hooks fest codiert. Dies liegt daran, dass Skip-2.0 mehrere Funktionen in qllang.dll einbinden muss, um ordnungsgemäß ausgeführt zu werden, während Netagent nur auf eine Funktion abzielt.

Um jede sqllang.dll-Funktion des Hooks zu finden, ruft skip-2.0 zunächst die Größe der in den Speicher geladenen DLL (d. h. ihre virtuelle Größe) ab, indem es den PE-Header analysiert. Als nächstes muss das Byte-Array, das in sqllang.dll abgeglichen werden muss, initialisiert werden, siehe Abbildung 4. Sobald die Adresse der ersten Übereinstimmung mit dem Byte-Array gefunden wurde, wird der Hook mithilfe des in Abbildung 3 dargestellten Prozesses installiert.

Beispielanalyse einer MSSQL-Hintertür der Winnti-Hackergruppe

Nachdem der Hook erfolgreich installiert wurde, wird er im Klartext aufgezeichnet. Die Datei befindet sich im hartcodierten Pfad c:windowstemptsu2ce1.tmp, wie in Abbildung 5 dargestellt.

Beispielanalyse einer MSSQL-Hintertür der Winnti-Hackergruppe

Wenn die Zielfunktion nicht gefunden wird, sucht der Hook-Installer nach einer Fallback-Funktion mit einem anderen Satz von Bytemustern.

Durch die Anpassung der Bytesequenz zur Lokalisierung der Adresse der Zielfunktion anstelle der Verwendung eines statischen Offsets und die Verwendung einer Fallback-Bytesequenz kann sich Skip-2.0 flexibler an MSSQL-Updates anpassen und auf mehrere SQLlang-DLLs abzielen aktualisiert. Die Zielfunktion von

Passwortkontrolle

skip-2.0 bezieht sich auf Authentifizierung und Ereignisprotokollierung. Zu den gezielten Funktionen gehören:

CPwdPolicyManager::ValidatePwdForLogin
CSECAuthenticate::AuthenticateLoginIdentity
ReportLoginSuccess
IssueLoginSuccessReport
FExecuteLogonTriggers
XeSqlPkg::sql_statement_completed::Publish
XeSqlPkg::sql_batch_completed::Publish
SecAuditPkg::audit_event::Publish
XeSqlPkg::login::Publish
XeSqlPkg::ual_instrument_called::Publish
Nach dem Login kopieren

Die interessanteste davon ist die erste (cpwdpolicymanager::validatepwdforlogin), die für die Validierung des für einen bestimmten Benutzer bereitgestellten Passworts verantwortlich ist.

Der Hook dieser Funktion prüft, ob das vom Benutzer angegebene Passwort mit dem magischen Passwort übereinstimmt. Wenn dies der Fall ist, wird die ursprüngliche Funktion nicht aufgerufen und der Hook gibt 0 zurück, wodurch die Verbindung zugelassen wird. Als nächstes wird ein globales Flag eingerichtet, das von anderen Hook-Funktionen überprüft wird, die für die Ereignisprotokollierung verantwortlich sind. Der entsprechende Dekompilierungsprozess ist in Abbildung 6 dargestellt. Wenn dieses globale Flag gesetzt ist, kehrt die Protokollierungsfunktion des Hooks stillschweigend zurück, ohne die entsprechende Originalfunktion aufzurufen, sodass der Vorgang nicht protokolliert wird.

Beispielanalyse einer MSSQL-Hintertür der Winnti-Hackergruppe

Wenn Sie sich mit einem magischen Passwort anmelden, rufen die Hooks „reportloginsaccess“ und „issueloginsuccessreport“ nicht die ursprüngliche Funktion auf. Das gleiche Verhalten gilt für feexecutelogontriggers. Andere Protokollierungsfunktionen wie xesqlpkg::sql_completed::publish oder xesqlpkg::sql_batch_completed::publish werden ebenfalls deaktiviert, wenn sich der Benutzer mit einem magischen Passwort anmeldet. Mehrere Prüfereignisse sind ebenfalls deaktiviert, darunter secauditpkg::audit_event::publish, xesqlpkg::login::publish und xesqlpkg::uau instrument_claimed::publish.

Diese Reihe von Hooks ermöglicht es dem Angreifer nicht nur, über ein spezielles Passwort dauerhafte Kontrolle über den MSSQL-Server des Opfers zu erlangen, sondern bei Verwendung dieses Passworts werden auch mehrere Protokolle deaktiviert, sodass der Angreifer nicht erkannt werden kann.

Forscher testeten Skip-2.0 auf mehreren MSSQL Server-Versionen und stellten fest, dass sie sich erfolgreich mit Passwörtern für MSSQL Server 11 und 12 anmelden konnten. Um zu überprüfen, ob Skip-2.0 auf eine bestimmte sqllang.dll-Version abzielt, wurde eine Yara-Regel erstellt, die im Github-Repository zu finden ist.

Verbindung mit Winnti

skip-2.0 weist viele Ähnlichkeiten mit anderen Tools von Winnti auf. Der vmprotected Launcher, der benutzerdefinierte Packager, der interne Loader und das Hook-Framework sind Teil des Winnti-Toolsets.

Das obige ist der detaillierte Inhalt vonBeispielanalyse einer MSSQL-Hintertür der Winnti-Hackergruppe. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage