Lernen Sie kontroverse Taktiken, Techniken und allgemeines Wissen (ATT @ CK). Unternehmenstaktik. Teil 4

Eskalation von Berechtigungen


Links zu allen Teilen:
Teil 1. Erstzugriff erhalten (Erstzugriff)
Teil 2. Ausführung
Teil 3. Befestigung (Persistenz)
Teil 4. Eskalation von Berechtigungen
Teil 5. Verteidigungshinterziehung
Teil 6. Abrufen von Anmeldeinformationen (Zugriff auf Anmeldeinformationen)
Teil 7. Entdeckung
Teil 8. Seitliche Bewegung

Die Eskalation von Berechtigungen ist das Ergebnis von Aktionen, mit denen ein Angreifer oder ein Schadprogramm eine höhere Berechtigungsstufe für das angegriffene System oder Netzwerk erhalten kann. Techniken zur Eskalation von Berechtigungen beschreiben die Methoden, mit denen ein Gegner, der unprivilegierten Zugriff auf ein angegriffenes System erhalten hat und verschiedene „Schwachstellen“ eines Systems verwendet, lokale Administrator-, System- oder Stammrechte erhalten kann. Die Verwendung von Benutzerkonten mit Zugriffsrechten auf bestimmte Systeme oder Berechtigungen für bestimmte Vorgänge durch Angreifer kann auch als Eskalation von Berechtigungen angesehen werden.

Der Autor ist nicht verantwortlich für die möglichen Konsequenzen der Anwendung der im Artikel aufgeführten Informationen und entschuldigt sich auch für mögliche Ungenauigkeiten in einigen Formulierungen und Begriffen. Die veröffentlichten Informationen sind eine kostenlose Nacherzählung des Inhalts von MITRE ATT & CK .

Es ist wichtig abzubrechen, dass einige der in der ATT @ CK- Matrix beschriebenen Techniken gleichzeitig in mehreren Phasen der Angriffskette enthalten sind. Beispielsweise kann das Abfangen der DLL-Suche sowohl zum Sichern des Zugriffs durch unbefugte Ausführung einer böswilligen DLL als auch zum Erhöhen der Berechtigungen durch Starten der DLL im Prozess verwendet werden. Arbeiten im Kontext eines privilegierten Benutzers.

Manipulation von Zugriffstoken


System: Windows
Rechte: Benutzer, Administrator
Beschreibung: Angreifer können Zugriffstoken verwenden, um Aktionen in verschiedenen Sicherheitskontexten für Benutzer oder Systeme auszuführen und so die Erkennung böswilliger Aktivitäten zu vermeiden. Ein Gegner kann die Windows-API-Funktionen verwenden, um Zugriffstoken aus vorhandenen Prozessen zu kopieren (Token-Diebstahl). Dazu muss er sich im Kontext eines privilegierten Benutzers (z. B. eines Administrators) befinden. Der Diebstahl von Zugriffstoken wird häufig verwendet, um Berechtigungen von der Administratorebene auf die Systemebene zu erhöhen. Ein Gegner kann auch ein Kontozugriffstoken zur Authentifizierung auf einem Remote-System verwenden, wenn dieses Konto über die erforderlichen Berechtigungen auf dem Remote-System verfügt.
Betrachten Sie verschiedene Möglichkeiten, um Zugriffstoken zu missbrauchen:
  • Diebstahl und Identitätswechsel von Token. Der Identitätswechsel von Token ist die Fähigkeit des Betriebssystems, Threads in einem anderen Sicherheitskontext als dem Kontext des Prozesses zu starten, zu dem dieser Thread gehört. Mit anderen Worten, die Personifizierung von Token ermöglicht es Ihnen, Aktionen im Namen eines anderen Benutzers auszuführen. Ein Gegner kann ein Zugriffstoken mithilfe der Funktion DuplicateTokenEX duplizieren und mit ImpersonateLoggedOnUser einen Thread im Kontext eines angemeldeten Benutzers aufrufen oder mit SetThreadToken einem Stream ein Zugriffstoken zuweisen.
  • Erstellen Sie einen Prozess mit einem Zugriffstoken. Ein Angreifer kann mithilfe der Funktion DuplicateTokenEX ein Zugriffstoken erstellen und es dann mit CreateProcessWithTokenW verwenden , um einen neuen Prozess zu erstellen, der im Kontext des imitierten Benutzers ausgeführt wird.
  • Abrufen und Identifizieren von Zugriffstoken. Ein Gegner mit einem Benutzernamen und einem Kennwort kann mithilfe der LogonUser- API-Funktion eine Anmeldesitzung erstellen, die eine Kopie des Sitzungszugriffstokens einer neuen Sitzung zurückgibt , und dann mithilfe der SetThreadToken-Funktion dem Thread ein Token zuweisen. Metasploit Meterpreter und CobaltStrike verfügen über Tools zum Bearbeiten von Zugriffstoken, um die Berechtigungen zu erhöhen.

Schutzempfehlungen: Um die oben genannten Taktiken vollständig nutzen zu können, muss ein Angreifer über Systemadministratorrechte verfügen. Vergessen Sie daher nicht, die Berechtigungen normaler Benutzer einzuschränken. Jeder Benutzer kann Zugriffstoken austricksen, wenn er über legitime Anmeldeinformationen verfügt. Beschränken Sie die Möglichkeit für Benutzer und Gruppen, Zugriffstoken zu erstellen:
Gruppenrichtlinienobjekt: Computerkonfiguration> [Richtlinien]> Windows-Einstellungen> Sicherheitseinstellungen> Lokale Richtlinien> Zuweisung von Benutzerrechten: Erstellen Sie ein Token-Objekt
Stellen Sie außerdem fest, wer die Prozesstoken von lokalen Diensten oder Netzwerkdiensten ersetzen kann:
Gruppenrichtlinienobjekt: Computerkonfiguration> [Richtlinien]> Windows-Einstellungen> Sicherheitseinstellungen> Lokale Richtlinien> Zuweisung von Benutzerrechten: Ersetzen Sie ein Token auf Prozessebene

Änderung ausführbarer Dateien von Anwendungen "Eingabehilfen von Windows" (Eingabehilfen)


System: Windows
Rechte: Administrator
Beschreibung: Eingabehilfen (Bildschirmlupe, Bildschirmtastatur usw.) können mithilfe von Tastenkombinationen gestartet werden, bevor sich ein Benutzer am System anmeldet. Ein Angreifer kann die Startdateien dieser Programme ersetzen oder die Art und Weise ändern, in der sie gestartet werden, und eine Befehlskonsole öffnen oder eine Hintertür erhalten, ohne sich anzumelden.
  • C: \ Windows \ System32 \ sethc.exe - wird durch fünffaches Drücken der Umschalttaste gestartet;
  • C: \ Windows \ System32 \ utilman.exe - wird durch Drücken der Kombination von Win + U gestartet.

In WinXP und späteren Versionen können sethc.exe und utilman.exe beispielsweise durch cmd.exe ersetzt werden. Wenn Sie dann die gewünschte Tastenkombination drücken, wird cmd.exe gestartet, bevor Windows mit Systemberechtigungen aufgerufen wird.
In Vista und späteren Versionen müssen Sie den Registrierungsschlüssel ändern, mit dem cmd.exe oder ein anderes Programm als Debugger konfiguriert wird, z. B. für ultiman.exe. Nach dem Bearbeiten der Registrierung und Drücken der gewünschten Tastenkombination auf dem Anmeldebildschirm oder beim Herstellen einer Verbindung zum Host über RDP wird cmd.exe mit Systemrechten ausgeführt.
Es gibt auch Windows-Programme, mit denen diese Angriffstechnik implementiert werden kann:
  • C: \ Windows \ System32 \ osk.exe;
  • C: \ Windows \ System32 \ Magnify.exe;
  • C: \ Windows \ System32 \ Narrator.exe;
  • C: \ Windows \ System32 \ DisplaySwitch.exe;
  • C: \ Windows \ System32 \ AtBroker.exe.

Sicherheitsempfehlungen: Konfigurieren Sie den Start der obligatorischen Netzwerkauthentifizierung für Remotebenutzer, bevor Sie eine RDP-Sitzung erstellen und den Anmeldebildschirm anzeigen ( standardmäßig in Windows Vista und höher aktiviert ). Verwenden Sie das Remotedesktop-Gateway, um Verbindungen zu verwalten und die RDP-Sicherheit zu konfigurieren.

Ändern des AppCert-DLL-Schlüssels


System: Windows
Rechte: Administrator, System
Beschreibung: Im Schlüsselwert AppCertDLLs angegebene DLLs werden in jeden Prozess geladen, der die häufig verwendeten API-Funktionen aufruft : CreateProcess, CreateProcessAsUser, CreateProcessWithLoginW, CreateProcessWithTokenW, WinExec . Der AppCertDLL-Schlüsselwert kann missbraucht werden, indem eine schädliche DLL geladen wird und bestimmte Prozesse ausgeführt werden. AppCertDLLs werden im folgenden Registrierungsschlüssel gespeichert:
HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \ Control \ Session Manager .

Schutzempfehlungen : Verwenden Sie alle möglichen Mittel, um potenziell gefährliche Software zu blockieren und unbekannte DLLs wie AppLocker und DeviceGuard herunterzuladen.

Änderung des AppInit-DLL-Schlüssels


System: Windows
Rechte: Administrator, System
Beschreibung: Im Schlüsselwert AppInit_DLLs angegebene DLLs werden in jeden Prozess geladen, den user32.dll lädt. In der Praxis ist dies fast jedes Programm.
AppInit_DLLs wird in den folgenden Registrierungsschlüsseln gespeichert:
  • HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Windows;
  • HKEY_LOCAL_MACHINE \ Software \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Windows.

Der AppInit_DLLs-Schlüsselwert kann missbraucht werden, um Berechtigungen zu überschreiten, indem schädliche DLLs geladen und bestimmte Prozesse gestartet werden. Die AppInit_DLLs-Funktionalität ist in Windows 8 und höher deaktiviert, wenn Secure Boot aktiviert ist.

Schutzempfehlungen: Verwenden Sie eine Betriebssystemversion, die nicht früher als Windows 8 ist, und aktivieren Sie den sicheren Start. Verwenden Sie alle möglichen Mittel, um potenziell gefährliche Software zu blockieren und unbekannte DLLs wie AppLocker und DeviceGuard herunterzuladen.

Missbrauch des Anwendungskompatibilitäts-Subsystems (Application Shimming)


System: Windows
Rechte: Administrator
Beschreibung: Microsoft Windows Application Compatibility Infrastructure / Framework wurde erstellt, um die Kompatibilität von Programmen mit Windows-Updates und Änderungen des Betriebssystemcodes sicherzustellen. Das Kompatibilitätssystem verwendet die sogenannten Shim ("Gaskets") - Bibliotheken, die als Puffer zwischen dem Programm und dem Betriebssystem fungieren. Mithilfe des Shim-Cache ermittelt das System den Bedarf an Shim-Dichtungen (gespeichert als SDB-Datenbank). In verschiedenen SDB-Dateien werden verschiedene Verfahren zum Abfangen, Verarbeiten und anschließenden Umleiten von Anwendungscode an das Betriebssystem gespeichert. Die Liste aller vom Installationsprogramm (sdbinst.exe) installierten Shim-Dichtungen wird standardmäßig gespeichert in:
  • % WINDIR% \ AppPatch \ sysmain.sdb ;
  • HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ InstalledSDB .

Benutzerdefinierte Shim-Datenbanken werden gespeichert in:
  • % WINDIR% \ AppPatch [64] \ Custom;
  • HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ AppCompatFlags \ Custom .

Um den Schutz im Benutzermodus zu gewährleisten, ist die Möglichkeit zum Ändern des Betriebssystemkerns mithilfe von Shim-Gaskets ausgeschlossen, und für die Installation sind Administratorrechte erforderlich. Einige Shim-Pads können jedoch verwendet werden, um die Benutzerkontensteuerung (User Account Control, UAC), die DLL-Injection, die Deaktivierung der Verhinderung der Datenausführung und die Behandlung von Architekturausnahmen sowie das Abfangen von Speicheradressen zu umgehen. Ein Angreifer, der Shim-Gaskets verwendet, kann die Berechtigungen erhöhen, Backdoors installieren und den Betriebssystemschutz deaktivieren, z. B. Windows Defender.

Schutzempfehlungen : Es gibt nicht viele Möglichkeiten, das Shiming von Anwendungen zu verhindern. Das Deaktivieren der Anwendungskompatibilität wird nicht empfohlen, um Probleme mit der Stabilität des Betriebssystems zu vermeiden. Microsoft hat KB3045645 veröffentlicht , mit dem das Flag "Auto-Elevation" in der Datei "sdbinst.exe" entfernt wird, um die Verwendung des Shim-Systems zur Umgehung der Benutzerkontensteuerung zu verhindern.

Benutzerkontensteuerung umgehen


System: Windows
Rechte: Benutzer, Administrator
Beschreibung: Es gibt viele Möglichkeiten, die Benutzerkontensteuerung zu umgehen, von denen die häufigsten im UACMe- Projekt implementiert sind. Regelmäßig werden neue Möglichkeiten zur Umgehung der Benutzerkontensteuerung entdeckt, z. B. der Missbrauch der Systemanwendung eventvwr.exe , mit der eine Binärdatei oder ein Skript mit erhöhten Rechten ausgeführt werden kann. Schädliche Programme können auch in vertrauenswürdige Prozesse eingebettet werden, durch die die Benutzerkontensteuerung die Eskalation von Berechtigungen ermöglicht, ohne einen Benutzer dazu aufzufordern.
Um die Benutzerkontensteuerung mithilfe von eventvwr.exe zu umgehen, wird der Schlüssel in der Windows-Registrierung geändert:
[HKEY_CURRENT_USER] \ Software \ Classes \ mscfile \ shell \ open \ Befehl .
Um die Benutzerkontensteuerung mit sdclt.exe zu umgehen, werden die Schlüssel in der Windows-Registrierung geändert:
[HKEY_CURRENT_USER] \ Software \ Microsoft \ Windows \ CurrentVersion \ App Paths \ control.exe;
[HKEY_CURRENT_USER] \ Software \ Classes \ exefile \ shell \ runas \ command \ isolationCommand.

Schutzempfehlungen: Entfernen Sie Benutzer aus der lokalen Administratorgruppe auf den geschützten Systemen. Aktivieren Sie nach Möglichkeit die höchste Schutzstufe in den UAC-Einstellungen.

Abfangen der DLL-Suche (Hijacking der DLL-Suchreihenfolge)


System: Windows
Rechte: Benutzer, Administrator, System
Beschreibung: Die Technik besteht darin, Schwachstellen im Algorithmus auszunutzen, um von den Anwendungen die DLL-Dateien zu finden, die sie zum Arbeiten benötigen ( MSA2269637 ). Häufig ist das DLL-Suchverzeichnis das Arbeitsverzeichnis des Programms, sodass Angreifer die Quell-DLL durch eine böswillige mit demselben Dateinamen ersetzen können.
Remote-Angriffe auf DLL-Suchen können ausgeführt werden, wenn das Programm sein aktuelles Verzeichnis in einem Remote-Verzeichnis installiert, z. B. einer Netzwerkfreigabe. Außerdem können Angreifer die Methode zum Suchen und Laden von DLLs direkt ändern, indem sie .manifest- oder .local-Dateien ersetzen, die DLL-Suchparameter beschreiben. Wenn das angegriffene Programm mit einem hohen Maß an Berechtigungen arbeitet, wird die von ihm geladene schädliche DLL auch mit hohen Rechten ausgeführt. In diesem Fall kann die Technik verwendet werden, um die Berechtigungen des Benutzers für den Administrator oder das System zu erhöhen.

Schutzempfehlungen : Verhindern Sie das Laden von Remote-DLLs (standardmäßig in Windows Server 2012+ aktiviert und mit Updates für XP + und Server 2003+ verfügbar). Aktiviert den sicheren Suchmodus für DLLs, wodurch Suchverzeichnisse auf Verzeichnisse wie % SYSTEMROOT% beschränkt werden, bevor eine DLL-Suche im aktuellen Anwendungsverzeichnis durchgeführt wird.
Aktivieren des sicheren DLL-Suchmodus:
Computerkonfiguration> [Richtlinien]> Administrative Vorlagen> MSS (Legacy): MSS: (SafeDllSearchMode) Aktivieren Sie den sicheren DLL-Suchmodus.
Entsprechender Registrierungsschlüssel:
HKLM \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ SafeDLLSearchMode.

Überlegen Sie, ob Sie ein geschütztes System prüfen möchten, um DLL-Mängel mithilfe von Tools wie PowerUP in PowerSploit zu beheben. Vergessen Sie nicht, schädliche und potenziell gefährliche Software zu blockieren und die Empfehlungen von Microsoft zu befolgen .

Abfangen der Dylib-Suche (Dylib-Hijacking)


System: macOS
Rechte: Benutzer
Beschreibung: Die Technik basiert auf Schwachstellen in den Suchalgorithmen der dynamischen Dylib-Bibliothek unter MacOS und OS X. Unter dem Strich wird die von der angegriffenen Anwendung geladene Dylib ermittelt und anschließend die bösartige Version der gleichnamigen Dylib im Arbeitsverzeichnis der Anwendung abgelegt. Dadurch lädt die Anwendung dylib, das sich im Arbeitsverzeichnis des Programms befindet. In diesem Fall wird die böswillige Dylib mit den Zugriffsrechten der angegriffenen Anwendung ausgeführt.

Sicherheitstipps : Verhindern Sie, dass Benutzer Dateien in Dylib-Suchverzeichnisse schreiben. Überprüfen Sie Schwachstellen mit dem Dylib Hijacking Scanner von Objective-See.

Ausbeutung für die Eskalation von Privilegien


System: Windows, Linux, MacOS
Rechte: Benutzer
Beschreibung: Gegner können die Berechtigungen im angegriffenen System mithilfe von Sicherheitslücken in der Software erhöhen.

Schutzempfehlungen: Regelmäßige Software-Updates auf allen geschützten Arbeitsstationen, Servern, Netzwerkgeräten und anderen Geräten, die mit dem geschützten Netzwerk verbunden sind. Analysieren Sie die Arten von Bedrohungen, Schwachstellen und Exploit-Programmen, die für die geschützte Organisation verwendet werden können. Exploit-Schutzsysteme wie Windows Defender Exploit Guard (WDEG) für Windows 10 oder das Enhanced Mitigation Experience Toolkit (EMET) für frühere Windows-Versionen werden ebenfalls empfohlen.

h3 EWM-Injektion (Extra Window Memory Injection)
System: Windows
Rechte: Administrator, System
Beschreibung: Die Technik ist der Missbrauch von zusätzlichem Windows-Fensterspeicher, dem sogenannten Extra Window Memory (EWM). Die EWM-Größe beträgt 40 Byte, eignet sich zum Speichern eines 32-Bit-Zeigers und wird häufig verwendet, um einen Verweis auf Prozeduren anzugeben. Schadprogramme während der Angriffskette können einen Zeiger auf Schadcode im EWM platzieren, der anschließend vom infizierten Anwendungsprozess gestartet wird.

Schutzempfehlungen: Da EWM-Injektionstechniken auf dem Missbrauch von Betriebssystementwicklungsfunktionen beruhen, sollten Schutzbemühungen darauf gerichtet sein, den Start von Schadprogrammen und Schadwerkzeugen zu verhindern. Es wird empfohlen, potenziell gefährliche Software mithilfe von AppLocker, Whitelist-Anwendungen oder Richtlinien zur Einschränkung von Software zu identifizieren und zu blockieren.

Nachteile von Berechtigungen auf Dateisystemebene (Schwäche der Dateisystemberechtigungen)


System: Windows
Rechte: Benutzer, Administrator
Beschreibung: Das Wesentliche der Technik ist das Ersetzen von ausführbaren Dateien, die automatisch von verschiedenen Prozessen gestartet werden (z. B. beim Hochfahren des Betriebssystems oder zu einem bestimmten Zeitpunkt, wenn die Rechte an den ausführbaren Dateien falsch konfiguriert sind). Nach dem Spoofing wird die schädliche Datei mit den Prozessrechten gestartet. Wenn der Prozess also eine höhere Zugriffsebene hat, kann der Angreifer die Berechtigungen eskalieren. Bei dieser Technik können Angreifer versuchen, die Windows-Dienst-Binärdateien zu manipulieren.
Eine andere Variante des Angriffs ist mit den Mängeln der Algorithmen bei der Arbeit selbstextrahierender Installateure verbunden. Während des Installationsvorgangs entpacken Installationsprogramme häufig verschiedene nützliche Dateien, einschließlich DLL und EXE, in das Verzeichnis% TEMP%. Sie legen jedoch möglicherweise nicht die entsprechenden Berechtigungen fest, um den Zugriff auf die entpackten Dateien einzuschränken, wodurch Angreifer das Spoofing von Dateien durchführen können. Erhöhen Sie daher die Berechtigungen oder umgehen Sie die Kontokontrolle Einige Installationsprogramme werden mit erweiterten Berechtigungen ausgeführt.

Schutzempfehlungen: Beschränken Sie die Kontoberechtigungen so, dass nur Administratoren Dienste verwalten und mit den von den Diensten verwendeten Binärdateien interagieren können. Deaktivieren Sie die Eskalationsoptionen für UAC-Berechtigungen für Standardbenutzer. UAC-Einstellungen werden im folgenden Registrierungsschlüssel gespeichert:
  • [HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System] .

Um Anforderungen zur Eskalation von Berechtigungen automatisch abzulehnen, müssen Sie einen Schlüssel hinzufügen:
  • "ConsentPromptBehaviorUser" = dword: 00000000.

Um die Arbeit der Installateure zu steuern, müssen Sie einen Schlüssel hinzufügen:
  • "EnableInstallerDetection" = dword: 00000001 , für dessen Installation ein Kennwort erforderlich ist.


Abfangen von Windows API-Funktionsaufrufen (Hooking)


System: Windows
Rechte: Administrator, System
Beschreibung: Windows-API-Funktionen werden normalerweise in DLLs gespeichert. Die Technik des Hookens besteht darin, Aufrufe an API-Funktionen umzuleiten, indem:
  • Hook-Prozeduren - in das Betriebssystem integrierte Prozeduren, die Code ausführen, wenn verschiedene Ereignisse aufgerufen werden, z. B. Tastenanschläge oder Bewegen der Maus.
  • Änderungen an der Adresstabelle (IAT), in der Zeiger auf API-Funktionen gespeichert sind. Auf diese Weise können Sie die angegriffene Anwendung „austricksen“ und eine böswillige Funktion starten.
  • Direkte Funktionsänderung (Spleißen), bei der die ersten 5 Bytes der Funktion geändert werden, stattdessen wird der Übergang zu einer vom Angreifer bestimmten böswilligen oder anderen Funktion eingefügt.

Wie bei Injektionen können Angreifer mithilfe von Hooking schädlichen Code ausführen, dessen Ausführung maskieren, auf den Speicher des angegriffenen Prozesses zugreifen und die Berechtigungen erhöhen. Angreifer können API-Aufrufe erfassen, die Parameter enthalten, die Authentifizierungsdaten enthalten. Das Hooking wird normalerweise von Rootkits verwendet, um böswillige Aktivitäten im System zu verbergen.

Schutzempfehlungen: Das Abfangen von Ereignissen im Betriebssystem ist Teil des normalen Betriebs des Systems. Daher kann jede Einschränkung dieser Funktionalität die Stabilität legitimer Anwendungen wie Antivirensoftware beeinträchtigen. Die Bemühungen, den Einsatz von Abfangtechniken zu verhindern, müssen sich auf die früheren Phasen der Angriffskette konzentrieren. Sie können böswillige Hooking-Aktivitäten erkennen, indem Sie Aufrufe der Funktionen SetWindowsHookEx und SetWinEventHook überwachen, Rootkit-Detektoren verwenden und anomales Verhalten von Prozessen analysieren.

IFEO-Injektion (Injection der Ausführungsoptionen für Bilddateien)


System: Windows
Rechte: Administrator, Systembeschreibung
: Mit dem IFEO-Mechanismus (Image File Execution Options) können Sie einen Programmdebugger anstelle eines Programms ausführen, das zuvor vom Entwickler in der Registrierung angegeben wurde:
  • HKLM \ Software \ Microsoft \ Windows NT \ CurrentVersion \ Ausführungsoptionen für Image-Dateien / [ausführbare Datei]
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ Windows NT \ CurrentVersion \ Ausführungsoptionen für Image-Dateien \ [ausführbare Datei] , wobei [ausführbare Datei] die ausführbare Binärdatei des Debuggers ist.

Wie bei Injektionen kann der Wert [ausführbare Datei] missbraucht werden, indem beliebiger Code ausgeführt wird, um die Berechtigungen zu erhöhen oder im System Fuß zu fassen. Schädliche Programme können IFEO verwenden, um den Schutz zu umgehen, indem sie Debugger registrieren, die verschiedene System- und Sicherheitsanwendungen umleiten und ablehnen.

Schutzempfehlungen: Die beschriebene Technik basiert auf dem Missbrauch regulärer Betriebssystementwicklungstools. Daher können Einschränkungen zu Instabilität legitimer Software führen, z. B. Sicherheitsanwendungen. Die Bemühungen, die Verwendung von IFEO-Injektionstechniken zu verhindern, müssen sich auf die früheren Stadien der Angriffskette konzentrieren. Sie können einen solchen Angriff erkennen, indem Sie Prozesse mit Debug_process und überwachenDebug_only_this_process .

Daemon starten (Daemon starten) >


System: macOS
Rechte: Administrator
Beschreibung: Die Technik besteht darin, die Parameter der Systemstartdienste - Launch Daemon, die in den Plist-Dateien angegeben sind, vom Angreifer zu ändern. Beim Systemstart lädt der Launchd-Prozess die Parameter von Diensten (Daemons) aus Plist-Dateien in den folgenden Verzeichnissen:
  • / System / Library / LaunchDeamons;
  • / Library / LaunchDeamons.

Launch Daemon kann mit Administratorrechten erstellt, aber unter dem Root-Konto ausgeführt werden, sodass ein Angreifer die Berechtigungen eskalieren kann. Die Berechtigungen der plist-Dateien müssen root sein. Das darin angegebene Skript oder Programm verfügt jedoch möglicherweise über weniger strenge Berechtigungen. Daher kann ein Angreifer die in plist angegebenen ausführbaren Dateien und damit die aktuellen Systemdienste ändern, um das System zu sichern oder Berechtigungen zu eskalieren.

Sicherheitstipps: Beschränken Sie die Benutzerrechte, damit nur autorisierte Administratoren den Startdämon erstellen können. Überwachen Sie mit Anwendungen wie KnockKnock, wie Plist-Dateien auf Ihrem System erstellt werden.

Neue Dienste


System: Windows-
Rechte: Administrator, Systembeschreibung
: Benennen Sie den Zugriff auf das System. Angreifer können neue Dienste erstellen und diese so konfigurieren, dass sie automatisch gestartet werden. Der Dienstname kann mit betriebssystemspezifischen Namen maskiert werden. Dienste können mit Administratorrechten erstellt, aber im Auftrag des Systems ausgeführt werden. Dienste können über die Befehlszeile mithilfe von RAS-Tools mit Interoperabilität mit der Windows-API oder mithilfe von Standard-Windows- und PowerShell-Verwaltungstools erstellt werden.

Sicherheitsempfehlungen: Beschränken Sie die Benutzerrechte zum Erstellen neuer Dienste, sodass dies nur autorisierten Administratoren möglich ist. Wenden Sie die AppLocker- und Softwareeinschränkungsrichtlinie an .

Pfadabfangen


System: Windows-
Rechte: Benutzer, Administrator, System
Beschreibung: Beim Abfangen eines Pfads wird die ausführbare Datei in einem Verzeichnis abgelegt, von dem aus die Anwendung sie anstelle der Zieldatei startet. Ein Angreifer kann die folgenden Methoden anwenden:
  • Nicht vorhandene Pfade. Die Pfade zu den ausführbaren Dateien des Dienstes werden in den Registrierungsschlüsseln gespeichert und können einen oder mehrere Leerzeichen enthalten, z. B. C: \ Programme \ service.exe . Wenn der Angreifer die Datei C: \ Program.exe im System erstellt , wird sie von Windows gestartet, anstatt den Pfad zu verarbeiten Service-Zieldatei.
  • . PATH C:\example c:\Windows\System32 C:\example\net.exe , net, C:\example\net.exe , c:\Windows\System32\net.exe .
  • (Search order hijacking). , Windows, , , . , «example.exe» cmd.exe net use. example.exe net.exe c:\Windows\System32\net.exe . , net.com net.exe, Windows net.com , PATHEXT.

Das Abfangen der Dateisuchreihenfolge wird auch zum Ausführen von DLLs mithilfe der Search Hijacking DLL- Technik verwendet .

Sicherheitsempfehlungen: Anführungszeichen geben Pfade an, die in Konfigurationsdateien, Skripten, der PATH-Variablen, Diensteinstellungen und Verknüpfungen angegeben sind. Beachten Sie die Suchreihenfolge der ausführbaren Dateien und verwenden Sie nur vollständige Pfade. Bereinigen Sie die alten Registrierungsschlüssel, die von der Remote-Software übrig geblieben sind, sodass in der Registrierung keine Schlüssel mehr vorhanden sind, die auf nicht vorhandene Dateien verweisen. Richten Sie ein Schreibverbot für Benutzer des Systems in das Stammverzeichnis C: \ und in die Windows-Systemverzeichnisse ein und beschränken Sie die Schreibberechtigungen auf Verzeichnisse mit ausführbaren Dateien.

Änderung von Plist-Dateien (Plist-Änderung)


System: macOS
Rechte: Benutzer, Administrator
Beschreibung: Angreifer können plist-Dateien ändern und in ihnen ihren eigenen Code für die Ausführung im Kontext eines anderen Benutzers angeben. Die plist-Eigenschaftendateien in / Library / Preferences werden mit erhöhten Berechtigungen ausgeführt, und die plist aus ~ / Library / Preferences werden mit Benutzerberechtigungen ausgeführt. Sicherheitstipps

: Verhindern Sie, dass Plist-Dateien geändert werden, indem Sie sie schreibgeschützt machen.

Änderung von Port-Monitoren im Print Manager (Port-Monitore)


System: Windows-
Rechte: Administrator,
Systembeschreibung: Ein Angreifer kann die Ausführung einer beliebigen DLL im Namen des Systems bei jedem Start von Windows unter Missbrauch der Print Manager-Einstellungen (Spoolsv.exe) organisieren. Für die Interaktion mit Druckgeräten verwendet Spoolsv.exe die sogenannten Port-Monitore. Hierbei handelt es sich um DLL-Bibliotheken, die Befehle auf niedriger Ebene verwenden, um über LAN, USB, LPT oder COM-Schnittstelle an Druckgeräte gesendet zu werden. Die oben genannten DLLs werden in C: \ windows \ system32 gespeichert und in der Registrierung registriert:
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Print \ Monitors .
Port Monitor kann mithilfe der AddMonitor-API oder direkt durch Bearbeiten des obigen Registrierungsschlüssels installiert werden.

Schutzempfehlungen: Organisieren Sie das Blockieren potenziell gefährlicher Software und verwenden Sie Tools zur Steuerung des Anwendungsstarts.

Code-Injektion in einen Prozess (Prozess-Injektion), zehn Prozess-Injektionstechniken


System: Windows, Linux, macOS
Rechte: Benutzer, Administrator, System, Root
Beschreibung: Die Prozessinjektion ist eine Methode zum Ausführen von beliebigem Code im Adressraum eines separaten lebenden Prozesses. Durch Ausführen von Code im Kontext eines anderen Prozesses können Sie auf den Speicher des injizierten Prozesses, auf System- / Netzwerkressourcen und möglicherweise auf erhöhte Berechtigungen zugreifen. Prozessinjektionen können auch verwendet werden, um eine mögliche Erkennung böswilliger Aktivitäten durch Sicherheitsmaßnahmen zu vermeiden. Techniken zum Implementieren von Injektionen in Prozesse basieren auf dem Missbrauch verschiedener Mechanismen, die ein Multithreading der Programmausführung im Betriebssystem sicherstellen. Im Folgenden finden Sie einige Ansätze zum Einfügen von Code in einen Prozess.

Windows
• DLL-Injektionen. Sie werden ausgeführt, indem der Pfad zur schädlichen DLL innerhalb des Prozesses geschrieben und dann ausgeführt wird, indem ein Remote-Thread erstellt wird (Remote-Thread - ein Thread, der im virtuellen Adressraum eines anderen Prozesses ausgeführt wird). Mit anderen Worten, die Malware schreibt die DLL auf die Festplatte und verwendet dann eine Funktion wie CreateRemoteTread, die die LoadLibrary-Funktion im injizierten Prozess aufruft.
• PE-Injektionen (Portable Executeable Injection) basieren auf dem Missbrauch von Speicherausführungsfunktionen von PE-Dateien wie DLL oder EXE. Schädlicher Code wird in den Prozess geschrieben, ohne dass Dateien auf die Festplatte geschrieben werden. Anschließend wird die Ausführung mithilfe des zusätzlichen Codes oder durch Erstellen eines Remote-Streams aufgerufen.
• Beim Hijacking der Thread-Ausführung werden schädlicher Code oder DLL-Pfade direkt in den Prozessthread eingefügt. Wie bei der Process Hollowing-Technik muss der Durchfluss zuerst unterbrochen werden.
• Bei der Injektion in eine APC-Injektion (Asynchronous Procedure Call) wird bösartiger Code in die APC-Warteschlange eines Prozessthreads eingebettet. Eine der Methoden der APC-Injektion, die als „Earle Bird-Injektion“ bezeichnet wird, umfasst die Erstellung eines angehaltenen Prozesses, in dem bösartiger Code geschrieben und über APC zum Prozesseintrittspunkt gestartet werden kann. AtomBombing ist eine weitere Injection-Option, die APC verwendet, um bösartigen Code aufzurufen, der zuvor in die globale Atomtabelle geschrieben wurde.
• Bei TLS-Injektionen (Thread Local Storage) werden Speicherzeiger in einer ausführbaren PE-Datei bearbeitet, um den Prozess auf schädlichen Code umzuleiten.

Mac und Linux
• Mit den Systemvariablen LD_RPELOAD, LD_LIBRARY_PATH (Linux), DYLIB_INSERT_LIBRARIES (macOS X) oder der dlfcn-Anwendungsprogrammierschnittstelle (API) kann eine Bibliothek (gemeinsam genutztes Objekt) dynamisch in einen Prozess geladen werden, von dem aus wiederum API-Aufrufe abgefangen werden können Prozesse ausführen.
• Der Ptrace-Systemaufruf kann verwendet werden, um eine Verbindung zu einem laufenden Prozess herzustellen und ihn zu ändern, während er ausgeführt wird.
• / proc / [pid] / mem bietet Zugriff auf den Prozessspeicher und kann zum Lesen / Schreiben beliebiger Daten verwendet werden. Diese Methode wird jedoch aufgrund der Komplexität ihrer Implementierung selten verwendet.
• Mit der VDSO-Erfassung (Virtual Dynamic Shared Object) können Sie Code einfügen, während Sie ELF-Binärdateien ausführen, indem Sie die Code-Stubs von linux-vdso.so bearbeiten.
Schädliche Programme verwenden normalerweise die Code-Injektion in einen Prozess, um auf Systemressourcen zuzugreifen. Dadurch kann ein Angreifer im System Fuß fassen und andere Änderungen in der angegriffenen Umgebung vornehmen. Komplexere Proben können mehrere Prozessinjektionen durchführen, um die Erkennung zu erschweren.

Schutzempfehlungen:Methoden zum Einfügen von Code in Prozesse basieren auf dem Missbrauch regulärer Betriebssystemfunktionen, die sich direkt auf den instabilen Betrieb legitimer Software und Sicherheitsprodukte auswirken können. Die Bemühungen, den Einsatz von Abfangtechniken zu verhindern, müssen sich auf die früheren Phasen der Angriffskette konzentrieren. Verwenden Sie Tools, um potenziell gefährliche Software wie AppLocker zu blockieren. Verwenden Sie Yama als vorbeugende Maßnahme gegen Code-Injection in ptrace und beschränken Sie die Verwendung von ptrace nur auf privilegierte Benutzer. Zusätzliche Sicherheitsmaßnahmen können die Bereitstellung von Kernel-Sicherheitsmodulen umfassen, die eine erweiterte Zugriffskontrolle und Prozessbeschränkung bieten. Zu diesen Tools gehören SELinux, grsecurity und AppArmor.

SID-Verlaufsinjektion


System: Windows
Rechte: Administrator, System
Beschreibung: Immer wenn ein Objekt von einer Domäne in eine andere verschoben wird, wird eine neue SID erstellt, die zur Hauptobjekt-ID wird. Frühere SIDs werden weiterhin in der Eigenschaft sIDHistory gespeichert, wodurch sichergestellt wird, dass die Rechte, die das Objekt vor der domänenübergreifenden Migration hatte, erhalten bleiben. Angreifer mit Administratorrechten können zuvor gesammelte SIDs in den SID-Verlauf einfügen, um eine Aktion für privilegiertere Zugriffsgruppen oder Konten wie Domänenadministratoren auszuführen.

Schutzempfehlungen:Unter Windows Server OS Version 2003 und höher ist die SID-Filterung standardmäßig aktiviert. Dabei werden alle SIDs mit Ausnahme einer vertrauenswürdigen Domäne gelöscht oder gefiltert. Diese Option kann jedoch absichtlich deaktiviert werden, um den domänenübergreifenden Zugriff zu ermöglichen.
Die wichtigsten Methoden zum Filtern der SID:
• Deaktivieren von SIDHistory in den Vertrauenseinstellungen (Vertrauensstellungen) zwischen Domänengesamtstrukturen mit dem folgenden Befehl: netdom trust / domain: / EnableSIDHistory: no ;
• Anwendung der SID-Filterquarantäne . Dadurch wird sichergestellt, dass sich ein Objekt, das eine andere SID als die vertrauenswürdige Domäne enthält, nicht bei der vertrauenswürdigen Domäne authentifizieren kann. Die SID-Filter-Quarantäne wird durch Ausführen des folgenden Befehls auf externe Vertrauensstellungen angewendet:Netdom Trust / Domain: / Quarantäne: Ja .
Die Verwendung der SID-Filterung zwischen Domänen in derselben Gesamtstruktur wird nicht empfohlen. Wenn die Domäne in der Gesamtstruktur unzuverlässig ist, sollte sie kein Mitglied der Gesamtstruktur sein. In einer solchen Situation müssen Sie zuerst die vertrauenswürdigen und unzuverlässigen Domänen in separate Gesamtstrukturen aufteilen und dann die SID-Filterung für Vertrauensstellungen zwischen Gesamtstrukturen anwenden.

Geplante Aufgabe


System: Windows-
Rechte: Benutzer, Administrator, Systembeschreibung
: Dienstprogramme wie at, schtasks und der Windows-Taskplaner können verwendet werden, um Programme und Skripts so zu planen, dass sie zu einem bestimmten Datum und einer bestimmten Uhrzeit ausgeführt werden. Eine Aufgabe kann auf einem Remote-System geplant werden, vorausgesetzt, RPC wird zur Authentifizierung verwendet und die Drucker- und Dateifreigabe ist aktiviert. Das Planen von Aufgaben auf einem Remote-System erfordert Administratorrechte. Ein Angreifer kann die Remotecodeausführung verwenden, um Systemberechtigungen zu erlangen oder einen Prozess unter einem bestimmten Konto zu starten.

Schutzempfehlungen:Benutzerrechte einschränken. Die Verwendung von Tools wie dem PowerUP-Modul in PowerSploit, mit denen Schwachstellen bei der Lösung geplanter Aufgaben gefunden werden können. Deaktivieren der Möglichkeit, Aufgaben im Namen des Systems zu starten, Deaktivieren der Option " Serverbetreibern erlauben, Aufgaben zu planen " in der Sicherheitsrichtlinie und Aktivieren der Einstellung " Zuweisung von Benutzerrechten: Erhöhen der Planungspriorität ".

Schwachstellen in den Berechtigungen für Serviceregistrierungen Schwachstellen


System: Windows-
Rechte: Administrator,
Systembeschreibung: Wenn die Berechtigungen von Benutzern und Gruppen das Ändern der Werte von Schlüsseln ermöglichen, in denen die Dienstparameter in der Windows-Registrierung gespeichert sind, können Angreifer die Schlüssel, in denen die Pfade zu ausführbaren Dateien zum Starten von Diensten gespeichert sind, direkt ändern oder verschiedene Verwaltungstools verwenden Dienste - sc.exe, PowerShell oder Reg. Angreifer können auch Parameter ändern, die sich auf einen Dienstfehler beziehen, z. B. FailureCommand, und einen Befehl angeben, der im Falle eines Dienstfehlers oder einer vorsätzlichen Beschädigung ausgeführt wird. Dienstparameter werden in HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services gespeichert .

Schutzempfehlungen:Stellen Sie sicher, dass Benutzer des geschützten Systems keine Schlüssel in der Registrierung ändern können, in denen die Parameter der Systemkomponenten gespeichert sind. Verwenden Sie alle möglichen Mittel zum Blockieren potenziell gefährlicher Software, z. B. Windows AppLocker.

Setuid und Setgid


System: Linux, macOS
Rechte: Benutzer
Beschreibung:Setuid und Setgid sind Berechtigungsflags auf Unix-Systemen, mit denen der Benutzer ausführbare Dateien mit den Rechten des Eigentümers oder der Gruppe der ausführbaren Datei ausführen kann. Wenn die Anwendung als root ausgeführt werden muss, kann der Benutzer anstelle eines Eintrags in der sudo-Datei das Flag Setuid oder Setgid angeben. Gegner können die Flags Setuid und Setgid missbrauchen, um ein Shell-Escape auszuführen (wenn eine Konsolenanwendung die in einer anderen Anwendung geöffnete Datei verwendet) oder die Sicherheitsanfälligkeit der Anwendung mit den Flags Setuid und Setgid ausnutzen und Code im Kontext verschiedener Benutzer ausführen. Wenn Sie die Dateiattribute mit dem Befehl ls -l anzeigen, werden die obigen Flags durch das Symbol "s" anstelle von "x" angezeigt. Das Dienstprogramm chmod kann die Flags Setuid und Setgid mit dem Befehl chmod 4777 [file] setzen.oder chmod u + s [Datei] .

Schutzempfehlungen: Halten Sie die Anzahl der Programme mit den Flags Setuid und Setgid auf ein Minimum.

Startelemente


System: macOS
Rechte: Administrator
Beschreibung: Ein Angreifer kann den veralteten, aber immer noch ausgeführten macOS Sierra-Mechanismus zum automatischen Starten von Anwendungen mithilfe von StartupItems verwenden, um den Start seines Codes mit Root-Rechten beim Start zu konfigurieren. StartupItems ist ein Verzeichnis in / Library / Startupitems , ein Befehlsskript und die Eigenschaftendatei StartupParameters.plist. Die Skript- und Eigenschaftendatei muss sich oben in der Hierarchie befinden: / Library / Startupitems / [MyStartupItem] . Schutzempfehlungen

: Da der StartupItems-Mechanismus veraltet ist, können Sie durch das Verbot des Schreibens in das Verzeichnis / Library / Startupitems / das Erstellen von Startelementen vermeiden.

Sudo


System: Linux, macOS
Rechte: Benutzer
Beschreibung: Gegner können Sudo-Konfigurationsfehler ausnutzen, um Befehle für andere Benutzer auszuführen oder Prozesse mit höheren Berechtigungen zu erzeugen. Sudo-Optionen werden in der Datei / etc / sudoers gespeichert. Zum Bearbeiten dieser Datei sind erhöhte Berechtigungen erforderlich. In der sudoers-Datei wird beschrieben, welche Befehle Benutzer für andere Benutzer oder Gruppen ausführen können. Auf diese Weise können Benutzer die meiste Zeit mit minimalen Berechtigungen arbeiten und die Berechtigungen nur bei Bedarf erhöhen. In der sudoers-Datei können Sie jedoch Benutzer angeben, für die kein Kennwort angefordert wird: Benutzername ALL = (ALL) NOPASSWD: ALL .

Sicherheitstipps: Die sudoers-Datei sollte so bearbeitet werden, dass Benutzer bei der Ausführung von sudo immer ein Kennwort eingeben. Auditd unter Linux kann eine Warnung generieren, wenn die tatsächlichen und effektiven Benutzer-IDs nicht übereinstimmen (dies geschieht, wenn der Benutzer sudo verwendet).

Sudo-Caching


System: Linux, MacOS
Rechte: Benutzer
Beschreibung: Verschiedene Malware-Programme wie OCX Proton Malware können Sudo-Einstellungen missbrauchen, um Code als Root auszuführen, ohne ein Kennwort einzugeben. Da das sudo-Toolkit für die Systemadministration erstellt wurde, verfügt es über einige nützliche Funktionen wie timestamp_timeout. Dieser Parameter speichert die Zeit in Minuten zwischen den sudo-Starts, in denen der Befehl nicht zur Eingabe des Root-Kennworts auffordert. Sudo kann seit einiger Zeit Anmeldeinformationen zwischenspeichern. Der Zeitstempel des letzten Starts von Sudo wird in / var / db / sudo gespeichert und zur Bestimmung des angegebenen Zeitlimits verwendet. Darüber hinaus gibt es eine Variable tty_tickets , die jede neue Terminalsitzung isoliert verarbeitet, sodass ein Zeitlimit in einer Instanz der Konsole das Zeitlimit in einer anderen Instanz nicht beeinflusst.

Schutzempfehlungen: Setzen Sie den Parameter timestamp_timeout = 0 so, dass das System bei jeder Ausführung von sudo ein Root-Passwort benötigt. Aktivieren Sie den Parameter tty_tickets , um zu verhindern, dass der Angriff über Befehlszeilensitzungen implementiert wird.

Gültige Konten


Beschreibung: Angreifer können die Anmeldeinformationen eines bestimmten Benutzers oder Dienstkontos mithilfe der Zugriffstechniken für Anmeldeinformationen stehlen und die Anmeldeinformationen während des Intelligenzprozesses mithilfe von Social Engineering erfassen. Kompromittierte Anmeldeinformationen können verwendet werden, um Zugriffskontrollsysteme zu umgehen und Zugriff auf Remotesysteme und externe Dienste wie VPN, OWA, Remotedesktop zu erhalten oder um erhöhte Berechtigungen für bestimmte Systeme und Bereiche des Netzwerks zu erhalten. Wenn das Szenario erfolgreich ist, können Angreifer Malware ablehnen, um die Erkennung zu erschweren. Außerdem können Angreifer Konten mit vordefinierten Namen und Kennwörtern erstellen, um den Sicherungszugriff aufrechtzuerhalten, falls erfolglos versucht wird, andere Mittel zu verwenden.

Schutzempfehlungen: Wenden Sie eine Kennwortrichtlinie an und befolgen Sie die Empfehlungen zum Entwerfen und Verwalten eines Unternehmensnetzwerks, um die Verwendung privilegierter Konten auf allen Verwaltungsebenen einzuschränken. Regelmäßige Überprüfungen von Domänen- und lokalen Konten und deren Rechten, um diejenigen zu identifizieren, die einem Angreifer einen umfassenden Zugriff ermöglichen könnten. Überwachung der Kontoaktivität mithilfe von SIEM-Systemen.

Web-Shell


System: Windows, Linux, MacOS
Beschreibung: Web Shell kann von einem Angreifer als Gateway für den Zugriff auf Ihr Netzwerk oder als redundanten Zugriff auf das angegriffene System verwendet werden, als Sicherungsmechanismus für die Sicherung im Falle der Erkennung und Blockierung der Hauptzugriffskanäle für die angegriffene Umgebung.

Schutzempfehlungen: Stellen Sie sicher, dass Ihre externen Webserver regelmäßig aktualisiert werden und keine bekannten Sicherheitslücken bekannt sind, durch die Angreifer eine Datei oder ein Skript bei der anschließenden Ausführung auf den Server hochladen können. Stellen Sie sicher, dass die Berechtigungen von Konten und Gruppen mit Serververwaltungsrechten nicht mit den internen Netzwerkkonten übereinstimmen, mit denen Sie sich beim Webserver anmelden, die Web-Shell starten oder eine Verbindung zum Webserver herstellen können. Web Shell ist schwer zu erkennen, weil Sie initiieren keine Verbindungen und ihr Serverteil kann klein und harmlos sein. Beispielsweise sieht die PHP-Version der China Chopper Web Shell wie eine Linie aus:
[? php eval ($ _POST ['password']);]

Source: https://habr.com/ru/post/de428602/


All Articles