昨天聊了滲透測試的流程。
從情報蒐集開始,到後面的漏洞分析、利用,每個階段其實都不是做完就結束。
當後面發現新的資訊時,可能還是要回頭再看看:
「還有沒有什麼我一開始沒注意到的?」
所以今天想真正把這件事情做一次。
今天先搞清楚一件事:
我們的目標機器到底有什麼?
就這樣。
不急著打進去,也先不找漏洞。
先從最基本的地方開始,看看這台機器:
先把眼前看到的東西整理清楚,再來想:
「下一步可以往哪裡走?」
HTB 上的機器分成 Active 和 Retired。
這次會把我這30 天的 CPTS 學習過程寫成鐵人賽,實際打靶的過程也會一起記錄下來。
而 HTB 官方規定,Active Machine 不能公開解法,所以這次的練習靶機只能是 Retired Machine。
但我其實完全沒有頭緒xddd(心理一直OS: 到底哪些機器,可以用又能搭配我的 CPTS 學習歷程
我希望把 Academy 學到的內容,在靶機上實際練習,而不是隨便挑幾台機器來打><
這需求對我來說太困難了 所以我把他交給 AI,請AI幫我規劃 30 天的學習內容,以及適合搭配的HTB Retired練習靶機。
而 AI 幫我規劃的第一台練習機,就是 Lame (所以我們今天就邀請Lame來陪我們練習囉
我自己沒有架 Kali VM,還好 HTB 有提供 Pwnbox,讓我不用自己架一台攻擊機><直接開瀏覽器就可以用了(超級新手友善><
那我們就來看看怎麼開啟Pwnbox~~~
開啟步驟:
在Search Lab搜尋Lame,到Lame的頁面,選Start Pwbbox(等Target IP出現(如下圖))
點右上角的Connect,選Machines
展開之後點Pwnbox
等Pwnbox啟動並跳轉後,選Open Desktop
開啟HTB提供的Pwnbox攻擊機後,點下圖的紅色框框開啟終端機:
服用說明:Pwnbox 有使用時間限制,到期後環境可能會重開或重置,連 IP 都可能改變。
所以實作時,我會以當天取得的 IP 為主,完成當天的實驗,並截圖記錄當天取得的 IP,方便未來的自己回顧,也讓大家閱讀時能了解當時的實作環境
sudo nmap 10.129.69.51 -sN -oA lamealiveornot
-sN告訴Nmap「先確認主機有沒有活著,不掃描 Port」。-oA lame_alive會把掃描結果存成三種格式的檔案。這樣之後要分析、查看或檢索結果,直接看存下來的資料就好,不用每次都重新掃描。

看到Host is up,確認在線上。
確認這台機器有回應之後,我們來看看它有哪些服務(我們來掃掃 Port,看看有哪些門是開著的。
sudo nmap 10.129.69.51 -p- -T4 -oA lameallports
Nmap預設只掃最常見的1000個port。
1000 個聽起來好像很多,但一台機器有 65535 個 TCP Port。如果我只用預設設定,就還有很多 Port 根本沒有被看到。
而在滲透測試一開始,我覺得先把環境摸清楚很重要(我不想一開始只看幾個常見的 Port,結果漏掉其他入口ㄚ~~~
-p-就是「幫我全部掃過一遍」!!!
先全部掃過一遍,知道這台機器有開哪些 Port,後面才可以再更精確地針對這些port做研究。
至於 -T4,是用來調整 Nmap 的掃描速度。
T0 最慢,T5 最快。因為這次是在 HTB 的練習環境,不需要像真實滲透測試一樣太在意掃描流量被偵測的問題,所以我就先選 T4。T4的速度快,又還算穩定~
另外下指令時我沒有特別寫 -sS,是因為我前面使用了 sudo,在root的情況下,Nmap 預設就是使用 SYN Scan,也就是 -sS。
所以雖然指令裡沒有寫 -sS,實際上還是會使用 SYN 封包來判斷 Port 的狀態。
簡單來說,就是「敲門」🚪
🟢 open:門開了
收到 SYN-ACK,代表這個 Port 有提供服務。
→ Nmap 顯示:open
🔴 closed:門是關的,但有回應
收到 RST,代表目標有回應,只是這個 Port 沒有提供服務。
→ Nmap 顯示:closed
⬛ filtered:門敲了,但不知道裡面有沒有提供服務
可能是防火牆或其他封包過濾機制把封包擋住,Nmap 沒辦法確認這個 Port 是開還是關。
→ Nmap 顯示:filtered
這三個是敲門後最常收到的回覆~open = 有提供服務closed = 有回應,但沒有提供服務filtered = 被擋住,無法判斷
其中open對我們來說是最值得往下挖掘滴 (但open 只是代表這個 Port 有服務,不代表它一定有漏洞或一定可以被攻擊呦~~~
而-oA lameallports 則是把掃描結果輸出成多種格式, lameallports 是我自己命的檔名,執行完後會產生像 lameallports.nmap、lameallports.gnmap、lameallports.xml 這些檔案。平常可以直接查看 .nmap 檔案,而 .gnmap 是專門設計成方便用 grep 指令快速篩選掃描結果,.xml 則方便其他工具進一步解析。
來掃描囉~~~

公布答案~~Lame開著的端口有:
21/tcp open ftp
22/tcp open ssh
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3632/tcp open distccd
有五扇門是開的。但我現在只知道「門是開的」,還不知道裡面在做什麼、版本是什麼。必須要繼續挖~~~👀
sudo nmap 10.129.69.51 -sC -sV -p 21,22,139,445,3632 -oA lameportdetail
-sV:版本偵測。Nmap會去跟每個服務「對話」,試圖問出「你是什麼版本」。這很重要——同樣是FTP,版本2.3.4跟版本3.0可能差著一個致命漏洞。
-sC:跑預設腳本。Nmap內建了一堆針對特定服務的「自動調查問卷」。看到FTP就自動測試能不能匿名登入、看到SMB就抓共享資料夾清單、看到HTTP就抓網頁標題。這些腳本可以幫我們省掉很多手動測試的工。
注意這裡我沒有再加-p-,而是只掃-p 21,22,139,445,3632——就是剛才掃到開著的那五個ports。因為-sC -sV比單純的端口掃描慢很多(它要跟服務互動),所以先用-p-找出開著的端口,再針對這幾個端口深入,是比較有效率的做法。



這才是真正有用的資訊!!! 我現在不只知道哪些門開著,還知道每個門後面是什麼、版本多少。
怎麼讀這個結果:
| 欄位 | 意思 |
|---|---|
| PORT | 哪個端口號碼,後面tcp代表通訊協定 |
| STATE | 狀態(open代表有服務在跑) |
| SERVICE | 這大概是什麼類型的服務 |
| VERSION | 服務的具體版本號 |
對照Day 2說的滲透測試流程:我現在做完了「Information Gathering(情報蒐集)」的第一輪,也就是Service Enumeration(服務列舉)——搞清楚目標對外跑了哪些服務、各自是什麼版本。
下一步是「Vulnerability Assessment(弱點評估)」——拿這些版本號去查有沒有已知漏洞,思考可能的攻擊方向。但那是Day 5的事。
明天 Day 4 要做的是:
「既然知道這五個服務了,那每一個服務還能告訴我什麼?」
所以會開始針對 FTP、SMB 等服務做進一步的列舉,也會實際用到像 smbclient、enum4linux-ng 等工具。
我們先不急著找漏洞~
先把服務摸清楚,再來想下一步!
原本以為掃描很簡單——打開攻擊機、下完 nmap,就可以收成結果哩~
看了 Academy 才發現,掃描也是有很多眉眉角角的xddd
為什麼不一開始就加-sC -sV -p-一次跑完?因為那樣會非常慢!!!一次要對65535個ports做版本偵測跟腳本測試,會跑超級久!!!
先用-p-快速找出哪些port是開的,再針對這幾個port做詳細偵測,
這樣可以節省超級多時間,也不用在那邊乾等掃描跑完 ><
今天的最後,來把掃描到的資訊先貼到SysReptor的notes,才不會明天或最後要寫報告忘記(就要重工了!!!喔不!!!
那我們明天見囉~~~