-
27/04/2017
-
30
-
76 bài viết
Hướng dẫn khai thác thông tin trên các dịch vụ trong quá trình pentest (Phần 1)
Hallo toàn thể anh em,
Quá trình pentest cần rất nhiều thông tin, hy vọng hai bài viết trước của mình: Hướng dẫn thu thập thông tin trước khi thực hiện pentest - Phần 1 và Phần 2 hữu ích với các bạn.
Nhưng đó mới chỉ là những bước đi đầu tiên, tiếp theo chúng ta sẽ phải tiếp cận sâu hơn vào mục tiêu cần pentest. Lúc này, công tác thu thập thông tin về các dịch vụ đang sử dụng trên mục tiêu và các công cụ hỗ trợ khai thác dịch vụ đó sẽ rất cần thiết.
Hãy cùng mình tìm hiểu tiếp nhé
Trong series này mình sẽ chỉ tập trung vào các dịch vụ được dùng phổ biến trong máy chủ hiện nay như FTP, SMTP, SMB, RPC, Mysql, SQL-Server... Xuyên suốt chuỗi bài viết, ta sẽ tập trung tìm hiểu theo cấu trúc như sau:
File Transfer Protocol (FTP) là gì?
Định nghĩa ngắn gọn, FTP là một giao thức mạng được dùng để truyền file từ server đến client thông qua mạng. FTP server có thể truy cập thông qua ftp command-line hoặc là một chương trình thứ 3 như là Filezila. Mặc định, dịch vụ FTP chạy trên cổng 21 của máy mục tiêu.
Với những cách dưới đây có thể giúp chúng ta tìm kiếm được những lỗ hổng hoặc FTP server bị cấu hình sai.
Xác định mục tiêu có đang sử dụng FTP hay không?
Sử dụng nmap để xác định xem FTP server có đang được chạy trên máy mục tiêu hay không thông qua lệnh:
Với kết quả như thế này thì mục tiêu đang chạy FTP trên cổng 21.
Để xác định version hiện tại đang được dùng trên đó. Sử dụng lệnh sau:
Vậy là chúng ta đã xác định được là mục tiêu đang dùng version vsFTPd 3.0.3.
Thông qua đó, ta có thể sử dụng searchsploit để kiểm tra xem bản đang dùng có những lỗ hổng bảo mật nào đã được biết tới hay không?
Trong trường hợp không tìm thấy khả năng tấn công vào những lỗ hổng đã biết, thì next thôi.
Sau khi chúng ta đã xác định được mục tiêu đang sử dụng FTP, bước tiếp theo chúng ta sẽ triển khai thu thập nhiều hơn. Ở đây mình chia ra thành 2 loại đó là khái thác thủ công và tự động. Nếu các bạn là 1 người mới thì mình prefer chọn thủ công để có thể hiểu sâu hơn. Còn nếu bạn đã có kinh nghiệm và lười làm thủ công (như mình ), muốn có kết quả ngay thì hãy chọn ngay quá trình khai thác tự động. Còn chần chừ gì nữa, mình cùng tiếp tục tìm hiểu kỹ hơn nào!
Khai thác thủ công
Anonymous Authentication (Xác thực người dùng nặc danh)
Một điểm đặc biệt của FTP chính là cho phép remote user đăng nhập mà không cần phải có tài khoản trên đó.
Nếu như tính năng này được bật trên FTP server, người dùng có thể đăng nhập dưới dạng anonymous user với bất kì mật khẩu nào, ví dụ như:
Trong trường hợp bạn đã kết nối được ftp, đây là các command line thông dụng để download, upload, chỉnh sửa, xóa file trên FTP:
Brute forcing credentials
Với cách này, chúng ta có thể đoán username và mật khẩu để kết nối với FTP server. Để làm được điều này, chúng ta sử dụng công cụ Hydra (https://github.com/vanhauser-thc/thc-hydra).
Với credentials phía trên thì bạn có thể kết nối vào FTP server.
Nếu như bạn không muốn phải thực hiện các cách trên bằng tay, thì nmap cũng cung cấp các script để bạn tự động hóa quá trình này.
Khai thác tự động
Nmap script
Nmap scripting engine (NSE) cho phép người dùng có thể viết hoặc chia sẻ script đơn giản để tự động hóa các quá trình trên.
Nmap cung cấp các FTP script liên quan như:
Vậy là đã xong quá trình khai thác, chúng ta cùng chuyển sang bước tiếp theo nhé.
Thu thập File và Folders
Khi đã đăng nhập thành công, ta nên thực hiện các bước tiếp theo dưới đây:
Ví dụ, trường hợp FTP server có cấp quyền truy cập vào folder được dùng bởi web server, a malicous script có thể upload và thực thi từ browser. Sau đó, kẻ tấn công có thể chiếm quyền kiểm soát máy chủ.
Phòng chống nó như thế nào?
Như vậy là chúng ta đã đi qua tất cả các cách để thu thập thông tin từ FTP rồi. Vậy còn cách phòng chống những bước trên thì sao nhỉ? Đơn giản như đan rổ, các bạn chỉ cần tuân thủ các cách dưới đây:
Quá trình pentest cần rất nhiều thông tin, hy vọng hai bài viết trước của mình: Hướng dẫn thu thập thông tin trước khi thực hiện pentest - Phần 1 và Phần 2 hữu ích với các bạn.
Nhưng đó mới chỉ là những bước đi đầu tiên, tiếp theo chúng ta sẽ phải tiếp cận sâu hơn vào mục tiêu cần pentest. Lúc này, công tác thu thập thông tin về các dịch vụ đang sử dụng trên mục tiêu và các công cụ hỗ trợ khai thác dịch vụ đó sẽ rất cần thiết.
Hãy cùng mình tìm hiểu tiếp nhé
Trong series này mình sẽ chỉ tập trung vào các dịch vụ được dùng phổ biến trong máy chủ hiện nay như FTP, SMTP, SMB, RPC, Mysql, SQL-Server... Xuyên suốt chuỗi bài viết, ta sẽ tập trung tìm hiểu theo cấu trúc như sau:
- Định nghĩa về dịch vụ
- Các cách xác định và công cụ để thu thập thông tin
File Transfer Protocol (FTP) là gì?
Định nghĩa ngắn gọn, FTP là một giao thức mạng được dùng để truyền file từ server đến client thông qua mạng. FTP server có thể truy cập thông qua ftp command-line hoặc là một chương trình thứ 3 như là Filezila. Mặc định, dịch vụ FTP chạy trên cổng 21 của máy mục tiêu.
Với những cách dưới đây có thể giúp chúng ta tìm kiếm được những lỗ hổng hoặc FTP server bị cấu hình sai.
Xác định mục tiêu có đang sử dụng FTP hay không?
Sử dụng nmap để xác định xem FTP server có đang được chạy trên máy mục tiêu hay không thông qua lệnh:
Mã:
nmap –p 21 $IP
Với kết quả như thế này thì mục tiêu đang chạy FTP trên cổng 21.
Để xác định version hiện tại đang được dùng trên đó. Sử dụng lệnh sau:
Mã:
nc –nv $IP 21
Vậy là chúng ta đã xác định được là mục tiêu đang dùng version vsFTPd 3.0.3.
Thông qua đó, ta có thể sử dụng searchsploit để kiểm tra xem bản đang dùng có những lỗ hổng bảo mật nào đã được biết tới hay không?
Trong trường hợp không tìm thấy khả năng tấn công vào những lỗ hổng đã biết, thì next thôi.
Sau khi chúng ta đã xác định được mục tiêu đang sử dụng FTP, bước tiếp theo chúng ta sẽ triển khai thu thập nhiều hơn. Ở đây mình chia ra thành 2 loại đó là khái thác thủ công và tự động. Nếu các bạn là 1 người mới thì mình prefer chọn thủ công để có thể hiểu sâu hơn. Còn nếu bạn đã có kinh nghiệm và lười làm thủ công (như mình ), muốn có kết quả ngay thì hãy chọn ngay quá trình khai thác tự động. Còn chần chừ gì nữa, mình cùng tiếp tục tìm hiểu kỹ hơn nào!
Khai thác thủ công
Anonymous Authentication (Xác thực người dùng nặc danh)
Một điểm đặc biệt của FTP chính là cho phép remote user đăng nhập mà không cần phải có tài khoản trên đó.
Nếu như tính năng này được bật trên FTP server, người dùng có thể đăng nhập dưới dạng anonymous user với bất kì mật khẩu nào, ví dụ như:
Mã:
ftp $IP
# nhập username: anonymous
# nhập mật khẩu: anonymous hoặc để trống bằng cách nhấn enter
Trong trường hợp bạn đã kết nối được ftp, đây là các command line thông dụng để download, upload, chỉnh sửa, xóa file trên FTP:
Brute forcing credentials
Với cách này, chúng ta có thể đoán username và mật khẩu để kết nối với FTP server. Để làm được điều này, chúng ta sử dụng công cụ Hydra (https://github.com/vanhauser-thc/thc-hydra).
Mã:
hydra [-L users.txt or -l user_name] [-P pass.txt or -p password] -f [-S port] ftp://$IP
Với credentials phía trên thì bạn có thể kết nối vào FTP server.
Nếu như bạn không muốn phải thực hiện các cách trên bằng tay, thì nmap cũng cung cấp các script để bạn tự động hóa quá trình này.
Khai thác tự động
Nmap script
Nmap scripting engine (NSE) cho phép người dùng có thể viết hoặc chia sẻ script đơn giản để tự động hóa các quá trình trên.
Nmap cung cấp các FTP script liên quan như:
- Ftp-bounce - kiểm tra xem nếu FTP server cho phép scan port hay không
- Ftp-non - Kiểm tra nếu FTP server cho phép anonymous đăng nhập
- Ftp-brute - Thực hiện đoán mật khẩu để đăng nhập FTP server.
Mã:
nmap –p 21 –script [scriptname] $IP
Vậy là đã xong quá trình khai thác, chúng ta cùng chuyển sang bước tiếp theo nhé.
Thu thập File và Folders
Khi đã đăng nhập thành công, ta nên thực hiện các bước tiếp theo dưới đây:
- Kiểm tra thư mục hiện tại.
- Kiểm tra xem FTP có cấp quyền truy cập vào các thư mục đang được các dịch vụ khác sử dụng hay không
- Các tệp và thư mục mà người dùng hiện tại có quyền truy cập để đọc/ghi hay không.
Ví dụ, trường hợp FTP server có cấp quyền truy cập vào folder được dùng bởi web server, a malicous script có thể upload và thực thi từ browser. Sau đó, kẻ tấn công có thể chiếm quyền kiểm soát máy chủ.
Phòng chống nó như thế nào?
Như vậy là chúng ta đã đi qua tất cả các cách để thu thập thông tin từ FTP rồi. Vậy còn cách phòng chống những bước trên thì sao nhỉ? Đơn giản như đan rổ, các bạn chỉ cần tuân thủ các cách dưới đây:
- Nên tắt Anonymous authentication.
- Đặt mật khẩu mạnh để tránh brute forcing
- Luôn luôn cập nhật FP thường xuyên
Happy Hacking !!!
Chỉnh sửa lần cuối bởi người điều hành: