TÌM HIỂU CHUNG VỀ TẤN CÔNG BRUTE FORCE
Tấn công Brute Force là gì ?
Tấn công Brute force là một phương thức tấn công mạng đơn giản, trong đó hacker sử dụng phần mềm tự động để thử nghiệm các kết hợp username và password Phương pháp này hoạt động bằng cách xoay vòng các ký tự khác nhau để tìm ra mật khẩu đúng, mà không cần sử dụng kỹ thuật phức tạp Thời gian cần thiết để thành công phụ thuộc vào độ dài và độ khó của mật khẩu, nhưng khả năng tìm ra mật khẩu luôn tồn tại nếu không bị giới hạn bởi thời gian.
Việc dò mật khẩu ngày càng trở nên phổ biến do sự phát triển mạnh mẽ của internet trong đời sống con người Sự gia tăng nhanh chóng về số lượng tài khoản kéo theo nhiều lỗ hổng bảo mật, dẫn đến việc nhiều tài khoản dễ bị tấn công hơn.
Hậu quả của tấn công Brute Force
- Sau cuộc tấn công brute force giúp hacker có thể:
- Thu lợi từ quảng cáo hoặc thu thập dữ liệu hoạt động
- Đánh cắp dữ liệu cá nhân
- Phát tán phần mềm độc hại để gây ảnh hưởng xấu đến công việc
- Sử dụng hệ thống của nạn nhân làm mục đích xấu
- Gây tổn hại đến danh tiếng của bạn
- Cài backdoor trên máy nạn nhân để thực hiện cho các cuộc tấn công về sau
- Và còn rất nhiều mối nguy hiểm khác nữa …
Các loại tấn công Brute Force
Tấn công Brute Force đơn giản: Hacker sẽ cố gắng đoán thông tin đăng nhập của bạn một cách hợp lý mà không cần sử dụng phần mềm hay công cụ hỗ trợ Phương pháp này có thể dẫn đến việc tiết lộ mật khẩu và mã PIN dễ dàng.
Các cuộc tấn công từ điển là một phương pháp cơ bản trong các cuộc tấn công brute force, thường được sử dụng như một yếu tố quan trọng để bẻ khóa mật khẩu.
Cuộc tấn công Hybrid Brute Force là phương thức mà hacker lợi dụng thông tin bên ngoài và của người dùng để thu thập thông tin đăng nhập Phương pháp này thường kết hợp các cuộc tấn công từ điển và brute force, nhằm tìm ra mật khẩu bằng cách kết hợp các từ phổ biến với các ký tự ngẫu nhiên.
Tấn công đảo ngược bằng brute force là phương pháp mà hacker khởi đầu bằng một mật khẩu đã biết và tìm kiếm hàng triệu tên người dùng cho đến khi phát hiện ra sự trùng khớp Nhiều tội phạm mạng sử dụng mật khẩu bị rò rỉ từ các vi phạm dữ liệu có sẵn trên internet để thực hiện cuộc tấn công này.
Credential Stuffing là một phương thức tấn công mà hacker sử dụng thông tin đăng nhập (tên người dùng và mật khẩu) từ một trang web để thử nghiệm trên nhiều trang web khác Do người dùng thường tái sử dụng thông tin đăng nhập trên nhiều nền tảng, họ trở thành mục tiêu chính cho loại tấn công này.
Nguyên nhân bị tấn công brute force
Không thay đổi username và password mặc định như: admin, administrator hoặc tương tự
Mật khẩu yếu và dễ đoán có thể gây rủi ro cho tài khoản của bạn Nhiều người chỉ sử dụng chữ cái thường mà không kết hợp số hay ký tự đặc biệt, dẫn đến việc tạo ra những mật khẩu dễ bị tấn công Theo báo cáo của SplashData năm 2018, các dãy số phổ biến như 12345 và 123456789 là những mật khẩu thường được sử dụng, làm tăng khả năng bị xâm nhập.
Đường dẫn đăng nhập vào tài khoản quản trị website thường có cấu trúc đơn giản, như ví dụ của WordPress với http://tên-miềnwebsite/wp-admin Mặc dù điều này giúp người quản trị dễ dàng truy cập, nhưng cũng tạo ra nguy cơ bảo mật dễ bị khai thác.
Thay đổi mật khẩu định kỳ là một nguyên tắc bảo mật quan trọng Việc không thường xuyên cập nhật mật khẩu có thể làm tăng đáng kể nguy cơ bị tấn công.
Các hình thức tấn công Brute Force
Hình thức tấn công này có thể dễ dàng phòng ngừa, nhưng lại dễ bị ảnh hưởng nếu bạn không chú ý đến việc đặt mật khẩu và tên người dùng Thường thì bạn sẽ dễ trở thành mục tiêu của kiểu tấn công này khi:
Hình I-1: Hình thức tấn công Brute Force
- Đặt username là admin, administrator hoặc tương tự
- Mật khẩu không an toàn, dễ đoán ra, sử dụng phổ biến
- Không bảo mật đường dẫn đăng nhập
- Không thay đổi mật khẩu thường xuyên
Cách phòng chống tấn công Brute Force
Đặt tên đăng nhập khó đoán ra: Chọn tên đăng nhập không quá phổ biến và có thể suy luận ra chính bạn
Để bảo vệ tài khoản của bạn, hãy sử dụng mật khẩu dài và mạnh, bao gồm các ký tự đặc biệt và không liên quan đến thông tin cá nhân Tránh đặt mật khẩu chứa tên hoặc ngày sinh của bạn để tăng cường tính bảo mật.
Hạn chế số lần đăng nhập sai: Giới hạn số lần thứ cũng làm giảm khả năng bị tấn công brute force
Để tăng cường bảo mật cho trang web, quản trị viên hệ thống nên thay đổi đường dẫn đăng nhập mặc định Việc này giúp ngăn chặn hacker dễ dàng tìm kiếm và truy cập vào trang đăng nhập để kiểm tra tài khoản.
Thường xuyên thay đổi mật khẩu: Phương pháp này để tránh rò rỉ thông tin trên mạng
Xác thực hai yếu tố: Quản trị viên có thể yêu cầu xác thực hai bước và cài đặt hệ thống phát hiện các cuộc tấn công …
TÌM HIỂU VỀ CÔNG CỤ PATATOR
Patator là gì?
Hình II-1: Công cụ Patator
Patator là một công cụ tấn công brute force đa năng, được thiết kế với các module linh hoạt, cho phép tấn công nhiều loại đăng nhập, bao gồm cả mật khẩu ZIP Công cụ này kết hợp các module hỗ trợ tấn công bruteforce từ Hydra, Medusa, Ncrack, Metasploit và Nmap NSE, giúp thực hiện các cuộc tấn công đoán mật khẩu hiệu quả Patator được phát triển bằng ngôn ngữ lập trình Python.
Hiện tại công cụ vẫn đang được phát triển để cải tiến tốc độ và thêm module Nguồn: https://github.com/lanjelot/patator
Mục đích của Patator?
Patator là công cụ tấn công bruteforce, sử dụng nhiều phương thức khác nhau để xâm nhập vào tên người dùng và mật khẩu của hệ thống hoặc trang web Công cụ này thử tất cả các chuỗi mật khẩu có thể, do đó thời gian để tìm ra mật khẩu có thể kéo dài, phụ thuộc vào độ dài của mật khẩu Tuy nhiên, khả năng tìm ra mật khẩu là luôn có nếu không bị giới hạn bởi thời gian.
Patator đóng vai trò quan trọng đối với kẻ tấn công, vì nó hoạt động như một công cụ thử nghiệm, giúp dò tìm các thông tin đăng nhập (tên người dùng/mật khẩu) của ứng dụng web hoặc hệ thống cụ thể.
11 Đối với admin: Xác định các thông tin đăng nhập có an toàn hay không.
Các module của Patator
Patator được hỗ trợ bởi các module để có thể lựa chọn nhiều hình thức tấn công khác nhau như:
- ftp_login: Brute–force FTP
- ssh_login: Brute-force SSH
- telnet_login: Brute-force Telnet
- smtp_login: Brute-force SMTP
- smtp_vrfy: Liệt kê người dùng hợp lệ bằng lệnh SMTP ‘VRFY’
- smtp_rcpt: Liệt kê người dùng
- finger_lookup: Liệt kê người dùng hợp lệ bằng Finger
- http_fuzz: Brute-force HTTP
- pop_login: Brute-force POP3
- pop_passd: Brute-force poppassd
- imap_login: Brute-force IMAP4 – Idap_login: Brute_force LDAP
- smb_login: Brute-force SMB
- smb_lookupsid: Brute-force SMB SID-lookup
- vmauthd_login: Brute-force VMware Authentication Daemon
- mssql_login: Brute-force MSSQL
- oracle_login: Brute-force Oracle
- mysql_login: Brute-force MySQL
- mysql_query: Brute-force MySQL queries
- rdp_login: Brute-force RDP (NLA)
- pgsql_login: Brute-force PostgreSQL
- vnc_login: Brute-force VNC
- dns_forward: Forward DNS lookup
- dns_reverse: Brute-force SNMP v1/2/3
- ike_enum: Enumerate IKE transforms
- unzip_pass: Brute-force the password of encrypted ZIP files
- keystore_pass: Brute-force the password of java keystore files
- sqlcipher_pass: Brute-force the password of SQLCipher-encrypted databases
- umbraco_crack: Crack Umbraco HMAC-SHA1 password hashes
- tcp_fuzz: Fuzz TCP services
Các module chuẩn bị được triển khai:
CÀI ĐẶT VÀ SỬ DỤNG
Cài đặt Patator
Để cài đặt patator chúng ta thực hiện theo những bước sau:
Bước 1: Sử dụng lệnh dưới đây để cập nhật những package mới nhất: sudo apt-get update –y
Bước 2: Chạy lệnh sau để tiến hành cài đặt patator và những thư viện cần sử dụng: sudo apt-get install -y patator
Hướng dẫn sử dụng một số module trong patator
version: hiển thị số phiên bản đang dùng
h, help: hiển thị thông báo trợ giúp
2.2 Các option tùy chỉnh khi thực hiện tấn công:
-x arg: hành động và điều kiện
start=N: bắt đầu từ vị trí thứ N trong từ điển
stop=N: kết thúc ở vị trí thứ N
resume=r1[,rN]*: tiếp tục ở vị trí trước đó
-e arg: mã hóa giữa hai thẻ tag
-C str: chuối dấu phân cách trong file (mặc định là ‘:’)
Trong điều kiện, chuỗi dấu phân cách được xác định bởi tham số -X str, với giá trị mặc định là dấu phẩy (',') Tham số allow-ignore-failures cho phép bỏ qua các lỗi không thể xử lý với -X, nhằm ngăn chặn việc phủ định sai do thiết kế.
2.3 Các option để tối ưu hóa:
rate-limit=N: đợi N giây nữa giữa các lần gửi payload, mặc định là 0
timeout=N: đợi N giây kể từ khi nhận được phản hồi để tiếp tục gửi payload tiếp theo, mặc định là 0
max-retries=N: bỏ qua payload sau N lần thử lại ( mặc định là: 4, 1: vô hạn) -t N, threads=N: số luồng thực thi, mặc định là 10
-l DIR: lưu dữ liệu đầu ra và phản hồi vào DIR
-L SFX: tự động lưu vào DIR/ yyyy-mm-dd /hh:mm:ss_SFX
-d, debug: kích hoạt thông báo gỡ lỗi
-x actions:conditions actions : tion[,action]* action := “ignore” | “ retry ” | “ free” | “quit” | “reset” conditions := condition=value[,condition=value]* condition := “code” | “size” | “time” | “mesg” | “fgrep” |
"egrep" cho phép bạn bỏ qua thông báo, trong khi "retry" sẽ thực hiện lại payload Tính năng "free" giúp loại bỏ các payload tương tự trong tương lai Bạn có thể sử dụng "quit" để chấm dứt quá trình thực hiện, hoặc "reset" để đóng kết nối hiện tại và kết nối lại sau này Các thuật ngữ "code" và "size" lần lượt đại diện cho mã và kích cỡ.
The article discusses various commands and encoding methods used for message processing Key terms include "time" (14), which indicates the timestamp, and "mesg," representing a message The command "fgrep" is utilized for searching specific strings within messages, while "egrep" allows for regex searches Additionally, the article introduces the "-e tag:encoding" format, where "tag" is a unique identifier (e.g., T@G) and "encoding" refers to various methods such as "unhex," "sha1," "b64," "url," "hex," and "md5." Each encoding method serves a specific purpose: "unhex" decodes hexadecimal, "sha1" and "md5" are hashing algorithms, "b64" represents Base64 encoding, "url" encodes URLs, and "hex" denotes hexadecimal encoding.
2.7 Các option trong các module:
- host : địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu, mặc định của module này là cổng 21
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- tls: sử dụng giao thức TLS [ 0:không | 1:có ]
- timeout: thời gian chờ cho đến khi được phản hồi [ 10s ]
- persistent: sử dụng kết nối liên tục [ 1 | 0 ]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [22]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- auth_type: loại xác thực mật khẩu để sử dụng
- keyfile: tệp có khóa cá nhân RSA, DSA hoặc ECDSA để kiểm tra
- timeout: thời gian chờ cho đến khi được phản hồi [10s] - persistent: sử dụng kết nối liên tục [ 1 | 0 ]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [23]
- inputs: danh sách các giá trị cần nhập
- prompt_re: biểu thức quy định phù hợp với lời nhắc [\w+:]
- timeout: thời gian phản hồi và để prompt_re khớp với dữ liệu đã nhận [20s]
- persistent: sử dụng kết nối liên tục [1|0]
- persistent: sử dụng kết nối liên tục [ 1 | 0 ]
- timeout: thời gian chờ cho đến khi nhận được phản hồi [10]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu
- ssl: sử dụng giao thức SSL [0|1]
- helo: lệnh helo hoặc ehlo được gửi sau khi kết nối
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- persistent: sử dụng kết nối liên tục [1|0]
- timeout: thời gian chờ cho đến khi nhận được phản hồi [10]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [25]
- ssl: sử dụng giao thức SSL [0|1]
- helo: lệnh helo hoặc ehlo để gửi sau khi kết nối - starttls: gửi STARTTLS [0|1]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- persistent: sử dụng kết nối liên tục [1|0]
- timeout: thời gian chờ cho đến khi nhận được phản hồi [10]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [25]
- ssl: sử dụng giao thức SSL [0|1]
- helo: lệnh helo hoặc ehlo để gửi sau khi kết nối - starttls: gửi STARTTLS [0|1]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- mail_from: email từ [test@gmail.com]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [79]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- timeout: thời gian chờ cho đến khi nhận được phản hồi [5]
- header: sử dụng tùy chỉnh tiêu đề
- method: phương thức sử dụng [GET|POST|HEAD| ]
- ulr: địa chỉ url (scheme://host[:port]/path?query)
- raw_request: tải yêu cầu từ file
- scheme: giao thức [http|https]
- auto_urlencode: tự động thực hiện mã hóa url [0|1]
- user_pass: tài khoản và mật khẩu để xác thực HTTP (user:pass)
- auth_type: loại xác thực HTTP [ basic | digest | ntlm ]
- follow: theo bất kì chuyển hướng ở vị trí nào [0|1]
- max_follow: giới hạn chuyển hướng [5]
- accept_cookie: lưu cookie nhận được để có thể duy trì phiên đăng nhập tiếp theo [0|1]
- http_proxy: HTTP proxy để sử dụng (địa chỉ ip mục tiêu: cổng mặc định của mục tiêu)
- ssl_cert: tệp chứng chỉ SSL ( cert + key ở định dạng PEM) - timeout_tcp: thời gian để đợi bắt tay TCP [10]
- timeout: thời gian đợi để phản hồi từ HTTP [20]
- before_urls: url được phân tách thành dấu phẩy để truy vấn trước yêu cầu chính
- before_header: sử dụng yêu cầu tùy chỉnh trong yêu cầu before_urls
- before_egrep: trích xuất dữ liệu từ phản hồi before_urls để đưa vào yêu cầu chính
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [110]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- ssl: sử dụng giao thức SSL [0|1]
- timeout: thời gian chờ cho đến khi nhận được phản hồi [10]
- persistent: sử dụng kết nối liên tục [1|0]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [106] user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- timeout: thời gian chờ cho đến khi nhận được phản hồi [10]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [143]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [139]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password_hash: các hàm băm LM / NT để kiểm tra, phải cung cấp ít nhất một hàm băm (‘Im:nt’ hoặc ‘:nt’ hoặc ‘Im:’) - domain: tên miền
- persistent: sử dụng kết nối liên tục [1|0]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [139]
- sid: SID để kiểm tra
- rid: RID để kiểm tra
- user: tên người dùng để sử dụng nếu yêu cầu xác thực
- password: mật khẩu để sử dụng nếu yêu cầu xác thực - persistent: sử dụng kết nối liên tục [1|0]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [902]
- luser: tên người dùng [root]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- prompt_re: biểu thức chính quy để khớp với lời nhắc [\w+:]
- timeout: thời gian để đợi phản hồi và để prompt_re khớp với dữ liệu đã nhận [10]
- persistent: sử dụng kết nối liên tục [1|0]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [902]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- ssl: sử dụng giao thức SSL
- timeout: thời gian chờ cho đến khi nhận được phản hồi [10] - persistent: sử dụng kết nối liên tục [1|0]
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [1433]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- windows_auth: sử dụng Windows xác thực [0|1] - domain: tên miền của mục tiêu
- password_hash: các hàm băm LM / NT để kiểm tra, phải cung cấp ít nhất một hàm băm (‘Im:nt’ hoặc ‘:nt’ hoặc ‘Im:’)
- host: tên máy chủ hoặc mạng con của mục tiêu
- port: cổng mặc định của mục tiêu [1521]
To perform a brute force attack, specify the username of the account or the path to the dictionary file you wish to use Additionally, provide the password you want to target or the path to the dictionary file intended for the password.
- sid: sid để kiểm tra
- service_name: tên dịch vụ để kiểm tra
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [3306]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- query: truy vấn SQL để thực thi
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [3389]
- user: tên tài khoản muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- host: địa chỉ ip của mục tiêu
- port: cổng mặc định của mục tiêu [5900]
- password: mật khẩu muốn brute force hoặc đường dẫn tới file từ điển muốn dùng
- timeout: thời gian chờ cho đến khi nhận được phản hồi [10]
- name: tên miền cần tra cứu
- server: máy chủ định danh để truy vấn (hỏi trực tiếp NS có thẩm quyền vùng có thể trả lại nhiều kết quả hơn) [8.8.8.8]
- timeout: thời gian chờ cho đến khi nhận được phản hồi [5]
- protocol: gửi truy vấn qua udp hoặc tcp [udp]
- qtype: nhập để truy vấn [ANY] - qclass: lớp để truy vấn [IN]
- host: địa chỉ ip để tra cứu
- server: máy chủ định danh để truy vấn (hỏi trực tiếp NS có thẩm quyền vùng có thể trả lại nhiều kết quả hơn) [8.8.8.8]
- timeout: thời gian chờ cho đến khi nhận được phản hồi [5]
- protocol: gửi truy vấn qua udp hoặc tcp [udp]
DEMO PATATOR
Giới thiệu qua các công cụ kết hợp với patator có trong Demo
Để hack mật khẩu, cần thử nhiều mật khẩu khác nhau để tìm ra mật khẩu chính xác Khi kẻ tấn công sử dụng hàng ngàn hoặc triệu từ và kết hợp các ký tự, không có gì đảm bảo rằng bất kỳ kết hợp nào trong số đó sẽ thành công Tập hợp các ký tự kết hợp này được gọi là wordlist.
Và để bẻ khóa mật khẩu hoặc băm, chúng ta cần một wordlist tốt có thể phá vỡ mật khẩu
Từ đó công cụ Crunch được sinh ra để giải quyết vấn đề trên
Crunch là một công cụ tạo wordlist tích hợp sẵn trong Kali Linux, cho phép người dùng tạo ra các từ khóa dựa trên wordlist Công cụ này có khả năng tạo ra wordlist thông qua việc hoán vị và kết hợp các ký tự Người dùng có thể sử dụng một số ký tự và ký hiệu đặc biệt để tùy chỉnh quá trình tạo wordlist.
Một số lệnh cơ bản: crunch -t -o với:
< min> : số ký tự tối thiểu
< max >: số ký tự tối đa
< charset >: ký tự có trong mật khẩu
< pattern >: các kí tự bạn đã biết chắc
< path file >: đường dẫn file được tạo
Hình III-2: Công cụ Nmap
Nmap, hay còn gọi là Network Mapper, là một công cụ bảo mật mã nguồn mở và miễn phí, được phát triển bởi Floydor Vaskovitch Công cụ này được các chuyên gia quản trị mạng sử dụng để quét cổng và phát hiện lỗ hổng bảo mật, giúp xác định thiết bị đang hoạt động trên hệ thống, tìm kiếm máy chủ có sẵn và các dịch vụ mà chúng cung cấp, cũng như dò tìm các cổng mở và phát hiện các nguy cơ về bảo mật.
Nmap là công cụ mạnh mẽ cho phép giám sát không chỉ các máy chủ đơn lẻ mà còn cả các cụm mạng lớn với hàng trăm nghìn thiết bị và nhiều mạng con khác nhau.
Mặc dù Nmap đã trải qua nhiều năm phát triển và cải tiến, nó vẫn giữ nguyên chức năng chính là công cụ rà quét cổng, thu thập thông tin bằng cách gửi các gói dữ liệu đến các cổng hệ thống Nmap lắng nghe và phân tích phản hồi để xác định trạng thái của các cổng, bao gồm mở, đóng hoặc bị lọc bởi tường lửa Các thuật ngữ khác liên quan đến hoạt động này bao gồm dò tìm cổng và liệt kê cổng.
Nmap nổi bật với khả năng tương thích trên nhiều hệ điều hành khác nhau, bao gồm Windows, macOS và các bản phân phối Linux như Red Hat, Mandrake, SUSE và Fedora.
Ngoài chức năng cơ bản Nmap là quét cổng, nó cũng cung cấp cho người dùng một loạt các tính năng liên quan bao gồm:
Lập bản đồ mạng với Nmap cho phép xác định các thiết bị hoạt động trên mạng, như máy chủ và bộ định tuyến, đồng thời hiển thị cách chúng kết nối vật lý với nhau.
- Phát hiện hệ điều hành (OS detection): Nmap có thể xác định được các hệ điều hành của các thiết bị đang chạy trên mạng (còn gọi là OS
Fingerprinting cung cấp thông tin chi tiết về nhà cung cấp, hệ điều hành cơ sở, phiên bản phần mềm và ước tính thời gian hoạt động của thiết bị.
Nmap không chỉ giúp xác định các máy chủ đang hoạt động trên mạng mà còn phát hiện các loại dịch vụ mà chúng cung cấp, như máy chủ mail, web hoặc tên miền Ngoài ra, Nmap còn cho phép nhận diện các ứng dụng và phiên bản cụ thể của phần mềm mà các máy chủ này đang chạy.
Nmap là công cụ hữu ích trong việc kiểm tra bảo mật, cho phép xác định phiên bản hệ điều hành và ứng dụng đang chạy trên các máy chủ mạng Điều này giúp các nhà quản trị mạng phát hiện những điểm yếu và lỗ hổng bảo mật cụ thể, từ đó nâng cao khả năng bảo vệ hệ thống.
- Các options của công cụ Nmap:
Hình III-3: Các option của công cụ Nmap
Nmap hỗ trợ các kĩ thuật quét như sau:
- TCP SYN (half open) scanning
- Xmas hay NULL (stealth) scanning
- TCP ftp proxy (bounce attack) scanning
- SYN/FIN scanning thông qua IP (bypass một số bộ loc)
- TCP ACK và Window scanning
- UDP raw ICMP port unreachable scanning
- Direct (non portmapper) RPC scanning
- Nhận diện hệ điều hành bằng TCP/IP Fingerprinting
DIRB là một công cụ quét nội dung web hiệu quả, giúp phát hiện các Đối tượng Web hiện có hoặc ẩn Công cụ này hoạt động bằng cách thực hiện một cuộc tấn công dựa trên từ điển vào máy chủ web và phân tích các phản hồi nhận được.
DIRB đi kèm với danh sách từ tấn công đã được cấu hình sẵn, giúp người dùng dễ dàng sử dụng, nhưng cũng cho phép tùy chỉnh danh sách từ theo nhu cầu Bên cạnh đó, DIRB có thể hoạt động như một máy quét CGI cổ điển, tuy nhiên, cần lưu ý rằng nó không phải là một công cụ quét lỗ hổng mà chỉ là một máy quét nội dung.
DIRB là công cụ chuyên dụng để kiểm tra ứng dụng web, đặc biệt tập trung vào các vấn đề bảo mật Nó giúp phát hiện những lỗ hổng mà các máy quét web truyền thống thường bỏ sót DIRB tìm kiếm các đối tượng web cụ thể mà các công cụ CGI thông thường không thể tiếp cận Tuy nhiên, DIRB không nhằm mục đích phát hiện lỗ hổng bảo mật hay nội dung web có thể chứa lỗ hổng.
Hình III-4: Các option của công cụ dirb
Demo
- Máy tấn công: Kali Linux
- Môi trường thử nghiệm: Cả hai đều chạy trên VMware Workstation Player và cài đặt mạng ở chế độ NAT
- Công cụ sử dụng: patator
- Kết quả mong muốn: Có được username và password của tài khoản admin
FTP (Giao thức truyền tải tập tin) là một phương thức trao đổi dữ liệu qua mạng sử dụng giao thức TCP/IP, thường hoạt động trên cổng 20 và 21 Giao thức này cho phép các máy client trong mạng truy cập và truyền tải dữ liệu đến máy chủ một cách hiệu quả.
FTP cho phép người dùng gửi và nhận dữ liệu từ xa thông qua máy chủ FTP Điều này giúp việc truyền tải thông tin trở nên thuận tiện và hiệu quả hơn, bất kể khoảng cách địa lý.
Tấn công Brute Force hoạt động bằng cách thử từng tổ hợp mật khẩu có thể có và kiểm tra xem nó có phải là mật khẩu chính xác hay không thông qua phản hồi từ máy chủ Để thực hiện phương pháp này, máy chủ cần mở cổng dịch vụ FTP và cần có một tập wordlist chứa tài khoản và mật khẩu.
Bước 1: Sử dụng lệnh lệnh : patator-h để hiện thị các module patator:
Hình III-5: Các module của patator
To perform a brute-force attack on an FTP server, use the command: `patator ftp_login host=192.168.253.130 user=FILE0 password=FILE1 0=user.txt 1=pass.txt -x ignore:mesg='Login incorrect.' -x ignore,reset,retry:code=0` This command utilizes the `ftp_login` module from Patator, specifying the target host and input files for usernames and passwords while ignoring specific error messages.
Hình III-6: Sử dụng module ftp_login
Hình III-7: Kết quả tìm được
The usernames and passwords obtained are as follows: trungnv253:trungnv253, trung2000:trung2000, msfadmin:msfadmin (admin user), trung253:trung253 (admin user), and trung00:trung00 (admin user) Additionally, Patator can be utilized to unzip files efficiently.
- Máy tấn công: Kali linux
- Môi trường thử nghiệm: Cả hai đều chạy trên VMware Workstation Player và cài đặt mạng ở chế độ NAT
- Công cụ sử dụng: patator, crunch
Chúng ta đã xâm nhập vào máy tính của nạn nhân và lấy được tài liệu mật đã được bảo vệ bằng mật khẩu Để giải mã, chúng ta sẽ sử dụng công cụ crunch để tạo ra danh sách từ điển, lựa chọn các tùy chọn phù hợp dựa trên thông tin thu thập từ mạng xã hội như Facebook, Zalo, Instagram và Google Qua đó, chúng ta sẽ thực hiện tấn công brute force vào file zip.
- Kết quả mong muốn: Mở được password file zip
ZIP là định dạng tệp lưu trữ hỗ trợ nén dữ liệu không mất dữ liệu, cho phép chứa nhiều tệp hoặc thư mục Để bảo vệ an toàn cho các tệp nén, người dùng có thể sử dụng phần mềm Winrar để đặt mật khẩu cho tệp Tuy nhiên, việc đặt mật khẩu không đảm bảo an toàn tuyệt đối, vì kẻ tấn công có thể sử dụng phương pháp tấn công brute force để dò tìm mật khẩu.
Bước 1: Tạo ra 1 wordlist từ crunch
Hình III-8: Tạo wordlist bằng công cụ crunch
Bước 2: Sử dụng module unzip_pass “Bruteforce file zip” bằng câu lệnh: patator unzip_pass zipfile=pass_nen.zip password=FILE0 0=pw.txt -x ignore:code!=0
Hình III-9: Sử dụng module unzip_pass và kết quả thu được
Kết quả ta đã tìm ra password của file zip là: 0trung
Trong bài viết này, tôi sẽ khám phá các lỗ hổng cho phép thu thập username và password từ trang Vulnhub Vulnhub là một nền tảng cung cấp các máy ảo chứa sẵn lỗ hổng bảo mật, và nhiệm vụ của chúng ta là khai thác những lỗ hổng này Tôi sẽ tập trung vào máy ảo mang tên “Seppuku”.
Trong Lab Seppuku, chúng ta được cung cấp một file OVA để mở bằng VMware, nhưng không có nhiều thông tin khác ngoài việc máy ảo sử dụng hệ điều hành Linux Nhiệm vụ của chúng ta là tìm ra username và password Việc kiểm thử máy ảo này tương tự như thực hiện một cuộc kiểm thử Black Box, khi mà chúng ta không có thông tin hay cài đặt nào về mục tiêu.
- Máy tấn công: Kali linux Địa chỉ IP: 192.168.253.132
- Môi trường thử nghiệm: Cả hai đều chạy trên VMware Workstation Pro và cài đặt mạng ở chế độ NAT
- Công cụ sử dụng: patator, nmap, dirb
- Kịch bản: Kiểm thử Black Box, chúng ta không có nhiều thông tin về máy nạn nhân, chỉ biết được mục tiêu là phải lấy được username, password
Để kiểm tra địa chỉ IP của máy nạn nhân trong môi trường mạng NAT, bạn có thể sử dụng lệnh nmap với chế độ host discovery Cụ thể, hãy chạy lệnh: nmap –sn 192.168.253.0/24 Kết quả sẽ cho thấy địa chỉ IP của máy nạn nhân là 192.168.253.152.
Hình III-11: Kết quả rà quét Nmap
Bước 2: Kiểm tra các dịch vụ và hệ điều hành trên máy nạn nhân: nmap -p- 192.168.253.152
Hình III-12: Kết quả rà quét Nmap (2)
Kết quả cho thấy máy nạn nhân đang chạy SSH ở cổng 22, Web service ở cổng
Cổng 80 và 8088 đang được sử dụng cho dịch vụ web, với cổng 80 yêu cầu đăng nhập qua một cửa sổ pop-up Ngoài ra, cổng 7601 cũng đang hoạt động nhưng chưa rõ dịch vụ cụ thể.
7601 thì đều thu được giao diện giống nhau Chứng tỏ tại cổng 7601 cũng đang chạy web service
Hình III-13: Web service tại cổng 80
Hình III-14: Web service tại cổng 8088
Hình III-15: Web service tại cổng 7601
Bước 3: Thu thập thông tin từ các web service trên cổng 80, 8088 và 7601
Sử dụng dirb để quét các đường dẫn trên các trang web tại cổng 80, 8088 và 7601, chỉ có trang web ở cổng 7601 cung cấp một số thông tin hữu ích.
Hình III-16: Một vài đường dẫn khả nghi
Khi truy cập đường dẫn /keys/, chúng ta thấy một thư mục chứa hai tệp tin là private và private.bak Mở tệp tin private, có vẻ như đây là khóa riêng RSA cho một phiên SSH.
Hình III-17: Đường dẫn /keys/
In the directory /secret/, there are two files: hostname and password.lst The hostname file contains the word "seppuku," while the password.lst file is a dictionary of various passwords.
Hình III-19: Đường dẫn /secret/
Hình III-20: Nội dung trong file hostname
Hình III-21: Nội dung trong file password.lst Đến đây, chúng ta đã có được 1 file RSA Private key, 1 wordlist password và hostname là “seppuku”
Chúng tôi dự đoán rằng trong danh sách mật khẩu này có một mật khẩu tương ứng với hostname đã đề cập ở trên Do máy nạn nhân mở cổng SSH, chúng tôi sẽ sử dụng công cụ Patator để thực hiện tấn công brute force nhằm tìm ra mật khẩu.
Bước 4: Dùng patator để brute force
Ta sử dụng lệnh: patator –h để xem danh các module:
Hình III-22: Các module patator
Ta sử dụng module: ssh_login bằng câu lệnh: patator ssh_login host2.168.253.152 user=seppuku password=FILE0 0=pwlist -x ignore:mesg='Authentication failed.'
Hình III-23: Sử dụng module ssh_login và tìm được kết quả
Ta đã tìm được username và password lần lượt là : seppuku: eeyoree
Bước 5: SSH vào máy nạn nhân với password thu được ở bước trên
Với password thu được sau khi brute force, chúng ta tiến hành SSH vào máy nạn nhân:
Hình III-24: Login thành công vào seppuku