Skip to content

XDR Tester c++ - #1

Open
phatterit wants to merge 1 commit into
mainfrom
xdr-tester-c++
Open

XDR Tester c++#1
phatterit wants to merge 1 commit into
mainfrom
xdr-tester-c++

Conversation

@phatterit

Copy link
Copy Markdown
Owner

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::ofstream z flagą ios::app, co pozwala na dopisywanie danych do pliku bez jego nadpisywania przy każdym uruchomieniu testu.

ReportGenerator

Statyczna klasa parsująca wektor logów.

  • Logika scoringu: Analizuje stosunek zdarzeń typu ALERT (luka) do BLOCK (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ę OpenProcess z flagami PROCESS_VM_READ oraz PROCESS_QUERY_INFORMATION.

  • Dlaczego to działa? Większość systemów EDR monitoruje wywołania do lsass.exe. Nasz kod celowo nie wykonuje funkcji ReadProcessMemory, 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:

  1. Stress-test krypto: Wykorzystuje bibliotekę wincrypt.h (CryptoAPI). Generuje klucz AES-256 w kontenerze tymczasowym i wykonuje intensywne operacje w pętli.

  2. VSS Manipulation: Uruchamia proces vssadmin.exe za pomocą CreateProcessA z 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 SafeHookProc zapewnia, ż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

Wynik w logu | Co to oznacza dla audytora? -- | -- ALERT | Luka. Atak został wykonany pomyślnie. Należy sprawdzić politykę XDR. BLOCK | Sukces. Mechanizm ochrony behawioralnej zablokował akcję lub proces. FAIL | Sukces ochrony. Zazwyczaj oznacza błąd API wynikający z braku uprawnień nałożonych przez system bezpieczeństwa.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant