iT邦幫忙

2025 iThome 鐵人賽

DAY 14
0
佛心分享-IT 人自學之術

從零開始的 Linux 世界系列 第 14

【Day.14】優化自動化掃描!把掃描結果回傳給 Windows

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250928/20176048dJolGcsq3r.png

今天很高興終於把我的小工具放上 Github 了!大家也可以直接到我的 Repo 裡面下載檔案哦!我的 Github:https://github.com/ZhaoMeap/Nmap-AutoScan-ShellScript

那今天要介紹什麼呢?有了前兩天的基礎知識和觀念後,我們再回頭把自動化掃描工具加強和優化!我希望它能達成以下幾個需求:

  1. 每 60 秒就幫我用 -sT TCP 掃描。
  2. 使用者可以輸入目標 IP 參數(IPv4)。
  3. 使用者可以輸入掃描次數 迴圈(掃幾次)。
  4. 每次掃描的時候都顯示第幾圈和 -sT 的結果。
  5. -oN 將掃描結果匯出為 <timestamp>_ScanResult.txt,放在目錄 ~/Desktop/ScanResult
  6. 透過 scp 的方式把整包資料夾用壓縮檔的方式回傳給 Windows。

如果沒有原檔的朋友可以先去 Day.11 自動化掃描看看,接下來我們就透過當時的版本來優化吧!

1️⃣ 調整每次掃描的時間

還記得我們有設定一個睡眠時間為 30 秒變數的 SLEEP_SECONDS 嗎?
我們先把秒數調整成 60 秒,因為掃描 TCP 的時候會需要建立三次握手,時間會比較長,怕還沒完成握手就進行下一次的掃瞄,那會造成 Windows 認為 Kali Linux 一直嘗試要連接,進而 ban 掉。

SLEEP_SECONDS=60

2️⃣ 以 TCP 作為掃描方式

我們知道 TCP header 雖然比較大,總共 32 bytes,會比 SYN 半開掃描慢,但是用 TCP 掃描的好處就是建立完整的連線。

在少數情況下,完整連線反而能通過某些「僅阻擋非完成握手封包」的防護。簡單來說就是像一般使用者連線那樣,容易得到跟真實客戶端相同的回應

nmap -sT "${TARGET_IP}"

3️⃣ 將掃描結果匯出

接著我們就可以把掃描的結果匯出成一個 .txt 檔案,我們能夠透過這個檔案紀錄回傳給 Windows,同時,Kali Linux 自己也會留存一份掃描紀錄,同時做到備份的功能。

首先要把這個檔案放置在一個 ScanResult 資料夾內,因為每一次掃描都繪匯出一個檔案,我們總不希望桌面亂七八糟的。所以我們要在掃描之前加入

# 先找到使用者名稱,再用一個變數存起來
REAL_HOME=$(getent passwd <your_username> | cut -d: -f6)

# 這個是等一下壓縮檔會用到的目錄變數,可以先寫起來
DEST_DIR="${REAL_HOME}/Desktop/ScanResult"
    
# 然後以這個使用者來建立資料夾
mkdir -p "${DEST_DIR}"

你可以嘗試看看 cut -d: -f6 輸出結果是不是對照到你要的目錄

https://ithelp.ithome.com.tw/upload/images/20250928/20176048gv35db7bQz.png

接著,我們要記錄檔案名稱,我希望它可以有日期和時間戳記,所以我們可以利用之前的 now 變數

now=$(date + "%Y-%m-%d_%H:%M:%S")

然後在剛剛的掃描指令中加入 -oN 輸出結果

nmap -sT -oN "${now}_ScanResult.txt" "${TARGET_IP}"

4️⃣ 傳送壓縮檔給 Windows

有了掃描結果之後,我們要把整包資料傳給 Windows。但是這邊我們要注意一個問題是:如果使用者設定的迴圈數很高,可能 1,000 次或是 10,000 次,那不就有好大一包掃描結果要傳送嗎?

所以首先我們要把資料夾做壓縮

# 設定壓縮檔的路徑和檔名
ARCHIVE_PATH="${REAL_HOME}/Desktop/ScanResults_${TARGET_IP}_$(date +%Y%m%d).tar.gz"

# 把資料夾內所有的檔案壓縮,丟到剛剛設定的目標路徑中
tar -czf "${ARCHIVE_PATH}" -C "${DEST_DIR}" .

這樣我們每次執行 AutoScan.sh 的時候就會自動幫我們在桌面上建立一個所有掃描結果的壓縮檔囉!

接著,我們要把這個壓縮檔傳送給 Windows,所以

scp "${ARCHIVE_PATH}" "<your_username>@<your_win_IPv4>:/C:/Users/<your_win_directory>"

這時候會需要輸入你的 Windows 密碼,輸入完成後就會自動幫你把這個壓縮檔送回到 Windows 囉!

到目前為止我們已經完成了自動化掃描的基礎框架了,接下來我會慢慢的把這個工具完善,放在 Github 上面也歡迎大家自行取用!也希望大家可以幫忙優化或是提供建議。讓我們一起慢慢的把這個小專案變成強大的工具吧!

📄 參考資料

Nmap 官方網站指令說明
GTW 的部落格文章


上一篇
【Day.13】網路 TCP/UDP/IP 封包是什麼?
系列文
從零開始的 Linux 世界14
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言