NỘI DUNG
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-ng là module-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
#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
Ở đâ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-ng là back và exit. 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
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
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
Để 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ể.
#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
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
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
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
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
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ì Options là SOURCE). 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
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:
Đế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
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
Kết quả đã báo resolve ra IP address. Bạn kiểm tra lại thông tin với command:
show hosts
#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
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
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
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.