XDR Tester c++ - #1
Open
phatterit wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
XDR-Tester Native v2.1 (C-Plus-Plus Edition) 🛡️
Wysokowydajne, natywne narzędzie do symulacji ataków (BAS) i walidacji telemetrii systemów EDR/XDR.
Projekt ten jest profesjonalnym narzędziem diagnostycznym napisanym w C++. W przeciwieństwie do rozwiązań opartych na skryptach (np. PowerShell), działa on jako natywny plik binarny. Dzięki temu symulacje są bardziej realistyczne i pozwalają na testowanie zaawansowanych mechanizmów analizy behawioralnej systemów XDR bez "szumu" generowanego przez interpreter PowerShell.
🏗️ Architektura i Inżynieria
Narzędzie zostało zbudowane zgodnie z zasadą modularnego monolitu:
Enkapsulacja Modułów: Każdy scenariusz ataku jest oddzielną klasą dziedziczącą po
TestModule, co ułatwia rozbudowę.Dual-Channel Logging: Logowanie w czasie rzeczywistym do konsoli (kolorowanie według priorytetu) oraz do pliku na dysku z wymuszonym zapisem (flush), co zapewnia przetrwanie logów nawet przy ubiciu procesu przez antywirus.
Zaawansowane Raportowanie: Zintegrowany silnik HTML analizuje wyniki i generuje profesjonalny raport audytowy z automatycznym obliczaniem Poziomu Ryzyka (Risk Score).
Bezpieczeństwo (Guardrails): Zawiera tryb "Dry Run" do bezpiecznych prezentacji oraz jawne komentarze w kodzie, dzięki którym narzędzie jest klasyfikowane jako diagnostyczne, a nie złośliwe.
Dokumentacja Techniczna (Wiki)
1. Architektura Klas (Core)
Logger(Singleton)Zarządza strumieniem informacji. Każdy wpis logu jest obiektem struktury
LogEntry.Mechanizm: Wykorzystuje
std::ofstreamz flagąios::app, co pozwala na dopisywanie danych do pliku bez jego nadpisywania przy każdym uruchomieniu testu.ReportGeneratorStatyczna klasa parsująca wektor logów.
Logika scoringu: Analizuje stosunek zdarzeń typu
ALERT(luka) doBLOCK(sukces ochrony). Na tej podstawie generuje dynamiczny styl CSS w raporcie HTML, zmieniając kolorystykę nagłówka (Zielony -> Pomarańczowy -> Czerwony).2. Szczegóły Scenariuszy Ataku
Moduł: LSASS Access (
T1003.001)Narzędzie wykorzystuje funkcję
OpenProcessz flagamiPROCESS_VM_READorazPROCESS_QUERY_INFORMATION.Dlaczego to działa? Większość systemów EDR monitoruje wywołania do
lsass.exe. Nasz kod celowo nie wykonuje funkcjiReadProcessMemory, aby pozostać bezpiecznym narzędziem audytowym, ale samo otwarcie uchwytu (handle) generuje wystarczającą telemetrię do wzbudzenia alertu.Moduł: Ransomware Simulation (
T1486)Składa się z dwóch faz:
Stress-test krypto: Wykorzystuje bibliotekę
wincrypt.h(CryptoAPI). Generuje klucz AES-256 w kontenerze tymczasowym i wykonuje intensywne operacje w pętli.VSS Manipulation: Uruchamia proces
vssadmin.exeza pomocąCreateProcessAz ukrytym oknem.Analiza: XDR-y patrzą na korelację: "nieznany proces szyfruje dane + próbuje czytać/usuwać kopie cienia".
Moduł: Injection & Hooking (
T1056.001)Instaluje globalny hook klawiatury za pomocą
SetWindowsHookExA.Zastosowanie: Testuje, czy XDR wykrywa techniki "User-Mode Hooking", które są fundamentem keyloggerów i niektórych trojanów bankowych. Funkcja
SafeHookProczapewnia, że każde zdarzenie klawiatury jest natychmiast przekazywane dalej do systemu, nie zakłócając pracy użytkownika.3. Kompilacja i Wymagania
Kompilator: Dowolny wspierający standard ISO C++17 (zalecany MSVC w Visual Studio).
Biblioteki systemowe: Program wymaga linkowania bibliotek:
User32.lib,Advapi32.lib,Wininet.lib,Crypt32.lib,Kernel32.lib(zrobione automatycznie w kodzie przez#pragma comment).4. Interpretacja Wyników