# Hacking Active Directory: From Reconnaissance to Exploitation - Part 1
## Concepts
__NTLM__ (New Technology LAN Manager) hash biểu diễn mật mã của mật khẩu người dùng, được dùng để xác thực và truy cập từ xa, là phương án dự phòng cho Kerberos.
__NetNTLM authentication__: hoạt động bằng sử dụng Challenge - Response.

## AD Pentesting Methodology
### Step 1: Getting Initial Access: Obtaining First Credentials
__LLMNR ATTACK__
LLMNR(Link Local Multicast resolution) - trước được gọi là NBT-NS, là 1 giao thức mạng được sử dụng trong Windows để phân giải tên. Được sử dụng thay thế cho DNS khi DNS gãy.
Yêu cầu: LLMNR attack chỉ có thể được thực hiện khi LLMNR/NBT-NS được bật và máy attacker cùng mạng với target.
Cách hoạt động:

Cách tấn công:
- Cần sử dụng Responder tool để bắt được credentials và các thông tin nhạy cảm. Nó hoạt động bằng cách phản hồi yêu cầu giao thức mạng nhất định (LLMNR/NBT-NS, MDNS), thường được broadcasted trên các thiết bị mạng cục bộ.
- Từ máy attacker chạy lệnh sau và đợi traffice được capture bởi Responser:
```
sudo responder -I eth0 -dwPV
#d:enable answer for DHCP broadcast
#w:Start the WPAD rogue proxy server
#P: force the NTLM authentication for the the proxy
```
Từ có ta có thể lấy được username và hash:

Sử dụng hashcat để tìm password:
```
hashcat -m 5600 llmnr_hash.txt /usr/share/wordlists/rockyou.txt
```
__SMBRelay ATTACK__
Là kiểu tấn công mạng, attacker có thể chặn và chuyển tiếp các yêu cầu xác thực và phản hồi giữa client và server.
Là phương án dự phòng cho LLMNR attack khi hash được captured không thể bẻ khóa. Với SMB relay attack, hash sẽ được chuyển tiếp đến server để xác thực => không cần bẻ khóa băm.
Yêu cầu:
- SMB signing bị tắt hay không bắt buộc.
- Thông tin đăng nhập của người dùng được chuyển tiếp có quyền quản trị trên máy mục tiêu.
- Máy attacker cùng mạng với máy mục tiêu.
Cách tấn công:
- Đầu tiên ta phải có list các machine đáp ứng được yêu cầu, sau đó lưu ở victims.txt
- Sau đó sử dụng Responder, ta cần disable SMB và HTTP trong file configuration. Sau đó bật Responder.
```
sudo responder -I eth0 -dwPv
```
- Sau đó bật "Impacket-ntlmrelayx.py", nó sẽ lấy hash capture được và chuyển tiếp chúng cho các victims.
```
impacket-ntlmrelayx -tf victims.txt -smb2support
```

__IPV6 DNS Takeover ATTACK__
Tấn công chiếm quyền DNS IPv6 liên quan đến kẻ tấn công khai thác lỗ hổng trong cấu hình DNS IPv6 để chặn và thao túng các truy vấn DNS. => Đưa địa chỉ IPv6 giả mạo, tấn công chuyển hướng DNS sang các máy chủ độc hại => cho phép nghe lén, thay đổi và chuyển hướng lưu lượng mạng.
Yêu cầu: Có dùng IPv6
Cách hoạt động:

Cách tấn công:
- Sử dụng: mitm6 và impacket-ntlmrelayx.
- mitm6 hoạt động IPv6 DHCP server, chủ động giám sát giao diện chính của máy kẻ tấn công để tìm các yêu cầu cấu hình DHCPv6 đến.
- Mặc định Window ưu tiên IPv6 => thường xuyên tìm đến IPv6
- Khi phát hiện những yêu cầu như vậy, mitm6 phản hồi bằng cách chỉ định địa chỉ IP cho các target trong domain được chỉ định. Ngoài ra nó cấu hình máy của kẻ tấn công làm máy chủ DNS chính => chuyển hướng các query DNS qua máy kẻ tấn công.
- Ở giai đoạn này, chúng ta có thể bắt lưu lượng domain. Tuy nhiên để lấy các credentials, ta cần một công cụ xác thực => Cần WPAD.
- WPAD là công cụ tự động phát hiện proxy configuration URL, mà được lưu trữ ở file Proxy Auto-Configuration (PAC). Mặc định thì client query DNS Server để lấy URL trong PAC file. Nếu tìm thấy, tất cả mọi web requests sẽ được điều hướng qua cấu hình proxy trong file PAC.
- Ta sẽ host 1 dịch vụ WPAD giả mạo, được cấu hình để gán địa chỉ IP hacker như một web proxy khi được truy vấn. 1 khi kết nối được thành lập, proxy sẽ bắt buộc máy target cung cấp NTLM challenge/response.
```cmd
impacket-ntlmrelayx -6 -t ldaps://AD_IP_ADDR -wh wpad1.YOU_DOMAIN.com -l lootdir
# -6: ipv6
# -t:target
# -wh : to set fake wpad
# -l : to create a folder of loot
sudo mitm6 -d YOU_DOMAIN.com
```
Một khi NTLM challenge/response bị bắt => chuyển hướng đến dịch vụ xác thực LDAPS bằng cách sử dụng __impacket-ntlmrelayx__ => cho phép ta tạo user mới trong AD, tận dụng dịch vụ LDAPs được cài đặt sẵn trên AD server để xác thực và quản lý người dùng.

### Step 2: Enumerating Active Directory
Khi đã có thông tin tài khoản, ta bắt đầu quá trình enumeration => Dùng một số các công cụ như: __Bloodhound__, __Microsoft Management Console (MMC)__, PowerShell commands, PingCastle, and others
__Bloodhound__
BloodHound là tool cực mạnh được dùng để ánh xạ và phân tích Directory (AD) environments. Nó giúp nhận dạng các mối quan hệ, quyền hạn, các con đường tấn công ẩn trên AD domain bằng cách đưa ra cách user, group và máy tính được kết nối với nhau.
Để lấy data từ AD, BloodHound yêu cầu sử dụng collector. 1 số tool thích hợp: SharpHound và bloodhound-python.
Bloodhound sử dụng cấu trúc dữ liệu dựa vào đồ thị của Neo4j để lưu trữ, truy xuất hiệu quả, hình dung ra mối quan hệ trong AD.
```
sudo pip install bloodhound
#Launch neo4j
sudo neo4j console
```

Connect to the remote interface and log in using the default credentials (username: neo4j; password: neo4j). Upon your first login, you will be prompted to update your password.
```
# Launch Bloodhound
sudo bloodhound
# Collecting AD data
sudo bloodhound-python -d YOU_DOMAIN.com -u username -p passwod -ns AD_IP_ADDR -c all
# -c : all => collect all data
```


__MMC (Microsoft Management console)__
MMC là 1 framework cung cấp giao diện GUI và giao diện lập trình để quản lý và cấu hình hệ thống dựa trên Window
Để sử dụng MMC cần có RSAT.
Tiếp đó gắn AD RSAT vào MMC
Nhấp chuột phải vào Active Directory Domains and Trusts và chọn Change Forest.
Nhập mydomain.com làm miền gốc và nhấp vào OK.
Nhấp chuột phải vào Active Directory Sites and Services và chọn Change Forest.
Nhập mydomain.com làm miền gốc và nhấp vào OK.
Nhấp chuột phải vào Active Directory Users and Computers và chọn Change Domain.
Nhập mydomain.com làm miền và nhấp vào OK.
Giờ chúng ta có thể liệt kê dữ liệu AD trong Active Directory Users and Computers.

__References__
https://medium.com/@RootRouteway/hacking-active-directory-from-reconnaissance-to-exploitation-part-1-0ec218c4d533