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
OffensiveNim — Meine Experimente zur Bewaffnung von Nim (https://nim-lang.org/) | Kitploit
Tools/GitHubGitHub/byt3bl33d3r/offensivenim
Privilege EscalationCode-AnalyseLaterale BewegungShellcodeDatenexfiltrationPost-ExploitationCommand and ControlLernen & BildungRed TeamingPayload-EntwicklungBinary-Exploitation
3.1k365vor 2 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
GitHub
byt3bl33d3r/offensivenim

OffensiveNim

Meine Experimente zur Bewaffnung von Nim (https://nim-lang.org/)

Repository anzeigen

OffensiveNim

OffensiveNim

Meine Experimente zur Bewaffnung von Nim für die Entwicklung von Implantaten und allgemeine offensive Operationen.

Inhaltsverzeichnis

  • OffensiveNim
    • Inhaltsverzeichnis
    • Warum Nim?
    • Beispiele in diesem Repository, die funktionieren
    • Beispiele, die noch in Arbeit sind
    • Die Beispiele in diesem Repository kompilieren
      • Einfacher Weg (empfohlen)
      • Schwieriger Weg (für die Mutigen)
    • Cross-Compilierung
    • Schnittstelle zu C/C++
    • Erstellen von Windows-DLLs mit exportiertem DllMain
      • Erstellen von XLLs
    • Optimieren von ausführbaren Dateien auf Größe
    • Reflektives Laden von Nim-Ausführbaren
    • Größenunterschied bei Verwendung der Winim-Bibliothek im Vergleich zu ohne
    • Opsec-Überlegungen
    • Nim ohne Nim-Laufzeit schreiben
    • C-Code in Nim konvertieren
    • Sprachbrücken
    • Debugging
    • Einrichten einer Entwicklungsumgebung
    • Fallstricke, in die ich selbst getappt bin
    • Interessante Nim-Bibliotheken
    • Links zu Nim für die Implantatentwicklung
    • Mitwirkende

Warum Nim?

  • Kompiliert direkt nach C, C++, Objective-C und Javascript.
  • Da es nicht auf einer VM/Laufzeitumgebung basiert, entsteht nicht das, was ich gerne "D I C K E Malware" nenne, im Gegensatz zu anderen Sprachen (z.B. Golang).
  • Python-inspirierte Syntax, ermöglicht schnelle native Payload-Erstellung und Prototyping.
  • Besitzt extrem ausgereifte FFI-Fähigkeiten (Foreign Function Interface).
  • Vermeidet, dass man tatsächlich in C/C++ schreiben muss und vermeidet dadurch die Einführung vieler Sicherheitsprobleme in Ihre Software.
  • Super einfache Cross-Compilierung nach Windows von *nix/MacOS, erfordert nur die Installation des mingw-Toolchains und die Übergabe eines einzelnen Flags an den Nim-Compiler.
  • Der Nim-Compiler und die generierten ausführbaren Dateien unterstützen alle wichtigen Plattformen wie Windows, Linux, BSD und macOS. Kann sogar auf Nintendo Switch, iOS und Android kompilieren. Siehe den Cross-Compilierungsabschnitt im Nim-Compiler-Benutzerhandbuch.
  • Man könnte technisch sein Implantat und sein C2-Backend beide in Nim schreiben, da man seinen Code direkt nach Javascript kompilieren kann. Hat sogar erste Unterstützung für WebAssembly.

Beispiele in diesem Repository, die funktionieren

Beispiele, die noch in Arbeit sind

DateiBeschreibung
amsi_patch_2_bin.nimPatcht AMSI aus dem aktuellen Prozess mit einer anderen Methode (WIP, Hilfe erwünscht)
excel_4_com_bin.nim

Die Beispiele in diesem Repository kompilieren

Dieses Repository stellt keine Binärdateien bereit, Sie müssen sie selbst kompilieren. Dieses Repository wurde eingerichtet, um die Beispiel-Nim-Quelldateien von Linux oder MacOS nach Windows zu cross-kompilieren.

Einfacher Weg (empfohlen)

Verwenden Sie VSCode Devcontainers, um automatisch eine Entwicklungsumgebung für Sie einzurichten (siehe Abschnitt Einrichten einer Dev-Umgebung). Sobald das erledigt ist, führen Sie einfach make aus.

Schwieriger Weg (für die Mutigen)

Installieren Sie Nim mit Ihrem Systempaketmanager (für Windows verwenden Sie den Installer auf der offiziellen Website)

  • brew install nim
  • apt install nim
  • choco install nim

(Nim bietet auch ein Docker-Image auf Dockerhub)

Sie sollten nun die Befehle nim und nimble zur Verfügung haben, ersterer ist der Nim-Compiler und letzterer ist Nims Paketmanager.

Installieren Sie das Mingw-Toolchain, das für die Cross-Compilierung nach Windows benötigt wird (nicht erforderlich, wenn Sie unter Windows kompilieren):

  • *nix: apt-get install mingw-w64
  • MacOS: brew install mingw-w64

Installieren Sie schließlich die großartige Winim-Bibliothek zusammen mit zippy und nimcrypto:

  • nimble install winim zippy nimcrypto

Wechseln Sie dann in das Root-Verzeichnis dieses Repositorys und führen Sie make aus.

Sie sollten die Binärdateien und DLLs im Verzeichnis bin/ finden.

Cross-Compilierung

Siehe den Cross-Compilierungsabschnitt im Nim-Compiler-Benutzerhandbuch für viele weitere Details.

Cross-Compilierung nach Windows von MacOS/*nix erfordert das mingw-Toolchain, normalerweise nur eine Frage von brew install mingw-w64 oder apt install mingw-w64.

Sie müssen dann nur das Flag -d=mingw an den Nim-Compiler übergeben.

Z.B. nim c -d=mingw --app=console --cpu=amd64 source.nim

Schnittstelle zu C/C++

Siehe den verrückten FFI-Abschnitt im Nim-Handbuch.

Wenn Sie mit csharps P/Invoke vertraut sind, ist es im Grunde das gleiche Konzept, wenn auch ein bisschen hässlicher:

Beispiel für den Aufruf von `MessageBox````nim type HANDLE* = int HWND* = HANDLE UINT* = int32 LPCSTR* = cstring

proc MessageBox*(hWnd: HWND, lpText: LPCSTR, lpCaption: LPCSTR, uType: UINT): int32 {.discardable, stdcall, dynlib: "user32", importc: "MessageBoxA".}

MessageBox(0, "Hello, world !", "Nim is Powerful", 0)

root@kitploit:~
Für komplexe Windows-API-Aufrufe verwenden Sie die [Winim-Bibliothek](https://github.com/khchen/winim), das spart eine wahnsinnige Menge Zeit und vergrößert die ausführbare Datei nicht zu sehr (siehe unten), je nachdem, wie Sie sie importieren.

Hat sogar COM-Unterstützung!!!

## Erstellen von Windows-DLLs mit einem exportierten `DllMain`

Ein großer Dank an die Person, die [dies](https://forum.nim-lang.org/t/1973) im Nim-Forum gepostet hat.

Der Nim-Compiler versucht, für Sie automatisch eine `DllMain`-Funktion zur Kompilierzeit zu erstellen, wenn Sie ihn anweisen, eine Windows-DLL zu erstellen, aber aus irgendeinem Grund exportiert er sie nicht. Um eine exportierte `DllMain` zu haben, müssen Sie `--nomain` übergeben und selbst eine `DllMain`-Funktion mit den entsprechenden Pragma-Direktiven definieren (`stdcall, exportc, dynlib`).

Sie müssen auch `NimMain` von Ihrer `DllMain` aus aufrufen, um Nims Garbage Collector zu initialisieren. (Sehr wichtig, sonst explodiert Ihr Computer buchstäblich).

Beispiel:

```nim
import winim

proc DllMain(hinstDLL: HINSTANCE, fdwReason: DWORD, lpvReserved: LPVOID): BOOL {.stdcall, exportc, dynlib.} =
  if fdwReason == DLL_PROCESS_ATTACH:
    nimMain()
  return TRUE
``````nim
import winim/lean

proc NimMain() {.cdecl, importc.}

proc DllMain(hinstDLL: HINSTANCE, fdwReason: DWORD, lpvReserved: LPVOID) : BOOL {.stdcall, exportc, dynlib.} =
  NimMain()
  
  if fdwReason == DLL_PROCESS_ATTACH:
    MessageBox(0, "Hello, world !", "Nim is Powerful", 0)

  return true

Zum Kompilieren:``` nim c -d=mingw --app=lib --nomain --cpu=amd64 mynim.dll

root@kitploit:~
### Erstellen von XLLs
Sie können eine XLL (eine Excel-DLL, stellen Sie sich das vor) mit einer Auto-Open-Funktion erstellen, die für die Bereitstellung von Payloads verwendet werden kann. Der folgende Code erstellt eine einfache XLL mit einer Auto-Open-Funktion und dem gesamten weiteren Boilerplate-Code, der zum Kompilieren als Link-Bibliothek erforderlich ist. Der POC wird als DLL kompiliert. Sie können dann die Erweiterung in .xll ändern, und die Datei wird in Excel geöffnet und führt den Payload aus, wenn Sie darauf doppelklicken:```nim
#[
    Compile:
        nim c -d=mingw --app=lib --nomain --cpu=amd64 nim_xll.nim
        
    Will compile as a DLL, you can then just change the extension to .xll
]#

import winim/lean

proc xlAutoOpen() {.stdcall, exportc, dynlib.} =
    MessageBox(0, "Hello, world !", "Nim is Powerful", 0)

proc NimMain() {.cdecl, importc.}

proc DllMain(hinstDLL: HINSTANCE, fdwReason: DWORD, lpvReserved: LPVOID) : BOOL {.stdcall, exportc, dynlib.} =
  NimMain()

  return true

Es gibt viele andere hinterhältige Dinge, die mit XLLs gemacht werden können. Siehe weitere Beispiele für XLL-Tradecraft hier.

Optimierung der Größe von ausführbaren Dateien

Entnommen aus der Nim-FAQ-Seite

Für die größte Größenreduzierung verwenden Sie die folgenden Flags -d:danger -d:strip --opt:size

Zusätzlich habe ich festgestellt, dass man noch ein paar Bytes herausholen kann, indem man --passc=-flto --passl=-flto an den Compiler übergibt. Schauen Sie sich auch die Makefile in diesem Repository an.

Diese Flags verringern die Größen dramatisch: das Shellcode-Injection-Beispiel geht von 484.3 KB auf 46.5 KB zurück, wenn es von MacOSX aus cross-kompiliert wird!

Reflektives Laden von Nim-Executables

Großer Dank an @Shitsecure, der das herausgefunden hat!

Standardmäßig generiert Nim keine PEs mit einer Relokationstabelle, die von den meisten Tools benötigt wird, die EXEs reflektiv laden.

Um ein Nim-Executable mit einem Relokationsabschnitt zu erzeugen, müssen Sie dem Linker ein paar zusätzliche Flags übergeben.

Specifically: --passL:-Wl,--dynamicbase

Vollständiges Beispielkommando:``` nim c --passL:-Wl,--dynamicbase my_awesome_malwarez.nim

root@kitploit:~
## Unterschiede in der ausführbaren Dateigröße bei Verwendung der Winim-Bibliothek im Vergleich zu ohne

Erstaunlicherweise ist der Größenunterschied ziemlich vernachlässigbar. Besonders wenn man die oben beschriebenen Größenoptimierungen anwendet.

Die beiden Beispiele `pop_bin.nim` und `pop_winim_bin.nim` wurden zu diesem Zweck erstellt.

Ersteres definiert den WinAPI-Aufruf `MessageBox` manuell und letzteres verwendet die Winim-Bibliothek (genauer `winim/lean`, das nur das Kern-SDK enthält, siehe [hier](https://github.com/khchen/winim#usage)), Ergebnisse:```
byt3bl33d3r@ecl1ps3 OffensiveNim % ls -lah bin
-rwxr-xr-x  1 byt3bl33d3r  25K Nov 20 18:32 pop_bin_32.exe
-rwxr-xr-x  1 byt3bl33d3r  32K Nov 20 18:32 pop_bin_64.exe
-rwxr-xr-x  1 byt3bl33d3r  26K Nov 20 18:33 pop_winim_bin_32.exe
-rwxr-xr-x  1 byt3bl33d3r  34K Nov 20 18:32 pop_winim_bin_64.exe

Wenn Sie die gesamte Winim-Bibliothek mit import winim/com importieren, fügt sie nur etwa ~20 KB hinzu, was angesichts der Menge an Funktionalität, die sie abstrahiert, die zusätzliche Größe zu 100 % wert ist:``` byt3bl33d3r@ecl1ps3 OffensiveNim % ls -lah bin -rwxr-xr-x 1 byt3bl33d3r 42K Nov 20 19:20 pop_winim_bin_32.exe -rwxr-xr-x 1 byt3bl33d3r 53K Nov 20 19:20 pop_winim_bin_64.exe

root@kitploit:~
## Opsec-Überlegungen

Aufgrund der Art und Weise, wie Nim DLLs dynamisch mit `LoadLibrary` mittels seines FFI auflöst, werden keine Ihrer extern importierten Funktionen in den statischen Importen der ausführbaren Datei angezeigt (siehe [diesen Blogbeitrag](https://web.archive.org/web/20210117002945/https://secbytes.net/implant-roulette-part-1:-nimplant/) für weitere Informationen):

![](https://assets.kitploit.com/production/public/readmes/6566/ae35b71c435c8fe24112a95abb0eca863721c9fde9b14efb7d4f2701bb57b3b9.png)

Wenn Sie Nim-Quellcode in eine DLL kompilieren, scheint es, dass Sie immer ein exportiertes `NimMain` haben, unabhängig davon, ob Sie Ihr eigenes `DllMain` angeben oder nicht (??). Dies könnte potenziell als Signatur verwendet werden, ich weiß nicht, wie viele Unternehmen tatsächlich Nim in ihrem Entwicklungsstack verwenden. Fällt definitiv auf.

![](https://assets.kitploit.com/production/public/readmes/6566/1e291f2b170de9f5728e36cc2c6e489477480fa4b215dcf78341531805781448.png)

## Schreiben von Nim ohne die Nim-Laufzeit

Da Nim von Antivirenlösungen stark markiert wird, besteht eine Möglichkeit darin, Nim-Programme ohne die Nim-Laufzeit zu schreiben. [Writing Nim-less Nim](https://www.youtube.com/watch?v=EXX3HmCG3pw) ist ein Vortrag, der die Schritte beschreibt, wie man Nim-Code ohne die Nim- und C-Laufzeit schreibt. Der Quellcode zu diesem Vortrag ist [hier](https://github.com/m4ul3r/writing_nimless) verfügbar. Der Vortrag folgt und erweitert die Arbeit von [zimawhit3](https://github.com/zimawhit3) mit [Bitmancer](https://github.com/zimawhit3/Bitmancer/tree/main).

Das Prinzip besteht darin, sich auf die Typdefinitionen von `winim` zu verlassen und Code zu schreiben, der nicht zur Nutzung der Nim-Laufzeit führt.

## Konvertieren von C-Code in Nim

https://github.com/nim-lang/c2nim

Habe es verwendet, um eine Reihe kleiner C-Snippets zu übersetzen, habe noch nichts Großes versucht.

## Sprachbrücken

  - Python integration https://github.com/yglukhov/nimpy
    * Das ist tatsächlich super interessant, [insbesondere dieser Teil](https://github.com/yglukhov/nimpy/blob/master/nimpy/py_lib.nim#L330). Könnte dies mit einigen Modifikationen die PythonxXX.dll aus dem Speicher laden?

  - Jave VM integration: https://github.com/yglukhov/jnim

## Debugging

Verwenden Sie die Funktion `repr()` in Kombination mit `echo`, sie unterstützt fast alle (??) Datentypen, sogar Strukturen!

Siehe [diesen Blogbeitrag für mehr](https://nim-lang.org/blog/2017/10/02/documenting-profiling-and-debugging-nim-code.html)

## Einrichten einer Entwicklungsumgebung

Dieses Repository unterstützt [VSCode Devcontainers](https://code.visualstudio.com/docs/remote/create-dev-container), die es Ihnen ermöglichen, in einem Docker-Container zu entwickeln. Dies automatisiert die Einrichtung einer Entwicklungsumgebung für Sie.

1. Installieren Sie VSCode und Docker Desktop
2. Klonen Sie dieses Repository und öffnen Sie es in VSCode
3. Installieren Sie die Erweiterung `Visual Studio Code Remote - Containers`
4. Öffnen Sie die Befehlspalette und wählen Sie den Befehl `Remote-Containers: Reopen in Container`

VSCode wird nun das Docker-Image erstellen (wird etwas dauern) und Sie direkt in Ihre vorgefertigte Nim-Entwicklungsumgebung versetzen!

## Fallstricke, in die ich selbst getappt bin

- Wenn Sie Winapi-Aufrufe mit Winim tätigen und versuchen, einen Nullwert zu übergeben, stellen Sie sicher, dass Sie den Wert `NULL` (innerhalb der Winim-Bibliothek definiert) anstelle von Nims eingebautem `nil`-Wert übergeben. (Ugh)

- Um das Betriebssystem-Handle für die erstellte Datei nach dem Aufruf von `open()` unter Windows zu erhalten, müssen Sie `f.getOsFileHandle()` **nicht** `f.getFileHandle()` aufrufen, aus Gründen.

- Der Nim-Compiler akzeptiert Argumente in der Form `-a=value` oder `--arg=value`, obwohl in der Verwendung nur Argumente als `-a:value` oder `--arg:value` angegeben werden. (Wichtig für Makefiles)

- Wenn Sie ein Byte-Array definieren, müssen Sie zumindest beim ersten Wert angeben, dass es sich um ein Byte-Array handelt, etwas seltsam, aber ok (https://forum.nim-lang.org/t/4322)

Byte-Array in C#:```csharp
byte[] buf = new byte[5] {0xfc,0x48,0x81,0xe4,0xf0,0xff}

Byte-Array in Nim:```nim var buf: array[5, byte] = [byte 0xfc,0x48,0x81,0xe4,0xf0,0xff]

root@kitploit:~
## Interessante Nim-Bibliotheken

- https://github.com/dom96/jester
- https://github.com/pragmagic/karax
- https://github.com/Niminem/Neel
- https://github.com/status-im/nim-libp2p
- https://github.com/PMunch/libkeepass
- https://github.com/def-/nim-syscall
- https://github.com/tulayang/asyncdocker
- https://github.com/treeform/ws
- https://github.com/guzba/zippy
- https://github.com/rockcavera/nim-iputils
- https://github.com/FedericoCeratto/nim-socks5
- https://github.com/CORDEA/backoff
- https://github.com/treeform/steganography
- https://github.com/miere43/nim-registry
- https://github.com/status-im/nim-daemon

## Nim für Implant-Entwicklung Links

- https://web.archive.org/web/20210117002945/https://secbytes.net/implant-roulette-part-1:-nimplant/
- https://securelist.com/zebrocys-multilanguage-malware-salad/90680/
- https://github.com/MythicAgents/Nimplant
- https://github.com/elddy/Nim-SMBExec
- https://github.com/elddy/NimScan

## Mitwirkende 

Virtuelle Umarmung an alle, die mitgewirkt haben ❤️

<a href="https://github.com/byt3bl33d3r/OffensiveNim/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=byt3bl33d3r/OffensiveNim" />
</a>
Tool herunterladen
DateiBeschreibung
pop_bin.nimAufruf von MessageBox WinApi ohne Verwendung der Winim-Bibliothek
pop_winim_bin.nimAufruf von MessageBox mit der Winim-Bibliothek
pop_winim_lib.nimBeispiel für die Erstellung einer Windows-DLL mit exportiertem DllMain
execute_assembly_bin.nimHostet die CLR, führt reflektiv .NET-Assemblies aus dem Speicher aus
clr_host_cpp_embed_bin.nimHostet die CLR durch direktes Einbetten von C++-Code, führt ein .NET-Assembly von der Festplatte aus
scshell_c_embed_bin.nimZeigt, wie man vorhandenen C-Code schnell bewaffnet, indem man SCShell (C) direkt in Nim einbettet
fltmc_bin.nimListet alle Minifilter-Treiber auf
blockdlls_acg_ppid_spoof_bin.nimErstellt einen angehaltenen Prozess, der seine PPID auf explorer.exe fälscht, aktiviert auch BlockDLLs und ACG
named_pipe_client_bin.nimNamed-Pipe-Client
named_pipe_server_bin.nimNamed-Pipe-Server
embed_rsrc_bin.nimBettet eine Ressource (ZIP-Datei) zur Kompilierzeit ein und extrahiert den Inhalt zur Laufzeit
self_delete_bin.nimEine Möglichkeit, eine gesperrte oder aktuell laufende ausführbare Datei auf der Festplatte zu löschen. Methode entdeckt von @jonasLyk
encrypt_decrypt_bin.nimVer-/Entschlüsselung mit AES256 (CTR-Modus) unter Verwendung der Nimcrypto-Bibliothek
amsi_patch_bin.nimPatcht AMSI aus dem aktuellen Prozess
amsi_providerpatch_bin.nimPatcht die AMSI-Provider-DLL (in diesem Fall MpOav.dll), um AMSI zu umgehen. Veröffentlicht hier
etw_patch_bin.nimPatcht ETW aus dem aktuellen Prozess (Beigetragen von )
wmiquery_bin.nimFragt laufende Prozesse und installierte Antivirenprogramme mit WMI ab
out_compressed_dll_bin.nimKomprimiert, Base-64-kodiert und gibt PowerShell-Code aus, um eine verwaltete DLL im Speicher zu laden. Portierung des ursprünglichen PowerSploit-Skripts nach Nim.
dynamic_shellcode_local_inject_bin.nimPOC zum lokalen Injizieren von dynamisch abgerufenen Shellcode anstatt ihn fest in einem Array zu kodieren.
shellcode_callback_bin.nimFührt Shellcode mit Callback-Funktionen aus
shellcode_bin.nimErstellt einen angehaltenen Prozess und injiziert Shellcode mit VirtualAllocEx/CreateRemoteThread. Demonstriert auch die Verwendung von Kompilierzeit-Definitionen zur Erkennung von Architektur, Betriebssystem usw.
shellcode_fiber.nimShellcode-Ausführung über Fasern
shellcode_inline_asm_bin.nimFührt Shellcode mit Inline-Assembly aus
ssdt_dump.nimEinfaches SSDT-Abrufen mit Laufzeitfunktionstabelle aus dem Ausnahmeverzeichnis. Technik inspiriert vom MDSEC-Artikel
syscalls_bin.nimZeigt, wie man direkte Systemaufrufe tätigt
execute_powershell_bin.nimHostet die CLR und führt PowerShell über einen nicht verwalteten Runspace aus
passfilter_lib.nimProtokolliert Passwortänderungen in eine Datei durch (Miss-)Brauch eines Passwortkomplexitätsfilters
minidump_bin.nimErstellt einen Speicherauszug von lsass mit MiniDumpWriteDump
http_request_bin.nimDemonstriert einige Möglichkeiten, HTTP-Anfragen zu stellen
execute_sct_bin.nim.sct-Dateiausführung über GetObject()
scriptcontrol_bin.nimDynamische Ausführung von VBScript und JScript mit dem MSScriptControl COM-Objekt
excel_com_bin.nimInjiziert Shellcode mit dem Excel-COM-Objekt und Makros
keylogger_bin.nimKeylogger mit SetWindowsHookEx
memfd_python_interpreter_bin.nimVerwendet den memfd_create-Syscall, um eine Binärdatei in eine anonyme Datei zu laden und mit execve auszuführen.
uuid_exec_bin.nimPlatziert Shellcode aus einem UUID-Array im Heap-Speicher und verwendet den EnumSystemLocalesA-Callback, um den Shellcode auszuführen.
unhookc.nimEntfernt Hooks aus ntdll.dll, um EDR/AV-Hooks zu umgehen (bettet die C-Codevorlage von ired.team ein)
unhook.nimEntfernt Hooks aus ntdll.dll, um EDR/AV-Hooks zu umgehen (reine Nim-Implementierung)
taskbar_ewmi_bin.nimVerwendet Extra Window Memory Injection über die Running Application-Eigenschaft der Taskleiste, um den Shellcode auszuführen.
fork_dump_bin.nim(Miss-)Braucht Windows' Implementierung von fork() und erlangt ein Handle zu einem entfernten Prozess mit dem Zugriffsrecht PROCESS_CREATE_PROCESS. Versucht dann, den Speicher des geforkten Prozesses mit MiniDumpWriteDump() auszugeben.
ldap_query_bin.nimFührt LDAP-Abfragen über COM mit ADO's ADSI-Provider durch
sandbox_process_bin.nimSandboxt einen Prozess, indem es seine Integritätsstufe auf "Nicht vertrauenswürdig" setzt und wichtige Tokens entfernt. Dies kann verwendet werden, um einen PPL-Prozess (z.B. AV/EDR) "stumm zu deaktivieren".
list_remote_shares.nimVerwendet NetShareEnum, um die für den aktuellen Benutzer zugänglichen Freigaben aufzulisten
chrome_dump_bin.nimLiest und entschlüsselt Cookies aus Chromes sqlite-Datenbank
suspended_thread_injection.nimShellcode-Ausführung durch Injektion in angehaltene Threads
dns_exfiltrate.nimEinfache DNS-Exfiltration über TXT-Eintragsanfragen
rsrc_section_shellcode.nimFührt Shellcode aus, der im .rsrc-Abschnitt der Binärdatei eingebettet ist
token_steal_cmd.nimStehle ein Token/Impersoniere und führe dann einen Befehl aus
anti_analysis_isdebuggerpresent.nimEinfache Anti-Analyse, die auf einen Debugger prüft
sandbox_domain_check.nimEinfache Sandbox-Umgehungstechnik, die prüft, ob der Computer mit einer Domäne verbunden ist oder nicht
Hook.nimBeispiel für offensives Hooking von MessageBoxA
anti_debug.nimVorstellung von zwei Anti-Debugging-Techniken
anti_debug_via_tls.nimAnti-Debugging über TLS
local_pe_execution.nimAusführung von exe- und dll-Dateien im Speicher
stack_string_allocation.nimAllokieren von C- und Wide-Strings auf dem Stack mit Arrays
hardware_breakpoints.nimHooking von Funktionen mit Hardware-Breakpoints
Injiziert Shellcode mit dem Excel-COM-Objekt und Excel 4 Makros (WIP)