
Shellcode-Injektionstechnik. Bereitgestellt als C++-Header, eigenständiges Rust-Programm oder Bibliothek.
Dies ist eine brandneue Technik zur Shellcode-Injektion, um AVs und EDRs zu umgehen. Diese Technik ist von Module Stomping inspiriert und weist einige Ähnlichkeiten auf. Stand heute (23.01.2022) findet auch hollows-hunter es nicht.
Der größte Vorteil dieser Technik ist, dass sie kein gesamtes Modul oder PE überschreibt, sondern nur eine Funktion, und der Zielprozess kann weiterhin jede andere Funktion aus dem Zielmodul verwenden.
Der Nachteil ist, dass es nicht für jede Funktion in freier Wildbahn funktioniert (aber für die meisten), die genaue Erklärung finden Sie in meinem Blog: The Good, The Bad And The Stomped Function.
HINWEIS: Es ist möglich, dass ein AV dies erkennt. Wenn die Signatur eine Signatur von msfvenom/metasploit ist, ist das in Ordnung! Sie müssen nur den Shellcode ändern oder verschlüsseln.
UPDATE: Anscheinend ist dies nicht der erste verfügbare PoC und RastaMouse hat einen Blogbeitrag geschrieben, der eine ähnliche Sache in C# ist.
Sie können entweder den Header wie folgt in Ihr Programm einbinden:
#include "functionstomping.hpp"
int main() {
// Just get the pid in any way and pass it to the function.
DWORD pid = 3110;
FunctionStomping(pid);
return 0;
}
Oder verwenden Sie das Rust-Programm:
cd functionstomping
cargo b
functionstomping.exe <pid>
Nachdem Sie dieses Programm ausgeführt haben, MÜSSEN Sie die Funktion aus dem entfernten Prozess aufrufen! (Wenn Sie die Standardfunktion CreateFile verwendet haben, müssen Sie sie aus dem entfernten Prozess aufrufen!).
Derzeit ist der auszuführende Shellcode nur ein Taschenrechner-Popup, aber Sie müssen lediglich unsigned char shellcode[] durch Ihren Shellcode ersetzen. Ich habe C++17 und VS2019 verwendet, um das Programm mit dem C++-Header zu kompilieren, und Rust Version 2021, um das Rust-Programm zu kompilieren (Sie können die Abhängigkeiten in der Cargo.toml sehen).
Ich übernehme keinerlei Verantwortung für Schäden, die an Ihrem Computer/Programm durch dieses Projekt entstehen. Ich nehme gerne Beiträge an, erstellen Sie einen Pull-Request und ich werde ihn überprüfen!