Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> 電腦軟體教學 >> 伺服器技術 >> 關於伺服器

透過 139 連接埠 (IPC$) 遠端重啟 Windows NT/2000/XP 伺服器實戰技術與 C++ 重啟工具原始碼

編輯:關於伺服器

當遠端管理工具 (RDP/PCAnywhere/SSH) 失效,但目標主機 TCP 139/445 (SMB/IPC$) 開放、且具備有效管理員憑證時,可透過 net use、at 排程任務、自製重啟程式實現遠端重啟。本文提供完整命令列流程、C++ 原始碼與現代替代方案。

前提條件

  • 目標主機啟用 Server 服務 (LanmanServer)、Task Scheduler 服務 (Schedule)。
  • 攻擊/管理端具備 目標管理員帳號密碼 (或可利用空連接/匿名枚舉漏洞)。
  • 防火牆開放 139/445 (TCP)、137/138 (UDP) — NetBIOS over TCP/IP。
  • 目標作業系統:Windows NT 4.0 / 2000 / XP / Server 2003 (現代版本同樣適用)。

標準命令列流程 (Windows 2000/XP/2003)

REM 1. 建立 IPC$ 會話 (驗證)
net use \\192.168.1.100\IPC$ "Password123" /user:Administrator

REM 2. 映射目標 C$ 行政共享為本地 Z:
net use Z: \\192.168.1.100\C$

REM 3. 在目標 C: 根目錄建立重啟批次檔 (Win2k/XP/2003 適用)
echo iisreset /reboot > Z:\reboot.bat
REM 或更通用的 shutdown 指令 (XP SP2+/2003+)
echo shutdown /r /t 30 /c "Remote reboot by admin" > Z:\reboot.bat

REM 4. 取得目標系統時間 (確保排程時間準確)
net time \\192.168.1.100
REM 假設回傳:Current time at \\192.168.1.100 is 14:25:00

REM 5. 在目標建立一次性排程任務 (3 分鐘後執行)
at \\192.168.1.100 14:28 Z:\reboot.bat

REM 6. 驗證任務已建立
at \\192.168.1.100

REM 7. 等待重啟完成,清理痕跡
net use Z: /delete
net use \\192.168.1.100\IPC$ /delete

Windows NT 4.0 特殊處理

NT 4.0 無 shutdown.exe、iisreset 不支援 /reboot 參數,需自製 reboot.exe 放至目標 C:\。

C++ 原始碼 (reboot.cpp) - 相容 NT 4.0 / 2000 / XP

#include 
#include 

int main() {
    LPSTR msg = "Remote Reboot Tool\nAuthor: Admin";
    
    // 嘗試標準 API 重啟
    if (ExitWindowsEx(EWX_REBOOT, 0)) return 0;
    if (ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0)) return 0;
    
    // 提升權限取得 SE_SHUTDOWN_NAME
    HANDLE hToken;
    TOKEN_PRIVILEGES tkp = {0};
    if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &hToken)) return 1;
    
    LookupPrivilegeValue(NULL, SE_SHUTDOWN_NAME, &tkp.Privileges[0].Luid);
    tkp.PrivilegeCount = 1;
    tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
    AdjustTokenPrivileges(hToken, FALSE, &tkp, 0, NULL, 0);
    
    // 判斷 NT 核心 vs 9x 核心
    if (!(GetVersion() & 0x80000000)) { // NT Kernel
        InitiateSystemShutdown(NULL, msg, 20, TRUE, TRUE);
    } else { // 9x Kernel
        ExitWindowsEx(EWX_REBOOT | EWX_FORCE, 0);
    }
    return 0;
}

編譯與部署

cl reboot.cpp /link /subsystem:console user32.lib advapi32.lib
# 產生 reboot.exe,複製至目標 Z:\reboot.exe
# 修改步驟 3 批次檔內容:
echo Z:\reboot.exe > Z:\reboot.bat

現代替代方案 (更安全、可審計)

工具/協定優點需求
PowerShell Remoting (WinRM)加密傳輸、Kerberos/憑證認證、物件導向、管線支援目標啟用 WinRM (Enable-PSRemoting)、防火牆 5985/5986
WMI (WMIC / Get-WmiObject)無需額外服務、DCOM/RPC 通道、查詢/執行靈活RPC 動態連接埠、DCOM 權限
SSH (OpenSSH Server)跨平台、金鑰認證、標準化、審計完整Windows 10 1809+/Server 2019+ 內建
SCCM/Intune/MDM企業級管理、合規、報表、分階段部署基礎設施投入
IPMI/iDRAC/iLO/AMT帶外管理、硬體級電源控制、OS 無關伺服器硬體支援、專用管理網路

安全防禦建議

  • 封鎖/限制 139/445 對外暴露:僅允許管理網段存取,部署 IPsec 隔離域。
  • 停用不必要的共享:AutoShareServer=0 (註冊表) 禁用 C$/ADMIN$ 自動共享,或使用 net share C$ /delete (重開機失效)。
  • 強制複雜密碼 + 帳號鎖定:防止暴力破解 IPC$ 憑證。
  • 啟用 SMB 簽名/加密:群組原則 → Microsoft network server: Digitally sign communications (always) = Enabled。
  • 稽核登入事件 (4624/4625) + SMB 存取稽核:異常 IPC$ 連線即時告警。
法律警示: 未經授權存取他人電腦系統 (含透過 IPC$ 建立會話、遠端重啟) 可能觸犯《刑法》妨害電腦使用罪、資安法等相關法規。本文僅供授權運維、滲透測試 (持有書面授權)、教學研究使用。
Copyright © Windows教程網 All Rights Reserved