
.NET-Prozessmonitor, der CLR auf der nativen Ebene einhakt, reflektive Assemblys aus dem Arbeitsspeicher entlädt und die Integrität von AMSI/ETW im Vergleich zu den Binärdateien auf der Festplatte prüft.
morgen wird ein Update gepusht, die Lizenz geändert und ein paar neue Methoden gegen Datendiebe hinzugefügt.
![]()
![]()
![]()
Ein Windows-Tool, das ich gebaut habe, weil ich es leid war, in Malware-Samples ständig auf Jlaive-Forks zu starren, ohne etwas Öffentliches zu haben, um sie zur Laufzeit tatsächlich auseinanderzunehmen.
Kurz gesagt, es ist ein .NET-Prozessmonitor, der die CLR auf nativer Ebene hookt, reflektierende Assembly-Ladungen verfolgt und automatisch PEs direkt aus dem Speicher dumped. Es prüft auch die AMSI- und ETW-Integrität gegen die ursprünglichen Dateien auf der Festplatte und erkennt Umgehungstechniken wie clr.dll-String-Patching und direkte LoadFromBuffer-Nutzung.
Wo findet man Samples? Ich empfehle einen Blick auf https://tria.ge (keine Werbung) und du kannst jedes beliebige Sample herunterladen und nach einer Familie filtern.
Du fragst dich vielleicht, warum der Name Nemesis?
Weil er den genauen Zweck des Tools repräsentiert. Eine Nemesis ist etwas, das eine ständige Herausforderung oder den Untergang für einen Gegner darstellt – und das ist die Idee hinter diesem Projekt.
In der griechischen Mythologie war Nemesis der Geist der göttlichen Vergeltung, diejenige, die jedem die Quittung gab, der zu arrogant wurde oder glaubte, unantastbar zu sein. Ein kleiner Seitenhieb auf Malware, die damit angibt, "FUD" zu sein, wenn du mich fragst.
Ich bin Malware-Analyst. Wenn du diesen Job (bei mir Hobby) lange genug machst, siehst du immer wieder dieselben Loader-Ketten, besonders seit Jlaive (auch Crybat genannt) explodiert ist und jeder Script-Kiddie es geforkt hat.
Das Muster ist dumm einfach, aber verdammt nervig:
irgendwas.bat → obfuskiertes PowerShell → CSharp-Stub → dein eigentliches Payload
Du doppelklickst eine .bat, die aussieht wie Buchstabensalat. CMD startet PowerShell mit einer Wand aus Müll. PowerShell entschlüsselt/dekomprimiert einen .NET-Stub (AES, GZip, Base64). Dieser Stub patcht AMSI + ETW, lädt reflektiv die echte EXE/DLL in den Speicher, und schon ist es vorbei – nichts Freundliches landet jemals in brauchbarer Form auf der Platte.
Das hat mich gestört. Es gibt kein wirklich gutes öffentliches Tool, das gegen diese spezielle Kette vorgeht – Hooking, wo sich das .NET-Payload tatsächlich materialisiert, Dumping bevor der Prozess sich selbst frisst, Erkennen der AMSI/ETW-Patches, die diese Stubs immer machen. Also habe ich Nemesis gebaut.
Kein Allheilmittel. Wird deine Sandbox nicht ersetzen. Aber es gibt dir etwas Reales, das du gegen eine verdächtige .bat auf einer Testmaschine laufen lassen und tatsächlich Artefakte herausziehen kannst.
Launcher (Launcher.exe)
Nemesis.dll bevor der Hauptthread läuftNemesis-DLL (Nemesis.dll)
nLoadImagenLoadFileAssemblyNative::LoadFromBuffer (Muster über nLoadImage aufgelöst)%TEMP%\Nemesis_dumps in die Warteschlangeamsi.dll / ntdll.dll mit den Kopien auf der Platte (fängt den klassischen ret-Patch auf AmsiScanBuffer / EtwEventWrite).rdata-Strings, wenn die CLR geladen ist (einige Bypässe patchen diese stattdessen – es gibt ein großartiges VXUG-Papier dazu: 2024-11-21 - New AMSI Bypss Technique Modifying CLRDLL in Memory.pdf)%TEMP%\Nemesis.log. Es hat auch , um Probleme mit einer etwas eigenartigen Konsole zu vermeiden :DIm Grunde: Lass die Bat-Kette laufen, fang das Payload dort, wo der Crypter es tatsächlich lädt, und protokolliere die Ausweichtricks auf dem Weg.
Du benötigst Visual Studio 2022+ mit C++-Desktop und MASM (x64).
Öffne Nemesis.slnx, wähle Release | x64, baue die Lösung.
Dies ist der eigentliche Anwendungsfall: Richte es auf eine verdächtige Bat und sieh, was herausfällt:
cd x64\Release
.\Launcher.exe "C:\path\to\suspicious.bat"
Zusätzliche Argumente nach -- werden an das Ziel übergeben:
.\Launcher.exe myapp.exe -- --some-flag
Benutzerdefinierter DLL-Pfad:
.\Launcher.exe --dll C:\path\Nemesis.dll myapp.exe
Artefakte:
%TEMP%\Nemesis.log%TEMP%\Nemesis_dumpsIst:
Ist nicht:
LNK1104? Irgendwas hält noch Nemesis.dll geladen – töte das Ziel und baue neupwsh.exe-Vcpkg-Rauschen während des Builds ist harmlos, ignoriere esWenn du verstehen willst, wogegen du kämpfst:
Durch die Nutzung von Nemesis akzeptierst du dies. Es wird wie besehen ohne jegliche Gewährleistung bereitgestellt – du übernimmst das gesamte Risiko.
Du bist allein verantwortlich für rechtmäßige, autorisierte Nutzung (Labor-VMs, eigene Systeme, ausdrückliche Erlaubnis). Im maximal gesetzlich zulässigen Umfang lehnen die Autoren und zypherion.tech jegliche Haftung für Schäden, Verluste oder rechtliche Ansprüche ab, die aus Nutzung oder Missbrauch entstehen. Siehe LIZENZ für die vollständigen Bedingungen.
Nicht-kommerzielle / persönliche / Forschungs- / Hobby-Nutzung → PolyForm Noncommercial 1.0.0
Kommerzielle Nutzung (Verkauf, kostenpflichtiges Produkt, SaaS, Kundenarbeit usw.) → du benötigst eine separate Lizenz. PolyForm Noncommercial deckt das nicht ab.
Melde dich bei mir, wenn du eine kommerzielle Lizenz möchtest:
[[email protected] / @wd6g(Discord) / Telegram: @ZypherionTechnologies]
Kurze Notiz: Ich muss mir
compilemethodansehen und reparieren; derzeit wird es nicht unbedingt benötigt, da Crypte es normalerweise gar nicht verwenden ... da sieasm.load(...)verwenden müssen. Außerdem erinnert mich das daran, dass ich die.rdata-Strings überprüfen muss; habe sie leider noch nicht richtig getestet... Mach bitte keinen PR mit dummem Code. Du kannst keine N(Native)-Backends wienLoadImagenormal hooken; du musst Register erhalten und es ist einfach ätzend – deshalb verwenden wir ASM.
ENABLE_VIRTUAL_TERMINAL_PROCESSING