首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

Null Session 枚舉 Windows 2000/XP NetBIOS 資訊:共享、用戶、群組、會話完整實作

     編輯:關於VC++

背景

Windows 2000/XP 預設允許 Null Session(空會話) 連接 IPC$ 共享,匿名用戶可枚舉大量 NetBIOS 資訊。本文詳述可獲取資訊類別、核心 API 呼叫序列、資料結構與防禦對策。僅供防禦研究與授權滲透測試使用。

可枚舉資訊類別

類別關鍵 API主要資料結構說明
主機時間NetRemoteTODTIME_OF_DAY_INFOGMT 時間,可推算時區
OS 指紋NetServerGetInfo (Level 101)SERVER_INFO_101平台 ID、版本 (5.0=2K, 5.1=XP, 6.0=Longhorn)、伺服器類型位元遮罩
共享列表NetShareEnum (Level 1)SHARE_INFO_1含隱藏共享 (ADMIN$, IPC$),類型:磁碟/列印/IPC/特殊
用戶列表NetQueryDisplayInformation (Level 1)NET_DISPLAY_USER帳號、全名、UID、旗標 (停用/鎖定/智慧卡/委派等)
本地群組NetLocalGroupEnum (Level 1)LOCALGROUP_INFO_1群組名稱與備註
全域群組NetQueryDisplayInformation (Level 3)NET_DISPLAY_GROUP含 GID、屬性,可再呼叫 NetGroupGetUsers 列舉成員
傳輸協定NetServerTransportEnum (Level 0)SERVER_TRANSPORT_INFO_0協定名稱、網路位址、作用中連線數
作用中會話NetSessionEnum (Level 10)SESSION_INFO_10客戶端名稱、用戶名、活動/閒置時間

核心流程與程式碼片段

1. 建立/斷開 Null Session


NETRESOURCE nr = {0};
nr.dwType = RESOURCETYPE_ANY;
nr.lpRemoteName = _T("\\\\TargetIP\\ipc$");
TCHAR username[100] = _T(""), password[100] = _T("");

// 連接
DWORD ret = WNetAddConnection2(&nr, username, password, 0);
if (ret != ERROR_SUCCESS) return -1;

// ... 枚舉操作 ...

// 斷開
TCHAR ipc[100];
wsprintf(ipc, _T("\\\\%s\\ipc$"), szTarget);
WNetCancelConnection2(ipc, 0, TRUE);

2. 關鍵枚舉函數呼叫模板


// 共享列表示例
DWORD er=0, tr=0, resume=0;
PSHARE_INFO_1 pBuf = NULL;
do {
    NET_API_STATUS ns = NetShareEnum(server, 1, (PBYTE*)&pBuf,
        MAX_PREFERRED_LENGTH, &er, &tr, &resume);
    if (ns == NERR_Success || ns == ERROR_MORE_DATA) {
        for (DWORD i=0; i

3. 記憶體釋放

所有 NetApiBufferFree(pBuf) 必須配對呼叫,避免洩漏。

防禦對策

  1. 防火牆封鎖 TCP 445 / 139 連接埠
  2. 網路連線內容 → TCP/IP 內容 → 進階 → 停用 NetBIOS over TCP/IP
  3. IP 安全性原則 (IPSec) 封鎖 445/TCP
  4. 註冊表 HKLM\SYSTEM\CurrentControlSet\Control\Lsa\RestrictAnonymous = 1 (限制匿名存取)

完整原始碼結構

單一 wmain 入口,依序呼叫 datetime、fingerprint、netbios、users、localgroup、globalgroup、transport、session。支援 Unicode,含錯誤碼處理與進度輸出。

原始碼下載

完整命令列掃描工具原始碼 (T-SMB Scan),含詳細註解與編譯說明。

本文配套源碼

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved