System hacking là quá trình xâm nhập vào hệ thống máy tính của một tổ chức hoặc cá nhân mà không có sự cho phép của chủ sở hữu hệ thống, với mục đích truy cập và thay đổi thông tin hoặc dữ liệu trong hệ thống. Attacker sử dụng các kỹ thuật khai thác lỗ hổng bảo mật trong hệ thống, thường là bằng cách sử dụng các phần mềm độc hại hoặc mã độc để lấy được quyền truy cập. Hoạt động này có thể gây thiệt hại nghiêm trọng đến hệ thống và dữ liệu của tổ chức, vì vậy việc ngăn chặn và phòng thủ chống lại các cuộc tấn công xâm nhập là rất quan trọng trong bảo mật thông tin.
Chương này sẽ tìm hiểu về:
- Các kỹ thuật khác nhau để xâm nhập vào hệ thống
- Áp dụng các kỹ thuật leo thang đặc quyền
- Giải thích các kỹ thuật khác nhau để cướp và duy trì quyền truy cập vào hệ thống
- Các loại rootkit khác nhau
- Giải thích kỹ thuật ẩn giấu thông tin
- Kỹ thuật để che giấu bằng chứng về việc xâm nhập
- Các biện pháp phòng ngừa xâm nhập hệ thống
Windows Authentication
Windows xác thực người dùng với sự trợ giúp của ba cơ chế (giao thức) do Microsoft cung cấp.
Security Accounts Manager (SAM)
SAM là viết tắt của Security Account Manager, là một tệp dữ liệu quan trọng trên hệ điều hành Windows, chứa các thông tin xác thực tài khoản người dùng đăng nhập vào hệ thống. Gồm tên người dùng, mật khẩu và các thông tin quản lý tài khoản khác. Tệp SAM được lưu trữ trong thư mục C:\Windows\System32\Config trên hệ thống Windows NT, 2000, XP, Vista, 7, 8 và 10.
SAM được bảo vệ bằng cách mã hóa và chỉ có quyền truy cập cho các quản trị viên hệ thống và các tài khoản hệ thống được ủy quyền. SAM là một trong những mục tiêu chính của attacker để ăn cắp thông tin xác thực và thực hiện các hoạt động xâm nhập khác.
Không thể sao chép file SAM sang một nơi khác vì hệ thống khóa file SAM bằng khóa hệ thống file độc quyền nên không thể sao chép hoặc di chuyển file trong khi Windows đang chạy. Tuy nhiên, attacker có thể trích xuất nội dung trên đĩa của file SAM bằng nhiều kỹ thuật khác nhau. File SAM sử dụng chức năng SYSKEY (trong Windows NT 4.0 và các phiên bản mới hơn) để mã hóa một phần hàm băm mật khẩu.
Tệp SAM được lưu trữ tại %SystemRoot%/system32/config/SAM trong Windows và Windows sẽ gắn tệp đó vào registry trong HKLM/SAM registry hive. Nó lưu trữ mật khẩu được băm LM hoặc NTLM.
LM hash hoạt động bằng cách chia mật khẩu thành hai phần, mỗi phần có độ dài 7 ký tự và sau đó băm từng phần một để tạo ra hai giá trị băm. Khi đăng nhập, các giá trị băm này được gửi đến máy chủ và so sánh với các giá trị băm lưu trữ trong file SAM để xác thực người dùng.
Tuy nhiên, LM hash đã lỗi thời và không còn được sử dụng trong các phiên bản mới của Windows. LM hash đã được thay thế bằng NTLM hash, một phương pháp băm mật khẩu tốt hơn và an toàn hơn. LM hash có thể bị tấn công bằng cách sử dụng các công cụ cracking password, cho phép attacker phục hồi mật khẩu gốc chỉ trong vài giây.
NTLM Authentication
NTLM Authentication (NT LAN Manager Authentication) là một giao thức xác thực trong hệ thống Windows, được sử dụng để xác thực người dùng và cung cấp quyền truy cập vào các tài nguyên trên mạng. NTLM Authentication được phát triển bởi Microsoft, và thường được sử dụng trong các môi trường doanh nghiệp để xác thực người dùng khi truy cập vào các tài nguyên mạng như máy chủ, máy tính, hoặc các dịch vụ khác.
NTLM Authentication sử dụng hai phiên bản khác nhau: NTLMv1 và NTLMv2. NTLMv2 là phiên bản mới hơn và được đề xuất sử dụng để tăng cường bảo mật. Khi người dùng đăng nhập vào hệ thống, NTLM Authentication sẽ yêu cầu người dùng cung cấp tên đăng nhập và mật khẩu. Sau đó, NTLM Authentication sẽ gửi thông tin xác thực cho máy chủ, và nếu thông tin xác thực đúng, người dùng sẽ được cấp quyền truy cập vào các tài nguyên được yêu cầu.
Các bước xác thực:
Khi người dùng nhập tên người dùng và mật khẩu vào cửa sổ đăng nhập
- Windows sử dụng một thuật toán băm để tạo một hàm băm cho mật khẩu
- Client gửi yêu cầu đăng nhập với domain đến domain controller
- Domain controller tạo ra một chuỗi ngẫu nhiên 16-byte được gọi là “nonce” và gửi đến client.
- Client mã hóa nonce bằng hàm băm của mật khẩu người dùng và gửi lại cho domain controller.
- Domain controller truy xuất hàm băm của mật khẩu người dùng từ SAM và sử dụng nó để mã hóa nonce. Sau đó, domain controller so sánh giá trị được mã hóa với giá trị nhận được từ máy khách. Nếu giá trị phù hợp, người dùng được xác thực và đăng nhập thành công.
Kerberos Authentication
Kerberos Authentication là một giao thức xác thực mạng phổ biến trong các hệ thống máy tính và mạng. Nó được sử dụng để xác thực người dùng và cung cấp quyền truy cập vào các tài nguyên trên mạng. Kerberos Authentication được phát triển bởi Massachusetts Institute of Technology (MIT) và được tích hợp sẵn trong hệ điều hành Windows, Linux và macOS.
Kerberos Authentication hoạt động bằng cách sử dụng một trung tâm xác thực (Kerberos Authentication Server) để xác thực người dùng và cấp phép truy cập vào các tài nguyên. Khi người dùng đăng nhập vào hệ thống, Kerberos sẽ yêu cầu người dùng cung cấp tên đăng nhập và mật khẩu. Sau đó, Kerberos sẽ tạo ra một phiên xác thực (ticket-granting ticket) và gửi đến trung tâm xác thực để xác nhận thông tin xác thực của người dùng. Nếu thông tin xác thực hợp lệ, trung tâm xác thực sẽ gửi lại một phiên xác thực (ticket-granting ticket) cho người dùng, cho phép họ truy cập vào các tài nguyên được yêu cầu.
Kerberos Authentication được coi là một trong những giao thức xác thực mạng an toàn và hiệu quả nhất hiện nay, do có khả năng chống lại các cuộc tấn công từ chối dịch vụ (DoS) và các cuộc tấn công trung gian (MITM).
Các kỹ thuật bẻ khóa password trong System Hacking
Bẻ khóa mật khẩu là quá trình khôi phục mật khẩu từ dữ liệu được truyền qua mạng hoặc từ dữ liệu được lưu trữ trong máy tính. Mục đích của việc bẻ khóa mật khẩu là để giúp người dùng khôi phục mật khẩu bị quên hoặc bị mất hoặc attacker sử dụng để giành quyền truy cập trái phép.
Mật khẩu là thông tin cực kì quan trọng. Attacker có thể bẻ khóa mật khẩu theo cách thủ công bằng cách đoán hoặc sử dụng các công cụ tự động như dictionary hoặc phương pháp brute-force. Hầu hết các kỹ thuật bẻ khóa mật khẩu đều thành công nhờ mật khẩu yếu hoặc dễ đoán.
Tấn công bẻ khóa mật khẩu được chia làm 4 loại dưới đây.
Non-Electronic Attacks
Non-Electronic Attacks là tấn công mà không sử dụng công nghệ, thường dựa trên kỹ thuật xã hội hay lừa đảo để chiếm quyền truy cập hoặc thông tin từ mục tiêu. Kiểu tấn công này thường không cần kỹ năng kỹ thuật cao và thường được thực hiện bởi những hacker không có kinh nghiệm. Non-Electronic Attacks bao gồm các hình thức tấn công như social engineering, đánh cắp tài liệu giấy, …
Active Online Attacks
Phương pháp này là một trong những cách đơn giản nhất để lấy quyền truy cập cấp quản trị một hệ thống. Các kỹ thuật thường được sử dụng như đoán mật khẩu, tấn công từ điển và brute-force, password spraying, mask attack, hash injection, …
Directionary Attack
Dictionary Attack là một loại tấn công thử mật khẩu (password guessing attack) trong đó hacker cố gắng tìm mật khẩu bằng cách dùng một danh sách các từ hoặc cụm từ thông dụng, phổ biến. Hacker sử dụng một danh sách các từ và cụm từ phổ biến được lấy từ các nguồn khác nhau, sau đó sử dụng các công cụ và kỹ thuật để tấn công nhằm tìm ra mật khẩu đúng.
Để đối phó với tấn công Dictionary Attack, người dùng cần sử dụng mật khẩu mạnh và khó đoán, và thường xuyên thay đổi mật khẩu.
Cuộc tấn công này được áp dụng trong hai tình huống:
- Trong mật mã, nhằm tìm ra khóa giải mã để lấy bản rõ từ bản mã
- Trong bảo mật, nhằm để vượt qua xác thực và truy cập vào cơ chế kiểm soát của hệ thống bằng cách đoán mật khẩu
Brute-force Attack
Brute-force Attack (tấn công vét cạn) được RSA định nghĩa như sau:
Trong tấn công này, hacker thử mọi tổ hợp ký tự cho đến khi mật khẩu bị phá vỡ. Việc tìm thấy khóa hoặc văn bản rõ nhanh hơn so với tấn công Brute-force là một cách phá mã.
Một thuật toán mã hóa được coi là an toàn nếu không có phương pháp nào tồn tại để phá mã nó ngoại trừ tấn công Brute-force. Tuy nhiên, tất cả các mã hóa đều có nhược điểm toán học về tính bảo mật của chúng. Nếu người dùng chọn khóa ngẫu nhiên hoặc tìm kiếm ngẫu nhiên, bản rõ sẽ trở nên khả dụng trung bình sau khi hệ thống đã thử nửa số khóa có thể có. Các tấn công Brute-force hiện nay yêu cầu sức mạnh xử lý khá lớn để có thể thực hiện thành công.
Rule-based Attack
Rule-based Attack là một loại tấn công thử mật khẩu (password guessing attack) trong đó attacker sử dụng các quy tắc (rules) để tạo ra các mật khẩu có khả năng đúng, và sau đó sử dụng các mật khẩu này để tấn công vào các hệ thống hoặc ứng dụng. Các quy tắc có thể bao gồm sử dụng các từ trong từ điển, các cấu trúc phổ biến của mật khẩu, kết hợp giữa các chữ cái in hoa và in thường, ký tự đặc biệt và số.
Với Rule-based Attack, attacker không cần phải thử tất cả các kết hợp ký tự một cách liên tục như trong Brute-force Attack, mà chỉ cần sử dụng các quy tắc để tạo ra các mật khẩu có khả năng đúng cao hơn.
Password Spraying Attack
Để thực hiện tấn công này, hacker tập trung khai thác chính sách khóa tài khoản, cho phép user sử dụng nhiều mật khẩu trong một khoảng thời gian hoặc một số lần thử trước khi tài khoản bị khóa. Attacker sẽ thử một mật khẩu phổ biến trên nhiều tài khoản đồng thời và đợi phản hồi trước khi thử mật khẩu khác trên các tài khoản đó. Attacker tiếp tục quá trình nhưng vẫn đảm bảo nằm dưới ngưỡng khóa tài khoản để có thể thử nhiều mật khẩu mà không bị ảnh hưởng bởi cơ chế khóa tự động.
Password spraying có thể được thực hiện thông qua các cổng thông thường như MSSQL (1433/TCP), SSH (22/TCP), FTP (21/TCP), SMB (445/TCP), Telnet (23/TCP), và Kerberos (88/TCP). Để phòng chống Password Spraying Attack, người dùng cần sử dụng các mật khẩu mạnh và quản trị viên hệ thống cần thiết lập chính sách khóa tài khoản hiệu quả để giảm thiểu khả năng tấn công.
Attacker sử dụng công cụ CrackMapExec để tự động hóa quá trình bẻ khóa mật khẩu của toàn bộ domain hoặc mật khẩu workgroup member bằng cách sử dụng một tập các mật khẩu phổ biến. Mật khẩu đã sử dụng được lưu trữ trong tệp .txt.
Lệnh sau dùng để thực thi công cụ crackmapexec với file mật khẩu là passwords.txt.
crackmapexec smb <IP> -u users.txt -p passwords.txt
Một số công cụ password spraying khác như:
- o Kerbrute
- o Invoke-DomainPasswordSpray
- o Spray
- o Omnispray
Mask Attack
Đây là một loại tấn công thử mật khẩu (password guessing attack) trong đó hacker có một số thông tin về cấu trúc của mật khẩu, nhưng không biết chính xác các ký tự cụ thể. Thay vì thử tất cả các kết hợp ký tự một cách liên tục như Brute-force Attack, hacker sử dụng một mask hoặc mẫu (pattern) để chỉ định các ký tự có thể có trong mật khẩu, và sau đó sử dụng các từ điển hoặc các ký tự khác để tạo ra các mật khẩu có khả năng đúng.
Ví dụ, nếu hacker biết rằng mật khẩu của người dùng có 8 ký tự và có dạng “Xxxxxxxx”, trong đó “X” là chữ cái in hoa, thì họ có thể sử dụng một mask như “LlLlLlLlLlLlLl” để tìm kiếm các mật khẩu có dạng này. Trong đó, “L” đại diện cho chữ cái in thường và “l” đại diện cho chữ cái in hoa.
Mask attack giúp tiết kiệm thời gian cho hacker so với Brute-force Attack, đặc biệt là khi mật khẩu có cấu trúc phức tạp. Tuy nhiên, nó vẫn đòi hỏi nhiều trong việc tính toán để việc tấn công trở nên hiệu quả.
Ta có thể tấn công bằng công cụ hashcat. Hashcat là một công cụ mã nguồn mở được sử dụng để phục hồi các mật khẩu đã mã hóa hoặc hash. Nó được sử dụng để thực hiện các loại tấn công thử mật khẩu như Brute-force Attack, Dictionary Attack, Hybrid Attack và Mask Attack. Hashcat có thể hỗ trợ nhiều loại mã hóa mật khẩu khác nhau, bao gồm MD5, SHA1, SHA256, SHA512, LM, NTLM, và nhiều mật mã khác. Nó ngoài ra cũng hỗ trợ GPU để tăng tốc độ tính toán và làm cho việc phục hồi mật khẩu nhanh hơn.
Bộ ký tự tích hợp sau đây giúp chỉ định loại ký tự sẽ được sử dụng:
- ?1 = abcdefghijklmnopqrstuvwxyz
- ?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
- ?d = 0123456789
- ?h = 0123456789abcdef
- ?H = 0123456789ABCDEF
- ?s = «space»!;<=>?@[]A_'{I
- ?a = ?l?u?d?s
- ?b = 0x00 – Oxff
Và các bộ kí tự custom được sử dụng trong trường hợp hacker không chắc chắn về loại ký tự:
- -1 abcdefghijklmnopqrstuvwxyz0123456789
- -1 abcdefghijklmnopqrstuvwxyz?d
- -1 710123456789
- -1 ?l?d
Hacker sử dụng flag -m
để chỉ định chế độ hash, tức là loại hash cần bẻ khóa (MD5, NTML, SHA256, …). Ví dụ chạy lệnh sau để bẻ khóa mật khẩu chứa sáu ký tự, trong đó ba ký tự đầu tiên là chữ cái viết thường và ba ký tự cuối cùng là số (?l?l?l?d?d?d).
hashcat -a 3 -m 0 md5_hashes.txt ?l?l?l?d?d?d
Trong đó:
- -a: chỉ định attack mode, số 3 là brute-force
- -m: là hash type, số 0 có nghĩa là md5
Chạy lệnh sau để bẻ khóa mật khẩu có độ dài 8 ký tự, trong đó ký tự đầu tiên là chữ hoa hoặc chữ thường, 4 ký tự cuối là chữ số, 2 chữ số đầu tiên là 1 và 9 và các ký tự còn lại là chữ thường.
hashcat -m 0 -a 3 -i --increment-min=6 --increment-max=10 53ab0dff8ecc7d5al8b4416d00568f02 ?1?1?1?1?1?1?1?1?1?1
Trong đó:
- -1 ?l?u: chỉ định ký tự là chữ hoa hoặc chữ thường
- –increment: sử dụng khi độ dài mật khẩu không xác định
- –increment-min=6: độ dài mật khẩu tối thiểu là 6
- –increment-max=10: độ dài mật khẩu tối đa là 10
Password Guessing
Password guessing (đoán mật khẩu) là một kỹ thuật tấn công hệ thống trong đó hacker công cố gắng đăng nhập vào mục tiêu bằng cách thử các mật khẩu khác nhau cho đến khi tìm ra mật khẩu chính xác. Kỹ thuật này có thể được thực hiện thủ công hoặc bằng cách sử dụng các công cụ phần mềm tự động hóa quá trình đoán mật khẩu.
Các bước để thực hiện kỹ thuật đoán mật khẩu gồm:
- Tìm một tài khoản hợp lệ để đăng nhập vào hệ thống mục tiêu. Có thể được thực hiện bằng cách thu thập thông tin tài khoản từ các nguồn khác nhau, như thông tin đăng nhập từ các file công khai, thông tin từ các trang web công khai, hoặc thông qua các kỹ thuật social engineering.
- Tạo danh sách các mật khẩu có thể có cho tài khoản đó. Các mật khẩu này có thể được lấy từ từ điển, các chương trình tạo mật khẩu tự động, các mật khẩu phổ biến hoặc từ các thông tin thu thập được từ bước trước đó.
- Xếp hạng các mật khẩu từ khả năng cao đến thấp dựa trên các yếu tố như độ dài, phức tạp, độ phổ biến, thường xuất hiện trong các danh sách mật khẩu phổ biến, …
- Nhập mỗi mật khẩu vào hệ thống mục tiêu một cách thủ công hoặc sử dụng các công cụ tự động để đăng nhập. Tiếp tục thử đăng nhập với các mật khẩu khác nhau trong danh sách cho đến khi tìm ra mật khẩu chính xác.
Đoán bằng phương pháp thủ công
Ở dạng đơn giản nhất, ta có thể tự động đoán mật khẩu bằng vòng lặp FOR đơn giản. Trong ví dụ sau, hacker tạo một file đơn giản có tên người dùng và mật khẩu rồi lặp lại chúng bằng vòng lặp FOR. Vòng lặp FOR chính có thể trích xuất tên người dùng và mật khẩu từ file văn bản, đóng vai trò như một từ điển và lặp qua từng dòng:
[file: credentials.txt]
administrator ""
administrator password
administrator administrator
[Etc.]
Sau đó gõ:
File outfile.txt chứa tên người dùng và mật khẩu chính xác nếu tên người dùng và mật khẩu trong tệp credentials.txt là đúng.
Mật khẩu mặc định
Default passwords là các mật khẩu mặc định được cài đặt trên thiết bị hoặc ứng dụng khi chúng được triển khai hoặc cài đặt. Những mật khẩu này nhằm mục đích giúp người dùng có thể truy cập vào ứng dụng ngay khi chúng được triển khai mà không cần phải tạo một mật khẩu mới. Tuy nhiên, các mật khẩu mặc định này thường được công bố trên mạng hoặc được biết đến rộng rãi trong cộng đồng người dùng, điều này tạo điều kiện thuận lợi cho hacker để đánh cắp thông tin truy cập hoặc tấn công vào hệ thống.
Trojans/Spyware/Keyloggers
Trojans, Spyware và Keyloggers đều là các loại phần mềm độc hại được sử dụng để tấn công hệ thống máy tính.
- Trojans (còn được gọi là Trojan Horse) là phần mềm độc hại được giấu kín trong một phần mềm hay file khác để lừa đảo người dùng và xâm nhập vào máy tính của họ. Trojans thường được sử dụng để mở port để cho attacker truy cập hệ thống, tạo các kết nối tới máy tính khác, hoặc thực hiện các hành động độc hại khác.
- Spyware là các phần mềm cài đặt trên máy tính của nạn nhân mà không được sự cho phép, thường được sử dụng để thu thập thông tin cá nhân, quảng cáo, …
- Keyloggers là phần mềm độc hại được thiết kế để theo dõi hoạt động bàn phím của người dùng và ghi lại tất cả các phím được ấn trên bàn phím. Keyloggers thường được sử dụng để đánh cắp thông tin cá nhân của người dùng, như tên người dùng và mật khẩu, hoặc các thông tin tài chính nhạy cảm.
Hash Injection/Pass-the-Hash (PtH) Attack
Hash Injection và Pass-the-Hash (PtH) Attack đều là các kỹ thuật tấn công vào hệ thống máy tính liên quan đến việc lấy mật khẩu băm (hash) của tài khoản người dùng để đánh cắp tải khoản.
- Hash Injection là một kỹ thuật tấn công bằng cách thay đổi mật khẩu băm của một tài khoản đăng nhập hợp lệ trên hệ thống. Khi attacker có quyền truy cập vào hệ thống, chúng có thể sử dụng kỹ thuật này để thay đổi mật khẩu băm của tài khoản và sau đó đăng nhập vào hệ thống bằng mật khẩu mới này.
- Pass-the-Hash Attack (PtH) là một kỹ thuật tấn công mà attacker sử dụng mật khẩu băm (hash) của tài khoản đăng nhập hợp lệ để đăng nhập vào hệ thống máy tính mà không cần biết mật khẩu thật sự. Khi attacker đã có được mật khẩu băm, họ có thể sử dụng các công cụ đặc biệt để giả mạo mật khẩu và đăng nhập vào hệ thống. Kỹ thuật này thường được sử dụng để truy cập vào các hệ thống mà không thể tìm thấy mật khẩu thật sự hoặc khi các mật khẩu thật sự quá phức tạp.
Vì bài viết đã quá dài nên mình sẽ tách ra một bài viết khác để tiếp tục phần này.
Comments 1