CƠ SỞ LÝ THUYẾT
Tổng quan Password Cracking
Password hay còn gọi là mật khẩu, là một ký tự hoặc một chuỗi ký tự tùy ý bao gồm chữ cái, chữ số hoặc các biểu tượng khác
Mật khẩu thường được ghép nối với tên người dùng hoặc cơ chế khác để cung cấp xác thực
1.1.2 Giới thiệu về Password Cracking
Bẻ khóa mật khẩu là hành động truy cập trái phép vào hệ thống bảo mật bằng cách sử dụng mật khẩu phổ biến hoặc các thuật toán đoán mật khẩu Đây là một kỹ thuật nhằm tìm ra mật khẩu chính xác để có thể vào được hệ thống được bảo vệ bằng phương pháp xác thực.
1.1.3 Các hình thức bẻ khóa mật khẩu
Cơ bản có 4 dạng bẻ khóa mật khẩu cơ bản:
Dictionary Attack: Tìm mật khẩu dựa trên một tệp từ điển tạo sẵn
Brute Force Attack: Tìm mật khẩu bằng cách sử dụng tổ hợp các ký tự
Hybird Attack: Kết hợp với từ điển mật khẩu có sẵn, thay đổi thứ tự, tăng hoặc giảm các ký tự bất kỳ để tìm ra mật khẩu đúng
Cuộc tấn công Smart Table Recovery là phương thức tấn công hiệu quả nhất để tìm mật khẩu, dựa trên việc sử dụng các bảng dữ liệu Phương pháp này tỏ ra mạnh mẽ hơn khi áp dụng cho các mật khẩu được lưu trữ dưới dạng hàm băm.
Tổng quan về các chức năng công cụ cơ bản hỗ trợ bẻ khóa mật khẩu
1.2.1 Các công cụ hỗ trợ bẻ khóa mật khẩu
Hiện nay, các công cụ bẻ khóa như Lophtcrack, John the Ripper, Brutus, Obiwan, Authforce, Hydra và Cain & Abel ngày càng trở nên phổ biến, giúp việc truy cập tài khoản và mật khẩu từ các hệ thống cục bộ hoặc từ xa trở nên dễ dàng hơn.
Cain & Abel: Phần mềm này mạnh về giải mã hoặc các công cụ dùng để giám sát hơn
Lophcrack: Bẻ khóa mật khẩu nào dài dưới 10 ký tự máy tính chỉ cần khoảng hơn 1 giờ là có thể giải mã
John the Ripper là phần mềm chuyên dụng để phá mật khẩu trong môi trường Unix, hỗ trợ các phương pháp mã hóa như DES, Extended DES và MD5, đồng thời tích hợp nhiều kỹ thuật giải mã hiệu quả.
Brutus là một chương trình trực tuyến cho phép bẻ khóa mật khẩu từ xa, tấn công vào các hệ thống như máy chủ IIS, Windows và Modem ADSL Chương trình này thực hiện các cuộc tấn công bằng cách thử lần lượt các tên tài khoản và mật khẩu nhất định để xâm nhập vào máy chủ.
Obiwan: Khắc phục nhược điểm của Brutus là có độ trễ khi thử liên tục các thông tin về tài khoản hoặc mật khẩu
Authforce là công cụ hỗ trợ việc xác thực cơ bản trên giao thức HTTP, cho phép thử nghiệm liên tục các thông tin tài khoản và mật khẩu trên một trang web cụ thể.
MessenPass là công cụ hữu ích giúp giải nén hầu hết các tài khoản chat như Yahoo và MSN Tuy nhiên, cần lưu ý rằng từ phiên bản YM 7 trở đi, mật khẩu sẽ không được lưu trên máy Local, do đó phần mềm này không thể thực hiện việc bẻ khóa.
Wireless WEP Key Password Spy: Là một công cụ hỗ trợ giải mã để truy cập vào một hệ thống mạng Wireless đặt mật khẩu
TỔNG QUAN BỘ CÔNG CỤ JOHN THE RIPPER
Tổng quan Bộ công cụ John the Ripper
John the Ripper là một công cụ phần mềm bẻ khóa mật khẩu miễn phí được phát triển bởi Openwall
Ban đầu phát triển cho Hệ điều hành Unix, chương trình này đã được mở rộng sang các nền tảng khác và trở thành một trong những công cụ bẻ khóa và kiểm tra mật khẩu phổ biến nhất Nó tích hợp nhiều trình bẻ khóa mật khẩu trong một gói, tự động nhận diện các loại băm mật khẩu và bao gồm một trình bẻ khóa có khả năng tùy chỉnh.
John the Ripper là một công cụ mạnh mẽ có khả năng xử lý nhiều định dạng mật khẩu được mã hóa, bao gồm các kiểu băm phổ biến trên hệ điều hành Linux và Windows Ngoài ra, nó còn có thể được sử dụng để bẻ khóa mật khẩu cho các tệp nén như ZIP/RAR và tài liệu PDF.
Công nghệ bẻ khóa mật khẩu có trong John the Ripper
John the Ripper là một công cụ bẻ khóa mật khẩu phổ biến, được sử dụng để đánh giá bảo mật hệ thống Các pentester sử dụng JtR như một bộ công cụ để kiểm tra độ mạnh của mật khẩu trong hệ thống Dưới đây là danh sách các công nghệ mã hóa mà John the Ripper hỗ trợ.
Dựa trên DES truyền thống
BSDI mở rộng dựa trên DES
FreeBSD MD5 dựa trên (Linux và Cisco IOS)
Windows LM (dựa trên DES)
Hàm băm SHA-crypt (phiên bản mới hơn của Fedora và Ubuntu)
Hàm băm SHA-crypt và SUNMD5 (Solaris)
Các chế độ bẻ khóa
John the Ripper hoạt động ở 3 chế độ riêng biệt và cơ bản để bẻ khóa mật khẩu:
Chế độ Wordlist Crack Mode
CÀI ĐẶT JOHN THE RIPPER
Có sẵn trong Kali
3.1.1 Cài đặt và môi trường cài đặt
John the Ripper là một dự án mã nguồn mở cho phép người dùng tải xuống và biên dịch mã nguồn, cũng như tải các tệp nhị phân để thực thi.
Trang web chính thức của John the Ripper có mặt trên Openwall, nơi người dùng có thể tải mã nguồn và mã nhị phân Ngoài ra, người dùng cũng có thể tham gia vào dự án trên GitHub để đóng góp cho sự phát triển Đối với hệ điều hành Windows, khuyến khích sử dụng phiên bản Windows 10 trở lên và chạy trên nền tảng Ubuntu có sẵn trong Microsoft Store.
3.1.2 Cập nhật các phiên bản
John the Ripper là một công cụ mạnh mẽ có sẵn trên Kali Linux, cho phép người dùng dễ dàng cập nhật thông qua các bản cài đặt từ Openwall hoặc GitHub.
Cài đặt bằng Teminal
3.2.1 Đối với các hệ điều hành có sẵn
Bước 1: Mở Terminal và chạy câu lệnh dưới đây: sudo apt-get update sudo apt install john
Sẽ nhận được thông báo như đưới đây:
Bước 2: Chạy chế độ kiểm tra: kết quả tham chiếu mục 4.1
Hình 3 1 Cài đặt từ OpenWall
3.2.2 Cài đặt John the Ripper qua Github
Bước 1: chạy câu lệnh sau: sudo apt-get install build-essential libssl-dev
Bước 2: Đồng thời cài đặt phần mềm: sudo apt-get install yasm libgmp-dev libpcap-dev libnss3-dev libkrb5-dev pkg-config libbz2-dev zlib1g-dev
Hình 3 2 Cài đặt JtR qua GitHub
Bước 3: Thay đổi thư mục sử dụng ~/src cd ~/src git clone git://github.com/magnumripper/JohnTheRipper -b bleeding-jumbo john
Hình 3 4 Quá trình cài Gitclone Hình 3 3 Cài đặt các phiên bản khác
Bước 4: Truy cập vào thư mục ~/john/src và xây dựng các phiên bản: cd ~/src/john/src
./configure && make -s clean && make -sj4
Bước 5: Kiểm tra lại phiên bản đã cài đặt:
Hình 3 5 Cài đặt thành công
QUY TRÌNH BẺ KHÓA MẬT KHẨU
Hướng dẫn sử dụng John The Ripper
Để xác định phiên bản JtR hỗ trợ các chức năng cần thiết cho quá trình bẻ khóa, người dùng cần thực hiện câu lệnh truy vấn sau.
Mở terminal sau khi đã cài đặt thành công JtR
Kết quả sẽ nhận được:
Hình 4 1 Các chức năng JtR
Cách sử dụng: john [OPTIONS] [PASSWORD-FILES]
single [= SECTION] chế độ "single crack"
wordlist [= FILE] stdin wordlist mode, đọc các từ khóa từ FILE hoặc stdin
pipe giống như stdin, nhưng đọc hàng loạt và cho phép các quy tắc loopback [= FILE] như wordlist, nhưng tìm nạp các từ từ tệp pot
dupe-suppression ngăn chặn tất cả các bản sao trong wordlist (và buộc tải trước) prince [= FILE] Chế độ PRINCE, đọc các từ từ FILE
encoding = mã hóa đầu vào NAME (ví dụ: UTF-8, ISO-8859-1) Xem thêm doc / ENCODING và list = hidden-options
rules [= SECTION] bật quy tắc trộn từ cho chế độ danh sách từ
incremental [= MODE] chế độ "tăng dần" [sử dụng phần MODE]
mask = chế độ mặt nạ MASK sử dụng MASK
markov [= OPTIONS] chế độ "Markov" (xem doc / MARKOV)
external = MODE chế độ bên ngoài hoặc bộ lọc từ
stdout [= LENGTH] chỉ xuất mật khẩu ứng viên [cắt ở LENGTH]
restore [= NAME] khôi phục phiên bị gián đoạn [được gọi là NAME]
session = NAME cung cấp cho một phiên mới trạng thái in của NAME - trạng thái [= NAME] của phiên [được gọi là NAME]
make-charset = FILE tạo một tệp bộ ký tự Nó sẽ bị ghi đè - hiển thị [= LEFT] hiển thị mật khẩu đã bẻ khóa [if = LEFT, then unracked]
test [= TIME] chạy các bài kiểm tra và điểm chuẩn trong TIME giây mỗi
users = [-] LOGIN | UID [, .] [không] chỉ tải (những) người dùng này
groups = [-] GID [, ] chỉ tải những người dùng [không] của (những) nhóm này shells = [- ] SHELL [, ] chỉ tải người dùng với [out] (những) shell này
salts = [-] COUNT [: MAX] tải muối với [out] COUNT [đến MAX] hàm băm - lưu- memory = LEVEL cho phép tiết kiệm bộ nhớ, ở LEVEL 1 3
node = MIN [-MAX] / TOTAL dải số của nút này trong tổng số TOTAL đếm
pot = TÊN tập tin pot để sử dụng
list = Danh sách khả năng gì, xem list = help hoặc doc / OPTIONS
format = NAME buộc băm kiểu TÊN Các định dạng được hỗ trợ có thể được nhìn thấy với list = format và list = subformats
Bảng 4.1 trình bày chức năng của JtR, trong đó mỗi chế độ và phương thức bẻ mã hóa đều có các câu lệnh truy vấn riêng biệt Khi sử dụng, người dùng cần chú ý đến cấu trúc câu lệnh và chức năng cụ thể mà mình muốn thực hiện.
Triển khai Password Cracking với John the Ripper
4.2.1 Chế độ Single Crack a) Chức năng
Trong chế độ này, JtR tận dụng thông tin người dùng và mật khẩu để bẻ khóa các tệp mật khẩu đã được mã hóa.
Alice gửi file chứa tên tài khoản và mật khẩu mã hóa MD5 của nhân viên cho Bob, nhưng không biết rằng hacker đã chiếm đoạt file trước khi Bob nhận được Hacker có khả năng giải mã thông tin mật khẩu mà Alice lưu trữ, gây ra rủi ro bảo mật nghiêm trọng cho công ty.
18 c) Dùng JtR để giải hash mật khẩu mà Alice đã mã hóa:
Bước 1: Nhập phương thức mã hóa Phương thức cần được xác định, cụ thể ở tập tin này Alice đã mã hóa mật khẩu dưới dạng mã hóa MD5:
John passwd.txt –format=Raw-MD5
Hình 4 3 Quá trình thực hiện bẻ khóa đơn
Bước 2: Để có thể xem được mật khẩu ở dạng bản rõ sử dụng câu lệnh sau: John passwd.txt –format=Raw-MD5 show
Bước 3: Kết quả nhận được:
Hình 4 4 Mật khẩu ở bản rõ d) Kết luận
Có thể thấy rằng các mật khẩu với dịnh dạng mã hóa MD5 được JtR mã hóa một cách nhanh chóng và dễ dàng
Sử dụng JtR cũng có thể cung cấp cho người dùng giải mã nhiều tệp băm cùng lúc khi chúng có cùng chung một dạng mã hóa
Ngoài các mã hóa như MD4, SHA1, SHA256, người dùng có thể tìm hiểu thêm về các chức năng giải mã mà JtR cung cấp bằng cách sử dụng câu lệnh sau.
Kết quả nhận được như sau:
Hình 4 5 Danh mục các loại mã hóa
4.2.2 Wordlist Crack Mode a) Chức năng
Trong chế độ này, JtR sử dụng một danh sách từ gọi là Wordlist để thực hiện giải mã Nó so sánh các hàm băm có sẵn với mã băm của mật khẩu để tìm ra kết quả.
Wordlist được xây dựng trên hầu hết các mật khẩu phổ biến Để kiểm tra trong Wordlist mà JtR cung cấp, người dùng thao tác như sau:
Hình 4 6 Mô tả WorldList b) Mô tả bài toán
Alice đã gửi cho Bob file báo cáo kết quả sao kê của công ty trong một năm qua Để bảo vệ thông tin, cô đã nén file và đặt mật khẩu riêng tư Tuy nhiên, trong quá trình gửi, một hacker đã thu thập được file này Hacker sẽ thử kiểm tra mật khẩu của Alice bằng cách so sánh với danh sách mật khẩu đã có sẵn để tiết kiệm thời gian Để bẻ khóa mật khẩu, hacker sử dụng công cụ JtR.
Bước 1: Kiểm tra và xác định file mà Alice gửi có định dạng là Zip, Rar hoặc
Thực hiện quá trình thử mật khẩu dựa trên Wordlist có sẵn trong thư viện của JtR:
Zip2john saoke.zip > saoke.txt
Kết quả nhận được xuất hiện file “saoke.txt” có ghi dạng mã hóa của mật khẩu:
Hình 4 7 Hiển thị file saoke.txt
Bước 3: Mã hóa mật khẩu thành bản rõ:
John format=zip saoke.txt
Hình 4 8 Bẻ khóa file saoke.txt d) Kết luận
Giải mã dựa trên sự so sánh giá trị hàm băm của mật khẩu được lưu trữ trong thư mục “passwd.lst”
JtR sử dụng phương pháp bẻ khóa dựa trên mật khẩu thử nghiệm theo chế độ đơn Sau khi không tìm thấy kết quả trùng khớp, JtR tiếp tục bẻ khóa bằng cách thử nghiệm các mật khẩu có sẵn trong wordlist, từ đó xác định và gửi về kết quả thành công.
4.2.3 Chế độ Incremental a) Chức năng
Trong chế độ này, John the Ripper (JtR) cho phép người dùng giải mã mật khẩu bằng cách thử nghiệm tất cả các tổ hợp ký tự khả thi và dần dần tăng độ dài của các chuỗi ký tự.
Alice đã gửi cho Bob báo cáo kết quả sao kê của công ty trong năm qua, nhưng để bảo mật, cô đã nén file và đặt mật khẩu riêng Tuy nhiên, hacker đã thu thập thông tin trong quá trình gửi và không tìm thấy mật khẩu trong danh sách từ mà hắn có Để phá mật khẩu, hacker buộc phải sử dụng phương pháp Bruce Force với công cụ JtR để tìm ra mật khẩu mà Alice đã thiết lập.
Bước 1: Kiểm tra và xác định file mà Alice gửi có định dạng là Zip, Rar hoặc
Thực hiện quá trình thử mật khẩu dựa trên Wordlist có sẵn trong thư viện của JtR:
Zip2john bfsaoke.zip > bfsaoke.txt
Kết quả nhận được xuất hiện file “bfsaoke.txt” có ghi dạng mã hóa của mật khẩu:
Hình 4 9 Xuất hiện file bfsaoke.txt
Bước 3: Mã hóa mật thành bản rõ:
John format=zip bfsaoke.txt
Hình 4 10 Quá trình Incremental mật khẩu d) Kết luận
Sau khi thực hiện 2 bước kiểu tra bên trên JtR không tìm kiếm được mật khẩu trùng cho nên chuyển sang hayBruce Force mật khẩu
Quá trình Bruce Force mật khẩu đơn giản với 6 ký tự: “pass123” mất khoảng thời gian gần 3 phút để trả về kết quả
Hình 4 11 Kết quả của quá trình bẻ khóa
ĐÁNH GIÁ BỘ CÔNG CỤ JOHN THE RIPPER
Khi thực hiện bẻ khóa mật khẩu bằng phần mềm John the Ripper, cần chú ý đến các thông số quan trọng như Card màn hình, CPU và hệ điều hành (OS) để đảm bảo hiệu quả tối ưu trong quá trình thực thi.
JtR bẻ khóa mật khẩu có thể tận dụng sức mạnh của card màn hình, CPU hoặc kết hợp cả hai Mỗi thuật toán bẻ khóa đều có những yêu cầu riêng, nhằm đảm bảo hệ thống hoạt động một cách hiệu quả và tuần tự.
Bộ xử lý JtR với dung lượng và tốc độ xử lý cao chia nhỏ quá trình bẻ khóa thành nhiều luồng, giúp tiết kiệm thời gian đáng kể trong quá trình này.
Để tiết kiệm thời gian khi bẻ khóa, người dùng nên thường xuyên cập nhật các chức năng và phiên bản phần mềm để tránh tình trạng lỗi thời.
Đối với mỗi quá trình, mỗi hành động đều thực hiện riêng biệt và cần có câu lệnh riêng biệt