NỘI DUNG
Tiếp theo nội dung Penetration Testing – 6 điều tối thiểu bạn cần biết, kỳ này tôi sẽ đi vào bước đầu tiên của quá trình Penetration Testing – đó là Information Gathering. Vẫn đậm phong cách “cưỡi ngựa xem hoa” như kỳ trước, nội dung đợt này cũng sẽ “nhạt như nước ốc” vì chẳng có demo gì cả. Tuy nhiên, các nội dung này có thể đóng vai trò quan trọng như một cái check list có thể giúp bạn triển khai công tác Information Gathering một cách hệ thống và đôi lúc còn có thể giúp bạn thoát thảm cảnh bế tắc, bất lực vì méo biết làm gì tiếp.
Lưu ý:
- Nếu bạn đang triển khai White Box Pentest thì công tác Information Gathering có thể thực hiện nhanh gọn thông qua việc trao đổi trực tiếp với ông đầu mối của Target (có thể là hệ thống/ tổ chức hay gì đó, ở đây tôi dùng chung là Target để gõ nhanh đỡ mỏi tay), không cần thiết phải hành xác như các nội dung bên dưới làm gì;
- Như tôi đã đề cập về các giai đoạn Penetration Testing trong kỳ trước, thực tế trước khi triển Information Gathering, bạn cần thực hiện việc Planning and Preparation – Lên kế hoạch và chuẩn bị. Công tác Planning and Preparation sẽ tùy thuộc vào từng Target cụ thể. Tuy nhiên có một thứ chắc chắn bạn cần làm trong bước này là chuẩn bị phương án để ghi chú thông tin thu thập và cập nhật tình hình triển khai. Cho dù chơi dạng “săn bắt hái lượm” là viết tay vô sổ sách hay tận dụng các phương án nhập liệu, phân tích dữ liệu hạng nặng thì bạn cũng cần đảm bảo tối thiểu 2 nguyên lý là “thà giết nhầm còn hơn bỏ sót” và “hạn chế việc nhai lại” (sẽ trường hợp bạn cần “nhai lại” một bước nào đó vì phát hiện thêm thông tin hỗ trợ).
#1. Passive Information Gathering vs Active Information Gathering
Information Gathering có thể có các dạng phân loại khác nhưng tôi thấy phương án phân chia thành 2 nhóm Passvie và Active là khá hợp lý:
- Passive Information Gathering: Theo cách hiểu cởi mở là việc thu thập thông tin không tương tác trực tiếp với Target hoặc có tương tác nhưng không thể phân biệt với người dùng Internet thông thường (ví dụ truy cập Website của Target đọc thông tin chẳng hạn). Mục tiêu của Passive Information Gathering hiển nhiên là để thu thập thông tin hỗ trợ hoặc mở rộng attack surface (tôi tạm dịch là phương án tấn công) từ đó tăng khả năng thành công cho các bước tiếp theo (ví dụ như đoán password);
- Active Information Gathering: Có tương tác với Target với các hành vi “mờ ám” có thể nhận biết như DNS Enumeration, Port Scanning,….
Như vậy, có thể thấy, ở Step 1a – Passive Information Gathering của quá trình Penetration Testing, bạn cần tập trung ủ mưu, âm thầm thu thập thông tin và hạn chế tối đa việc để lộ dã tâm với Target. Và khi thời cơ đã chín muồi, với nguồn nội công dồi dào đã tích lỹ được từ Step 1a, bạn có thể tung ra hàng loạt chiêu thức với damage cao ngút trời trong Step 1b – Active Information Gathering.
Tạm dừng cái giấc mơ đê hèn ấy lại, tôi xin quay lại vấn đề chính với Passive Information Gathering.
#2. The OSINT Framework – Yellow page cho Passive Information Gathering
Passive Information Gathering, như lời của người trong giang hồ mạng, còn được gọi là Open-source Intelligence – OSINT. Và khi bàn đến OSINT (tôi nhắc lại, OSINT, không phải OSIN nhé), thì không thể không đề cập đến OSINT Framework.
OSINT Framework bao gồm các công cụ/ website phục vụ Information Gathering được sắp xếp gọn gàng, sạch đẹp kiểu Mind Map. Nếu truy cập thử vô OSINT Framework bạn sẽ thấy tương tự như sau:

Như bạn thấy, các hạng mục như Username, Email Address, Domain Name, …được phân loại và có thể mở rộng (hoặc thu gọn) để xem các chi tiết nên có thể giúp bạn nhanh chóng định vị được “vũ khí” cần thiết các từng đối tượng cụ thể. Ví dụ với cái Email Address bạn có thể mở rộng hết cỡ để xem chi tiết như sau:

Như vậy, với Email Address, bạn có thể sử dụng Email Search với tool cụ thể là theHarvester như trên.
Chi tiết toàn bộ danh mục trên rất dài nên bạn không cần phải nhớ hết tất cả làm gì. Điểm mấu chốt ở đây là bạn cần nhớ có một “Yellow page” cho Passive Information Gathering để thực hiện tra cứu các phương án liên quan cho đối tượng đang quan tâm (ví dụ Domain Name). Và dựa vào các phương án này đề xuất này, bạn sẽ có thể triển khai các thử nghiệm một cách hệ thống để tối đa hóa hiệu quả thu thập thông tin cũng như phá thế bế tắc trong một số tình huống.
#3. Nhóm các “Swiss Army Knife” cho Passive Information Gathering
Bên cạnh cái Yellow page – OSINT Framework, bạn sẽ cần thủ sẵn một số công cụ thuộc dạng “Swiss Army Knife” đa năng (và có khả năng giao lưu phối hợp với nhau để tăng damage) nhằm hỗ trợ cho công cuộc Passive Information Gathering.
Tùy thuộc vào công cụ, kỹ năng xử lý (của bạn) và bản chất Target, thời gian xử lý có thể khá dài. Do vậy, (trong đoạn Planning and Preparation) bạn nên dự tính trước việc này để ưu tiên chạy các mấy thằng có thời gian xử lý dài trước. Trong quá trình chờ nó mần việc, bạn sẽ chiến với các công cụ có tốc độ xử lý nhanh hơn hoặc các động tác đào bới thủ công (như tôi đề cập trong Mục #4. Nhóm các phương án “thủ công mỹ nghệ” và “bán tự động”) để thu lượm thêm thông tin.
Như bạn thấy trong OSINT Framework, danh mục các công cụ dù chưa phải là toàn bộ cũng đã rất dài. Do vậy, tôi sẽ chỉ chọn vài thằng đại diện tiêu biểu để giới thiệu sơ lược. Tùy thuộc thực tế công việc, bạn sẽ cần search để đọc thêm các thằng khác nếu cần.
#3.1 Matego
Maltego là công cụ đào bới dữ liệu hạng nặng cho phép bạn sáng tạo vô vàn combo từ các search tool và chiến thuận khác nhau. Công cụ này có thể search nhiều nguồn dữ liệu sau đó triển các bước transforms (chuyển đổi) thần thánh (ví dụ Domain Name sang Web Server, danh sách email và thậm chí password list tương ứng cho các email account đã xác định). Trên Kali Linux, bạn sẽ có sẵn Maltego phiên bản Community Edition – CE để chinh chiến.

#3.2 Recon-ng
Recon-ng là dạng framework với nhiều module phục vụ Passive Information Gathering với điểm nổi bật là việc lưu trữ thông tin vào database bên cạnh việc hiển thị ra terminal. Do vậy, bạn có thể dùng chiến thuật “lấy mỡ nó rán nó” – lấy đầu ra của module này đổ vô làm đầu vào của module khác (hay thậm chí cho công cụ khác) để gia tăng hiệu quả và phạm vi đào bới. Cũng như Maltego, trên Kali Linux, bạn sẽ có sẵn Recon-ng.

#3.3 theHarvester
theHarvester là công cụ thu thập thông tin email, tên, Subdomain, IP và URL từ nhiều nguồn dữ liệu công cộng. Đây chắc chắn là công cụ không thể bỏ qua khi bạn muốn khai thác tối đa thông tin về user của Target. theHarvester cũng có sẵn trên Kali Linux để bạn móc ra dùng ngay khi cần.
#3.4 Whois
Whois là tool (dùng TCP) dạng database có thể cung cấp thông tin liên quan đến domain name như Name Server, Registrar (nếu Target có trả phí để bảo mật thông tin đăng ký thì bạn không dùng chiêu này được). Ngoài ra, với whois, bạn cũng có thể chạy reverse lookup – tức là tra cứu dựa trên IP Address thay vì Domain Name. Cũng như mấy thằng trên, thằng này cũng có sẵn trên Kali Linux, bạn chỉ việc há mõm mà đớp thôi.

#4. Nhóm các phương án “thủ công mỹ nghệ” và “bán tự động” cho Passive Information Gathering
Ngoài đám tool đa năng với khả năng tạo ra các combo thần thánh, bạn cũng sẽ cần đến các phương án “thủ công mỹ nghệ” – tức là “làm tay” hoàn toàn và phương án “bán tự động” – tức là “có nhờ tool/script nhưng cũng phải làm tay một phần”. Bạn cần lưu ý mấy món này không phải hàng “phụ phẩm – thứ cấp” mà thực chất là nơi các “bậc thầy” thể hiện đẳng cấp khác biệt so với các “gà mờ” thông qua việc phân tích, đánh giá kết quả trung gian để thu lượm thông tin giá trị từ các nguồn trôi nổi trên giang hồ.
#4.1 Website Recon
Website Recon hay nói cho đơn giản là “lướt web” là thứ đầu tiên xuất hiện trong danh sách (tất nhiên với điều kiện Target phải có Website). Từ đây bạn có thể soi mói được các thứ hay ho như địa chỉ, số điện thoại, email address hay các tài khoản Social Media Network (ví dụ như Twitter) một cách chính thống. Đây sẽ là nguồn thông tin đáng tin cậy để bạn tận dụng trong quá trình Passive Information Gathering.
#4.2 Social Media Tools
Nhóm này tập trung khai thác thông tin về Target thông qua các cá nhân và các hoạt động liên quan đến Target. Một số đại diện bao gồm:
- Social-Searcher: Search engine cho các trang social media;
- Twofi (cần Twitter API key – cái này tôi xin phép trao đổi trong một diễn biến khác): Tool cho phép dò tìm Twitter feed của user để tạo ra wordlist cá nhân hóa tương ứng của user;
- linkedin2username (cần LinkedIn credentials): Script có khả năng tạo danh sách username dựa trên dữ liệu LinkedIn. Kết quả của script sẽ phụ thuộc vào LinkedIn connection đến các cá nhân thuộc Target.

#4.3 Open-Source Code
Đây là dạng các open-source projects và code repositories (kho chứa code). Nổi tiếng trong đám này phải kể đến các tai to mặt bự như GitHub, GitLab và SourceForge.
Dựa vào đám này bạn có thể biết được programming languages (ngôn ngữ lập trình) và frameworks (và có thể có cả một số thông tin nhạy cảm như credentials nếu bạn được “tổ đãi”) mà Target sử dụng (tất nhiên chỉ khi Target có mặt trên các dạng Open-Source code).
#4.4 Stack Overflow
Nếu bạn đã nhúng chàm vào nghiệp developer thì chắc chắn ít nhất một lần tham gia mục hỏi – đáp trên nền tảng Stack Overflow với các vấn đề liên quan đến coding (tôi cũng có tham gia nhưng chủ yếu ngồi lót dép hóng là chính). Trên phương diện Information Gathering, đây thật sự là nguồn tin quý giá nếu bạn “vô tình” túm được câu hỏi/ trả lời một ông nào thuộc Target trên nền tảng này để cũng cố thêm nguồn dữ liệu thu thập.

#4.5 Pastebin
Nhìn tên chắc bạn cũng đoán sơ được nội dung rồi, Pastebin là website cho phép lưu trữ và chia sẻ text mà không cần account (ở mức sử dụng cơ bản). Vì tính tiện dùng và đơn giản nên Pastebin sẽ là một “hotspot” cần lưu ý khi bạn muốn “thử vận may” tìm kiếm các thông tin nhạy cảm. Ngoài ra, đây cũng là điểm đến yêu thích của giới hacker khi muốn mò mẫm tìm các Password Dumps để tạo wordlist.

#4.6 Netcraft
Netcraft là dạng dịch vụ free web portal cho phép triển nhiều dạng Passive Information Gathering. Ví dụ bạn có thể sử dụng Netcraft’s DNS search page () để thu thập thông tin về Target.

#4.7 Security Header
Security Header sẽ phân tích các HTTP response header để xác định các thông tin cơ bản về mức bảo mật của Target để bạn làm bàn đạp cho các ý đồ thâm độc hơn.
#4.8 SSL Server Test
SSL Server Test (Qualys SSL Labs) sẽ phân tích SSL/TLS configuration của server và so sánh với các giải pháp “chuẩn cmn mực” để giúp bạn xác định nhanh xem có vulnerabilities béo bở (ví dụ Poodle hoặc Heartbleed) nào xơi ngay được không.
#4.9 Shodan
Shodan là dạng search engine thực hiện việc cào hốt thông tin về các thiết bị kết nối Internet ví dụ như các web server, router, IoT device cho đến các Industrial Control System.

#4.10 Google Hacking
Cái này thì tôi có đề cập sơ bộ trong nội dung Bash Script – Tăng cường hỏa lực Pentest với script search và download từ Exploit Database. Nếu bạn muốn biết kỹ thêm thì có thể tìm đọc cuốn Google Hacking for Penetration Testers. Nếu bạn không gấp lắm thì có thể chờ tôi giới thiệu thêm trong một nội dung riêng (hy vọng là trong tương lai gần).
Trước khi kết thúc nội dung kỳ này, tôi muốn nhấn mạnh lại rằng cách thức phân chia và thứ tự trình bày các phương án phục vụ Passive Information Gathering ở trên căn cứ theo đánh giá chủ quan (và sở thích???) cá nhân chỉ nhằm tham khảo. Bạn hoàn toàn có thể có phương thức sắp xếp khác, miễn là có thể duy trì được hiệu quả cho hoạt động Passive Information Gathering theo nguyên tắc không bỏ sót thông tin và không phí thời gian là ngon ăn.