通過windows xp調試發現,這個端口是netbt啟用關於SMB服務的時候開啟的。
\\Device\\NetbiosSmb
這個設備對象就是NetBT驅動創建的(注意不是netbios驅動)
端口的獲取是通過注冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NetBT\Parameters\Smb下的SessionPort鍵項獲取的,如果沒有的話,默認就是445。所以想改端口號的話,可以改這個,但是這樣的話,遠程客戶端可能就訪問不了。另外,除了SessionPort還有 DatagramPort,
下面是獲取到端口后,綁定地址過程的堆棧
ChildEBP RetAddr
f8ac0fc0 b2d969ad tcpip!TdiOpenAddress
f8ac1014 b2d69aaa tcpip!TCPCreate+0x20a
f8ac1050 804eedf9 tcpip!TCPDispatch+0x10b
f8ac1060 805783bc nt!IopfCallDriver+0x31
f8ac1140 805b465e nt!IopParseDevice+0xa58
f8ac11c8 805b0b3f nt!ObpLookupObjectName+0x56a
f8ac121c 8056b133 nt!ObOpenObjectByName+0xeb
f8ac1298 8056baaa nt!IopCreateFile+0x407
f8ac12f4 8056e17c nt!IoCreateFile+0x8e
f8ac1334 8053d808 nt!NtCreateFile+0x30
f8ac1334 804fe569 nt!KiFastCallEntry+0xf8
f8ac13d8 b2d41bbc nt!ZwCreateFile+0x11
f8ac1484 b2d44785 netbt!NbtTdiOpenAddress+0x227
f8ac14b4 b2d45547 netbt!NbtCreateAddressObjects+0xc3
f8ac14f0 b2d49173 netbt!NbtCreateSmbDevice+0xc8
f8ac1570 80576550 netbt!DriverEntry+0x215
f8ac1640 80689770 nt!IopLoadDriver+0x66c
f8ac169c 80686ad9 nt!IopInitializeSystemDrivers+0x16c
f8ac183c 80684edd nt!IoInitSystem+0x7a3
f8ac1dac 805c5a28 nt!Phase1Initialization+0x9b5
f8ac1ddc 80541fa2 nt!PspSystemThreadStartup+0x34
00000000 00000000 nt!KiThreadStartup+0x16
kd> ?dwo(dwo(esp+8)+8)
Evaluate expression: 48385 = 0000bd01
kd> ?0n445
Evaluate expression: 445 = 000001bd
這是由驅動在內核線程中直接創建的,所以445端口對應的進程我們經常可以看到的是System,關於如何通過445端口進行rpc over NampPipe/smb,smb over netbios/tcpip,
另開文章再作分析