Ở phần Module 6 – Phần 1: Bẻ khóa password trong System Hacking mình đã giới thiệu các loại xác thực trong Windows (Windows Authentication), trong bài này mình sẽ tiếp tục phần Active Online Attacks trong kỹ thuật bẻ khóa password.
Các kỹ thuật bẻ khóa password trong System Hacking (TT)
Active Online Attacks
Password Guessing
LLMNR/NBT-NS Poisoning
LLMNR (Link-Local Multicast Name Resolution) và NBT-NS (NetBIOS Name Service) là hai giao thức được sử dụng trong hệ điều hành Windows để phân giải tên máy tính thành địa chỉ IP. LLMNR được sử dụng để phân giải tên trong trường hợp không có máy chủ DNS, trong khi NBT-NS được sử dụng để phân giải NetBIOS nameserver.
LLMNR/NBT-NS Poisoning là một loại tấn công trong đó attacker gửi các yêu cầu giả mạo phân giải tên đến máy mục tiêu, làm cho nó phản hồi với computer name và địa chỉ IP của nó. Attacker sau đó có thể sử dụng thông tin này để thực hiện các cuộc tấn như tấn công man-in-the-middle hoặc đoán mật khẩu. Tấn công hoạt động bằng cách khai thác việc LLMNR và NBT-NS đều là các giao thức dựa trên phát sóng, có nghĩa là các yêu cầu được gửi đến tất cả các thiết bị trên đoạn mạng cục bộ.
Để bảo vệ khỏi các cuộc tấn công LLMNR/NBT-NS poisoning, nên tắt LLMNR và NBT-NS trên tất cả các máy trong mạng bằng cách cài đặt Group Policy hoặc bằng cách chỉnh sửa registry. Ngoài ra, nên sử dụng DNS để phân giải tên thay vì LLMNR và NBT-NS, vì DNS an toàn hơn và khó bị tấn công giả mạo hơn.
- Người dùng gửi yêu cầu kết nối với tài nguyên mạng bằng tên server không chính xác, chẳng hạn như \\DtaServr thay vì \\DataServer.
- Tài nguyên mạng, \\DataServer trong trường hợp này, phản hồi người dùng nhằm cho biết rằng nó không nhận ra tên máy chủ được yêu cầu.
- Sau đó, máy tính của người dùng sẽ phát truy vấn LLMNR hoặc NBT-NS tới mạng cục bộ, hỏi xem có thiết bị nào khác trên mạng biết địa chỉ IP được liên kết với tên máy chủ \\DtaServr không chính xác hay không.
- Hacker chặn truy vấn và phản hồi lại máy tính của người dùng bằng một phản hồi giả mạo, bảo rằng đó là tài nguyên mạng \\DataServer và cung cấp địa chỉ IP của chính nó.
Ta có thể dùng công cụ Responder để thực hiện tấn công. Responder là một công cụ LLMNR, NBT-NS, và MDNS poisoner. Nó phản hồi các yêu cầu NBT-NS (NetBIOS Name Service) cụ thể dựa trên hậu tố tên của chúng.
Cracking Kerberos Password
Kerberos là một giao thức xác thực được sử dụng trong môi trường mạng để bảo vệ an toàn thông tin và đảm bảo tính toàn vẹn của dữ liệu. Kerberos sử dụng một khóa bí mật chung được chia sẻ giữa các máy tính trong mạng để xác thực người dùng và cung cấp quyền truy cập vào tài nguyên mạng.
Hacker thường tập trung vào giao thức xác thực Kerberos theo hai cách phổ biến: crack TGS (được biết đến là Kerberoasting), và crack TGT (được biết đến là AS-REP Roasting).
KDC là viết tắt của “Key Distribution Center” – Trung tâm phân phối khóa. KDC là một thành phần quan trọng của giao thức xác thực Kerberos, được sử dụng trong các hệ thống mạng và máy tính để xác thực và phân phối khóa truy cập. KDC chịu trách nhiệm cung cấp vé xác thực (TGT) cho người dùng khi họ đăng nhập vào hệ thống và cũng cung cấp các khóa phiên (session keys) để bảo mật thông tin được truyền tải giữa các máy tính trong hệ thống. KDC có thể được triển khai dưới dạng một dịch vụ trên một máy chủ hoặc được tích hợp vào các ứng dụng mạng và máy tính.
Về AS-REP Roasting, hacker yêu cầu một vé xác thực (authentication ticket – TGT) từ KDC dưới dạng gói tin AS-REQ. Nếu user tồn tại, KDC sẽ trả lại một TGT được mã hóa bằng thông tin đăng nhập của user đó. Điều này giúp hacker nhận được một ticket được mã hóa, sau đó hacker lưu lại và thực hiện bẻ khóa. Hacker có thể chủ động tạo ra một thông điệp AS-REP cho user hoặc quan sát một thông điệp AS-REP khác.
Trong xác thực Kerberos, chế độ pre-authentication kích hoạt theo mặc định nhằm ngăn chặn bẻ mật khẩu ngoại tuyến. Do đó, để tấn công AS-REP Roasting, hacker phải xác định các tài khoản user mà chế độ pre-authentication đã bị tắt, tức là tài khoản người dùng phải được đặt thành “Do not require Kerberos authentication“. Hacker sử dụng các công cụ như Rubeus để tấn công AS-REP roasting.
- Hacker xác định một user mà pre-authentication đã bị tắt.
- Hacker yêu cầu một ticket xác thực (TGT) từ domain controller hoặc KDC.
- Domain controller xác minh user và trả lại một TGT được mã hóa bằng thông tin đăng nhập của user đó.
- Hacker lưu trữ TGT lại và phá nó để lấy mật khẩu
Còn đối với Kerberoasting (Cracking TGS), hacker yêu cầu một TGS cho service principal name (SPN) của tài khoản dịch vụ. Yêu cầu này được thực hiện đến domain controller bằng cách sử dụng một authentication ticket của user domain hợp lệ (TGT). Nếu user đã truy cập vào các tài nguyên mạng, domain controller chỉ tìm kiếm SPN trong Active Directory và phản hồi lại bằng một ticket được mã hóa sử dụng một user dịch vụ liên kết với SPN. Loại mã hóa được sử dụng cho service ticket được yêu cầu (ST) là RC4_HMAC_MD5, cho thấy rằng để mã hóa ST, băm mật khẩu NTLM được sử dụng. Để phá ST, hacker xuất các ticket TGS từ bộ nhớ và lưu lại. Hacker sau đó sử dụng các băm NTLM để phá ST. Hacker sử dụng các công cụ như Kerberoast để tấn công Kerberoasting trên xác thực Kerberos.
- Thay mặt user, hacker yêu cầu một authentication ticket (TGT) từ domain controller hoặc KDC.
- Domain controller xác minh và trả lại một TGT được mã hóa.
- Với một authentication ticket hợp lệ (TGT), hacker yêu cầu TGS.
- Domain controller xác minh TGT và phản hồi lại với một vé TGS.
- Hacker lưu ticket TGS và phá nó để lấy mật khẩu.
GPU-based Attack
GPU-based Attack là một kỹ thuật tấn công sử dụng card đồ họa (GPU) để tăng tốc độ phá mật khẩu trong quá trình tấn công mật khẩu. Đối với các mật khẩu được lưu trữ dưới dạng băm (hash), hacker sử dụng GPU để thực hiện các phép toán băm và phá mật khẩu nhanh hơn so với việc sử dụng CPU truyền thống. GPU-based Attack cung cấp khả năng tính toán song song hơn so với CPU, cho phép hacker tính toán các phép toán băm đồng thời trên nhiều dữ liệu khác nhau để tăng tốc độ phá mật khẩu.
- Hacker lừa người dùng truy cập vào một trang web không an toàn hoặc tải xuống mã độc.
- Khi người dùng cài đặt ứng dụng nhiễm malware, malware bắt đầu truy cập vào OpenGL API của trình duyệt.
- Malware trên OpenGL API thiết lập một con mắt gián điệp trên thiết bị để theo dõi hoạt động trên trình duyệt.
- Khi nạn nhân truy cập vào bất kỳ trang web nào thông qua trình duyệt, hacker có thể sao chép các ký tự mà nạn nhân nhập vào ô mật khẩu của trang web.
Passive Online Attacks
Wire Sniffing
Packet sniffing là một hình thức của việc đánh cắp thông tin trên đường truyền hoặc nghe lén trên đường truyền, hacker đánh cắp thông tin xác thực trong quá trình truyền bằng cách bắt gói dữ liệu trên Internet. Hacker có thể lấy được mật khẩu của các ứng dụng như email, trang web, SMB, FTP, phiên rlogin hoặc SQL.
Vì các thiết bị nghe lén thu thập các gói dữ liệu tại tầng Data Link nên chúng có thể thu thập tất cả các gói dữ liệu trên LAN. Phương pháp này tương đối khó thực hiện. LAN gửi dữ liệu cho tất cả các máy kết nối với nó. Nếu hacker triển khai một thiết bị nghe lén trên một hệ thống trên LAN, thì chúng có thể thu thập dữ liệu được gửi đến và từ bất kỳ hệ thống nào khác trên LAN. Hầu hết các công cụ nghe lén được thiết kế để nghe lén dữ liệu trong môi trường hub. Những công cụ này là các thiết bị nghe lén bị động, vì chúng đợi dữ liệu trước khi bắt thông tin.
Man-in-the-Middle/Manipulator-in-the-Middle and Replay Attacks
Man-in-the-middle (MITM) attack là một hình thức tấn công mạng trong đó attacker giả mạo kết nối giữa hai bên nhằm thu thập thông tin, thay đổi thông tin hoặc gây ra sự cố trong giao tiếp của hai bên đó.
Ví dụ, trong một phiên giao tiếp qua internet giữa hai người, hacker có thể can thiệp vào trung gian và theo dõi toàn bộ cuộc trò chuyện. Họ cũng có thể thay đổi nội dung của cuộc trò chuyện hoặc thêm vào nội dung để gây nhầm lẫn cho hai bên. Tấn công MITM thường được thực hiện bằng cách sử dụng các công cụ như phần mềm gián điệp, trojan hoặc trình độc quyền truy cập vào mạng.
Để bảo vệ chống lại các cuộc tấn công MITM, ta nên sử dụng các phần mềm bảo mật, tránh sử dụng mạng Wi-Fi kém an toàn và kiểm tra xem URL của trang web có đúng không trước khi truy cập.
Rainbow Table Attack
Rainbow Table attack là một kỹ thuật tấn công mật khẩu dựa trên việc sử dụng bảng tra cứu đã tính toán trước. Kỹ thuật này sử dụng các giá trị băm mật khẩu đã tính toán trước đó để tìm kiếm mật khẩu tương ứng trong bảng tra cứu, thay vì phải thử từng mật khẩu một cách tuần tự.
Các công cụ
Các công cụ khôi phục mật khẩu cho phép hacker phá vỡ các mật khẩu phức tạp, khôi phục các khóa mã hóa mạnh và mở khóa một số tài liệu.
pwdump7
Pwdump7 là một ứng dụng dùng để rút trích hàm băm mật khẩu (một chiều hoặc OWFs) SAM của NT, pwdump trích xuất hàm băm mật khẩu LM và NTLM của các tài khoản người dùng từ cơ sở dữ liệu Security Account Manager (SAM). Công cụ này hoạt động bằng cách rút trích tệp SAM và SYSTEM nhị phân từ hệ thống file và sau đó rút trích hàm băm. Một trong những tính năng mạnh mẽ nhất của pwdump7 là khả năng rút trích các file được bảo vệ. Việc sử dụng chương trình này yêu cầu đặc quyền quản trị.
Ngoài ra còn có một số công cụ khác như:
- Mimikatz
- Powershell Empire
- DSInternals PowerShell
- Ntdsxtract
LOphtCrack
LOphtCrack là một công cụ được thiết kế bởi công ty L0pht Heavy Industries vào những năm 90 để kiểm tra mật khẩu và khôi phục ứng dụng. Nó có khả năng khôi phục lại các mật khẩu của Microsoft Windows bị mất thông qua các kiểu tấn công khác nhau.
Ophcrack
Ophcrack là một công cụ phá mật khẩu trên hệ thống Windows sử dụng rainbow tables. Nó có giao diện đồ họa (GUI) và có thể chạy trên các hệ điều hành khác nhau như Windows, Linux / UNIX, … Ophcrack có thể khôi phục mật khẩu của các tài khoản người dùng trên hệ thống Windows bằng cách phân tích các file hash được lưu trữ trên đĩa cứng.
RainbowCrack
RainbowCrack bẻ khóa các giá trị băm bằng rainbow table, sử dụng thuật toán trade-off.
Password Salting
Khi một user tạo mật khẩu, ta thêm một chuỗi ngẫu nhiên thêm vào mật khẩu trước khi mã hóa nó và đem đi lưu trữ. Thì chuỗi này được gọi là “salt”. Khi người dùng đăng nhập, salt sẽ được thêm vào mật khẩu và mã hóa lại để sánh với mật khẩu đã lưu trữ trong cơ sở dữ liệu. Việc sử dụng salt làm cho việc giải mã mật khẩu trở nên khó hơn đối với hacker, ngoài ra salting còn bảo vệ tài khoản của user khỏi tấn công dictionary và rainbow table.
Chú ý: Mật khẩu của Windows không được salt.
Cách phòng chống LLMNR/NBT-NS Poisoning
Vô hiệu hóa LMNR
Cách đơn giản nhất để phòng tránh đó là vô hiệu hóa dịch vụ LMNR và NBT-NS trên Windows.
- Vào Local Group Policy Editor, chọn Local Computer Policy, tới Computer Configuration, tới Administrative Templates Network sau đó chọn tiếp DNS Client.
- Trong mục DNS Client, chọn Turn off multicast name resolution và nhấn OK.
Vô hiệu hóa NBT-NS
- Mở Control Panel, chọn Network and Internet, vào mục Network and Sharing Center, click vào Change adapter settings option ở thanh bên trái.
- Nhấn chuột phải vào network adapter và click Properties, chọn TCP/IPv4 sau đó chọn Properties.
- Mở tới tab General, chọn Advanced, tới WINS.
- Tại tùy chọn NetBIOS setting, nhấn vào “Disable NetBIOS over TCP/IP” và bấm OK.
Một số cách khác để phòng tránh như:
- Sử dụng DNS: Thay vì phụ thuộc vào LLMNR và NBT-NS để phân giải hostname thành IP, thì DNS để thay thế.
- Sử dụng tường lửa: Cấu hình tường lửa chặn lưu lượng truy cập LNR và NBT-NS.
- Chia mạng con: Phân đoạn mạng thành các mạng con nhỏ hơn để giới hạn phạm vi tấn công LLMNR và NBT-NS poisoning
- Sử dụng mã hóa: Sử dụng mã hóa để bảo vệ dữ liệu nhạy cảm được truyền qua mạng.
- Thực hiện SMB signing để ngăn chặn tấn công relay: SMB signing là một tính năng bảo mật đảm bảo tính toàn vẹn và xác thực của dữ liệu được truyền qua mạng. Khi SMB signing được kích hoạt, các gói tin SMB sẽ được ký số để ngăn chặn các cuộc tấn công relay.
- Triển khai công cụ giám sát giả mạo LLMNR/NBT-NS
- Giám sát các port UDP 5355 và 137: Ta có thể phát hiện các tấn công sử dụng LLMNR và NBT-NS.
- Giám sát các event ID 4697 và 7045: có thể là các dấu hiệu của tấn công relay.
- Giám sát bất kỳ thay đổi trên DWORD registry nằm tại HKLM\Software\Policies\Microsoft\Windows NT\DNSClient: Giúp phát hiện các cuộc tấn công đang cố gắng thay đổi các thiết lập DNS trên hệ thống.
Công cụ phát hiện LLMNR/NBT-NS poisoning
Vindicate
Vindicate là một bộ công cụ giúp phát hiện tấn công giả mạo, giúp cô lập nhanh chóng các attacker trên mạng. Nó được thiết kế để phát hiện việc sử dụng các công cụ hacking như Responder, Inveigh, NBNSpoof và Metasploit’s LLMNR, NBNS và mDNS spoofers,… Công cụ này sử dụng Windows Log Event để tích hợp nhanh chóng với Active Directory.
Respounder
Respounder là một công cụ phát hiện sự hiện diện của Responder trên mạng. Công cụ này cũng giúp phát hiện các máy giả mạo chạy Responder trên các mạng Wi-Fi public, ví dụ như ở sân bay và quán cà phê, và tránh kết nối vào các mạng đó.
got-responded
got-responded là một công cụ giúp kiểm tra giả mạo LLMNR/NBT-NS mà không gửi thông tin đăng nhập SMB giả mạo.
Bài viết sau chúng ta sẽ tìm hiểu thêm về các lỗ hổng bảo mật phổ biến trong chương trình CEH v12.