# OSINT and Penetration Testing
## I. Overview
### 0x01. What is OSINT?
OSINT(Open Source Intelligence): Là những phương thức, cách thức khái thác lấy những thông tin từ video, hình ảnh, văn bản, v.v.. từ những gì liên quan đến mục tiêu có sẵn và đang public trên interrnet.
### 0x02. What is OSINT Framework?
OSINT Framework: Là kho lưu trữ các công cụ để thu thập và điều tra thông tin OSINT. Nó sắp xếp các công cụ thành 32 danh mục dựa trên loại dữ liệu mà chúng ta muốn tìm kiếm.
[Trang chủ OSINT Framework](https://osintframework.com/)
[GitHub](https://github.com/lockfale/OSINT-Framework)

*Trang chủ OSINT Framework và một số kí hiệu.*
### 0x03. OSINT Techniques
Có 2 kỹ thuật OSINT chính đó là **Active OSINT** và **Passive OSINT**.
| Active OSINT | Passive OSINT |
| -------- | -------- |
| ***Tạo kết nối và tương tác trực tiếp với mục tiêu*** | ***Không bao giờ tương tác trực tiếp với mục tiêu*** |
| Ví dụ: Scan trực tiếp bằng các công cụ như ***Nmap*** hoặc ***Nikito*** | Dựa vào thông tin lưu trữ của ***các bên thứ 3*** |
| Ví dụ: Phising mục tiêu ***click*** vào các liên kết hay ***tiết lộ thông tin***|Ví dụ: Passive scan bằng các công cụ như ***Shodan*** hoặc ***Whois*** query |
***Đặc điểm***:
**Active OSINT**:
\+ Thông tin chính xác hơn và được update liên tục.
\+ Nguy cơ bị phát hiện cao
**Pasive OSINT**:
\+ Không bị phát hiện
\+ Thông tin có thể đã cũ và độ chính xác không cao.
## II. OSINT and Penetration Testing
*Bước đầu tiên trong thử ứng dụng web là giai đoạn **reconnaissance** hay **information gathering**. Bước này cung cấp cho **Pentester** thêm thông tin có thể được sử dụng để xác định và khai thác các lỗ hổng trong ứng dụng web.*
### 0x01. Google Dorks
Các ***Search Engines*** như Google và Bing hỗ trợ thực hiện các truy vấn tìm kiếm nâng cao được gọi là Google Dorks.
`site:*.google.com` : Thao tác này sẽ trả về danh sách đầy đủ các ***sub domain*** của Google, danh sách này về cơ bản đến từ quá trình thu thập thông tin của Googlebot. Điều này rất hữu ích để tìm ***subdomain*** nếu nó không được bảo vệ bởi cấu hình trong file robots.txt.
Bing cũng hỗ trợ một số toán tử giống như Google, ví dụ: `site:*.fpt.com`
Ngoài việc có thể liệt kê subdomain ra thì nó còn hỗ trợ tìm kiếm rất nhiều những thông tin hữu ích khác trong quá trình pentest. Dưới đây là một số toán tử tìm kiếm nâng cao sử dụng trong ***Google Dorks***.

Ngoài ra rất nhiều các Search Engine khác hỗ trợ pentester trong quá trình kiểm thử rất nổi tiếng như
\+ ***[Shodan](https://www.shodan.io/)***
\+ [***Censys***](https://censys.io/)
### 0x02. GitHub Recon
[GitHub Search](https://github.com/search) là một tính năng khá mạnh mẽ và hữu ích, có thể được sử dụng để tìm kiếm dữ liệu nhạy cảm trên kho lưu trữ. Bộ sưu tập của ***GitHub Dork*** có thể tiết lộ thông tin cá nhân và/hoặc tổ chức nhạy cảm như ***secret keys***, ***credentials***, ***authentication tokens***, v.v ... Chúng rất hữu ích trong quá trình pentest.

***GitHub Dorks for Recon***

***Sample Keywords to search***

Một số công cụ hỗ trợ ***Github reconn*** tự động:
***[1. Gitrob](https://github.com/michenriksen/gitrob)***
***Gitrob*** là một công cụ giúp tìm các file nhạy cảm trong các **public repositories** trên GitHub. ***Gitrob*** sẽ sao chép các ***kho lưu trữ*** thuộc về người dùng hoặc tổ chức xuống độ sâu nhất định có thể cấu hình và lặp lại. Các phát hiện sẽ được hiển thị thông qua giao diện web để dễ dàng phân tích.

[***2. git-secrets***](https://github.com/awslabs/git-secrets)
***Git-secret*** là một công cụ do **AWS Labs** phát hành để quét các ***commit*** và ***commit messages***. Nó cho phép bạn quét một cách đệ quy một tệp hoặc một thư mục để tìm kiếm bí mật. Điều này hoạt động hiệu quả khi cố gắng tìm các bí mật trong AWS, chẳng hạn như ***AWS Access Key ID*** và ***AWS Secret Access Key*** trong repository.
[*3. **TruffleHog***](https://github.com/trufflesecurity/trufflehog)
***TruffleHog*** sẽ đi qua toàn bộ lịch sử ***commit*** của từng ***branch*** và kiểm tra từng điểm khác biệt với ***commit*** và kiểm tra thông tin bí mật. Điều này thực hiện cả bằng regex và bằng entropy.
Đối với kiểm tra entropy, ***truffleHog*** sẽ đánh giá entropy shannon cho cả bộ ký tự base64 và bộ ký tự thập lục phân cho mỗi khối văn bản lớn hơn 20 ký tự bao gồm các bộ ký tự đó trong mỗi sự thay đổi. Nếu tại bất kỳ thời điểm nào mà một chuỗi entropy > 20 ký tự được phát hiện, nó sẽ in ra màn hình ”.

### 0x03. Sumdomain Enumeration
**1. Brute Forcing**
Brute-force cũng là một cách rất hữu ích để có thể tìm ra subdomain của một trang web. Một số công cụ phổ biến:
[1. **Sublist3r**](https://github.com/aboul3la/Sublist3r)
***Sublist3R*** là một công cụ Python được thiết kế để liệt kê các tên miền phụ của các trang web sử dụng OSINT.
Nó giúp thu thập ***subdomain*** của mục tiêu. ***Sublist3R*** liệt kê các tên miền phụ sử dụng nhiều công cụ tìm kiếm như Google, Yahoo, Bing, Baidu và Ask. Sublist3R cũng liệt kê các tên miền phụ sử dụng Netcraft, Virustotal, ThreatCrowd, DNSDumpster và Reversedns.
Bên trong nó còn được tích hợp sẵn tool [subbrute](https://github.com/TheRook/subbrute)

***[2. Recon-ng](https://github.com/lanmaster53/recon-ng)***
Đây cũng là một công cụ rất phổ biến, được tích hợp sẵn trong Kali Linux. Nó có cấu trúc cơ bản giống như metasploit. Nhưng chỉ thiết kế để phục vụ cho mục đích ***Reconnaissance***.

[***3. OWASP Amass***](https://github.com/OWASP/Amass)
OWASP Amass project thực hiện ánh xạ network của các attack surface và khám phá tài nguyên bên ngoài bằng cách sử dụng ***OSINT*** và các kỹ thuật ***Active Reconnaissance***.

[***4. aquatone***](https://github.com/michenriksen/aquatone)
***Aquatone*** được thiết kế để tích hợp với bộ công cụ hiện có. Aquatone được bắt đầu bằng cách nhận đầu vào là đầu ra của một công cụ khác.
Nó thực sự không quan tâm đến việc dữ liệu được tổng hợp trông như thế nào dưới dạng URL, miền và địa chỉ IP sẽ được trích xuất với dựa trên biểu thức chính quy. Điều này có nghĩa là bạn có thể cung cấp cho nó đầu ra của bất kỳ công cụ nào.
***IP***, ***hostname*** và ***domain names*** sẽ trải qua quá trình quét cổng thường được sử dụng cho các dịch vụ web và được chuyển đổi thành các URL có sơ đồ chính xác. Nếu dữ liệu chứa URL, chúng được coi là tồn tại và không trải qua quá trình quét cổng.
*Ví dụ:*
`$ cat targets.txt | aquatone`
***Output***: Khi Aquatone xử lý xong, nó sẽ tạo ra một loạt các tệp và thư mục trong thư mục hiện tại:
>**aquatone_report.html**: An HTML report to open in a browser that displays all the collected screenshots and response headers clustered by similarity.
>**aquatone_urls.txt**: A file containing all responsive URLs. Useful for feeding into other tools.
>**aquatone_session.json**: A file containing statistics and page data. Useful for automation.
>**headers/**: A folder with files containing raw response headers from processed targets
>**html/**: A folder with files containing the raw response bodies from processed targets. If you are processing a large amount of hosts, and don't need this for further analysis, you can disable this with the -save-body=false flag to save some disk space.
>**screenshots/:** A folder with PNG screenshots of the processed targets

### 0x04. Directory Bruteforcing
***Directory Brute Force*** là các cuộc tấn công rất phổ biến được sử dụng đối với các trang web và máy chủ web. Chúng được sử dụng để tìm các thư mục và các file ẩn trên trang web. Những thứ mà trang web muốn giấu đi thường rất có giá trị giúp ích cho chúng ta trong qua trình khai thác nếu như có đực nó :))
***\+ Sử dụng robots.txt để xác định các thư mục.
\+ Do thám máy chủ để tìm các API enpoints.
\+ Sử dụng [Wappalyzer](https://chrome.google.com/webstore/detail/wappalyzer-technology-pro/gppongmhjkpfnbhagpmjfkannfbllamg?hl=vi) Để xác định công nghệ được sử dụng trong trang web, chẳng hạn như CMS, nền tảng thương mại điện tử hoặc bộ xử lý thanh toán, cũng như công ty và chi tiết liên hệ.***
Một số công cụ hỗ trợ:
[**1. dirsearch**](https://github.com/maurosoria/dirsearch)
***Dirsearch*** là một công cụ mã nguồn mở được viết bằng Python hoạt động theo kiểu brute-forcing cấu trúc thư mục, file của web. Nó có thể chạy trên Windows, Linux, macOS.
***Dirsearch*** sử dụng các dòng lệnh đơn giản mà hiệu quả, nó hỗ trợ rất nhiều options như đa luồng, tìm kiếm theo list extensions, delay giữa các request, set cookie, user-agent, headers, proxy...
Chính vì thế dirsearch trở thành công cụ phổ biến mà hầu hết các hacker hay pentester đều sử dụng.

[**2. Gobuster**](https://github.com/OJ/gobuster)
***Gobuster*** cũng là một công cụ rất mạnh được viết bằng Go, nhưng việc cài đặt khó khăn hơn trên Win hay Ubuntu so với Dirsearch. Được sử dụng để Brute-force:
\+ **URIs (directories and files)** in web sites.
\+ **DNS subdomains** (with wildcard support).
\+ **Virtual Host names** on target web servers.
\+ Open **Amazon S3 buckets**

**Recon Tree by @nahamsec**

**Web Security Mindmap**

## III. Reference
**[BugBountyRecon](https://mavericknerd.github.io/knowledgebase/BugBountyRecon/)**
[**recon-my-way**](https://github.com/ehsahil/recon-my-way)
**[OSINT Framework](https://osintframework.com/)**
[**top-10-tools-for-reconnaissance**](https://www.firecompass.com/blog/top-10-tools-for-reconnaissance/)
[**active-reconnaissance-tools-for-penetration-testing**](https://allabouttesting.org/active-reconnaissance-tools-for-penetration-testing/)
**[website-reconnaissance-tools](https://linuxsecurity.expert/security-tools/website-reconnaissance-tools)**
[**GitHub-Recon**](https://github.com/TheBinitGhimire/GitHub-Recon)
**[penetration-testing-for-web-applications ](https://relevant.software/blog/penetration-testing-for-web-applications/)**