-
27/04/2017
-
30
-
76 bài viết
Hướng dẫn thu thập thông tin trước khi thực hiện pentest cho newbie (phần cuối)
Chào các bạn lại là mình đây,
Trong phần 1 của series, mình đã giới thiệu với bạn những công cụ để có thể thu thập thông tin của mục tiêu bằng cách gián tiếp. Trong phần hôm nay chúng ta tiếp tục tìm hiểu thêm các phương thức cũng như các công cụ để hỗ trợ cho việc thu thập thông trực tiếp tin trong quá trình kiểm thử nhé.
Cũng như phần trước, chúng ta sẽ lần lượt đi theo các chỉ mục sau:
Thu thập thông tin trực tiếp là quá trình tác động trực tiếp vào mục tiêu kiểm thử để lấy được những thông tin cần thiết như: cổng dịch vụ được mở, các dịch vụ đang chạy... Từ đó, chúng ta sẽ bước đầu tiếp cận mục tiêu để bắt đầu khai thác lỗ hổng.
Các công cụ hỗ trợ việc khai thác thông tin trực tiếp
Ở bài viết này mình sẽ đi ngược với bài trước, đó là tùy theo yêu cầu thực tế trong quá trình kiểm thử mà chúng ta có thể dùng các tool cho hợp lý. Trong trường hợp thiếu những công cụ nào hỗ trợ thì bạn cho mình biết với nhé.
Thu thập thông tin Domain Name System (DNS)
DNS là một trong những hệ thống quan trọng nhất trong internet. Nó là một cơ sở dữ liệu phân tán, làm nhiệm vụ chuyển đổi tên miền thành địa chỉ IP tương ứng.
Mỗi tên miền sẽ cung cấp các bản ghi DNS khác nhau như:
Dưới đây là một vài ví dụ:
Trong trường hợp bạn có list subdomain của mục tiêu thì bạn có thể dụng script dưới đây. Đầu tiên, chuẩn bị 1 danh sách tên của các subdomain như sau:
Script nhỏ để có thể check được nhiều subdomain cùng lúc. Bạn có thể dùng cmd dưới đây chạy trực tiếp trên terminal.
Qua đó bạn có thể thu thập được các IP của subdomain của mục tiêu.
Đặc biệt hơn nữa, khi mà một tổ chức nào đó cấu hình sai nghiêm trọng tới mức họ không tách các vùng DNS nội bộ và dùng tên DNS bên ngoài thành các tên riêng biệt hay là không liên quan tới zone của nó. Thì vô tình nó cho phép ta lấy được toàn bộ thông tin của cấu trúc mạng từ nội bộ cho đến bên ngoài.
Để có thể lấy thông tin thì ta dùng lệnh sau:
Nếu như bạn có câu hỏi là làm sao lấy được dns name server thì có thể dùng câu lệnh này:
Nếu như bạn lười không muốn tốn thời gian cho những câu lệnh manual thì có thể dùng các công cụ có sẵn trên kali như DNSRecon, DNSenum,…
Đến đây thì ta có thể đã có những IP hay tên miền của mục tiêu. Tiếp theo, để có thể biết được trên mục tiêu hiện đang dùng các dịch vụ thì cách duy nhất đó là scanning port.
Scanning Port
Để có thể biết được mục tiêu đang mở cổng nào thì mình công dưới đây thì rất nổi tiếng cho việc này đó là nmap.
Mình chỉ giới thiệu những command thông dụng mình hay dùng. Còn nếu như bạn có dùng với những mục đích thì có thể đọc tài liệu tại đây.
Stealth / SYN scanning.
SYN scanning là scan các cổng TCP. Công việc của nó là gửi đi gói SYN tới các cổng trên mục tiêu mà không cần hoàn thành việc TCP handshake. Nếu như cổng mở, SYN-ACK sẽ được gửi trở lại từ máy mục tiêu, điều đó thông báo ràng cổng đó có mở hay không.
Dùng để scan các cổng UDP.
Câu lệnh để kiểm tra top 20 cổng thông dụng trên mục tiêu
Câu lệnh để kiểm tra là mục tiêu đang dùng hệ điều hành gì.
Hoặc hiển thị các thông tin banner của các dịch vụ được dùng.
Ngoài ra, nmap cũng cho phép bạn scan với script để check các dịch vụ đang dùng có các lỗ hổng nào trước đó hay không. Còn nếu bạn có muốn thực hiện toàn bộ các scan trên thì sao? Liệu nmap có đáp ứng hay không? Câu trả lời là có nhé. Để tránh mất thời gian thì bạn có thể tham khảo câu lệnh của mình hay dùng tại đây (lưu ý câu lệnh này tốn thời gian nhiều hơn so với các câu lệnh trên).
Ngoài việc hỗ trợ kiểm tra các cổng được mở thì tùy thuộc vào loại dịch vụ, Nmap cũng hỗ trợ các tính năng cụ thể tương ứng với các dịch vụ đó như SMB, FTP, SMTP,…
Để có thể những lựa chọn về công cụ hỗ trợ nhiều hơn thì mình giới thiệu một trang mình hay dùng để tham khảo.
Nếu như bạn biết trang nào hay, hoặc muốn giới thiệu trang của mình thì bạn hãy chia sẻ ở đây cho mọi người cùng biết và cùng nhau học tập nhé.
Vậy là các bạn đã thu thập được kha khá thông tin để bắt đầu khai thác lỗ hổng rồi đó. Hãy bắt đầu hành nghề pentest thôi !
Cảm ơn bạn đã đọc bài!!!
Trong phần 1 của series, mình đã giới thiệu với bạn những công cụ để có thể thu thập thông tin của mục tiêu bằng cách gián tiếp. Trong phần hôm nay chúng ta tiếp tục tìm hiểu thêm các phương thức cũng như các công cụ để hỗ trợ cho việc thu thập thông trực tiếp tin trong quá trình kiểm thử nhé.
Cũng như phần trước, chúng ta sẽ lần lượt đi theo các chỉ mục sau:
- Định nghĩa về thu thập thông tin trực tiếp
- Giới thiệu về các công cụ và cách lấy thông tin qua những công cụ phổ biến.
Thu thập thông tin trực tiếp là quá trình tác động trực tiếp vào mục tiêu kiểm thử để lấy được những thông tin cần thiết như: cổng dịch vụ được mở, các dịch vụ đang chạy... Từ đó, chúng ta sẽ bước đầu tiếp cận mục tiêu để bắt đầu khai thác lỗ hổng.
Các công cụ hỗ trợ việc khai thác thông tin trực tiếp
Ở bài viết này mình sẽ đi ngược với bài trước, đó là tùy theo yêu cầu thực tế trong quá trình kiểm thử mà chúng ta có thể dùng các tool cho hợp lý. Trong trường hợp thiếu những công cụ nào hỗ trợ thì bạn cho mình biết với nhé.
Thu thập thông tin Domain Name System (DNS)
DNS là một trong những hệ thống quan trọng nhất trong internet. Nó là một cơ sở dữ liệu phân tán, làm nhiệm vụ chuyển đổi tên miền thành địa chỉ IP tương ứng.
Mỗi tên miền sẽ cung cấp các bản ghi DNS khác nhau như:
- NS (Nameserver records): Chứa tên của máy chủ lưu trữ bản ghi DNS cho một tên miền.
- A: bản ghi này chứa địa chỉ IP của tên miền nào đó.
- MX – Mail Exchange chứa tên của máy chủ chịu trách nhiệm điều khiển email cho tên miền.
- PTR – Pointer records được dùng trong reverse lookup zones (vùng tra cứu DNS ngược) và dùng để tìm các bản ghi có liên quan với địa chỉ IP.
- CNAME – Caconical Name records được sử dụng để tạo bí danh cho các bản ghi máy chủ lưu trữ khác
- TXT – Text records dùng để chứa bất kì dữ liệu hoặc là dùng cho nhiều mục đích khác nhau như là xác minh quyền sở hữu tên miền.
Dưới đây là một vài ví dụ:
Trong trường hợp bạn có list subdomain của mục tiêu thì bạn có thể dụng script dưới đây. Đầu tiên, chuẩn bị 1 danh sách tên của các subdomain như sau:
Script nhỏ để có thể check được nhiều subdomain cùng lúc. Bạn có thể dùng cmd dưới đây chạy trực tiếp trên terminal.
Mã:
For ip in $(cat list.txt); do host $ip.whitehat.vn; done
Qua đó bạn có thể thu thập được các IP của subdomain của mục tiêu.
Đặc biệt hơn nữa, khi mà một tổ chức nào đó cấu hình sai nghiêm trọng tới mức họ không tách các vùng DNS nội bộ và dùng tên DNS bên ngoài thành các tên riêng biệt hay là không liên quan tới zone của nó. Thì vô tình nó cho phép ta lấy được toàn bộ thông tin của cấu trúc mạng từ nội bộ cho đến bên ngoài.
Để có thể lấy thông tin thì ta dùng lệnh sau:
Mã:
Host –l domain_name dns_server_address
Nếu như bạn có câu hỏi là làm sao lấy được dns name server thì có thể dùng câu lệnh này:
Mã:
Dig ns whitehat.vn
# using host
host -t ns whitehat.vn
Nếu như bạn lười không muốn tốn thời gian cho những câu lệnh manual thì có thể dùng các công cụ có sẵn trên kali như DNSRecon, DNSenum,…
Đến đây thì ta có thể đã có những IP hay tên miền của mục tiêu. Tiếp theo, để có thể biết được trên mục tiêu hiện đang dùng các dịch vụ thì cách duy nhất đó là scanning port.
Scanning Port
Để có thể biết được mục tiêu đang mở cổng nào thì mình công dưới đây thì rất nổi tiếng cho việc này đó là nmap.
Mình chỉ giới thiệu những command thông dụng mình hay dùng. Còn nếu như bạn có dùng với những mục đích thì có thể đọc tài liệu tại đây.
Stealth / SYN scanning.
SYN scanning là scan các cổng TCP. Công việc của nó là gửi đi gói SYN tới các cổng trên mục tiêu mà không cần hoàn thành việc TCP handshake. Nếu như cổng mở, SYN-ACK sẽ được gửi trở lại từ máy mục tiêu, điều đó thông báo ràng cổng đó có mở hay không.
Mã:
nmap –sS IP
Dùng để scan các cổng UDP.
Mã:
nmap –sU IP
Câu lệnh để kiểm tra top 20 cổng thông dụng trên mục tiêu
Mã:
nmap –sT –A –top-ports=20 IP
Câu lệnh để kiểm tra là mục tiêu đang dùng hệ điều hành gì.
Mã:
nmap –O IP
Hoặc hiển thị các thông tin banner của các dịch vụ được dùng.
Mã:
nmap –sV –sT –A IP
Ngoài ra, nmap cũng cho phép bạn scan với script để check các dịch vụ đang dùng có các lỗ hổng nào trước đó hay không. Còn nếu bạn có muốn thực hiện toàn bộ các scan trên thì sao? Liệu nmap có đáp ứng hay không? Câu trả lời là có nhé. Để tránh mất thời gian thì bạn có thể tham khảo câu lệnh của mình hay dùng tại đây (lưu ý câu lệnh này tốn thời gian nhiều hơn so với các câu lệnh trên).
Mã:
nmap -v -sT -A -T4 -p- -Pn --script vuln -oA full IP
Ngoài việc hỗ trợ kiểm tra các cổng được mở thì tùy thuộc vào loại dịch vụ, Nmap cũng hỗ trợ các tính năng cụ thể tương ứng với các dịch vụ đó như SMB, FTP, SMTP,…
Để có thể những lựa chọn về công cụ hỗ trợ nhiều hơn thì mình giới thiệu một trang mình hay dùng để tham khảo.
Nếu như bạn biết trang nào hay, hoặc muốn giới thiệu trang của mình thì bạn hãy chia sẻ ở đây cho mọi người cùng biết và cùng nhau học tập nhé.
Vậy là các bạn đã thu thập được kha khá thông tin để bắt đầu khai thác lỗ hổng rồi đó. Hãy bắt đầu hành nghề pentest thôi !
Cảm ơn bạn đã đọc bài!!!
Happy hacking!!!
Chỉnh sửa lần cuối bởi người điều hành: