Lab 2.1 Password Guessing
Lab này có ý định tấn công dò quét mật khẩu vào 2 máy là:
-
10.130.10.10: A Linux web server -
10.130.10.4: A Windows Domain controller
Và ta biết được chính sách mật khẩu của mục tiêu là thỏa mãn 3 trên 4 điều sau:
-
Number
-
Uppercase
-
Lowercase
-
Special characters
1. Password Spray (SMB)
Mục này làm gì ?
Mục này thực hiện tấn công password spray vào giao thức SMB lên máy 10.130.10.10, sử dụng tool là hydra với một danh sách các user đã chuẩn bị trước, mật khẩu thì dự đoán theo quy tắc Season + Year….
Cần hiểu/biết gì để làm được
Khái niệm Passwordspray: Là một mật khẩu ta thử cho nhiều tài khoản, điều này sẽ giúp việc tấn công khó bị phát hiện vì mỗi tài khoản nếu có sai thì chỉ sai một lần rồi thôi, thay vì tấn công bruteforce password thông thường là với một tài khoản ta thử vô số mật khẩu => sẽ bị chặn nếu phía mục tiêu có áp dụng chính sách khóa tài khoản khi đăng nhập sai quá nhiều
Các option của hydra
-
-L file.txtvới file đã chứa danh sách các username để thử tấn công -
-l usernamethì chỉ đưa vào 1 username thôi -
-p passwordthì chỉ tấn công với 1 password -
-P passwordlist.txttấn công với một danh sách mật khẩu đã chuẩn bị trước -
-m tên_modulelà module option, ta dùng để truyền thêm các tham số phụ vào nếu giao thức mà ta tấn công cần thêm tham số. Để tra cứu các tham số hỗ trợ cho giao thức cụ thể thì gõhydra -U tên_protocol. Ví dụ như trong bài này sử dụng smb2, thì có thể tra cứu các tham số bổ sung cho smb2 bằng lệnhhydra -U smb2
Tìm hiểu thêm về smb và smb2: Trong hydra có ghi rằng nó hỗ trợ ‘smb’ và ‘smb2’:
-
smb sẽ sử dụng để nhắm tới giao thức SMBv1
-
smb2 sẽ sử dụng để nhắm tới giao thức SMBv2 hoặc v3 vì cả 2 ver này có chút tương đồng về xác thực
Làm nó thế nào ?
hydra -L /opt/passwords/facebook-f.last-100.txt -p SEASONYEAR -m workgroup:{hiboxy} 10.130.10.10 smb2
SEASONYEAR là quy tắc đặt mật khẩu mặc định, dò dò thì thấy Spring2024 cho ra kết quả
Hoặc có thể viết lệnh kiểu như này
hydra -L /opt/passwords/facebook-f.last-100.txt -p Spring2024 smb2://10.130.10.10/workgroup:{hiboxy}
Trong đó
-L theo sau là list username (-l thì chỉ cần 1 username thôi)
-p theo sau là 1 mật khẩu thôi (-P thì là file danh sách mật khẩu)
Output theo lệnh gốc

Output theo lệnh mới:

Tài khoản tìm được: alee - Spring2024
3. Password Guesing (SSH)
Mục này làm gì ?
Bruteforce mật khẩu là với 1 username, ta thử vào vô số mật khẩu (list mật khẩu thu thập được trong một bài nào đó từ lab 1)
Ta hiện có
-
Một list mật khẩu đã chuẩn bị trước
-
Tìm đc 1 admin Linux tên Bruce Green (có thể là trong quá trình recon) -> username = bgreen
Cần biết gì ?
Khái niệm Password Guessing là đoán mật khẩu của 1 username, thử vào vô số mật khẩu
Thực hiện
Thực hiện đoán mật khẩu với hydra
hydra -l bgreen -P /opt/passwords/simple.txt 10.130.10.10 ssh

Hoặc
hydra -l bgreen -P /opt/passwords/simple.txt ssh://10.130.10.10

Hydra cảnh báo chúng ta rằng các cấu hình SSH trên mục tiêu có thể giới hạn tốc độ và nếu bị giới hạn thật thì hydra đề xuất sử dụng 4 luồng thay vì 16 luồng mặc định.
Tìm được 1 tài khoản nữa: bgreen - Password1
4. Verify Access
Đã tìm được các tài khoản, ta sẽ thử đăng nhập vào các máy. Đầu tiên là phải xem máy nào đang mở port 445 (SMB)
nmap -n -Pn -p 445 --open -oA /tmp/smb 10.130.10.0/24
## quét port 445 trên dải, không cần thăm dò trước khi quét (-Pn = No ping), không phân giải tên miền (-n), chỉ hiện các kết quả open và xuất kết quả ra tất cả các định dạng vào thư mục chỉ định

Quét nmap xong thì ta thu được kết quả là các máy đang mở cổng 445 trong dải mạng mà ta vừa quét do option -oA, kết quả có được như hình bên dưới, ta có 3 định dạng file là .gnmap, .nmap và .xml

Đọc kết quả thì đọc file .gnmap vì nó ngắn gọn dễ đọc, .nmap thì kết quả y như như lúc chạy lệnh còn xml thì để cho máy móc đọc thôi.

Phân tích lệnh : Dòng lệnh bên dưới grep 445/open.... thực hiện 3 việc
-
Lấy từ file .gnmap ra những bản ghi (dòng) có chứa pattern là 445/open
-
Chuyển kết quả có được từ lệnh grep sang lệnh cut, lúc này tách các dòng thành các trường (cột - field) bằng khoảng trắng (
-d ' '), sau đó lấy trường thứ 2 (-f 2) -
Chuyển kết quả có được từ lệnh cut sang lệnh tee (lệnh này sẽ lưu stdin thành file mà ta chỉ định, đồng thời cũng hiện luôn ra màn hình cho ta xem, khác với > là chỉ lưu vào file mà không hiện ra)
Sau khi đã có list mục tiêu thì ta lại sử dụng hydra để bruteforce tiếp, sử dụng option -M
hydra -l bgreen -p Password1 -M /tmp/smbservers.txt -m workgroup:{hiboxy} smb2

5. Breached Credentials
Mục này thì thực hiện để biết thêm cách bruteforce bằng hydra với một list tài khoản có định dạng username:password
Ở Lab 1, giai đoạn recon đã thu thập được một danh sách tài khoản hiboxy lưu tại /opt/passwords/hiboxy-breach.txt

Sử dụng tệp này và hydra để thử tấn công vào máy .10, sử dụng tùy chọn là -C (column)cho các file có định dạng là list các username:password

Phát hiện được thêm 2 tài khoản
[445][smb2] host: 10.130.10.10 login: mbell password: TYLERdog1
[445][smb2] host: 10.130.10.10 login: jjohnson password: Aderso19
6. Password Spraying all domain users
Ta đã biết 1 tài khoản miền hiboxy là bgreen:Password1, giờ ta dùng tài khoản đó để lấy ra danh sách toàn bộ user trong Active Directory
Sử dụng GetADusers.py (một script thuộc Impacket), lấy tất cả các tài khoản trên miền hiboxy.com có địa chỉ IP của DC là 10.130.10.10, xuất kết quả ra /tmp/adusers.txt

Tiếp theo, xuất ra danh sách user, bỏ qua 5 dòng đầu tiên (nói chung là bỏ qua các thông tin phần mềm, chỉ lấy từ các dòng dữ liệu thôi), các dòng sau đó thì chỉ lấy cột đầu tiên, kết quả in ra /temp/domainusers.txt

Giờ có danh sách username rồi, lại spray mật khẩu với mật khẩu Password1

Phát hiện được thêm 1 tài khoản cũng sử dụng mật khẩu Password1 là jcooper
Kết thúc bài thực hành
Hướng dẫn có cho biết danh sách tài khoản:
Với Current Season Year khả dụng là Spring2024
| User | Password |
|---|---|
| alee | Current Season Year |
| bgreen | Password1 |
| bking | ThaBoss1 |
| bsanchez | Current Season Year + !
|
| bwebster | Current Season Year |
| hmarsh | Previous Season Year |
| janderson | Next Season Year |
| jcooper | Password1 |
| jlopez | Previous Season Year + !
|
| jmartin | Quincy626 |
| kacevedo | Current Season Year + !
|
| mhernandez | Password1! |
| mluna | Previous Season Year |
| nlopez | Next Season Year |
| rduran | Current Season Year + !
|
| ssmith | Next Season Year + !
|