-
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 1)
Việc thu thập thông tin trước khi bắt tay vào thực hiện các bước pentest một hệ thống hay một website là hết sức quan trọng. Nó có thể giúp cho chúng ta biết rõ hơn về hệ thống hay web/app mà mình muốn kiểm thử xâm nhập. Vì vậy, hôm nay mình sẽ viết một bài tổng hợp về các tool cũng như các cách để thu thập thông tin một đối tượng trước khi thực hiện pentest.
Vậy tại sao phải thực hiện thu thập thông tin và nó có cần thiết hay không?
Việc thu thập thông tin là cực kì cần thiết và là bước đầu tiên trong quá trình thực hiện pentest. Nếu như bạn thu thập được nhiều thông tin với mục tiêu, thì khả năng bạn có thể tìm được nhiều lỗ hổng hơn hoặc có thể giúp bạn khai thác sâu hơn những lỗ hổng mà bạn tìm được trên mục tiêu. Nó cũng có thể giúp bạn xác định được những outdated module với những lỗ hổng biết trước đó hoặc là có thể dùng để tìm kiếm trên exploit-db.com cho việc chứng minh lỗ hổng. Vậy nên mới có câu “Biết địch biết ta, trăm trận trăm thắng”.
Thu thập thông tin được chia thành 2 loại. Đó là thu thập thông tin trực tiếp và thu thập thông tin gián tiếp. Trong bài viết này mình sẽ tập trung viết về thu thập thông tin gián tiếp trước nhé.
Chúng ta sẽ đi tìm hiểu từng phần như sau:
Thu thập thông tin gián tiếp là gì?
Thu thập thông tin gián tiếp (OSINT) là quá trình thu thập thông tin mà không tương tác trực tiếp với mục tiêu và lấy thông tin thông qua các search engine hoặc mạng xã hội.
Có thể trong quá trình thu thập sẽ có rất nhiều thông tin quan trọng giúp bạn dễ dàng tìm kiếm và dùng nó cho những cách tấn công cần thiết. Nên việc ghi nhớ lại những thông tin điều tra được là hết sức cần thiết và quan trọng.
Các công cụ hỗ trợ việc khai thác thông tin gián tiếp.
Nếu như mục tiêu của bạn là một website, thì chúng ta có thể đơn giản thu thập thông tin cơ bản bằng việc load web lên browser. Sau đó cố gắng thu thập những thông tin như:
Ở đây cho thấy là họ đang dùng server nginx.
Vào thành viên https://whitehat.vn/members/ thì có thể biết được tất cả các username...
Whois enumeration
Whois là một dịch vụ TCP, công cụ và một loại database mà có thể cung cấp thông tin của một domain name như là tên của server và nơi đăng ký.
Chúng ta có thể thu thập thông tin như sau:
Dùng whois trong kali và tìm kiếm tất cả các domain nào mình mong muốn.
Qua đó mình có thể biết được những thông tin như: người đăng ký domain, name server là gì. Hoặc chúng ta có thể dùng nó với ip nào mình mong muốn.
thông tin trên mình biết được hiện tại domain leiz95.com đang dùng nằm trong name server của github.
Google Hacking
Google hacking (hay còn gọi là google dorks) là một kỹ thuật hết sức tuyệt vời để mình có thể thu thập thông tin nhiều nhất có thể. Bởi vì google là nơi chứa hầu như toàn bộ thông tin trên toàn thế giới.
Để có thể tận dụng được sức mạnh của google hacking, bạn có thể đọc thêm cuốn sách “Google hacking for penetration testers”. Dưới đây mình có tổng hợp những lệnh mình hay dùng khi tìm kiếm thông tin trên google.
Ngoài ra thì các bạn có thể tham khảo ở đây để cập nhật hằng ngày: https://www.exploit-db.com/google-hacking-database
Recon-ng
Recon-ng là một framework được dùng để thu thập thông tin web-based. Nó cho phép hiện dữ liệu tìm kiếm trực tiếp trên terminal. Recon-ng càng mạnh mẽ hơn với việc tích hợp những module với nhau khiến cho việc tìm kiếm thông tin dễ dàng mở rộng hơn.
Để tìm hiểu cách dùng cụ thể thì bạn có thể vào đây tham khảo:
https://null-byte.wonderhowto.com/h...with-recon-ng-part-1-getting-started-0169854/
Ngoài ra còn có những cmd hay dùng như:
Tiếp theo là một trong những nguồn rất thú vị để thu thập thông tin. Đó là các dự án mã nguồn mở và code repositories như Github, Gitlab, SourcForge... Với những thông tin trên các mã nguồn này thì chúng ta có thể dễ dàng biết được ngôn ngữ và framework được dùng bởi tổ chức nào đó. Thông qua các repository thì có thể chứa những thông tin nhạy cảm như username và password, api key…
Đối với những repository với lượng code nhỏ, thì chúng ta có thể dễ dàng manual nhưng đối với những repo lớn thì sao? Bạn đừng lo. Mã nguồn mở cũng cung cấp cho chúng ta công cụ hỗ trợ cho việc automate tìm kiếm như là gitrob và gitleaks
Shodan
Shodan là một công cụ tìm kiếm thông tin không giới hạn bao gồm các máy chủ chạy trên các website, các thiết bị như bộ định tuyến hoặc các thiết bị IoT. Tuy nhiên, để tìm kiếm bạn cần phải có 1 tài khoản.
Để thuận lợi cho việc dùng shodan và tìm kiếm, ở đây mình có checklist những từ khóa hay dùng trên shodan
Hoặc tham khảo nhiều hơn ở đây: https://github.com/lothos612/shodan
Pastebin
Pastebin là một website được dùng để lưu trữ và chia sẻ file dưới dạng text. Website không yêu cầu tài khoản để thực hiện lưu trữ hay chia sẻ. Rất nhiều người dùng Pastebin vì nó phổ biến và đơn giản để dùng. Đặc biệt hơn, Pastebin là công khai. Chúng ta có thể lợi dụng nó để tìm kiếm những thông tin nhạy cảm như là user và password thậm chí là các private key.
Theharvester
Tiếp theo là một công cụ có thể giúp bạn dễ dàng thu thập các email và thông tin cá nhân của mục tiêu - Theharvester
Việc sử dụng Theharverter cho phép chúng ta khai thác email, tên, subdomains, ips, và cái URL từ nhiều nguồn công khai khác nhau.
OSINT framework
Ngoài ra thì còn có những framework có thể giúp chúng ta thu thập thông tin gián tiếp như OSINT framework
Osint framework tập trung vào việc thu thập thông tin từ các công cụ hoặc tài nguyên miễn phí. Mục đích là giúp mọi người tìm thấy các tài nguyên OSINT không giớ hạn. Nhưng một số trang web có thể yêu cầu đăng ký hoặc cung cấp thêm dữ liệu với giá, nhưng bạn sẽ có thể nhận được ít nhất một phần thông tin có sẵn miễn phí.
Maltego
Maltego là công cụ khai thác dữ liệu rất mạnh mẽ cung cấp sự kết hợp vô tận của các công cụ và chiến lược tìm kiếm.
Maltego cho phép tìm kiếm hàng nghìn nguồn dữ liệu trực tuyến và sử dụng các phép biến đổi cực kỳ linh hoạt để chuyển đổi một phần thông tin này thành một phần thông tin khác.
Ví dụ:
Nếu như thu thập thông tin người dùng, chúng ta có thể nhập địa chỉ email của người dùng, thì thông qua các tìm kiếm tự động khác nhau, hay chuyển đổi trong quá trình tìm kiếm. Maltego có thể tìm ra được số điện thoại hoặc địa chỉ được liên kết với email.
Đặc biệt hơn là sau khi tìm kiếm thì thông tin thu thập được sẽ được trình bày trong một biểu đồ mà nó cho phép điều hướng thu phóng và di chuyển 1 cách dễ dàng.
Trên đó là tất cả các tool cho phép attacker có thể dùng để khai thác thông tin mục tiêu 1 cách gián tiếp. Nếu bạn biết thêm về tool hay open source nào thì có thể đóng góp ở đây. Mình sẽ update bài viết thường xuyên.
Cảm ơn bạn đã đọc và hẹn gặp lại bạn ở phần tiếp theo là thu thập thông tin trực tiếp.
Vậy tại sao phải thực hiện thu thập thông tin và nó có cần thiết hay không?
Thu thập thông tin được chia thành 2 loại. Đó là thu thập thông tin trực tiếp và thu thập thông tin gián tiếp. Trong bài viết này mình sẽ tập trung viết về thu thập thông tin gián tiếp trước nhé.
Chúng ta sẽ đi tìm hiểu từng phần như sau:
- Định nghĩa về thu thập thông tin gián tiếp.
- Giới thiệu các công cụ hỗ trợ và cách lấy thông tin qua những công cụ đó.
Thu thập thông tin gián tiếp là gì?
Thu thập thông tin gián tiếp (OSINT) là quá trình thu thập thông tin mà không tương tác trực tiếp với mục tiêu và lấy thông tin thông qua các search engine hoặc mạng xã hội.
Có thể trong quá trình thu thập sẽ có rất nhiều thông tin quan trọng giúp bạn dễ dàng tìm kiếm và dùng nó cho những cách tấn công cần thiết. Nên việc ghi nhớ lại những thông tin điều tra được là hết sức cần thiết và quan trọng.
Các công cụ hỗ trợ việc khai thác thông tin gián tiếp.
Nếu như mục tiêu của bạn là một website, thì chúng ta có thể đơn giản thu thập thông tin cơ bản bằng việc load web lên browser. Sau đó cố gắng thu thập những thông tin như:
- Công nghệ họ đang dùng là gì?
- Web server là gì và version mấy?
- Các file js có gì đặc biệt không?
- Có những subdomain nào?
- Thu thập các thông tin khác như mail user, thông tin social username… thì mình sẽ nói kỹ hơn trong phần thu thập thông tin người dùng gián tiếp.
Ở đây cho thấy là họ đang dùng server nginx.
Vào thành viên https://whitehat.vn/members/ thì có thể biết được tất cả các username...
Whois enumeration
Whois là một dịch vụ TCP, công cụ và một loại database mà có thể cung cấp thông tin của một domain name như là tên của server và nơi đăng ký.
Chúng ta có thể thu thập thông tin như sau:
Dùng whois trong kali và tìm kiếm tất cả các domain nào mình mong muốn.
Qua đó mình có thể biết được những thông tin như: người đăng ký domain, name server là gì. Hoặc chúng ta có thể dùng nó với ip nào mình mong muốn.
thông tin trên mình biết được hiện tại domain leiz95.com đang dùng nằm trong name server của github.
Google Hacking
Google hacking (hay còn gọi là google dorks) là một kỹ thuật hết sức tuyệt vời để mình có thể thu thập thông tin nhiều nhất có thể. Bởi vì google là nơi chứa hầu như toàn bộ thông tin trên toàn thế giới.
Để có thể tận dụng được sức mạnh của google hacking, bạn có thể đọc thêm cuốn sách “Google hacking for penetration testers”. Dưới đây mình có tổng hợp những lệnh mình hay dùng khi tìm kiếm thông tin trên google.
Ngoài ra thì các bạn có thể tham khảo ở đây để cập nhật hằng ngày: https://www.exploit-db.com/google-hacking-database
Recon-ng
Recon-ng là một framework được dùng để thu thập thông tin web-based. Nó cho phép hiện dữ liệu tìm kiếm trực tiếp trên terminal. Recon-ng càng mạnh mẽ hơn với việc tích hợp những module với nhau khiến cho việc tìm kiếm thông tin dễ dàng mở rộng hơn.
Để tìm hiểu cách dùng cụ thể thì bạn có thể vào đây tham khảo:
https://null-byte.wonderhowto.com/h...with-recon-ng-part-1-getting-started-0169854/
Ngoài ra còn có những cmd hay dùng như:
- Marketplace search
- Marketplace info
- Marketplace install
Tiếp theo là một trong những nguồn rất thú vị để thu thập thông tin. Đó là các dự án mã nguồn mở và code repositories như Github, Gitlab, SourcForge... Với những thông tin trên các mã nguồn này thì chúng ta có thể dễ dàng biết được ngôn ngữ và framework được dùng bởi tổ chức nào đó. Thông qua các repository thì có thể chứa những thông tin nhạy cảm như username và password, api key…
Đối với những repository với lượng code nhỏ, thì chúng ta có thể dễ dàng manual nhưng đối với những repo lớn thì sao? Bạn đừng lo. Mã nguồn mở cũng cung cấp cho chúng ta công cụ hỗ trợ cho việc automate tìm kiếm như là gitrob và gitleaks
Shodan
Shodan là một công cụ tìm kiếm thông tin không giới hạn bao gồm các máy chủ chạy trên các website, các thiết bị như bộ định tuyến hoặc các thiết bị IoT. Tuy nhiên, để tìm kiếm bạn cần phải có 1 tài khoản.
Để thuận lợi cho việc dùng shodan và tìm kiếm, ở đây mình có checklist những từ khóa hay dùng trên shodan
Hoặc tham khảo nhiều hơn ở đây: https://github.com/lothos612/shodan
Pastebin
Pastebin là một website được dùng để lưu trữ và chia sẻ file dưới dạng text. Website không yêu cầu tài khoản để thực hiện lưu trữ hay chia sẻ. Rất nhiều người dùng Pastebin vì nó phổ biến và đơn giản để dùng. Đặc biệt hơn, Pastebin là công khai. Chúng ta có thể lợi dụng nó để tìm kiếm những thông tin nhạy cảm như là user và password thậm chí là các private key.
Theharvester
Tiếp theo là một công cụ có thể giúp bạn dễ dàng thu thập các email và thông tin cá nhân của mục tiêu - Theharvester
Việc sử dụng Theharverter cho phép chúng ta khai thác email, tên, subdomains, ips, và cái URL từ nhiều nguồn công khai khác nhau.
OSINT framework
Ngoài ra thì còn có những framework có thể giúp chúng ta thu thập thông tin gián tiếp như OSINT framework
Osint framework tập trung vào việc thu thập thông tin từ các công cụ hoặc tài nguyên miễn phí. Mục đích là giúp mọi người tìm thấy các tài nguyên OSINT không giớ hạn. Nhưng một số trang web có thể yêu cầu đăng ký hoặc cung cấp thêm dữ liệu với giá, nhưng bạn sẽ có thể nhận được ít nhất một phần thông tin có sẵn miễn phí.
Maltego
Maltego là công cụ khai thác dữ liệu rất mạnh mẽ cung cấp sự kết hợp vô tận của các công cụ và chiến lược tìm kiếm.
Maltego cho phép tìm kiếm hàng nghìn nguồn dữ liệu trực tuyến và sử dụng các phép biến đổi cực kỳ linh hoạt để chuyển đổi một phần thông tin này thành một phần thông tin khác.
Ví dụ:
Nếu như thu thập thông tin người dùng, chúng ta có thể nhập địa chỉ email của người dùng, thì thông qua các tìm kiếm tự động khác nhau, hay chuyển đổi trong quá trình tìm kiếm. Maltego có thể tìm ra được số điện thoại hoặc địa chỉ được liên kết với email.
Đặc biệt hơn là sau khi tìm kiếm thì thông tin thu thập được sẽ được trình bày trong một biểu đồ mà nó cho phép điều hướng thu phóng và di chuyển 1 cách dễ dàng.
Trên đó là tất cả các tool cho phép attacker có thể dùng để khai thác thông tin mục tiêu 1 cách gián tiếp. Nếu bạn biết thêm về tool hay open source nào thì có thể đóng góp ở đây. Mình sẽ update bài viết thường xuyên.
Cảm ơn bạn đã đọc và hẹn gặp lại bạn ở phần tiếp theo là thu thập thông tin trực tiếp.
Chỉnh sửa lần cuối bởi người điều hành: