mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/windows-hardening/active-directory-methodology/adws-enu
This commit is contained in:
parent
71d9d74f63
commit
d322da331a
@ -260,6 +260,7 @@
|
||||
- [Ad Certificates](windows-hardening/active-directory-methodology/ad-certificates.md)
|
||||
- [AD information in printers](windows-hardening/active-directory-methodology/ad-information-in-printers.md)
|
||||
- [AD DNS Records](windows-hardening/active-directory-methodology/ad-dns-records.md)
|
||||
- [Adws Enumeration](windows-hardening/active-directory-methodology/adws-enumeration.md)
|
||||
- [ASREPRoast](windows-hardening/active-directory-methodology/asreproast.md)
|
||||
- [BloodHound & Other AD Enum Tools](windows-hardening/active-directory-methodology/bloodhound.md)
|
||||
- [Constrained Delegation](windows-hardening/active-directory-methodology/constrained-delegation.md)
|
||||
|
@ -0,0 +1,106 @@
|
||||
# Active Directory Web Services (ADWS) Enumeration & Stealth Collection
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
## What is ADWS?
|
||||
|
||||
Active Directory Web Services (ADWS)는 **Windows Server 2008 R2 이후 모든 도메인 컨트롤러에서 기본적으로 활성화되어 있으며** TCP **9389**에서 수신 대기합니다. 이름과는 달리, **HTTP는 포함되지 않습니다**. 대신, 이 서비스는 독점적인 .NET 프레임 프로토콜 스택을 통해 LDAP 스타일의 데이터를 노출합니다:
|
||||
|
||||
* MC-NBFX → MC-NBFSE → MS-NNS → MC-NMF
|
||||
|
||||
트래픽이 이러한 이진 SOAP 프레임 안에 캡슐화되어 있고 일반적이지 않은 포트를 통해 전송되기 때문에, **ADWS를 통한 열거는 고전적인 LDAP/389 및 636 트래픽보다 검사, 필터링 또는 서명될 가능성이 훨씬 적습니다**. 운영자에게는 다음과 같은 의미가 있습니다:
|
||||
|
||||
* 더 은밀한 정찰 – 블루 팀은 종종 LDAP 쿼리에 집중합니다.
|
||||
* SOCKS 프록시를 통해 9389/TCP를 터널링하여 **비 Windows 호스트 (Linux, macOS)**에서 수집할 수 있는 자유.
|
||||
* LDAP를 통해 얻을 수 있는 동일한 데이터 (사용자, 그룹, ACL, 스키마 등)와 **쓰기**를 수행할 수 있는 능력 (예: **RBCD**를 위한 `msDs-AllowedToActOnBehalfOfOtherIdentity`).
|
||||
|
||||
> NOTE: ADWS는 많은 RSAT GUI/PowerShell 도구에서도 사용되므로 트래픽이 합법적인 관리자 활동과 혼합될 수 있습니다.
|
||||
|
||||
## SoaPy – Native Python Client
|
||||
|
||||
[SoaPy](https://github.com/logangoins/soapy)는 **순수 Python으로 ADWS 프로토콜 스택을 완전히 재구현한 것입니다**. 이는 NBFX/NBFSE/NNS/NMF 프레임을 바이트 단위로 생성하여 .NET 런타임에 손대지 않고 Unix 유사 시스템에서 수집할 수 있게 합니다.
|
||||
|
||||
### Key Features
|
||||
|
||||
* **SOCKS를 통한 프록시 지원** (C2 임플란트에서 유용).
|
||||
* LDAP `-q '(objectClass=user)'`와 동일한 세밀한 검색 필터.
|
||||
* 선택적 **쓰기** 작업 ( `--set` / `--delete` ).
|
||||
* BloodHound에 직접 수집하기 위한 **BOFHound 출력 모드**.
|
||||
* 사람이 읽기 쉬운 경우를 위해 타임스탬프 / `userAccountControl`을 예쁘게 만드는 `--parse` 플래그.
|
||||
|
||||
### Installation (operator host)
|
||||
```bash
|
||||
python3 -m pip install soapy-adws # or git clone && pip install -r requirements.txt
|
||||
```
|
||||
## Stealth AD Collection Workflow
|
||||
|
||||
다음 워크플로우는 ADWS를 통해 **도메인 및 ADCS 객체**를 열거하고, 이를 BloodHound JSON으로 변환한 후 인증서 기반 공격 경로를 탐색하는 방법을 보여줍니다 – 모두 Linux에서:
|
||||
|
||||
1. **대상 네트워크에서 귀하의 박스로 9389/TCP 터널링** (예: Chisel, Meterpreter, SSH 동적 포트 포워드 등을 통해). `export HTTPS_PROXY=socks5://127.0.0.1:1080`을 내보내거나 SoaPy의 `--proxyHost/--proxyPort`를 사용하십시오.
|
||||
|
||||
2. **루트 도메인 객체 수집:**
|
||||
```bash
|
||||
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
|
||||
-q '(objectClass=domain)' \
|
||||
| tee data/domain.log
|
||||
```
|
||||
3. **구성 NC에서 ADCS 관련 객체 수집:**
|
||||
```bash
|
||||
soapy ludus.domain/jdoe:'P@ssw0rd'@10.2.10.10 \
|
||||
-dn 'CN=Configuration,DC=ludus,DC=domain' \
|
||||
-q '(|(objectClass=pkiCertificateTemplate)(objectClass=CertificationAuthority) \\
|
||||
(objectClass=pkiEnrollmentService)(objectClass=msPKI-Enterprise-Oid))' \
|
||||
| tee data/adcs.log
|
||||
```
|
||||
4. **BloodHound로 변환:**
|
||||
```bash
|
||||
bofhound -i data --zip # produces BloodHound.zip
|
||||
```
|
||||
5. **ZIP 파일을** BloodHound GUI에 업로드하고 `MATCH (u:User)-[:Can_Enroll*1..]->(c:CertTemplate) RETURN u,c`와 같은 cypher 쿼리를 실행하여 인증서 상승 경로(ESC1, ESC8 등)를 드러냅니다.
|
||||
|
||||
### `msDs-AllowedToActOnBehalfOfOtherIdentity` (RBCD) 작성하기
|
||||
```bash
|
||||
soapy ludus.domain/jdoe:'P@ssw0rd'@dc.ludus.domain \
|
||||
--set 'CN=Victim,OU=Servers,DC=ludus,DC=domain' \
|
||||
msDs-AllowedToActOnBehalfOfOtherIdentity 'B:32:01....'
|
||||
```
|
||||
`s4u2proxy`/`Rubeus /getticket`와 결합하여 전체 **리소스 기반 제약 위임** 체인을 만듭니다.
|
||||
|
||||
## 탐지 및 강화
|
||||
|
||||
### 상세 ADDS 로깅
|
||||
|
||||
ADWS(및 LDAP)에서 발생하는 비효율적인 검색을 드러내기 위해 도메인 컨트롤러에서 다음 레지스트리 키를 활성화합니다:
|
||||
```powershell
|
||||
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Diagnostics' -Name '15 Field Engineering' -Value 5 -Type DWORD
|
||||
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Expensive Search Results Threshold' -Value 1 -Type DWORD
|
||||
New-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters' -Name 'Search Time Threshold (msecs)' -Value 0 -Type DWORD
|
||||
```
|
||||
이벤트는 **Directory-Service** 아래에 전체 LDAP 필터와 함께 나타나며, 쿼리가 ADWS를 통해 도착했을 때도 마찬가지입니다.
|
||||
|
||||
### SACL 카나리 객체
|
||||
|
||||
1. 더미 객체(예: 비활성 사용자 `CanaryUser`)를 생성합니다.
|
||||
2. _Everyone_ 주체에 대한 **Audit** ACE를 추가하고 **ReadProperty**에서 감사합니다.
|
||||
3. 공격자가 `(servicePrincipalName=*)`, `(objectClass=user)` 등을 수행할 때마다 DC는 실제 사용자 SID를 포함하는 **Event 4662**를 발생시킵니다. 이는 요청이 프록시되거나 ADWS에서 발생하더라도 마찬가지입니다.
|
||||
|
||||
Elastic 사전 구축 규칙 예:
|
||||
```kql
|
||||
(event.code:4662 and not user.id:"S-1-5-18") and winlog.event_data.AccessMask:"0x10"
|
||||
```
|
||||
## Tooling Summary
|
||||
|
||||
| Purpose | Tool | Notes |
|
||||
|---------|------|-------|
|
||||
| ADWS enumeration | [SoaPy](https://github.com/logangoins/soapy) | Python, SOCKS, read/write |
|
||||
| BloodHound ingest | [BOFHound](https://github.com/bohops/BOFHound) | SoaPy/ldapsearch 로그 변환 |
|
||||
| Cert compromise | [Certipy](https://github.com/ly4k/Certipy) | 동일한 SOCKS를 통해 프록시 가능 |
|
||||
|
||||
## References
|
||||
|
||||
* [SpecterOps – Make Sure to Use SOAP(y) – An Operators Guide to Stealthy AD Collection Using ADWS](https://specterops.io/blog/2025/07/25/make-sure-to-use-soapy-an-operators-guide-to-stealthy-ad-collection-using-adws/)
|
||||
* [SoaPy GitHub](https://github.com/logangoins/soapy)
|
||||
* [BOFHound GitHub](https://github.com/bohops/BOFHound)
|
||||
* [Microsoft – MC-NBFX, MC-NBFSE, MS-NNS, MC-NMF specifications](https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-nbfx/)
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
@ -1,87 +1,78 @@
|
||||
# BloodHound & Other AD Enum Tools
|
||||
# BloodHound & Other Active Directory Enumeration Tools
|
||||
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
||||
{{#ref}}
|
||||
adws-enumeration.md
|
||||
{{#endref}}
|
||||
|
||||
> NOTE: 이 페이지는 **열거**하고 **시각화**하는 데 유용한 도구들을 그룹화합니다. 스텔스 **Active Directory Web Services (ADWS)** 채널을 통한 수집에 대한 내용은 위의 참조를 확인하세요.
|
||||
|
||||
---
|
||||
|
||||
## AD Explorer
|
||||
|
||||
[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer)는 Sysinternal Suite의 도구입니다:
|
||||
[AD Explorer](https://docs.microsoft.com/en-us/sysinternals/downloads/adexplorer) (Sysinternals)는 다음을 허용하는 고급 **AD 뷰어 및 편집기**입니다:
|
||||
|
||||
> 고급 Active Directory (AD) 뷰어 및 편집기입니다. AD Explorer를 사용하여 AD 데이터베이스를 쉽게 탐색하고, 즐겨찾기 위치를 정의하고, 대화 상자를 열지 않고도 객체 속성과 특성을 보고, 권한을 편집하고, 객체의 스키마를 보고, 저장하고 다시 실행할 수 있는 정교한 검색을 수행할 수 있습니다.
|
||||
* 디렉토리 트리의 GUI 탐색
|
||||
* 객체 속성 및 보안 설명자 편집
|
||||
* 오프라인 분석을 위한 스냅샷 생성 / 비교
|
||||
|
||||
### Snapshots
|
||||
### Quick usage
|
||||
|
||||
AD Explorer는 AD의 스냅샷을 생성할 수 있어 오프라인에서 확인할 수 있습니다.\
|
||||
오프라인에서 취약점을 발견하거나 시간에 따라 AD DB의 다양한 상태를 비교하는 데 사용할 수 있습니다.
|
||||
1. 도구를 시작하고 도메인 자격 증명을 사용하여 `dc01.corp.local`에 연결합니다.
|
||||
2. `File ➜ Create Snapshot`을 통해 오프라인 스냅샷을 생성합니다.
|
||||
3. `File ➜ Compare`를 사용하여 두 스냅샷을 비교하여 권한 변화를 확인합니다.
|
||||
|
||||
연결하려면 사용자 이름, 비밀번호 및 방향이 필요합니다 (모든 AD 사용자가 필요합니다).
|
||||
|
||||
AD의 스냅샷을 찍으려면 `File` --> `Create Snapshot`으로 이동하고 스냅샷의 이름을 입력합니다.
|
||||
---
|
||||
|
||||
## ADRecon
|
||||
|
||||
[**ADRecon**](https://github.com/adrecon/ADRecon)은 AD 환경에서 다양한 아티팩트를 추출하고 결합하는 도구입니다. 이 정보는 분석을 용이하게 하고 대상 AD 환경의 현재 상태에 대한 전체적인 그림을 제공하는 메트릭이 포함된 **특별히 형식화된** Microsoft Excel **보고서**로 제공될 수 있습니다.
|
||||
```bash
|
||||
# Run it
|
||||
.\ADRecon.ps1
|
||||
[ADRecon](https://github.com/adrecon/ADRecon)은 도메인에서 대량의 아티팩트(ACL, GPO, 신뢰, CA 템플릿 등)를 추출하고 **Excel 보고서**를 생성합니다.
|
||||
```powershell
|
||||
# On a Windows host in the domain
|
||||
PS C:\> .\ADRecon.ps1 -OutputDir C:\Temp\ADRecon
|
||||
```
|
||||
## BloodHound
|
||||
---
|
||||
|
||||
From [https://github.com/BloodHoundAD/BloodHound](https://github.com/BloodHoundAD/BloodHound)
|
||||
## BloodHound (그래프 시각화)
|
||||
|
||||
> BloodHound는 [Linkurious](http://linkurio.us/) 위에 구축된 단일 페이지 Javascript 웹 애플리케이션으로, [Electron](http://electron.atom.io/)으로 컴파일되었으며, C# 데이터 수집기로 공급되는 [Neo4j](https://neo4j.com/) 데이터베이스를 사용합니다.
|
||||
[BloodHound](https://github.com/BloodHoundAD/BloodHound)는 그래프 이론 + Neo4j를 사용하여 온프레미스 AD 및 Azure AD 내의 숨겨진 권한 관계를 드러냅니다.
|
||||
|
||||
BloodHound는 그래프 이론을 사용하여 Active Directory 또는 Azure 환경 내의 숨겨진 관계와 종종 의도하지 않은 관계를 드러냅니다. 공격자는 BloodHound를 사용하여 빠르게 식별할 수 없는 복잡한 공격 경로를 쉽게 식별할 수 있습니다. 방어자는 BloodHound를 사용하여 동일한 공격 경로를 식별하고 제거할 수 있습니다. 블루 팀과 레드 팀 모두 BloodHound를 사용하여 Active Directory 또는 Azure 환경에서 권한 관계에 대한 더 깊은 이해를 쉽게 얻을 수 있습니다.
|
||||
|
||||
그래서, [Bloodhound ](https://github.com/BloodHoundAD/BloodHound)는 도메인을 자동으로 열거하고 모든 정보를 저장하며, 가능한 권한 상승 경로를 찾고, 모든 정보를 그래프를 사용하여 보여줄 수 있는 놀라운 도구입니다.
|
||||
|
||||
BloodHound는 **ingestors**와 **visualisation application**의 두 가지 주요 부분으로 구성됩니다.
|
||||
|
||||
**ingestors**는 **도메인을 열거하고 모든 정보를 시각화 애플리케이션이 이해할 수 있는 형식으로 추출하는 데 사용됩니다.**
|
||||
|
||||
**visualisation application은 neo4j를 사용하여** 모든 정보가 어떻게 관련되어 있는지 보여주고 도메인에서 권한을 상승시키는 다양한 방법을 보여줍니다.
|
||||
|
||||
### Installation
|
||||
|
||||
BloodHound CE가 생성된 후, 전체 프로젝트는 Docker를 사용하기 쉽게 업데이트되었습니다. 시작하는 가장 쉬운 방법은 미리 구성된 Docker Compose 구성을 사용하는 것입니다.
|
||||
|
||||
1. Docker Compose를 설치합니다. 이는 [Docker Desktop](https://www.docker.com/products/docker-desktop/) 설치에 포함되어야 합니다.
|
||||
2. Run:
|
||||
### 배포 (Docker CE)
|
||||
```bash
|
||||
curl -L https://ghst.ly/getbhce | docker compose -f - up
|
||||
# Web UI ➜ http://localhost:8080 (user: admin / password from logs)
|
||||
```
|
||||
3. Docker Compose의 터미널 출력에서 무작위로 생성된 비밀번호를 찾습니다.
|
||||
4. 브라우저에서 http://localhost:8080/ui/login으로 이동합니다. 사용자 이름 **`admin`**과 Docker Compose 로그에서 찾을 수 있는 **`무작위로 생성된 비밀번호`**로 로그인합니다.
|
||||
### 수집기
|
||||
|
||||
이후 무작위로 생성된 비밀번호를 변경해야 하며, 새로운 인터페이스가 준비되어 ingestors를 직접 다운로드할 수 있습니다.
|
||||
* `SharpHound.exe` / `Invoke-BloodHound` – 네이티브 또는 PowerShell 변형
|
||||
* `AzureHound` – Azure AD 열거
|
||||
* **SoaPy + BOFHound** – ADWS 수집 (상단의 링크 참조)
|
||||
|
||||
### SharpHound
|
||||
#### 일반 SharpHound 모드
|
||||
```powershell
|
||||
SharpHound.exe --CollectionMethods All # Full sweep (noisy)
|
||||
SharpHound.exe --CollectionMethods Group,LocalAdmin,Session,Trusts,ACL
|
||||
SharpHound.exe --Stealth --LDAP # Low noise LDAP only
|
||||
```
|
||||
수집기는 BloodHound GUI를 통해 수집된 JSON을 생성합니다.
|
||||
|
||||
여러 가지 옵션이 있지만, 도메인에 가입된 PC에서 현재 사용자로 SharpHound를 실행하고 모든 정보를 추출하려면 다음과 같이 할 수 있습니다:
|
||||
```
|
||||
./SharpHound.exe --CollectionMethods All
|
||||
Invoke-BloodHound -CollectionMethod All
|
||||
```
|
||||
> **CollectionMethod** 및 루프 세션에 대한 자세한 내용은 [여기](https://support.bloodhoundenterprise.io/hc/en-us/articles/17481375424795-All-SharpHound-Community-Edition-Flags-Explained)에서 확인할 수 있습니다.
|
||||
|
||||
다른 자격 증명을 사용하여 SharpHound를 실행하려면 CMD netonly 세션을 생성하고 거기에서 SharpHound를 실행할 수 있습니다:
|
||||
```
|
||||
runas /netonly /user:domain\user "powershell.exe -exec bypass"
|
||||
```
|
||||
[**Bloodhound에 대해 더 알아보세요 ired.team에서.**](https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/abusing-active-directory-with-bloodhound-on-kali-linux)
|
||||
---
|
||||
|
||||
## Group3r
|
||||
|
||||
[**Group3r**](https://github.com/Group3r/Group3r)는 **그룹 정책**과 관련된 Active Directory의 **취약점**을 찾기 위한 도구입니다. \
|
||||
도메인 내의 호스트에서 **모든 도메인 사용자**를 사용하여 **group3r를 실행**해야 합니다.
|
||||
[Group3r](https://github.com/Group3r/Group3r)은 **그룹 정책 개체**를 열거하고 잘못된 구성을 강조합니다.
|
||||
```bash
|
||||
group3r.exe -f <filepath-name.log>
|
||||
# -s sends results to stdin
|
||||
# -f send results to file
|
||||
# Execute inside the domain
|
||||
Group3r.exe -f gpo.log # -s to stdout
|
||||
```
|
||||
---
|
||||
|
||||
## PingCastle
|
||||
|
||||
[**PingCastle**](https://www.pingcastle.com/documentation/) **는 AD 환경의 보안 태세를 평가**하고 멋진 **보고서**를 그래프와 함께 제공합니다.
|
||||
|
||||
실행하려면 이진 파일 `PingCastle.exe`를 실행하면 **인터랙티브 세션**이 시작되어 옵션 메뉴가 표시됩니다. 기본 옵션으로 사용할 수 있는 것은 **`healthcheck`**로, **도메인**의 **개요**를 설정하고 **잘못된 구성** 및 **취약점**을 찾습니다.
|
||||
|
||||
[PingCastle](https://www.pingcastle.com/documentation/)는 Active Directory의 **건강 검진**을 수행하고 위험 점수가 포함된 HTML 보고서를 생성합니다.
|
||||
```powershell
|
||||
PingCastle.exe --healthcheck --server corp.local --user bob --password "P@ssw0rd!"
|
||||
```
|
||||
{{#include ../../banners/hacktricks-training.md}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user