Penetration Testing Step 1.a – Những điều cơ bản phải biết về recon-ng và cách tung combo với modules command

Kết thúc nội dung Penetration Testing Step 1.a – Cẩm nang không thể thiếu cho Passive Information Gathering, do đu trend, tôi hơi xa đà vô đám Trusted Platfrom Module (và BitLocker). Kỳ này tôi sẽ quay lại chém gió tiếp với chủ đề Penetration Testing còn đang dang dở. Trong nội dung kỳ này, tôi sẽ tập trung vào một trong các công cụ thuộc nhóm “Swiss Army Knife” hỗ trợ Passive Information Gathering đó là recon-ng.

#1. Recon-ng để làm gì và mặt mũi nó ra sao?

Recon-ngmodule-based framework có giao diện tương tự Metasploit (móa, thế giao diện Metasploit ra sao?). Mục tiêu của framework này là để thu thập thông tin từ các web application, hỗ trợ các tác vụ sau trong quá trình Penetration Testing:

  • Tìm IP address của target;
  • Dò lỗi SQL injection;
  • Tìm file nhạy cảm như robots.txt;
  • Tìm thông tin liên quan Geo-IP lookup, Banner grabbing, DNS lookup, port scanning, sub-domain information, reverse IP với WHOIS lookup;
  • Dò thông tin Content Management System – CMS của target web application;
  • Scan IOT device với Shodan search engine.

Recon-ng có một đặc tính thú vị là nó ngoài hiển thị kết quả ra terminal nó còn có thể lưu thông tin cào hốt được vào database để nó (hoặc mấy tool khác) có thể sử dụng để tạo ra các combo thần thánh.

Trên Kali Linux, để bắt đầu chạy recon-ng, bạn dùng command:

recon-ng

recon-ng start
recon-ng start

#2. Sau khi khởi động recon-ng thì nên làm gì trước?

Nếu bạn mới dùng recon-ng lần đầu, thì ngay sau khi khởi động, bạn nên ngoác mồm tru réo “heo mi nao” hay “chu mi nga” các kiểu để tìm kiếm trợ giúp với command:

help

recon-ng help
recon-ng help

Ở đây có khá nhiều command, nếu có thời gian, bạn cứ xúc thử hết. Vì thời gian hạn chế, ở đây tôi ráng quất nhiều nhất có thể thôi.

#2.1 Back, exit và dashboard command

Quan sát nhanh bạn sẽ thấy có 2 thằng hỗ trợ quản lý context trong recon-ngbackexit. Với command back, bạn sẽ thoát khỏi current context (ngữ cảnh hiện hành) và de lại một cấp (thằng back này sẽ được dùng như tôi minh họa ở các mục sau). Với command exit, bạn sẽ thoát khỏi framework recon-ng. Bạn nhớ lưu ý 2 thằng cơ bản này vì nếu lo học mấy chiêu cao cấp mà không biết cách thoát context thì mất mặt lắm.

Ngoài ra, bạn còn có một thằng hỗ trợ quản lý chung là dashboard. Với command dashboard, recon-ng sẽ hiển thị tóm lược các hoạt động mà bạn đã thực hiện kiểu như sau.

dashboard

recon-ng dashboard
recon-ng dashboard

Lưu ý: Nếu bạn chưa chạy gì hết thì sẽ không thấy thông tin module hay category gì cả, phần minh họa bên dưới có dữ liệu vì tôi đã chạy trước rồi

#2.2 Workspaces command

Với command workspaces, bạn sẽ quản lý các workspaces trong recon-ng để sắp xếp thông tin thu thập tương ứng với các workflow khác nhau (hiểu đơn giản thì kiểu như với các target khác nhau thì bạn tách ra thành các dự án/ thư mục khác nhau để dễ theo dõi và xử lý). Để biết workspaces sẽ có các options gì, bạn cứ chạy thử command workspaces (sẽ thấy kết quả là 4 options create|list|load|remove).

Như vậy, để tạo workspaces, bạn có thể dùng command như sau (chữ megacorpone là để minh họa, bạn muốn dùng gì cũng được):

workspaces create megacorpone

Và sau đó liệt kê workspaces với command:

workspaces list

Để load workspaces, bạn dùng command:

load default

recon-ng workspaces
recon-ng workspaces

Lưu ý:

  • Ở đây tôi demo minh họa nên chuyển từ workspaces megacorpone về default, thực tế bạn nên làm trên workspaces cụ thể tùy tình hình;
  • Phần options delete của workspaces cũng xài tương tự, bạn có thể thử nếu muốn.

#2.3. Db command

Tiếp theo, với command db, bạn sẽ tiếp cận Interface (giao diện) database của workspaces. Để xác định các thao tác có thể thực hiện với db (kết quả sẽ bao gồm các thao tác delete|insert|notes|query|schema.), bạn chạy command sau:

db

Để xem schema của db, bạn có thể chạy command:

db schema

recon-ng db
recon-ng db

Để insert target domains, bạn dùng command:

db insert domains

Sau đó input domain (ví dụ trang demo megacorpone.com của ông Offensive Security) và notes cụ thể.

recon-ng db insert
recon-ng db insert

#2.4. Show command

Để hiển thị chi tiết các thông tin đã thu thập được với recon-ng, bạn có thể sử dụng show command. Nếu chạy show chung chung thì kết quả sẽ cho thấy các nhóm thông tin có thể xem chi tiết bao gồm companies|contacts|credentials|domains|hosts|leaks|locations|netblocks|ports|profiles|pushpins|repositories|vulnerabilities (hiển nhiên, show chỉ có thể hiển thị dữ liệu bạn đã thu thập, chứ nếu bạn chưa làm gì mà đòi show thì ra cái vẹo gì???).

Với ví dụ Mục 2.3, bạn đã thử insert domains nên giờ có thể kiểm tra lại với command:

show domains

recon-ng show
recon-ng show

Như bạn thấy, thông tin liên quan đến phần bạn đã nhập liệu đã có khi chạy show domains.

#2.5. Keys command

Với command keys, bạn sẽ có thể quản lý third party resources hay ngắn gọn hơn là API key. Để kiểm tra các key có sẵn đã được cài đặt, bạn dùng command:

keys list

recon-ng keys
recon-ng keys

Lưu ý: Ở đây tôi chưa có key nào cả. Bạn có thể dùng option add để thêm key vào sau khi đã đăng ký với ông cung cấp như Google, IPInfoDB, Shodan,…

#3. Lần đầu chơi combo với recon-ng modules

#3.1 Tìm và cài đặt module với marketplace command  

De lại cái hình khởi động recon-ng ở cuối Mục 1, khi mới lần đầu chạy, bạn sẽ thấy dòng cuối cùng báo là “No modules enabled/installed”. Có thông báo này là vì bạn chưa có module nào đã kích hoạt hoặc cài đặt để sử dụng cả. Để cài đặt module, bạn có thể sử dụng marketplace của recon-ng. Nếu không nhớ rõ tên module thì bạn có thể sử dụng chức năng search từ marketplace. Ví dụ search đám liên quan đến github như sau.

marketplace search github

recon-ng marketplace search
recon-ng marketplace search

Khi đã có tên module, bạn có thể xem thông tin về nó như command sau (ví dụ với module recon/domains-hosts/google_site_web).

marketplace info recon/domains-hosts/google_site_web

recon-ng marketplace info
recon-ng marketplace info

Sao khi đã thỏa mãn việc soi kèo module và quyết định cài đặt, bạn có thể dùng dạng command như sau (lại là ví dụ với module recon/domains-hosts/google_site_web).

marketplace install recon/domains-hosts/google_site_web

#3.2 Tung combo với modules command  

Sau khi quá trình cài cắm xảy ra êm đẹp, để load module, bạn có thể dùng command theo dạng sau cho module (vẫn minh họa với recon/domains-hosts/google_site_web).

modules load recon/domains-hosts/google_site_web

Sau khi load module thành công, bạn có thể xem thêm các thông tin, đặc biệt là phần Options với command:

info

recon-ng modules info
recon-ng modules info

Dựa vào đây, bạn sẽ biết các Options có thể sử dụng với module (ví dụ với module recon/domains-hosts/google_site_web thì OptionsSOURCE). Tôi thử luôn tiếp coi sao.

options set SOURCE megacorpone.com

Lưu ý:

  • Nếu set nhầm, bạn có thể unsetting existing value với command dạng options unset <option>
  • Ngoài ra, bạn cũng có thể set theo file danh sách domain (ví dụ targets.txt) hay thậm chí dùng sql queries để bốc hàng từ db ra theo cú pháp options set <option> query <sql-query>

Thiết lập xong, bạn chạy với command:

run

recon-ng modules run
recon-ng modules run

Kết quả, nhanh hay chậm, nhiều hay ít tùy thuộc vào module và target. Với trường hợp minh họa trên thì tôi chờ cỡ 1 phút sẽ thấy kết quả kiểu như sau:

recon-ng modules result
recon-ng modules result

Đến đoạn này, recon-ng sẽ đổ đám thông tin đã cào hốt được vô local database (đề cập ở Mục 2.3) để cho đám module/tool khác ăn chung. Tại ví trí này, trước khi có thể coi hàng, bạn cần chạy command để de lại một cấp với:

back

Đến đây là bạn đã có thể xem các kết quả với show command (nếu quên các Options của show thì bạn có thể coi lại Mục 2.4 hoặc chạy lại command show. Nếu coi lại vẫn không đoán được thì tôi nói luôn nó là Options host.

show hosts

recon-ng show hosts
recon-ng show hosts

Thông tin hiện tại nó chưa có IP address. Nên bạn có thể xem xét kiếm thêm module nào có khả năng resolve ra IP address (tôi phọt ra luôn cho nhanh là module recon/hosts-hosts/resolve). Bạn có thể coi thêm thông tin bằng marketplace như đã làm ở đoạn đầu.

marketplace info recon/hosts-hosts/resolve

Và sau đó tiến hành cài đặt với:

marketplace install recon/hosts-hosts/resolve

Rồi load module với command:

modules load recon/hosts-hosts/resolve

Và xem info về các Options với command:

info

Lưu ý: Ở đây nếu bạn dùng default, recon-ng sẽ tìm thông tin host trong database của nó xem có thằng nào có host name mà chưa có IP adress không.

Rồi bạn thử chạy với command:

run

recon-ng modules combo
recon-ng modules combo

Kết quả đã báo resolve ra IP address. Bạn kiểm tra lại thông tin với command:

show hosts

recon-ng show hosts again
recon-ng show hosts again

#4. Báo cáo bế mạc

Sau khi thỏa mãn với công tác đào bới thông tin, bạn sẽ cần đế một module hỗ trợ xử lý báo cáo kết quả. Tương tự như trên, bạn có thể search với marketplace bằng command:

marketplace search report

Tùy nhu cầu cụ thể, bạn sẽ cài đặt module tương ứng (hoặc tất cả nếu thích). Ở đây tôi minh họa với thằng json.

marketplace install reporting/json

Sau đó load module tương ứng.

modules load reporting/json

recon-ng report
recon-ng report

Và xem thông tin các option liên quan với:

info

Với thằng json, tôi sẽ cần thiết lập giá trị cho TABLES (ở đây tôi xài domains vì ở trên tôi đã xử lý với thằng này, nếu bạn quất với thằng port (hoặc thằng nào khác) thì cứ chơi thằng đó vào đây)

options set TABLES domains

Sau đó chạy với:

run

recon-ng report info
recon-ng report info

Kết quả chạy cho tôi biết kết quả nằm ở vị trí “/home/testkali/.recon-ng/workspaces/default/results.json”. Tôi có thể coi nhanh nội dung của file này với command:

cat /home/testkali/.recon-ng/workspaces/default/results.json

recon-ng report content
recon-ng report content

Rồi đến đây là xong phần minh họa đơn sơ mộc mạc việc chơi combo với các module của recon-ng.

Leave a Reply

Your email address will not be published. Required fields are marked *