Học gì ở Positive Hack Camp? Bài 2 – Exploration in the customer’s external infrastructure (Thăm dò hạ tầng bên ngoài của khách hàng)

Bài viết này thuộc series “Học gì ở Positive Hack Camp?”, nơi tôi chia sẻ, tổng hợp và minh hoạ lại những kiến thức bản thân đã học trong camp.

”Positive Hack Camp là sáng kiến giáo dục toàn cầu của Positive Technologies và Positive Education dành cho các chuyên gia an ninh mạng được triển khai tại Moskva với sự hỗ trợ của Bộ Phát triển Kỹ thuật số Nga và Quỹ Phát triển An ninh mạng Quốc tế Cyberus.

Chương trình kéo dài trong 2 tuần, bao gồm các khóa đào tạo thực hành chuyên sâu, các nghiên cứu tình huống thực tế và kết nối quốc tế với sự hướng dẫn của các chuyên gia hàng đầu của Nga. Mục tiêu của chương trình là giúp các quốc gia phát triển nhân tài và chuyên môn về an ninh thông tin, hỗ trợ chủ quyền không gian mạng và tương lai số an toàn.” (Theo Báo Nhân dân Điện tử)

知彼知己,百戰不殆
“Tri bỉ tri kỉ, bách chiến bất đãi”

(Trích chương Mưu Công, Tôn Tử Binh Pháp)

“Biết người biết ta, trăm trận không nguy; không biết người mà chỉ biết ta, một trận thắng một trận thua; không biết người, không biết ta, mọi trận đều bại” – Lão Tử

Câu nói của Tôn Tử hay bị dịch thành “Biết người biết ta, trăm trận trăm thắng”, nhưng nào thầy có nói như vậy! Bạn không chắc thắng, chỉ bớt nguy. Cái bớt nguy ở đây, ấy là việc có nhiều thông tin của mục tiêu sẽ giúp chúng ta tránh việc mất quá nhiều thời gian đi lòng vòng mà không có kết quả.

Đứng trước một mục tiêu có vô vàn cách để bắt đầu và những lối rẽ từ đó – việc có trong tay nhiều thông tin sẽ là một lợi thế. Khi bạn đã có đủ quân cờ, việc còn lại là tập trung triển khai đánh trận mà thôi.

Về cơ bản việc thu thập dữ liệu sẽ chia làm hai loại: Chủ động và Bị động. Điều này phụ thuộc vào cách ta tìm hiểu thông tin. Khi chúng ta tương tác trực tiếp với mục tiêu, đó là thu thập chủ động; còn khi chúng ta tìm thông tin từ các nguồn khác một cách gián tiếp, đó là thu thập bị động.

Những thông tin chúng ta cần là gì?

  • Domain names (Tên miền)
  • Active hosts (Những máy tính đang hoạt động)
  • Network ports (Các cổng mạng)
  • OS – type and version (Tên và phiên bản hệ điều hành)
  • Software – name and version (Tên và phiên bản phần mềm)
  • More details about technologies employed (Thông tin về các công nghệ được sử dụng khác)

Và những thông tin khác tuỳ vào trường hợp cụ thể của bạn.

Về cơ bản, với thu thập chủ động, request của bạn sẽ được gửi trực tiếp từ máy tới máy mục tiêu, từ phía bên kia họ có thể thấy được. Những công cụ quét mạng (network scanners) là thứ được sử dụng chính.

Chúng hoạt động bằng cách gửi các gói tin (packet) đến dải địa chỉ IP trên mạng và chờ phản hồi từ các thiết bị. Dựa trên phản hồi nhận được (hoặc không nhận được), máy quét sẽ xác định các thiết bị nào đang hoạt động (có địa chỉ IP) và các cổng nào đang mở (mỗi chương trình/ dịch vụ khi chạy sẽ mở ra một “cổng”), từ đó lập bản đồ mạng, xác định thiết bị và dịch vụ hoạt động. Các giao thức phổ biến được sử dụng để quét bao gồm ICMP (ping), ARP, và các kỹ thuật quét cổng TCP.

Các công cụ quét mạng thường được sử dụng để cho chúng ta biết hai thông tin chính:

  1. Thông tin về host: Có những máy nào đang hoạt động? Bao nhiêu cái?
  2. Thông tin về port: Trên mỗi máy đó đang chạy những chương trình/ dịch vụ nào? Những chương trình đó đang sử dụng cổng nào?

Nmap là một công cụ đã làm ATTT thì không thể không biết. Đây là công cụ sử dụng CLI (command-line interface), bạn chỉ cần đọc docs và mày mò một chút là sẽ biết cách sử dụng. Nếu bạn chưa có kiến thức cơ bản, tôi khuyến khích việc tìm hiểu các giao thức: TCP, UDP, IP, và ICMP.

Bên cạnh đó, việc tìm kiếm tên miền (domain name enumeration) và đường dẫn (directory enumeration) cũng là một điều không thể thiếu. Tìm kiếm tên miền giúp chúng ta biết được những tên miền mà tổ chức mục tiêu sử dụng. Tìm kiếm đường dẫn sẽ cho chúng ta thấy những tài nguyên được lưu trên mỗi địa chỉ, cho phép khả năng tìm ra một thứ gì đó có giá trị về mặt thông tin.

Bạn có thể làm được điều này với các công cụ như Gobuster, ffuf hay Dirsearch. Cơ chế hoạt động của những công cụ này tương tự với network scanner: Chúng lấy vào một bộ từ điển chứa danh sách những từ khoá bạn muốn thử, sau đó ghép các từ khoá này vào chỉ dấu ta chỉ định, tạo thành một đường dẫn hoàn chỉnh, rồi gửi request tới những đường dẫn này. Kết quả trả về sẽ cho ta biết tên miền hay đường dẫn đó có tồn tại hay không.


Tuy rằng việc do thám chủ động hữu ích, song không phải lúc nào bạn cũng có thể tự do “khám phá” như ý muốn. Đa phần các hệ thống hiện nay đều có sử dụng tường lửa, các giải pháp IDPS, đều có thể nhận biết các hành vi thăm dò và đưa ra cảnh báo. Do đó chúng ta sẽ cần tới phương pháp giấu mình tốt hơn.

Trong ngành bảo mật, đào bới thông tin qua các công cụ về mục tiêu kiểu này được gọi là OSINT (viết tắt của Open Source Intelligence). Đơn giản là thông tin công khai khắp nơi, giờ thì chúng ta đi tìm nó thôi.

Tuỳ vào thông tin bạn muốn có, sẽ có nhiều cách khác nhau để tìm kiếm:

  • Thông tin về IP/ tên miền (domain) & tên miền phụ (subdomain)/ số hiệu mạng ASN: WHOIS, RDAP, Amass, theHarvester, Sublist3r, các câu lệnh dig, nslookup,…
  • Rò rỉ dữ liệu: Have I Been Pwned?, SnusBase, IntelligenceX,…
  • Các công cụ khác: Google Dork, WaybackMachine, VirusTotal, SecurityTrails,…

Bên cạnh đó, có nhiều dịch vụ bạn chỉ cần trả tiền và họ sẽ làm phần việc OSINT cho bạn, ví dụ như Shodan.

Có nhiều chỗ và muôn vàn cách để tìm kiếm và thu thập, nếu không muốn nói là hơi loạn. Thật may mắn là chúng ta có cả một framework cho điều đó.

Bạn có thể tham khảo về OSINT Framework tại: https://osintframework.com/

Hoặc đọc thêm về OSINT với bài blog này:

https://roddytech.medium.com/what-is-osint-part-3-the-rules-of-the-trade-c999866d5b0b

Tôi nói lằng nói nhằng thế, chẳng qua việc làm này chỉ là đi “stalk” mục tiêu. Giống như bạn đang đi lục lọi thông tin cô gái chàng trai mình để ý mà thôi.

Một chút hài hước trong phòng chat của Positive Hack Camp 🙂