Giới thiệu
Tổng quan về Wordlister
Wordlister là một công cụ tạo và quản lý danh sách từ (wordlist) được phát triển bằng Python Nó nổi bật với khả năng tận dụng đa xử lý, giúp tăng tốc độ hoạt động Ngoài ra, Wordlister còn cung cấp nhiều tùy chọn hoán vị như trường từ vựng, chữ viết hoa, cũng như tính năng nối và thêm từ, mang lại sự linh hoạt cho người dùng.
Hình 1: Ảnh minh hoạ một worlist
Wordlister là một công cụ mã nguồn mở được tích hợp vào cơ sở dữ liệu của Kali Linux từ ngày 3/9/2019, với phiên bản mới nhất là 48.d63f5ab, được cập nhật vào ngày 6/1/2021 Hiện tại, Wordlister cũng có phiên bản ứng dụng web, nhưng báo cáo này sẽ tập trung vào phiên bản phổ biến chạy trên Kali Linux.
Tổng quan về bẻ khoá mật khẩu (Password Attacking/Cracking)
Tấn công password là ta tìm cách để có được password của một userID nào đó để xâm nhập vào hệ thống của họ
Một cách tổng quan, có 4 dạng tấn công mật khẩu là:
Cuộc tấn công thụ động trực tuyến, hay còn gọi là Passive Online, bao gồm các phương thức như nghe trộm (sniffing), tấn công trung gian (MITM), và tấn công lặp lại (replay attacks), cho phép kẻ tấn công theo dõi và ghi lại sự thay đổi mật khẩu trên mạng.
• Active Online: Đoán trước mật khẩu nguời quản trị Các cuộc tấn công trực tuyến bao gồm việc đoán password tự động
• Offline: Các kiểu tấn công như Dictionary, hybrid, và brute-force
• Non-Electronic: Các cuộc tấn công dựa vào yếu tố con người như Social engineering, Phishing… [2]
Chúng ta sẽ không phân tích chi tiết từng loại tấn công mà chỉ tập trung vào điểm chung là chúng đều sử dụng từ điển mật khẩu Vấn đề quan trọng nhất là tìm nguồn gốc của từ điển này, vì các tác vụ khác nhau yêu cầu các từ điển khác nhau.
Khi đăng nhập vào dịch vụ từ xa, chúng ta không cần sử dụng những từ điển quá lớn, mà chỉ cần tập trung vào những tên người dùng và mật khẩu phổ biến nhất Hầu hết các dịch vụ mạng đều có chế độ bảo vệ tùy chỉnh, yêu cầu người dùng chờ một khoảng thời gian dài giữa các lần thử để tránh bị chặn IP bởi các tập lệnh tự động Do đó, việc bắt đầu với những bộ từ phổ biến sẽ tiết kiệm thời gian và tăng hiệu quả trong quá trình đăng nhập.
Để đảm bảo an toàn cho mạng Wi-Fi, việc sử dụng mật khẩu mạnh là rất cần thiết Chúng ta cần một từ điển chất lượng cao với các mật khẩu phổ biến, và kích thước của từ điển này càng lớn càng tốt, đặc biệt là khi bạn sở hữu phần cứng trung bình hoặc mạnh.
Để tối ưu hóa quản lý website, việc cung cấp địa chỉ khu vực quản trị, tên miền phụ, thư mục và tệp là bắt buộc Chúng ta cần một từ điển chuyên ngành để nắm rõ các địa chỉ phổ biến nhất trong lĩnh vực này.
Không thể có một từ điển hoàn hảo cho mọi tình huống, vì vậy việc sử dụng các công cụ tạo từ điển mật khẩu hoặc danh sách từ là lựa chọn tối ưu cho nhu cầu này.
Cài đặt Wordlister
Bài báo này chủ yếu nói về Kali Linux, nhưng bất kỳ bản phân phối Linux nào cũng có thể cài đặt Wordlister Để bắt đầu, người dùng cần tải Wordlister từ GitHub, có thể sử dụng lệnh git clone hoặc tiện ích wget, một phương pháp phổ biến cho mọi bản distro Lệnh wget để tải xuống là: wget https://raw.githubusercontent.com/4n4nk3/Wordlister/master/wordlister.py.
Hình 2: Tải xuống Wordlister từ GitHub
Sau đó mở worlister.py bằng câu lệnh của python 3:
Hình 3: Chạy file wordlister.py bằng python3
Wordlister cung cấp thông tin chi tiết về cách sử dụng và các đối số cần thiết Để xem hướng dẫn và thông số cụ thể, bạn có thể sử dụng cờ -h để mở menu trợ giúp của Wordlister.
Hình 4: Menu trợ giúp và các đối số của Wordlister
Sử dụng Wordlister để tạo ra danh sách từ (thư viện mật khẩu)
Để sử dụng Wordlister, trước tiên chúng ta cần một tệp đầu vào chứa danh sách các mật khẩu mà chúng ta muốn tạo hoán vị
Tạo một tệp văn bản chứa một vài mât khẩu phổ biến để làm cơ sở thực hiện list password
Hình 5: Tệp chứa danh sách password ban đầu
Khi có danh sách password ban đầu, để có thể sử dụng các câu lệnh với Wordlister, ta cần ghi nhớ các đối số bắt buộc của chúng:
- input = tên của tệp văn bản chứa danh sách mật khẩu
- perm = số lượng hoán vị trên cùng một dòng
- min = độ dài tối thiểu của một hoán vị
- max = độ dài tối đa của một hoán vị
Ví dụ ta sẽ thực hiện câu lệnh sau python3 wordlister.py input pass.txt perm 2 min 6 max 32
Hình 6: Thực hiện hoán vị mật khẩu
Kết quả được Wordlister tự động lưu vào file output.txt :
Hình 7: Kết quả sau khi hoán vị và kết hợp danh sách
Ta có thể tăng giảm số lượng mật khẩu được tạo ra bằng cách thay đổi giá trị của đối số perm:
Hình 8: Số lượng mật khẩu tăng lên sau khi thay đổi giá trị -perm
Wordlister cho phép người dùng kết hợp các mật khẩu đã cho để tạo ra tất cả các hoán vị có thể, đồng thời hỗ trợ nhiều tùy chọn bổ sung như leet, cap, up và append, giúp tăng cường tính linh hoạt trong việc tạo mật khẩu.
Chẳng hạn như tuỳ chọn leet sẽ làm thay đổi các ký tự chữ thành số tương ứng và ngược lại (leetspeak):
Hình 9: Tạo mật khẩu với tuỳ chọn -leet cap sẽ viết hoa chữ cái đầu tiên của mật khẩu:
Hình 10: Tạo mật khẩu với tuỳ chọn cap
Hay như up sẽ thay đổi một ký tự trước khi hoán vị thành chữ in hoa
Hình 11: Tạo mật khẩu với tuỳ chọn –up
13 append sẽ thêm bất kì chuỗi nào mà ta muốn vào sau các hoán vị:
Hình 12: Tạo mật khẩu với tuỳ chọn append
Demo
Tấn công vét cạn (brute-force) mật khẩu wifi
Mục tiêu tấn công: Wifi
Công cụ sử dụng: Wordlister (tạo danh sách mật khẩu) và Aircrack-ng
Bước 1: Tạo danh sách mật khẩu với Wordlister
Bằng các câu lệnh và thao tác đơn giản sử dụng các từ khoá phổ biến trong mật khẩu wifi ta tạo được một wordlist như hình
Hình 13: Wordlist được chuẩn bị sẵn
Bước 2: Bắt đầu thực hiện các lệnh để sử dụng chức năng của Aircrack-ng, đảm bảo rằng tất cả các lệnh phải được chạy với quyền root Hãy nhập lệnh đầu tiên để tiến hành.
“airmon-ng check kill” Lệnh này chạy để dừng tất cả các tiến trình khác đang sử dụng interface của wifi
Hình 14: Dừng tiến trình đang sử dụng wlan0
Bước 3: Ta chạy lệnh “airmon-ng start wlan0” Lệnh này giúp ta khởi động chạy chế độ giám sát wlan0 (interface wifi được lựa chọn để tấn công)
Hình 15: Khởi động chế độ giám sát wlan0
Bước 4: Ta chạy lệnh “airodump-ng wlan0mon” Lệnh này được thực hiện ở bước
Kiểm thử dò quét hệ thống để biết các thông tin liên quan đến wifi và các thông tin cần thiết cho cuộc tấn công
Hình 16: Các mạng wifi được quét thấy Ở bước này ta xác định được mục tiêu cần tấn công với các thông tin như sau:
Sau khi đã có các thông tin đó thì ta chỉ cần theo dõi cái AP mà ta tấn công như sau
“airodump-ng bssid [nhập bssid của mục tiêu] -c [channel của mục tiêu] -w [tên file muốn viết].txt [wireless adapter]mon”
Hình 17: Theo dõi AP mục tiêu
Để đảm bảo quá trình nghe lén thành công, mở một terminal khác và nhập lệnh để ngắt kết nối các client đang kết nối với AP Khi đó, các client sẽ thực hiện lại 4-way handshake, giúp ta bắt được gói tin cần thiết.
“aireplay-ng deauth [số khung bỏ xác thực , giá trị bằng 0 thì là liên tục] -a [BSSID] [wireless adapter]mon”
Hình 18: Gửi các yêu cầu DeAuth để ngắt kết nối dịch vụ
Bước 7: Wordlist attack Ở bước này ta sẽ sử dụng bộ danh sách từ đã tạo sẵn trước đó bằng Wordlister
Sử dụng câu lệnh sau:
17 aircrack-ng [file cap đã bắt được] -w [file wordlist đã chuẩn bị]
Lệnh này sẽ tiến hành tạo mã hash cho mỗi password trong wordlist và tiến hành so sánh với password đã hash bắt được trong file cap
Hình 19: So sánh mã hash của handshake và wordlist
Bước 8: Đến khi thấy xuất hiện “KEY FOUND” là ta đã tìm được mật khẩu wifi
Hình 20: Thành công tìm được mật khẩu wifi
Tấn công vét cạn (brute-force) trang đăng nhập
Mục tiêu tấn công: dieutrathuysan.gso.gov.vn
Hệ thống thử nghiệm của ứng dụng Quản lý & Điều tra Thủy sản của Tổng cục Thống kê cho phép khai thác dữ liệu với quyền hạn nhất định, chỉ dành cho người làm báo cáo được phép.
Công cụ sử dụng: Wordlister (tạo danh sách mật khẩu) và Burp Suite (thực hiện tấn công)
3.2.1.1 Giới thiệu về Burp Suite
Burp Suite là một công cụ quét bảo mật hàng đầu, nổi bật với nhiều tính năng mạnh mẽ và khả năng tích hợp các phần mềm mở rộng tùy chọn Công cụ này cho phép kiểm tra tính bảo mật của ứng dụng web cũng như các thành phần khác trên trang web, giúp người dùng phát hiện và khắc phục các lỗ hổng bảo mật hiệu quả.
Burp Suite hỗ trợ người dùng trong việc đánh giá các tiêu chí bảo mật quan trọng, bao gồm kiểm tra các vấn đề liên quan đến phiên bản người dùng, thực hiện kiểm tra cơ chế xác thực, cũng như liệt kê và đánh giá các tham số đầu vào của ứng dụng.
Burp Suite có các chức năng chính như sau:
Decoder là công cụ giúp giải mã và mã hóa các chuỗi dữ liệu theo nhiều định dạng khác nhau Để sử dụng tính năng Decoder, bạn chỉ cần truy cập vào tab decoder và nhập dữ liệu mà bạn muốn giải mã hoặc mã hóa.
Proxy Server được sử dụng để tiếp nhận và chỉnh sửa các yêu cầu trước khi gửi đến máy chủ Để sử dụng tính năng này, người dùng cần mở Burp Suite, vào tab proxy và đánh dấu vào ô Running.
Chức năng Repeater cho phép người dùng tùy chỉnh và sửa đổi nhanh chóng nội dung của các yêu cầu gửi đến máy chủ, giúp thực hiện nhiều lần khác nhau một cách linh hoạt.
Tính năng so sánh giúp phân biệt rõ ràng sự khác biệt giữa các yêu cầu và phản hồi, đồng thời cho phép người dùng dễ dàng so sánh các tệp tin và dữ liệu lớn.
Web spider là công cụ duyệt web tự động giúp xác định cấu trúc trang web Để sử dụng tính năng này, bạn cần truy cập vào tab Sitemap và Target, sau đó nhấn chuột phải vào mục tiêu và chọn tùy chọn spider cho máy chủ.
Intruder là công cụ tự động hóa các cuộc tấn công tùy chỉnh nhằm vào ứng dụng Web, bao gồm bốn panel chính: mục tiêu, vị trí, tải trọng và các tùy chọn.
Hình 21: Cửa sổ Burp Intruder
Bước 1: Chuẩn bị danh sách mật khẩu cơ sở
Thông tin được biết trước về một tài khoản với chức danh Giám sát tỉnh như sau:
Tài khoản: Gst22001 – Mật khẩu: a@
Kẻ tấn công đã do thám thông tin từ một tài khoản có chức danh nhất định, với mục tiêu tìm kiếm tài khoản và mật khẩu của cá nhân có quyền truy cập cao hơn Điều này cho phép kẻ tấn công thực hiện nhiều chức năng hơn trên ứng dụng.
Chúng tôi sẽ tạo một tệp tài khoản dựa trên các chức danh viết tắt như gsv (Giám sát vụ), gsc (Giám sát cục), gsh (Giám sát huyện) và các mã tỉnh tương ứng từ 01 đến 64, cùng với các số từ 001 đến 009.
Hình 22: Tệp chứa danh sách tài khoản cơ sở
Bước 2: Sử dụng Wordlister để tạo danh sách tài khoản theo định dạng
Hình 23: Danh sách tài khoản được tạo bởi Wordlister
Bước 3: Áp dụng logic trên tương tự với quy trình tạo danh sách mật khẩu với các ký tự: 1, 2, 3, a, b, c, @
Hình 24: Danh sách mật khẩu tạo bởi Wordlister
Bước 3: Sử dụng Proxy mode của Burp Suite để truy cập vào URL cần tấn công với tuỳ chọn “Intercept is on”
Hình 25:Truy cập login page trong proxy mode
Bước 4: Nhập một tài khoản và mật khẩu bất kỳ để Burp Suite bắt request chứa tham số truyền vào
Hình 26: Request chứa tham số TaiKhoan và MatKhau
Bước 5: Gửi request này đến Intruder để thực hiện tấn công vét cạn
Hình 27: Tuỳ chọn Send to Intruder
In Step 6 of using Intruder, navigate to the Positions tab and sequentially remove the existing payload positions by clicking the "Clear" button Then, insert the parameter values for "username" and "password" by selecting them and using the "Add" button Finally, change the Attack type to Cluster bomb.
Hình 28: Chỉnh sửa các vị trí đầu vào cho payloads và chọn hình thức tấn công phù hợp
Bước 7: Chuyển đến tab Payloads và chọn danh sách từ đã tạo làm các payload Để thực hiện, hãy chọn payload set = “1” và thêm tệp chứa danh sách tài khoản trong mục Payload Options [Simple list].
Hình 29: Thêm danh sách tài khoản từ tệp output.txt vào payload list
Bước 8: Làm tương tự với danh sách mật khẩu, với tuỳ chọn Payload set = “2”
Hình 30: Đưa danh sách tài khoản từ tệp output2.txt vào payload list 2
Bước 9: Chọn Start Attack để bắt đầu tấn công vét cạn
Hình 31: Giao diện Intruder Attack – quá trình tấn công đang diễn ra
Bước 10: Quan sát Response trả về với từng cặp Payload để xác định tài khoản và mật khẩu đúng
Hình 32: Response cho biết chưa đúng tài khoản & mật khẩu
Hình 33: Response có khả năng đã đúng tài khoản & mật khẩu
Bước 11: Kiểm tra kết quả bằng cách đăng nhập với tài khoản và mật khẩu đã tìm được Đến bước này, quá trình tấn công vào trang đăng nhập đã hoàn tất.
Hình 34: Đăng nhập thành công với tài khoản và mật khẩu
So sánh và đánh giá
Một số phần mềm tạo thư viện mật khẩu hoặc danh sách từ khác
Crunch là một công cụ tạo danh sách từ nổi bật, có khả năng tạo ra nhiều tổ hợp mật khẩu, nhưng chủ yếu dựa vào các mẫu và ký tự thay vì tệp đầu vào Đặc biệt, Crunch cần một cờ để hạn chế trùng lặp, trong khi Wordlister tự động xử lý vấn đề này.
Cú pháp cơ bản của Crunch:
#crunch [chiều dài của mật khẩu ngắn nhất] [chiều dài ký tự lớn nhất] [mẫu muốn chọn] > [out file.txt]
Hình 35: Cú pháp cơ bản để tạo mật khẩu với Crunch
CeWL là một ứng dụng viết bằng Ruby, có khả năng thu thập thông tin từ một URL nhất định và cung cấp danh sách từ để hỗ trợ các trình bẻ khoá mật khẩu như John the Ripper hay hashcat Ngoài ra, CeWL còn tạo danh sách các địa chỉ email từ các liên kết mailto, giúp người dùng có thể sử dụng những địa chỉ này làm username trong các cuộc tấn công vét cạn.
Hình 36: Giao diện dòng lệnh của CeWL trên Kali Linux
So sánh Wordlister với Crunch
Tên công cụ Điểm chung Điểm riêng
Crunch Đều tạo thư viện mật khẩu theo cách kết hợp và tạo hoán vị Đều hỗ trợ chữ hoa và chữ thường riêng biệt Tốc độ nhanh
Tự động xử lý khi trùng lặp Đổi chữ cái thành số
Nối thêm từ vào trước sau mật khẩu
Yêu cầu 1 cờ để hạn chế trùng lặp
Tự động xử lý khi trùng lặp Đổi chữ cái thành số Nối thêm từ vào trước sau mật khẩu
Bảng 1 So sánh đặc điểm Wordlister và Crunch