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
herpaderping — Process Herpaderping – Proof of Concept, Tool und technischer Deep Dive. Process Herpaderping umgeht Sicherheitslösungen, indem es die Absichten eines Prozesses verschleiert. | Kitploit
Tools/GitHubGitHub/jxy-s/herpaderping
DefensivwerkzeugeExploitationPenetrationstests
GitHubjxy-s/herpaderping

herpaderping

Process Herpaderping – Proof of Concept, Tool und technischer Deep Dive. Process Herpaderping umgeht Sicherheitslösungen, indem es die Absichten eines Prozesses verschleiert.

Repository anzeigen
1.2k224vor 3 JahrenVon 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

Process Herpaderping

Process Herpaderping ist eine Methode, um die Absichten eines Prozesses zu verschleiern, indem der Inhalt auf der Festplatte geändert wird, nachdem das Image gemappt wurde. Dies führt zu seltsamem Verhalten von Sicherheitsprodukten und dem Betriebssystem selbst.

Zusammenfassung

Im Allgemeinen ergreift ein Sicherheitsprodukt Maßnahmen bei der Prozesserstellung, indem es einen Rückruf im Windows-Kernel registriert (PsSetCreateProcessNotifyRoutineEx). Zu diesem Zeitpunkt kann ein Sicherheitsprodukt die Datei überprüfen, die zum Mappen der ausführbaren Datei verwendet wurde, und entscheiden, ob dieser Prozess ausgeführt werden darf. Dieser Kernel-Rückruf wird aufgerufen, wenn der initiale Thread eingefügt wird, nicht wenn das Prozessobjekt erstellt wird.

Aus diesem Grund kann ein Akteur einen Prozess erstellen und mappen, den Inhalt der Datei ändern und dann den initialen Thread erstellen. Ein Produkt, das bei der Erstellungsrückmeldung eine Inspektion durchführt, würde den geänderten Inhalt sehen. Darüber hinaus verwenden einige Produkte einen On-Write-Scan-Ansatz, der darin besteht, Dateischreibvorgänge zu überwachen. Eine bekannte Optimierung besteht darin, zu dokumentieren, dass in die Datei geschrieben wurde, und die eigentliche Inspektion aufzuschieben, bis IRP_MJ_CLEANUP auftritt (z.B. das Dateihandle geschlossen wird). Daher wird ein Akteur, der einen write -> map -> modify -> execute -> close-Workflow verwendet, das On-Write-Scanning umgehen, das ausschließlich auf die Inspektion bei IRP_MJ_CLEANUP angewiesen ist.

Um diese Konvention zu missbrauchen, schreiben wir zunächst eine Binärdatei auf eine Zieldatei auf der Festplatte. Dann mappen wir ein Image der Zieldatei und übergeben es dem Betriebssystem zur Prozesserstellung. Das Betriebssystem mappt freundlicherweise die ursprüngliche Binärdatei für uns. Mit dem vorhandenen Dateihandle, und bevor wir den initialen Thread erstellen, ändern wir den Inhalt der Zieldatei, um die das Image unterstützende Datei zu verschleiern oder zu fälschen. Etwas später erstellen wir den initialen Thread, um die Ausführung der ursprünglichen Binärdatei zu beginnen. Schließlich schließen wir das Handle der Zieldatei. Gehen wir Schritt für Schritt vor:

  1. Schreiben Sie die Ziel-Binärdatei auf die Festplatte, behalten Sie das Handle offen. Dies wird das sein, was im Speicher ausgeführt wird.
  2. Mappen Sie die Datei als Image-Section (NtCreateSection, SEC_IMAGE).
  3. Erstellen Sie das Prozessobjekt mit dem Section-Handle (NtCreateProcessEx).
  4. Mit demselben Handle der Zieldatei verschleiern Sie die Datei auf der Festplatte.
  5. Erstellen Sie den initialen Thread im Prozess (NtCreateThreadEx).
    • An diesem Punkt wird der Prozesserstellungsrückruf im Kernel ausgelöst. Der Inhalt auf der Festplatte stimmt nicht mit dem überein, was gemappt wurde. Die Inspektion der Datei zu diesem Zeitpunkt führt zu einer falschen Zuordnung.
  6. Schließen Sie das Handle. IRP_MJ_CLEANUP wird hier auftreten.
    • Da wir den Inhalt dessen, was ausgeführt wird, verborgen haben, führt die Inspektion zu diesem Zeitpunkt zu einer falschen Zuordnung.

plantuml

root@kitploit:~
@startuml
hide empty description

[*] --> CreateFile
CreateFile --> FileHandle
FileHandle --> Write
FileHandle --> NtCreateSection
Write -[hidden]-> NtCreateSection
NtCreateSection --> SectionHandle
SectionHandle --> NtCreateProcessEx
FileHandle --> Modify
NtCreateProcessEx -[hidden]-> Modify
NtCreateProcessEx --> NtCreateThreadEx
Modify -[hidden]-> NtCreateThreadEx
NtCreateThreadEx --> [*]
FileHandle --> CloseFile
NtCreateThreadEx -[hidden]-> CloseFile
NtCreateThreadEx --> PspCallProcessNotifyRoutines
PspCallProcessNotifyRoutines -[hidden]-> [*]
CloseFile --> IRP_MJ_CLEANUP
IRP_MJ_CLEANUP -[hidden]-> [*]
PspCallProcessNotifyRoutines --> Inspect
PspCallProcessNotifyRoutines -[hidden]-> CloseFile 
IRP_MJ_CLEANUP --> Inspect
Inspect -[hidden]-> [*]

CreateFile : Erstelle Zieldatei, Handle offen halten.
Write : Schreibe Quell-Payload in Zieldatei.
Modify : Verschleiere die Datei auf der Festplatte.
NtCreateSection : Erstelle Section mit Dateihandle.
NtCreateProcessEx : Image-Section für Prozess wird gemappt und im Dateiobjekt zwischengespeichert.
NtCreateThreadEx : Die zwischengespeicherte Section wird verwendet.
NtCreateThreadEx : Prozessbenachrichtigungsroutinen feuern im Kernel.
Inspect : Der Inhalt auf der Festplatte stimmt nicht mit dem Ausgeführten überein. 
Inspect : Die Inspektion der Datei zu diesem Zeitpunkt führt zu falscher Zuordnung.
@enduml

Verhalten

Sie werden im untenstehenden Demo sehen, dass CMD.exe als Ausführungsziel verwendet wird. Der erste Durchlauf überschreibt die Bytes auf der Festplatte mit einem Muster. Der zweite Durchlauf überschreibt CMD.exe mit ProcessHacker.exe. Das Herpaderping-Tool repariert die Binärdatei, um sie so nah wie möglich an ProcessHacker.exe aussehen zu lassen, sogar die ursprüngliche Signatur wird beibehalten. Beachten Sie die mehrfachen Ausführungen derselben Binärdatei und wie der Prozess für den Benutzer im Vergleich zu dem, was in der Datei auf der Festplatte ist, aussieht.

Tiefer eintauchen

Wir haben das Verhalten beobachtet und einiges davon mag überraschend sein. Lassen Sie uns versuchen, dieses Verhalten zu erklären.

Technischer Deep Dive

Hintergrund und Motivation

Beim Entwerfen von Produkten zur Sicherung von Windows-Plattformen sind viele Ingenieure in diesem Bereich (mich eingeschlossen) auf vorgefasste Meinungen darüber gestoßen, wie das Betriebssystem mit Daten umgeht. In diesem Szenario könnte man erwarten, dass die Datei auf der Festplatte "gesperrt" bleibt, wenn der Prozess erstellt wird. Man kann die Datei nicht löschen. Man kann nicht hineinschreiben. Aber man kann sie umbenennen. Wie hier zu sehen ist, kann man unter den richtigen Bedingungen tatsächlich hineinschreiben. Bleiben Sie wachsam in Bezug auf Ihre Annahmen, hinterfragen Sie sie immer und recherchieren Sie.

Die Motivation für diese Forschung entstand, als ich herausfand, wie man eine Analyse durchführt, wenn eine Datei geschrieben wird. Mit einem Hintergrund in der Erforschung von Process Hollowing und Doppelganging hatte ich theoretisiert, dass dies möglich sein könnte. Das Ziel ist es, bessere Sicherheit zu bieten. Man kann kein besseres Schloss bauen, ohne zuerst zu verstehen, wie man das alte bricht.

Ähnliche Techniken

Herpaderping ist ähnlich wie Hollowing und Doppelganging, jedoch gibt es einige wesentliche Unterschiede:

Process Hollowing

Process Hollowing beinhaltet das Modifizieren der gemappten Section vor Beginn der Ausführung, was abstrakt wie folgt aussieht: map -> modify section -> execute. Dieser Workflow führt dazu, dass der beabsichtigte Ausführungsfluss des Hollowed-Prozesses in unbeabsichtigten Code abweicht. Doppelganging könnte als eine Form von Hollowing betrachtet werden. Allerdings ist Hollowing meiner Meinung nach näher an Injection, da Hollowing normalerweise ein explizites Schreiben in den bereits gemappten Code beinhaltet. Dies unterscheidet sich von Herpaderping, wo keine modifizierten Sections vorhanden sind.

Process Doppelganging

Process Doppelganging ist näher an Herpaderping. Doppelganging missbraucht transaktionsbasierte Dateioperationen und umfasst im Allgemeinen diese Schritte: transact -> write -> map -> rollback -> execute. In diesem Workflow erstellt das Betriebssystem die Image-Section und berücksichtigt Transaktionen, sodass die zwischengespeicherte Image-Section letztendlich das ist, was Sie in die Transaktion geschrieben haben. Microsoft hat diese Technik gepatcht. Nun, sie haben den Absturz, den sie verursachte, gepatcht. Vielleicht betrachten sie dies als "legale" Nutzung einer Transaktion. Glücklicherweise erkennt Windows Defender die Doppelganging-Technik. Doppelganging unterscheidet sich von Herpaderping dadurch, dass Herpaderping nicht auf transaktionsbasierten Dateioperationen beruht. Und Defender erkennt Herpaderping nicht.

Vergleich

Zur Referenz, die verallgemeinerten Techniken:

TypTechnik
Hollowingmap -> modify section -> execute
Doppelgangingtransact -> write -> map -> rollback -> execute
Herpaderpingwrite -> map -> modify -> execute -> close

Wir können die Unterschiede hier sehen. Während Herpaderping argumentativ lauter ist als Doppelganging, da die schädlichen Bits tatsächlich auf die Festplatte gelangen, haben wir gesehen, dass Sicherheitsprodukte immer noch nicht in der Lage sind, Herpaderping zu erkennen.

Mögliche Lösung

Es gibt keine klare Lösung hier. Es erscheint vernünftig, dass das Verhindern des Mappens/Cachens einer Image-Section, wenn Schreibzugriff auf die Datei besteht, das Loch schließen sollte. Dies könnte jedoch eine praktikable Lösung sein oder auch nicht.

Eine andere Option könnte sein, die Änderungen an der Datei auf die zwischengespeicherte Image-Section zu übertragen, wenn sie noch nicht in einen Prozess gemappt wurde. Da das Mapping in den neuen Prozess jedoch bei NtCreateProcess erfolgt, ist dies wahrscheinlich keine brauchbare Lösung.

Aus Erkennungssicht gibt es keine gute Möglichkeit, die tatsächlich gemappten Bits zu identifizieren. Die Inspektion bei IRP_MJ_CLEANUP oder einem Rückruf, der bei PsSetCreateProcessNotifyRoutineEx registriert wurde, führt zu falscher Zuordnung, da die Bits auf der Festplatte geändert wurden. Man müsste die Datei aus der erstellten Section wiederherstellen. Es ist erwähnenswert, dass es in Windows 10 einen neuen Rückruf gibt, den Sie für PsSetCreateProcessNotifyRoutineEx2 registrieren können. Dieser leidet jedoch unter demselben Problem wie der vorherige Rückruf: Er wird aufgerufen, wenn der initiale Thread ausgeführt wird, nicht wenn das Prozessobjekt erstellt wird. Microsoft hat PsSetCreateThreadNotifyRoutineEx hinzugefügt, der aufgerufen wird, wenn der initiale Thread eingefügt wird, wenn er mit PsCreateThreadNotifyNonSystem registriert ist, im Gegensatz zu dem Zeitpunkt, an dem er kurz vor der Ausführung steht (wie beim alten Rückruf). Die Erweiterung von PSCREATEPROCESSNOTIFYTYPE, um aufgerufen zu werden, wenn das Prozessobjekt erstellt wird, wird auch nicht helfen; wir haben im Abschnitt Tiefer eintauchen gesehen, dass das Image-Section-Objekt bei NtCreateSection zwischengespeichert wird, nicht bei NtCreateProcess.

Wir können nicht ohne Weiteres identifizieren, was ausgeführt wurde. Wir müssen versuchen, das ausbeuterische Verhalten des Akteurs zu erkennen; ich überlasse die Entdeckung der Verhaltensindikatoren als Übung für den Leser.

Bekannte betroffene Plattformen

Nachfolgend finden Sie eine Liste von Produkten und Windows-Betriebssystemen, die bis zum (31.08.2020) getestet wurden. Die Tests wurden mit einer bekannten schädlichen Binärdatei durchgeführt.

Verantwortungsvolle Offenlegung

Diese Schwachstelle wurde am 17.07.2020 an das Microsoft Security Response Center (MSRC) gemeldet und von MSRC am 22.07.2020 ein Fall eröffnet. MSRC schloss ihre Untersuchung am 25.08.2020 ab und stellte fest, dass die Ergebnisse gültig sind, aber nicht den Schwellenwert für sofortige Wartung erreichen. Der Fall wurde ohne Lösung geschlossen und zur zukünftigen Überprüfung vorgemerkt, ohne Zeitplan.

Wir sind mit der Schwere dieses Fehlers nicht einverstanden; dies wurde MSRC am 27.08.2020 mitgeteilt.

  1. Es gibt ähnliche Schwachstellen dieser Klasse (Hollowing und Doppelganging).
  2. Die Schwachstelle wird gezeigt, um Sicherheitsfunktionen zu umgehen, die dem Betriebssystem inhärent sind (Windows Defender).
  3. Die Schwachstelle ermöglicht es einem Akteur, beliebigen Code auszuführen.
  4. Der Benutzer wird nicht über die Ausführung von unbeabsichtigtem Code informiert.
  5. Die dem Benutzer präsentierten Prozessinformationen spiegeln nicht genau wider, was ausgeführt wird.
  6. Mittel zur genauen Identifizierung des Prozesses sind nicht intuitiv oder falsch, selbst aus dem Kernel.

Quelle

Dieses Repository enthält ein Tool zur Ausübung der Herpaderping-Methode zur Prozessverschleierung. Die Verwendung ist wie folgt:

root@kitploit:~
Process Herpaderping Tool - Copyright (c) Johnny Shaw
ProcessHerpaderping.exe SourceFile TargetFile [ReplacedWith] [Options...]
Usage:
  SourceFile               Source file to execute.
  TargetFile               Target file to execute the source from.
  ReplacedWith             File to replace the target with. Optional,
                           default overwrites the binary with a pattern.
  -h,--help                Prints tool usage.
  -d,--do-not-wait         Does not wait for spawned process to exit,
                           default waits.
  -l,--logging-mask number Specifies the logging mask, defaults to full
                           logging.
                               0x1   Successes
                               0x2   Informational
                               0x4   Warnings
                               0x8   Errors
                               0x10  Contextual
  -q,--quiet               Runs quietly, overrides logging mask, no title.
  -r,--random-obfuscation  Uses random bytes rather than a pattern for
                           file obfuscation.
  -e,--exclusive           Target file is created with exclusive access and
                           the handle is held open as long as possible.
                           Without this option the handle has full share
                           access and is closed as soon as possible.
  -u,--do-not-flush-file   Does not flush file after overwrite.
  -c,--close-file-early    Closes file before thread creation (before the
                           process notify callback fires in the kernel).
                           Not valid with "--exclusive" option.
  -k,--kill                Terminates the spawned process regardless of
                           success or failure, this is useful in some
                           automation environments. Forces "--do-not-wait
                           option.

Klonen und Bauen

Das Repository verwendet Submodule. Nach dem Klonen initialisieren und aktualisieren Sie die Submodule. Die Projektdateien sind auf Visual Studio 2019 ausgerichtet.

root@kitploit:~
git clone https://github.com/jxy-s/herpaderping.git
cd .\herpaderping\
git submodule update --init --recursive
MSBuild .\herpaderping.sln

Danksagungen

Die folgenden werden ohne Änderungen verwendet. Danksagungen an ihre Autoren.

  • Windows Implementation Libraries (WIL)
    Eine Header-only C++-Bibliothek, die entwickelt wurde, um Entwicklern unter Windows das Leben zu erleichtern, durch lesbare typsichere C++-Schnittstellen für gängige Windows-Codierungsmuster.
  • Process Hacker Native API Headers
    Sammlung von Native-API-Headerdateien. Gesammelt aus Microsoft-Headerdateien und Symboldateien sowie viel Reverse Engineering und Schätzen.
Tool herunterladen
BetriebssystemVersionAngreifbar
Windows 7 Enterprise x866.1.7601Ja
Windows 10 Pro x6410.0.18363.900Ja
Windows 10 Pro Insider Preview x6410.0.20170.1000Ja
Windows 10 Pro Insider Preview x6410.0.20201.1000Ja
SicherheitsproduktVersionAngreifbar
Windows Defender AntiMalware Client4.18.2006.10Ja
Windows Defender Engine1.1.17200.2Ja
Windows Defender Antivirus1.319.1127.0Ja
Windows Defender Antispyware1.319.1127.0Ja
Windows Defender AntiMalware Client4.18.2007.6Ja
Windows Defender Engine1.1.17300.2Ja
Windows Defender Antivirus1.319.1676.0Ja
Windows Defender Antispyware1.319.1676.0Ja
Windows Defender AntiMalware Client4.18.2007.8Ja
Windows Defender Engine1.1.17400.5Ja
Windows Defender Antivirus1.323.267.0Ja
Windows Defender Antispyware1.323.267.0Ja