I. Breaching Active Directory

1.1. Introduction to AD Breaches

Phần này sẽ cover một số kĩ thuật và công cụ thường được sử dụng để thực hiện enumerate AD. Trước khi thực hiện tấn công AD (Privililege escalation, lateral movement,..) thì ta cần có quyền truy cập ban đầu (initial access)
* Mục tiêu thực hiện:
+ NTLM Authenticated Services
+ LDAP Bind Credentials
+ Authentication Relays

1.2. OSINT and Phishing

Hai phương pháp phổ biến để giành quyền truy cập vào AD Credentials đó là Trí thông minh nguồn (OSINT) và Phishing.

OSINT:

OSINT thường được sử dụng để khai thác các thông tin được công khai trên internet, trong đó có thể có thông tin đăng nhập của AD bởi một vì lý do như:

+ Người dùng đặt câu hỏi trên các diễn đàn công cộng như Stack Overflow nhưng tiết lộ thông tin nhạy cảm như thông tin đăng nhập của họ trong câu hỏi.

+ Các nhà phát triển tải tập lệnh lên các dịch vụ như Github với thông tin đăng nhập được mã hóa cứng.

+ Thông tin đăng nhập bị tiết lộ do nhân viên sử dụng tài khoản công việc của họ để đăng ký các trang web bên ngoài khác.

+ Các trang web như HaveIBeenPwned và DeHashed cũng là một nền tảng xác định các thông tin nhạy cảm của người dùng như email công việc, hay có liên quan tới các dữ liệu đã bị leak công khai hay không.

Chi tiết về Red Team OSINT có thể tham khảo tại đây:

https://tryhackme.com/jr/redteamrecon

 

Phishing

Phishing là một phương pháp thực hiện lôi kéo người dùng cung cấp các thông tin đăng nhập của họ trên một trang web độc hại hoặc yêu cầu họ chạy một ứng dụng cụ thể sẽ cài đặt Remote Access Trojan (RAT).

Đây là một phương pháp phổ biến vì RAT sẽ thực thi với quyền của người dùng, từ đó có thể mạo danh tài khoản AD của người dùng đó.

Chi tiết về Phishing có thể tham khảo tại đây:

https://tryhackme.com/room/redteamrecon

 

1.3. NTLM Authenticated Services

New Technology LAN Manager (NTLM) là một giao thức bảo mật được sử dụng để xác thực danh tính của người dùng trong AD. NTLM có thể được sử dụng để xác thực bằng cách sử dụng challenge-response-based có tên là NetNTLM.

Tuy nhiên, các dịch vụ sử dụng NetNTLM cũng có bị exposed ra ngoài internet. Sau đây là một số ví dụ phổ biến:

+ Các máy chủ Exchange (Mail) được lưu trữ nội bộ hiển thị cổng đăng nhập Outlook Web App (OWA).

+ Dịch vụ Remote Desktop Protocol (RDP) được mở public ra ngoài internet

+ Các ứng dụng web kết nối Internet và sử dụng NetNTLM.

What is the NTLM (NT LAN Manager) protocol? - IONOS

NetNTLM, còn thường được gọi là Windows  Authentication hoặc chỉ NTLM Authentication, cho phép ứng dụng đóng vai trò trung gian giữa máy khách và AD.

Tất cả thông tin cần xác thực sẽ được gửi tới Domain Controller để kiểm tra xác thực người dùng.

Ta có thể thực hiện xem sơ đồ dưới đây để hiểu hơn về cách hoạt động:

Password Spraying

Thực hiện sử dụng script sau để thực hiện spraying password:

 

Trong đó:

<userfile> – Tên file chứa tệp người dùng – “usernames.txt”

<fqdn> – Tên miền đã được qualified – “za.tryhackme.com”

<password> – Mật khẩu sử dụng để brute – “Changeme123”

<attackurl> – URL của ứng dụng hỗ trợ Windows Authentication – “http://ntlmauth.za.tryhackme.com

 

Thực hiện Brute-force NTLM Password thành công

1.4. LDAP Bind Credentials

Một phương pháp xác thực AD khác mà các ứng dụng có thể sử dụng đó là Lightweight Directory Access Protocol (LDAP).
Phương thức xác thực LDAP tương tự như NTLM. Tuy nhiên với xác thực LDAP, ứng dụng sẽ xác mình trực tiếp thông tin đăng nhập của người dùng.
Ứng dụng sẽ có một cặp thông tin đăng nhập AD có thể sử dụng để thực hiện query LDAP và xác minh thông tin đăng nhập của người dùng AD.
Xác thực LDAP là một cơ chế phổ biến với các ứng dụng của bên thứ ba được sử dụng để tích hợp với AD. Một số ứng dụng và hệ thống đang triển khai LDAP như:
+ Gitlab
+ Jenkins
+ Printers
+ VPNs

Quá trình xác thực thông qua LDAP:

LDAP Pass-back Attacks

Đây là một cuộc tấn công phổ biến nhằm vào các thiết bị mạng, chẳng hạn như máy in, khi bạn đã giành được quyền truy cập ban đầu vào mạng nội bộ, chẳng hạn như cắm một thiết bị giả mạo vào phòng họp.

 

Performing an LDAP Pass-back

Thực hiện truy cập web quản trị của mạng máy in mà không cần thông qua xác thực.

Tại đây ta có tài khoản của người dùng, tuy nhiên chưa có mật khẩu.

Khi thực hiện “Test Setting”, yêu cầu xác thực sẽ được gửi tới Domain Controller để kiểm tra thông tin đăng nhập LDAP.

  • Thực hiện sử dụng Netcat Listener để kiểm tra xem có kết nối với máy in không (cổng mặc định LDAP là 389)

Với một số phương thức xác thực, thông tin đăng nhập sẽ hoàn toàn không được truyền qua mạng! Vì vậy, không thể chỉ sử dụng Netcat bình thường để thu thập thông tin xác thực.

 

Hosting a Rogue LDAP Server

Sử dụng OpenLDAP để thực hiện  Host rogue LDAP server.

sudo apt-get update && sudo apt-get -y install slapd ldap-utils && sudo systemctl enable slapd

sudo dpkg-reconfigure -p low slapd

 

Thực hiện cấu hình LDAP:

 

– Thực hiện tạo file olcSaslSecProps.ldif tại /etc/init.d để cấu hình:

Tại đây, sử dụng câu lệnh sau để thực hiện lấy cleartext password của LDAP

sudo tcpdump -SX -i breachad tcp port 389

1.5. Authentication Relays

Server Message Block

 

Giao thức SMB cho phép client (workstations) giao tiếp với server (file share).

Trong các mạng sử dụng Microsoft AD, SMB quản lý mọi thứ từ chia sẻ tệp liên mạng đến quản trị từ xa. Ngay cả cảnh báo “hết giấy” mà máy tính của bạn nhận được khi bạn cố gắng in tài liệu cũng là công việc của giao thức SMB.

 

Intercepting NetNTLM

– Thực hiện cài đặt Responder và Hashcat

https://github.com/lgandx/Responder

https://github.com/hashcat/hashcat

 

Chạy câu lệnh sau để thực hiện dump Username và NTLM Hash:

sudo responder -I breachad

 

Tiếp theo đó, sử dụng Hashcat để crack NTLM password:

hashcat -m 5600 <hash file> <password file> –force

 

Trong đó <hash file> là NTLM Hash vừa dump được từ Responder.

 

Thực hiện crack NTML password thành công

II. Enumerating Active Directory

– Thực hiện cài đặt công cụ Remmina để thực hiện RDP

sudo apt install remmina

 

2.1. Enumeration through Command Prompt

– Một số câu lệnh cơ bản:

net user /domain

net group /domain

net group ‘Domain Admins’ /domain

 

2.2. Enumeration through PowerShell

– Một số câu lệnh cơ bản:

Get-ADUser -Identity gordon.stevens -Server za.tryhackme.com -Properties *

 

Trong đó:

-Identity – Tên tài khoản thực hiện enumerate

-Properties – Thuộc tính nào được liên kết với tài khoản sẽ được hiển thị, * sẽ hiển thị tất cả thuộc tính

-Server – Tham số trỏ tới Domain Controller nhất định

Get-ADUser -Filter ‘Name -like “*stevens”‘ -Server za.tryhackme.com | Format-Table Name,SamAccountName -A

 

Get-ADDomain -Server za.tryhackme.com

 

1.030 lượt xem