Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!
Bypass_AV — Umgeht AV und Sandboxes unter Windows mithilfe von Anti-Sandbox-Prüfungen, ntdll-Unhooking, dynamischer API-Auflösung und mehrschichtiger Shellcode-Verschleierung (XOR/RC4/Base64/MAC). | Kitploit
Umgeht AV und Sandboxes unter Windows mithilfe von Anti-Sandbox-Prüfungen, ntdll-Unhooking, dynamischer API-Auflösung und mehrschichtiger Shellcode-Verschleierung (XOR/RC4/Base64/MAC).
Dies ist eine Trojaner-Probe, die die überwiegende Mehrheit von Antivirensoftware und Sandboxes umgehen kann
Im Folgenden erläutere ich die im Trojaner verwendeten Techniken. Ich werde sowohl auf den Shellcode als auch auf den Loader eingehen.
Loader-Abschnitt
1. Anti-Sandbox
Es ist allgemein bekannt, dass die herkömmliche Anti-Sandbox-Erkennung auf Operationen wie CPU, Arbeitsspeicher und Festplatte des Hosts abzielt. Ich persönlich halte dies jedoch für nicht ideal, da einige Antivirenprogramme oder Cloud-Sandboxes die Anti-Sandbox-Funktionen erkennen und sensible APIs überwachen, was zur Erkennung führen kann. Mein Ansatz ist daher, Desktop-Verknüpfungen zu erkennen, z. B. von häufig verwendeten Programmen wie QQ, WeChat und DingTalk, um Cloud-Sandboxes zu umgehen.
2. Neuladen von ntdll und dynamischer Aufruf von APIs
Der Erkennungsmechanismus von Antivirensoftware besteht im Allgemeinen darin, einige sensible APIs mit Hooks zu versehen. Durch das Neuladen von ntdll und den dynamischen Aufruf von APIs können wir die Hooks umgehen und die Funktionen ausführen. Beim Neuladen von ntdll wird die originale ntdll.dll aus dem Systemverzeichnis geladen und der mit Hooks versehene ntdll-Codeabschnitt (.text-Abschnitt) im aktuellen Prozess durch den Originalcode ersetzt. Beim dynamischen API-Aufruf wird die Exporttabelle der Zieldll durchlaufen, der Funktionsname per Hash abgeglichen, die Adresse der Zielfunktion ermittelt und diese über einen Zeiger ausgeführt.
3. Trennung von Shellcode und Loader
Shellcode kann nicht nur durch Kodierung Antivirensoftware umgehen, sondern auch vom Loader getrennt werden. Wenn der Shellcode nicht in der exe enthalten ist, fällt es Antivirensoftware schwer, Probleme zu erkennen.
Shellcode-Abschnitt
Der Shellcode-Abschnitt verwendet hauptsächlich eine mehrschichtige Verschleierung, nämlich XOR+RC4+base64+MAC als mehrstufige Verarbeitung. Das Endergebnis liegt im MAC-Adressformat vor, da Windows eine gewisse Toleranz gegenüber MAC-formatigen Zeichenketten besitzt.
Verwendungsmethode
Verschlüsseln Sie den Shellcode zuerst mit encode.cpp. Wenn Sie den Shellcode in die exe schreiben möchten, platzieren Sie ihn im mac_shellcode-Array in Unseparation_shellcode.cpp. Wenn Sie eine Parametertrennung erreichen möchten, können Sie einfach meine kompilierte exe + den Shellcode ausführen.
Danke fürs Lesen
Englische Version
Dies ist eine Trojaner-Probe, die die überwiegende Mehrheit von Antivirensoftware und Sandboxes umgehen kann. Im Folgenden erläutere ich die im Trojaner verwendeten Techniken, wobei ich mich sowohl auf den Shellcode als auch auf den Loader konzentriere.
Loader-Abschnitt
1. Anti-Sandbox
Es ist allgemein bekannt, dass die herkömmliche Erkennung von Anti-Sandbox-Funktionen auf Operationen am Host wie CPU, Arbeitsspeicher und Festplatte basiert. Ich persönlich halte diesen Ansatz jedoch für nicht ideal, da einige Antivirenprogramme oder Cloud-Sandboxes die Anti-Sandbox-Funktionen überwachen und sensible APIs im Auge behalten, was zur Erkennung führen kann. Mein Ansatz ist daher, Desktop-Verknüpfungen zu erkennen, z. B. von häufig verwendeten Programmen wie QQ, WeChat und DingTalk, um Cloud-Sandboxes zu umgehen.
2. Neuladen von ntdll und dynamischer Aufruf von APIs
Der Erkennungsmechanismus allgemeiner Antivirensoftware besteht darin, einige sensible APIs mit Hooks zu versehen. Daher können wir die Hooks umgehen und die Funktion erreichen, indem wir die Techniken des ntdll-Neuladens und des dynamischen API-Aufrufs verwenden. Beim Neuladen von ntdll wird die originale ntdll.dll aus dem Systemverzeichnis geladen und der mit Hooks versehene ntdll-Codeabschnitt (.text-Abschnitt) im aktuellen Prozess durch den Originalcode ersetzt. Beim dynamischen API-Aufruf wird die Exporttabelle der Zieldll durchlaufen, der Funktionsname per Hash abgeglichen, die Adresse der Zielfunktion ermittelt und diese über einen Zeiger ausgeführt.
3. Trennung von Shellcode und Loader
Neben der Kodierung zur Umgehung von Antivirensoftware kann der Shellcode auch vom Loader getrennt werden. Wenn der Shellcode nicht in der exe-Datei enthalten ist, wird es für Antivirensoftware ziemlich schwierig, Probleme zu erkennen.
Der Shellcode-Abschnitt durchläuft hauptsächlich eine mehrschichtige Verschleierung, die XOR, RC4, base64 und MAC umfasst. Das Endergebnis liegt im MAC-Adressformat vor und nutzt die Toleranz von Windows gegenüber MAC-formatigen Zeichenketten.
Verwendungsmethode
Verschlüsseln Sie den Shellcode zuerst mit encode.cpp. Wenn Sie den Shellcode in eine exe-Datei schreiben möchten, platzieren Sie ihn bitte im mac_shellcode-Array in Unseparation_shellcode.cpp. Wenn Sie eine Parametertrennung erreichen möchten, können Sie die kompilierte exe + den Shellcode direkt ausführen.