logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zatrzymywanie i uruchamianie Windows Defender w ostatnich kompilacjach (Windows 11/10)

wesmar 17 Maj 2023 11:08 3222 13
REKLAMA
  • Cześć! Publikuję ten artykuł by wyjaśnić zabezpieczenia wbudowanych strażników w nowoczesnych systemach rodziny Windows. Celem będzie udostępnienie narzędzia do zatrzymywania i uruchamiania Windows Defender na żądanie wraz z powiązanymi usługami. Nie chodzi o wyłączenie! W nowoczesnych systemach jak Windows 11/10 klasyczne metody zatrzymywania np. przez komendę „net stop WinDefend” czy nawet za pomocą powershell już nie działają. Strażnik ten stał się oczkiem w głowie firmy Microsoft. Włącza się jak niechciana Hydra lernejska. Ostrożność – matką porcelany, ale bez przesady! Otóż pisząc konsolowy soft do podniesienia uprawnień z poziomu wbudowanego administratora do TrustedInstallera o nazwie „cmdt.exe” ów defender wyciął mi skompilowaną wersję binarną. Tego już było za wiele do dzieła!
    W załączniku udostępniam wersję skompilowaną x86 i x 64 z hasłem "IRFZ44N" W wersji spakowanej z plikami: StopDefender.exe oraz StopDefenderGui.exe (graficzna nakładka), oraz drugie narzędzie, które nie jest potrzebne do zatrzymywania defendera, ale posłużyło jako inspiracja do jego napisania: cmdt.zip (i cmdt_signed.zip). StopDefender jest całkowicie darmowy i otwarty. Narzędzie podnoszące uprawnienie do maksymalnych będzie działać do końca tego roku. W związku, iż napisałem go komercyjnie dla firmy zajmującej się wdrożeniami nie mogę wypuścić wersji publicznej, ale jeżeli ktokolwiek z tego forum poprosi to udostępnię prywatną kompilację na podany numer seryjny komputera by go nie rozpowszechniać. W tym celu można śmiało pisać podając swój S/N z poziomu cmd/powershell – polecenie „wmic bios get serialnumber” lub korzystając z załączonego 2kB sn.exe (sn.zip). Kompilacje prywatne robiłbym co 2 tygodnie. Takich narzędzi trochę jest, jedne działają inne mniej np. psexec z pstools nie dostaje praw TI, ale Nirsoftu czy Nsudo już tak, choć nie przechwytuje wszystkich tokenów jak u mnie. (Sprawdziłem to drogą reverse engineering)

    Przejdźmy jednak do zatrzymywania Defendera. Nagrałem w tym celu film: https://youtu.be/6WqiULYbrh8
    I nie chodzi w nim o oglądanie, gdyż niemal każdy forumowicz jest zaawansowanym użytkownikiem/ ekspertem, a o przeczytanie opisu i sprawdzenia choćby sum kontrolnych plików, wykluczeń i fałszywych alarmów o zagrożeniach.
    To teraz jak już wszystko mamy i wszystko wiecie – trochę teorii:
    Wbudowany domyślnie w systemy operacyjne Microsoft - Windows Defender, jak się zapewne ze mną zgodzicie mocno się poprawił, jeżeli chodzi o manipulację tj. zatrzymywanie czy nawet dłuższe wyłączenia. Niestety jako dodatkowa warstwa abstrakcji strasznie spowalnia mi kompilacje większych projektów, wycina niektóre „pseudo-hackerskie”, a przy operacji kopiowania dużej ilości małych plików nagłówkowych *.h na NVME/USB-C nie znoszę go. Czas kopiowania rośnie nawet 3 krotnie. Brakowało mi narzędzia do zatrzymywania usługi wraz z dowiązaniami, ale teraz już ją mam

    Głównym składnikiem programu Windows Defender jest usługa „WinDefend”, odpowiedzialna za uruchamianie procesu ciągłego monitorowania „MsMpEng.exe” i ładowanie jego silnika „mpengine.dll”, dlatego jeśli jesteśmy w stanie zatrzymać tę usługę, dzierżymy władzę nad systemem.
    Co prawda można go wyłączyć, choć nie można zatrzymać (usługa nadal działa) poprzez interfejs graficzny, ale ta opcja nas nie interesuje, jest niewygodna i nadal pożera zasoby
    Wersja z zatrzymywaniem jet OK. teoretycznie zablokowana, ale…

    Aby zrozumieć „wnętrze” akcji, którą zamierzamy przeprowadzić, musimy jasno określić dwie koncepcje: czym jest Token i czym jest TrustedInstaller (TI). Token w systemie operacyjnym Microsoft Windows jest elementem bezpieczeństwa, który zapewnia identyfikację procesów i wątków, gdy chcą one wykonać działania na sekuryzowalnych obiektach systemu (plikach, rekordach, usługach, kluczach rejestru..). Innymi słowy, to jak pokazanie paszportu, gdy chcesz wlecieć do innych krajów
    Przechowuje między innymi: poziom integralności, użytkownika, do którego należy proces, uprawnienia oraz grupy. Nie będziemy wchodzić w szczegóły, ponieważ dla nas liczy się właśnie to drugie, czyli grupy, do których należy proces/wątek przedstawiający ten token bezpieczeństwa.

    Zauważcie, że dany proces lub wątek, jeżeli tylko zdobędzie odpowiednie uprawnienia, może podszywać się pod innego użytkownika. Dlatego nasza aplikacja może kopiować i/lub używać tokena innego wątku/procesu, o ile mamy uprawnienia do otwarcia interesującego nas procesu i uzyskania jego obsługi Tokena z odpowiednimi uprawnieniami (Impersonate / DuplicateToken) .
    Teraz, gdy wiemy, czym jest token i co możemy z nim zrobić, weźmy pod lupę, TrustedInstaller.
    Może próbowaliście usunąć plik z systemu np. z WinSxS i nie byliście w stanie tego zrobić?, nawet będąc SYSTEMEM czy Administratorem. Właściciel pliku (TrustedInstaller) zwrócił waszą uwagę😊. Cóż, TrustedInstaller to fikcyjna grupa utworzona przez SCM (Service Control Manager) podczas uruchamiania komputera, tworząca tak zwaną „Grupę usług”. A propos - Narzędzie cmdt pozwala ominąć te ograniczenia.
    Oznacza to, że każda usługa będąca częścią nowoczesnego systemu operacyjnego Windows ma fikcyjną grupę pasującą do jej nazwy. Ta funkcja jest przydatna, aby zapewnić dostęp do wszystkich obiektów podlegających sekuryzacji (plików, potoków, rekordów, tokenów, kluczy rejestru) systemu, z których może korzystać proces usługowy, zmniejszając w ten sposób narzut związany ze sprawdzaniem tokena pod kątem wszystkich list DACL . obiektów
    TrustedInstaller to nie tylko grupa, ale także usługa, którą możemy znaleźć na liście usług na komputerze jako taką, zwykle zatrzymaną, ponieważ uruchamia się warunkowo, gdy wymaga tego „Windows Update” – wdrażanie aktualizacji.
    Moi drodzy - ten proces i ta grupa mają wielką moc, nawet większą niż „SYSTEM” w systemie. Jesteście oczywiście taką „mocą” zainteresowani. Jako ciekawostkę, jeśli chcemy odróżnić rzeczywiste grupy/użytkowników od tych fikcyjnych utworzonych przez SCM, musicie spojrzeć na „Domenę”, która jest prefiksem, pojawiającym się przed użytkownikiem/grupą.
    Zwykle te prawdziwe poprzedzone są przedrostkiem "NT AUTHORITY", natomiast syntetyk serwisowy - "NT SERVICE". Jedyną tożsamością bezpieczeństwa zdolną do zatrzymania usługi Antivirus (Full control) jest ona sama oraz usługa TrustedInstaller. Ma to sens, ponieważ aby się zaktualizować, TrustedInstaller.exe musi być w stanie zatrzymać antywirusa i skopiować nowe pliki. Zauważ, że nie jest w stanie tego zrobić nawet Administrator ani grupa SYSTEM.

    Jako pierwsze podejście do naszego celu moglibyśmy pomyśleć o pożyczeniu tokenu od samego "MsMpEng.exe" i podszyciu się pod niego, ponieważ prezentuje on grupę "NT SERVICE/WinDefend", ale nie jest to możliwe, ponieważ proces ten jest procesem typu PPL (Protected Process Light) i dlatego nie będziemy w stanie uzyskać uchwytu procesu, który pozwoli nam ostatecznie odczytać jego token, nawet z uprawnieniami debugowania (SeDebugPrivilege).

    Wiemy już zatem, że tylko jeśli uzyskamy token z zawartą w nim grupą TI, będziemy w stanie zatrzymać usługę WinDefend. Naszym kolejnym celem jest zatem usługa TI.

    Najpierw uruchomimy usługę, będąc administratorami i skontrolujemy uprawnienia otwierające proces. Aby uzyskać dostęp do tokena wystarczy dostęp na poziomie otwarcia procesu zawierającego PROCESS_QUERY_INFORMATION, PROCESS_QUERY_LIMITED_INFORMATION lub PROCESS_ALL_ACCESS (Pełna kontrola).
    Warto również zauważyć, że proces ten nie jest chroniony za pomocą PPL, co pozwoliłoby nam, a priori, na jego otwarcie. Jak to możliwe, że Microsoft nie chroni tak ważnego procesu w systemie? Przecież to jest cecha, a nie błąd!
    Wymagamy użycia przywileju SeDebugPrivilege, ponieważ poziom integralności procesu TI to SYSTEM, a poziom integralności naszej aplikacji to High, więc jest poniżej. Pamiętajmy, że aby sprawdzić czy dany obiekt może uzyskać dostęp do innego, najpierw sprawdzamy Mandatory Integrity Control, a następnie Discretionary access control, w tym przypadku spełniamy drugi, ale nie pierwszy. SeDebugPrivilege pozwala nam pominąć obie, ale tylko dla OpenProcess.

    Sprawdźmy teraz uprawnienia tokena podstawowego tokena procesu TI, ponieważ aby go użyć i podszyć się pod niego, musi on nam na to pozwolić za pomocą uprawnienia IMPERSONATE dla naszego użytkownika.
    Jako Administratorzy widzimy, że to nie wystarczy, więc nie będziemy mogli odczytać i podszyć się pod token TrustedInstaller. Będziemy mogli to zrobić tylko wtedy, gdy jesteśmy SYSTEMEM, więc będziemy musieli wykonać krok pośredni i eskalować uprawnienia z Admina na SYSTEM.

    Najprostszym sposobem na eskalację uprawnień z Admina na SYSTEM jest podszycie się pod token SYSTEM z już działającego procesu. Jednym z najlepszych kandydatów jest Winlogon.exe, ponieważ działa w tej samej sesji co użytkownik, a także ma luźniejsze ACL w tym zakresie (Administrator może otworzyć swój token w trybie IMPERSONATE).
    Zostanie wyważenie ostatnich drzwi, które prowadzą nas do sposobu by zatrzymać Defendera 😊
    Gotowy program w załączniku, a kod źródłowy „silnika” niżej:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    Fajne? Ranking DIY
    O autorze
    wesmar
    Poziom 22  
    Offline 
    wesmar napisał 410 postów o ocenie 176, pomógł 39 razy. Mieszka w mieście Warszawa. Jest z nami od 2008 roku.
  • REKLAMA
  • #3 20584350
    Konto nie istnieje
    Poziom 1  
  • REKLAMA
  • #4 20584392
    wesmar
    Poziom 22  
    Znam go bo używałem przez chwilę, niestety nie działa jak trzeba. Aby zadziałał przynajmniej w windows 11 musi zostać wyłączona ochrona przed naruszeniami co eliminuje jego stosowanie bo wyłącza elementy kontroli integralności. Naturalnie mój kradnąc token nie potrzebuje żadnej flagi, żadnego suwaka poza wykluczeniem, które zrobię metodą drag&drop.
    Dowód:
    Zatrzymywanie i uruchamianie Windows Defender w ostatnich kompilacjach (Windows 11/10)
  • REKLAMA
  • #5 20584774
    KJ
    Poziom 31  
    Czy da się jakoś to cholerstwo (defendera) całkowicie wywalić z win10 ? Obojętnie czy na poziomie instalki czy zainstalowanego systemu ?
  • #6 20584813
    wesmar
    Poziom 22  
    Da się, jest masa tego typu narzędzi na https://forums.mydigitallife.net/, sam z tamtymi forumowiczami również dyskutuję, ale w sprawie właśnie tzw. "Tamper Protection". Tamte narzędzia muszą mieć interakcję i/lub restart. Tu można za pomocą Pstools (psexec) wyłączać z poziomu konsoli administrując w dowolnej sieci. Cóż jest to lokalny exploit i póki microsoft nie poprawi kodu tego typu narzędzia będzie można tworzyć. W szerszym ujęciu dotyczy to każdego oprogramowania AV.
    Co do deinstalacji poza wycięciem usług (bez "sense") jak niżej w zmodyfikowanym pliku nagłówkowym, który wykorzystuję, wypadałoby pozbyć się jeszcze strażnika z tray'a. Mi to śmigało i zarówno "sfc /scannow" jak i restorehealth przechodziły test integralności. Niestety wersje z pełną aktualizacją przywracały defendera. A takie aktualizację robię gdy debuguję po USB sterowniki w trybie SecureBoot i Vmd-t.
    Poniżej usługi jakie poddaję obróbce i są bezbronne:

    #pragma once
    #include <windows.h>
    #include <iostream>
    #include <tchar.h>
    
    using namespace std;
    
    #ifdef UNICODE
    #define get_username  get_usernameW
    #else
    #define get_username  get_usernameA
    #endif
    
    #define DEF_SERVICES_COUNT 7
    
    const PCTSTR DefenderServices[] = {
     
        TEXT("Sense"),
        TEXT("WdBoot"),
        TEXT("WdFilter"),
        TEXT("Wscsvc"),
        TEXT("WinDefend"),
        TEXT("WdNisSvc"),
        TEXT("WdNisDrv"),
    };
    
    wstring get_usernameW();
    string get_usernameA();
    BOOL StopDefenderService();
    int GetProcessByName(PCTSTR name);
    
  • REKLAMA
  • #8 20586896
    wesmar
    Poziom 22  
    W pierwszym komentarzu pod filmem YT jest do pobrania wersja 1.03. Dodałem tam funkcję, automatycznego samowykluczenia bo skoro "użyczam sobie" prawa WinDefend to warto to zrobić. Niniejszym program uzyskuje dostęp do chronionego klucza HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows Defender\Exclusions\Paths. Wyjątek zatem odczytamy z okien "zarządzaj wykluczeniami". Ale tu uwaga przy systemach x64 powinno się użyć wersji x64 - tylko jeżeli chodzi o ten wyjątek. Podobną Technikę można zastosować do każdego AV, bo korzystają one dokładnie z tego samego API. Niestety nie mam ich i nie będę w tym kierunku rozwijał tego programu. Bardziej to koncepcja i pokazanie, że defender jest nadal bezbronny. Przeprowadzę jednak jeszcze jeden manewr: Zastosuję częściowo własny crypter-PE by go zamaskować przez innymi antywirusami. W tym celu zaciemnię określone interfejsy API podstawiając inne. Avasta oszukam peresed'ami z własnych avast/pe_tools. Jak się po tym zabiegu narzędzia AV "nauczą" to zaszyfruję go w czasie wykonywania implementując referencyjną „Hyperion: Implementation of a PE-Crypter”.
    Co do komunikatu przy uruchamianiu, używam 11-ki i kompilowałem pod VS 2022 V 17.6 ostatniej, wydanej ze 3 dni temu, U siebie po uruchomieniu mam "Windows Defender service is running". Może uruchamianie trwa dłużej, a może nie pozwala Eset? Trzeba by było popatrzeć w logi/dziennik zdarzeń (widok niestandardowy). Problem raczej może być z zatrzymaniem i czasami trzeba dwa razy, ale i to wyeliminuję bo ntdll.dll ma multum nieudokumentowanych funkcji przez które muszę się przegryźć.
  • #9 20586900
    xangel
    Poziom 19  
    Chodzi mi o to, że przy zatrzymywaniu jest stopped i przy uruchamianiu jest stopped, a powinno być chyba started?

    Pobrałem ten z linku pod filmem. Zainstalował się, ale po uruchomieniu, jak kliknąłem Stop Defender, to mi go ESET wywalił :)
    Ale jak klikam Start Defender, to dalej mam komunikat, że Defender is stopped.
  • #10 20586928
    wesmar
    Poziom 22  
    Popatrz na ten króciutki 3MB film i napisz w którym momencie. Może popełniłem błąd? Tu jest właśnie przypadek, że za pierwszym razem nie wszystkie usługi się zatrzymały. Drugi raz go dobił, a start jest normalny. W pierwszej wersji trzeba było ponownie nacisnąć "start" Stąd opis oczywiście do zmiany
    Rozumiem, że komunikat u kolegi jest "stopped" a Defender uruchamia się, tak? W wolnej chwili zajrzę w środowisku z ESETEM. Mam jakąś 3 letnią licencję z eBay, z której nie korzystam
    [film:10b1be8381]https://filmy.elektroda.pl/34_1684503778.m34[/film:10b1be8381]
    Jeżeli filmik *.mkv dodany na elektrodzie się nie wczyta (w podglądzie nie widzę) to jeszcze:


  • #11 20586932
    xangel
    Poziom 19  
    U mnie działa to jak w 0:17 - jak wciskam Stok to mam Windows Defender service is Stopped.
    A jak potem wciskam Start, to nie mam Windows Defender Service is running, tylko mam Windows Defender service is stopped :)
    Więc albo go źle zabił, bo mu ESET przeszkodził i teraz nie może go uruchomić poprawnie, albo po prostu komunikat jest zły.
  • #12 20586945
    wesmar
    Poziom 22  
    Chyba wiem jaki jest u kolegi problem. Konsola wymusza "sudo", a GUI nie, wystarczy uruchomić jako administrator z prawego lub trwale we właściwościach oflagować ew poczekać, aż skompiluję kolejnym razem z nowym manifestem podnoszącym rangę atrybut uprawnienia do "requireAdministrator" lub "highestAvailable"
    Pozdrawiam

    Dodano po 8 [minuty]:

    Jeżeli to był taki problem, a zakładam, że włączona jest kontrola konta użytkownika i ustawiona dość wysoko - wystawiam poprawioną wersję graficzną proszącą o uruchomienie jako administrator:
    https://www.atlogika.com/software/StopDefenderGui.zip

Podsumowanie tematu

W dyskusji poruszono problem zatrzymywania i uruchamiania Windows Defender w systemach Windows 10 i 11. Użytkownicy zauważyli, że tradycyjne metody, takie jak komenda „net stop WinDefend”, nie działają w nowych kompilacjach. Zamiast tego, zaproponowano użycie narzędzi takich jak StopDefender.exe oraz StopDefenderGui.exe, które umożliwiają kontrolowanie usługi Defender. Wiele osób zgłaszało problemy z blokowaniem tych narzędzi przez oprogramowanie antywirusowe, takie jak ESET. Użytkownicy dzielili się również doświadczeniami związanymi z wyłączaniem ochrony przed naruszeniami oraz interakcją z systemem, co wpływa na działanie narzędzi. Wskazano na potrzebę uruchamiania aplikacji z uprawnieniami administratora, aby uniknąć problemów z ich działaniem.
Podsumowanie wygenerowane przez model językowy.
REKLAMA