Chủ đề OSCP (Tấn công mật khẩu)
15. Tấn công mật khẩu
Trong Mô-đun Học tập này, chúng tôi sẽ đề cập đến các Đơn vị Học tập sau:
- Tấn công thông tin đăng nhập dịch vụ mạng
- Các nguyên tắc cơ bản về bẻ khóa mật khẩu
- Làm việc với hàm băm mật khẩu
Mặc dù có nhiều cách tiếp cận hiện đại đối với tài khoản người dùng và dịch vụ Xác thực (chẳng hạn như xác thực sinh trắc học1hoặc Cơ sở hạ tầng khóa công khai2), xác thực mật khẩu đơn giản vẫn là cách tiếp cận cơ bản và chiếm ưu thế nhất.
Trong Mô-đun này, chúng ta sẽ khám phá, tiết lộ và tận dụng mật khẩu (và trong một số trường hợp, các thành phần triển khai cơ bản của chúng) để đạt được truy cập vào tài khoản người dùng hoặc hệ thống. Chúng ta sẽ thảo luận về các cuộc tấn công mạng, bẻ khóa mật khẩu và tấn công xác thực dựa trên Windows triển khai.
15.1. Tấn công thông tin đăng nhập dịch vụ mạng
Đơn vị học tập này bao gồm các Mục tiêu Học tập sau:
- Tấn công đăng nhập SSH và RDP
- Tấn công biểu mẫu đăng nhập HTTP POST
Trong thập kỷ qua, các cuộc tấn công vũ phu và từ điển chống lại Các dịch vụ mạng tiếp xúc công khai đã tăng lên đáng kể. Trên thực tế, Secure Shell (SSH), Giao thức máy tính từ xa (RDP) và Điện toán mạng ảo (VNC) phổ biến1 dịch vụ cũng như vì các biểu mẫu đăng nhập dựa trên web thường bị tấn công vài giây sau khi chúng bị tấn công đã ra mắt.2
Các cuộc tấn công brute-force cố gắng mọi biến thể mật khẩu có thể, làm việc một cách có hệ thống thông qua mọi tổ hợp chữ cái, chữ số và các ký tự đặc biệt. Mặc dù điều này có thể mất một số lượng đáng kể thời gian tùy thuộc vào độ dài của mật khẩu và giao thức trong quá trình sử dụng, về mặt lý thuyết, những cuộc tấn công này có thể vượt qua bất kỳ hệ thống xác thực dựa trên mật khẩu.
Mặt khác, các cuộc tấn công từ điển cố gắng xác thực với mật khẩu từ danh sách các từ phổ biến (danh sách từ). Nếu Mật khẩu chính xác không có trong danh sách từ, từ điển Tấn công sẽ thất bại.
Trong Bài học này, chúng ta sẽ sử dụng các cuộc tấn công từ điển để khám phá các thông tin đăng nhập cho các dịch vụ mạng và biểu mẫu đăng nhập HTTP.
1(Wikipedia, 2022), https://en.wikipedia.org/wiki/Virtual_Network_Computing ↩︎
2(SSH, 2018), https://www.ssh.com/blog/ssh-key-scan-attack-honeypot ↩︎
15.1.1. SSH và RDP
Trong phần này, chúng ta sẽ thực hiện các cuộc tấn công từ điển chống lại các Dịch vụ SSH và RDP sử dụng THC Hydra mã nguồn mở1 công cụ, có thể thực hiện nhiều cuộc tấn công mật khẩu chống lại nhiều dịch vụ và giao thức mạng. Chúng tôi cũng sẽ sử dụng danh sách từ rockyou.txt phổ biến, chứa hơn 14 triệu mật khẩu. Cả hai đều được cài đặt sẵn trên máy Kali của chúng tôi.
Để bắt đầu, hãy khởi động máy BRUTE (VM # 1 trong Resources). Trong ví dụ đầu tiên, chúng ta sẽ tấn công dịch vụ SSH (cổng 2222) trên máy có địa chỉ IP là 192.168.50.201. Chúng tôi sẽ cố gắng Xác định mật khẩu cho người dùng George.
Địa chỉ IP của BRUTE có thể khác nhau trong môi trường của bạn.
Trước khi bắt đầu tấn công từ điển, chúng ta nên xác nhận rằng mục tiêu đang chạy một dịch vụ SSH trên cổng 2222.
kali@kali:~$ sudo nmap -sV -p 2222 192.168.50.201
...
PORT STATE SERVICE
2222/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.5 (Ubuntu Linux; protocol 2.0)
Đầu ra chỉ ra rằng SSH đang mở. Giả sử rằng thông qua quá trình thu thập thông tin, chúng ta đã phát hiện ra người dùng george.
Điều đáng chú ý là định dạng của tên người dùng cũng gợi ý rằng công ty có thể sử dụng tên của người dùng cho tài khoản tên. Thông tin này có thể hỗ trợ chúng tôi trong việc thu thập thông tin sau này nỗ lực.
Tiếp theo, chúng ta hãy chuẩn bị sử dụng tệp danh sách từ rockyou.txt. Vì Tệp được nén để tiết kiệm dung lượng, chúng ta phải giải nén nó bằng gzip -d.2Cuối cùng, chúng ta có thể chạy hydra.
Chúng ta sẽ tấn công một tên người dùng duy nhất bằng -l george, chỉ định cổng với -s, hãy cho biết danh sách mật khẩu của chúng ta bằng -P và xác định Mục tiêu có ssh://192.168.50.201:
kali@kali:~$ cd /usr/share/wordlists/
kali@kali:~$ ls
dirb dirbuster fasttrack.txt fern-wifi metasploit nmap.lst rockyou.txt.gz wfuzz
kali@kali:~$ sudo gzip -d rockyou.txt.gz
kali@kali:~$ hydra -l george -P /usr/share/wordlists/rockyou.txt -s 2222 ssh://192.168.50.201
...
[DATA] max 16 tasks per 1 server, overall 16 tasks, 14344399 login tries (l:1/p:14344399), ~896525 tries per task
[DATA] attacking ssh://192.168.50.201:22/
[2222][ssh] host: 192.168.50.201 login: george password: chocolate
1 of 1 target successfully completed, 1 valid password found
Danh sách cho thấy chúng tôi đã sử dụng thành công Hydra để khám phá Thông tin đăng nhập hợp lệ cho người dùng George.
Cuộc tấn công từ điển hoạt động vì mật khẩu được chứa trong danh sách từ rockyou.txt và chúng tôi biết tên của người dùng mà chúng tôi muốn tấn công. Tuy nhiên, nếu chúng tôi không có tên người dùng hợp lệ, chúng tôi sẽ Sử dụng các kỹ thuật liệt kê và thu thập thông tin để tìm chúng. Ngoài ra, chúng ta cũng có thể tấn công các tài khoản tích hợp sẵn như root (trên Linux) hoặc Quản trị viên (trên Windows).
Trong ví dụ tiếp theo này, chúng ta sẽ cố gắng sử dụng một mật khẩu duy nhất chống lại nhiều tên người dùng khác nhau trong một kỹ thuật được gọi là mật khẩu phun.3
Vì có nhiều cách khác nhau để truy cập vào mật khẩu, Đây là một kỹ thuật cực kỳ khả thi. Ví dụ, chúng tôi có thể có quyền truy cập vào thông tin đăng nhập bằng cách sử dụng một trong các kỹ thuật được thảo luận sau trong hoặc chúng tôi có thể thấy chúng được lưu trữ dưới dạng văn bản thuần túy trong tệp hoặc thông qua việc sử dụng cơ sở dữ liệu rò rỉ mật khẩu trực tuyến. Các dịch vụ này (chẳng hạn như ScatteredSecrets4) theo dõi rò rỉ mật khẩu và thỏa hiệp và bán mật khẩu văn bản thuần túy. Điều này có thể rất có lợi trong một nhưng chúng tôi phải đảm bảo rằng chúng tôi không vi phạm các điều khoản trong số các dịch vụ này, chúng tôi phải đảm bảo rằng chúng tôi chỉ sử dụng mật khẩu hợp tác trực tiếp với chủ sở hữu hợp pháp và chúng tôi phải xem xét bảo dưỡng cẩn thận để xác định xem nó có hoạt động hợp pháp hay không. Ví dụ: WeLeakInfo5 gần đây đã bị FBI và Hoa Kỳ thu giữ. Bộ Tư pháp vì bị cáo buộc hoạt động bất hợp pháp.
Hãy chứng minh kịch bản này bằng cách thực hiện một cuộc tấn công phun chống lại dịch vụ RDP trên BRUTE2. Để làm như vậy, hãy tắt máy BRUTE (VM #1) và khởi động BRUTE2 (VM #2) trong Tài nguyên. Trong Ví dụ, chúng ta sẽ giả sử rằng chúng ta đã có được mật khẩu người dùng hợp lệ (SuperS3cure1337#) và chúng tôi sẽ thử mật khẩu đó đối với nhiều tên tài khoản người dùng tiềm năng.
Chúng ta sẽ sử dụng hydra một lần nữa, đặt danh sách tên người dùng với -L /usr/share/wordlists/dirb/others/names.txt (chứa hơn tám nghìn mục nhập tên người dùng) và một mật khẩu duy nhất với -p "SuperS3cure1337#". Lần này chúng ta sẽ sử dụng giao thức RDP và đặt nhắm mục tiêu bằng rdp://192.168.50.202.
kali@kali:~$ hydra -L /usr/share/wordlists/dirb/others/names.txt -p "SuperS3cure1337#" rdp://192.168.50.202
...
[DATA] max 4 tasks per 1 server, overall 4 tasks, 14344399 login tries (l:14344399/p:1), ~3586100 tries per task
[DATA] attacking rdp://192.168.50.202:3389/
...
[3389][rdp] host: 192.168.50.202 login: daniel password: SuperS3cure1337#
[ERROR] freerdp: The connection failed to establish.
[3389][rdp] host: 192.168.50.202 login: justin password: SuperS3cure1337#
[ERROR] freerdp: The connection failed to establish.
Do kích thước của danh sách đã chọn, cuộc tấn công bằng mật khẩu sẽ Mất khoảng 15 phút để khám phá hai thông tin đăng nhập hợp lệ. Trong khi tiếp theo, chúng ta có thể giảm thời gian này bằng cách tạo một danh sách chỉ chứa hai dòng, "Daniel" và "Justin".
Trong trường hợp này, chúng tôi đã xác định hai tên người dùng bằng mật khẩu mà chúng tôi được phát hiện trong vụ rò rỉ cơ sở dữ liệu. Chúng ta nên luôn cố gắng tận dụng mọi mật khẩu văn bản thuần túy mà chúng tôi phát hiện ra bằng cách phun chúng vào hệ thống của mục tiêu. Điều này có thể tiết lộ người dùng sử dụng cùng một mật khẩu trên nhiều hệ thống. Tuy nhiên, chúng ta cũng phải thận trọng khi tận dụng các cuộc tấn công phạm vi rộng.
Các cuộc tấn công từ điển tạo ra rất nhiều tiếng ồn về nhật ký, sự kiện, và giao thông. Trong khi một lượng lớn lưu lượng mạng có thể làm giảm mạng, phản ứng của các công nghệ bảo mật khác nhau có thể đồng đều không mong muốn hơn. Ví dụ, một chương trình bảo vệ vũ phu cơ bản có thể khóa tài khoản của người dùng sau ba lần đăng nhập không thành công. Trong một kiểm tra thâm nhập trong thế giới thực, điều này có thể dẫn đến tình huống trong đó Chúng tôi khóa người dùng khỏi các hệ thống sản xuất quan trọng. Trước khi mù quáng khởi chạy các công cụ, chúng ta phải thực hiện kiểm kê kỹ lưỡng để xác định và tránh những rủi ro này.
Trong phần này, chúng tôi đã thực hiện các cuộc tấn công từ điển vào SSH phổ biến và Dịch vụ mạng RDP. Trong khi Hydra làm cho quá trình trở nên đơn giản Đối với hầu hết các giao thức, một số giao thức yêu cầu thêm thông tin. Chúng tôi sẽ Khám phá điều này với các biểu mẫu đăng nhập HTTP POST trong phần tiếp theo.
Trước khi đi vào các bài tập đầu tiên của Mô-đun này, chúng ta cần Lưu ý rằng quá trình tấn công xác thực trên một mục tiêu không nên mất quá ba phút trong các bài tập hoặc phòng thí nghiệm thử thách. Nếu quá trình này mất nhiều thời gian hơn, bạn nên kiểm tra kỹ lệnh và lập luận của bạn hoặc thử một cách tiếp cận khác.
1(Github, 2022), https://github.com/vanhauser-thc/thc-hydra ↩︎
2(GNU, 2022), https://www.gnu.org/software/gzip/ ↩︎
3(OWASP, 2021), https://owasp.org/www-community/attacks/Password_Spraying_Attack ↩︎
4(Bí mật rải rác, 2022), https://scatteredsecrets.com/ ↩︎
5(Bộ Tư pháp Hoa Kỳ, 2022), https://www.justice.gov/usao-dc/pr/weleakinfoto-and-related-domain-names-seized ↩︎
Tài nguyên
Một số phòng thí nghiệm yêu cầu bạn khởi động (các) máy mục tiêu bên dưới.
Xin lưu ý rằng địa chỉ IP được gán cho máy mục tiêu của bạn có thể không khớp với địa chỉ được tham chiếu trong văn bản và video của Mô-đun.
Tấn công mật khẩu - SSH và RDP - VM #1
Tấn công mật khẩu - SSH và RDP - VM #2
Tấn công mật khẩu - SSH và RDP - VM #3
(Còn tiếp)