命令提示字元 (CMD) 不僅是系統管理入口,更是無圖形介面環境 (Server Core、遠程 Shell、WinPE、滲透測試後滲透) 下的生存利器。本文系統整理網路偵測、配置、防火牆 (IPSec)、系統資訊查詢 (WMI)、進程管理、軟體無人值守安裝等實戰技巧,打造純命令行作戰能力。
Netsh (Network Shell) 提供腳本化網路配置能力,遠程 Shell 中透過 `netsh -f script.txt` 非互動執行,是自動化首選。
@echo off
echo interface ip > netsh_cmd.txt
echo show config >> netsh_cmd.txt
netsh -f netsh_cmd.txt
del netsh_cmd.txt
輸出含: 介面名稱、IP/DHCP 狀態、DNS/WINS 伺服器、閘道、MTU — 相當於 `ipconfig /all` 結構化輸出。
echo interface ip > s & echo show ipnet >> s & netsh -f s & del s
echo interface ip > s & echo show tcpconn >> s & echo show udpconn >> s & netsh -f s & del s
echo interface ip > s & echo show interface >> s & netsh -f s & del s
輸出:介面型別、MAC 位址、媒體連線狀態、速度、傳輸佇列長度 — 硬體盤點必備。
XP/2003 使用 `ipseccmd`,2000 使用 `ipsecpol` (需 `ipsecutil.dll`、`text2pol.dll`)。語法高度一致,以 `ipsecpol` 為例。
ipsecpol -p -r -f -n -w reg -x
利用 `cscript //nologo` 執行內嵌 VBScript 片段,無需建立臨時 .vbs 檔案 (但示例中為教學生成再刪除)。
| 功能 | 命令 (單行) |
|---|---|
| 顯示系統版本 | @echo for each ps in getobject("winmgmts://./root/cimv2:win32_operatingsystem").instances_ : wscript.echo ps.caption & " " & ps.version : next > %tmp%\ps.vbs & cscript //nologo %tmp%\ps.vbs & del %tmp%\ps.vbs |
| 列舉進程 (PID、名稱、路徑) | @echo for each ps in getobject("winmgmts://./root/cimv2:win32_process").instances_ : wscript.echo ps.handle & vbtab & ps.name & vbtab & ps.executablepath : next > %tmp%\ps.vbs & cscript //nologo %tmp%\ps.vbs & del %tmp%\ps.vbs |
| 終止指定 PID 進程 (如 123) | @echo for each ps in getobject("winmgmts://./root/cimv2:win32_process").instances_ : if ps.handle=wscript.arguments(0) then wscript.echo ps.terminate : end if : next > %tmp%\pk.vbs & cscript //nologo %tmp%\pk.vbs 123 & del %tmp%\pk.vbs |
| 重啟系統 | @echo for each os in getobject("winmgmts:{(shutdown)}!//./root/cimv2:win32_operatingsystem").instances_ : os.win32shutdown(2) : next > %tmp%\rb.vbs & cscript //nologo %tmp%\rb.vbs & del %tmp%\rb.vbs |
| 列舉自啟動服務 | @echo for each sc in getobject("winmgmts://./root/cimv2:win32_service").instances_ : if sc.startmode="Auto" then wscript.echo sc.name & " - " & sc.pathname : next > %tmp%\sc.vbs & cscript //nologo %tmp%\sc.vbs & del %tmp%\sc.vbs |
| 列舉運行中服務 | @echo for each sc in getobject("winmgmts://./root/cimv2:win32_service").instances_ : if sc.state="Running" then wscript.echo sc.name & " - " & sc.pathname : next > %tmp%\sc.vbs & cscript //nologo %tmp%\sc.vbs & del %tmp%\sc.vbs |
| 顯示最後開機時間 | @echo for each os in getobject("winmgmts://./root/cimv2:win32_operatingsystem").instances_ : wscript.echo os.lastbootuptime : next > %tmp%\bt.vbs & cscript //nologo %tmp%\bt.vbs & del %tmp%\bt.vbs |
核心檔案: `wpcap.dll`、`packet.dll` → `%SystemRoot%\System32\`;`npf.sys` → `%SystemRoot%\System32\drivers\`。
註冊表: 新增系統服務 `NPF` (驅動服務),透過 `.inf` + `rundll32 setupapi,InstallHinfSection` 實現。
; _wpcap_.inf
[Version]
Signature="$WINDOWS NT$"
[DefaultInstall.Services]
AddService=NPF,,winpcap_svr
[winpcap_svr]
DisplayName=Netgroup Packet Filter
ServiceType=0x1
StartType=3
ErrorControl=1
ServiceBinary=%12%\npf.sys
; _wpcap_.bat
rundll32.exe setupapi,InstallHinfSection DefaultInstall 128 %CD%\_wpcap_.inf
del _wpcap_.inf
if /i %CD%==%SYSTEMROOT%\system32 goto COPYDRV
copy packet.dll %SYSTEMROOT%\system32\
copy wpcap.dll %SYSTEMROOT%\system32\
del packet.dll
del wpcap.dll
:COPYDRV
if /i %CD%==%SYSTEMROOT%\system32\drivers goto END
copy npf.sys %SYSTEMROOT%\system32\drivers\
del npf.sys
:END
del %0
用 WinRAR 將 5 個檔案打包為自解壓 EXE,設定「解壓後執行」`_wpcap_.bat`,即得命令行安裝包。**此思路適用於多數無需啟動的綠色軟體/工具部署。**
; patch_install.bat
for %%f in (KB??????.exe) do %%f -n -z -q
for %%f in (KB??????.exe) do del %%f
del %0
參數:`-n` 不備份、`-z` 不重啟、`-q` 靜默模式。配合 WSUSOffline/Windows Update MiniTool 取得離線補丁包,實現離線環境批次打補丁。
總結: 掌握 Netsh 網路偵查、IPSec 埠口存取控制、WMI 系統資訊腳本、INF+Rundll32 驅動部署、補丁批次安裝,即可在無 GUI、弱頻寬、受限 Shell 環境下完成 90% 以上的系統管理與防禦佈署任務。建議將常用腳本封裝為 `.bat`/` .cmd` 攜帶隨身,臨陣磨槍,亦能發光。