DOS下常用網絡相關命令

 DOS下常用網絡相關命令

 

Arp: 顯示和修改“地址解析協議”(ARP) 所使用的到以太網的 IP 或令牌環物理地址翻譯
表。該命令只有在安裝了 TCP/IP 協議之後纔可使用

 

arp -a [inet_addr] [-N [if_addr]]

 

arp -d inet_addr [if_addr]

 

arp -s inet_addr ether_addr [if_addr]

 

參數

 

-a 通過詢問 TCP/IP 顯示當前 ARP 項。如果指定了 inet_addr,則只顯示指定計算

 

機的 IP 和物理地址。

 

-g 與 -a 相同。

 

inet_addr 以加點的十進制標記指定 IP 地址。

 

-N 顯示由 if_addr 指定的網絡界面 ARP 項。

 

if_addr 指定需要修改其地址轉換表接口的 IP 地址(如果有的話)。如果不存在,將使用第

 

一個可適用的接口。

 

-d 刪除由 inet_addr 指定的項。

 

-s 在 ARP 緩存中添加項,將 IP 地址 inet_addr 和物理地址 ether_addr 關聯。物

 

理地址由以連字符分隔的 6 個十六進制字節給定。使用帶點的十進制標記指定 IP

 

地址。項是永久性的,即在超時到期後項自動從緩存刪除。

 

ether_addr 指定物理地址。

 

--------------------------------------------

 

Finger 在運行 Finger 服務的指定系統上顯示有關用戶的信息。根據遠程系統輸出不同的變

 

量。該命令只有在安裝了 TCP/IP 協議之後纔可用。

 

finger [-l] [user]@computer[...]

 

參數

 

-l 以長列表格式顯示信息。

 

user 指定要獲得相關信息的用戶。省略用戶參數以顯示指定計算機上所有用戶的信息:

 

@computer

 

--------------------------------------------

 

Ftp 將文件傳送到正在運行 FTP 服務的遠程計算機或從正在運行 FTP 服務的遠程計算機

 

傳送文件(有時稱作 daemon)。Ftp 可以交互使用。單擊“相關主題”列表中的

 

“ftp 命令”以獲得可用的“ftp”子命令描述。該命令只有在安裝了 TCP/IP 協議

 

之後纔可用。Ftp 是一種服務,一旦啓動,將創建在其中可以使用 ftp 命令的子環

 

境,通過鍵入 quit 子命令可以從子環境返回到 Windows 2000 命令提示符。當

 

ftp 子環境運行時,它由 ftp 命令提示符代表。

 

ftp [-v] [-n] [-i] [-d] [-g] [-s:filename] [-a] [-w:windowsize] [computer]

 

參數

 

-v 禁止顯示遠程服務器響應。

 

-n 禁止自動登錄到初始連接。

 

-i 多個文件傳送時關閉交互提示。

 

-d 啓用調試、顯示在客戶端和服務器之間傳遞的所有 ftp 命令。

 

-g 禁用文件名組,它允許在本地文件和路徑名中使用通配符字符(* 和 ?)。(請參閱

 

聯機“命令參考”中的 glob 命令。)

 

-s: filename 指定包含 ftp 命令的文本文件;當 ftp 啓動後,這些命令將自動運行。該參數中

 

不允許有空格。使用該開關而不是重定向 (>)。

 

-a 在捆綁數據連接時使用任何本地接口。

 

-w:windowsize 替代默認大小爲 4096 的傳送緩衝區。

 

computer 指定要連接到遠程計算機的計算機名或 IP 地址。如果指定,計算機必須是行的最

 

後一個參數。

 

--------------------------------------------

 

Nbtstat 該診斷命令使用 NBT(TCP/IP 上的 NetBIOS)顯示協議統計和當前 TCP/IP 連

 

接。該命令只有在安裝了 TCP/IP 協議之後纔可用。 nbtstat [-a remotename] [-A IP address] [-c] [-n] [-R] [-r] [-S] [-s] [interval]

 

參數

 

-a remotename 使用遠程計算機的名稱列出其名稱表。

 

-A IP address 使用遠程計算機的 IP 地址並列出名稱表。

 

-c 給定每個名稱的 IP 地址並列出 NetBIOS 名稱緩存的內容。

 

-n 列出本地 NetBIOS 名稱。“已註冊”表明該名稱已被廣播 (Bnode) 或者 WINS(其

 

他節點類型)註冊。

 

-R 清除 NetBIOS 名稱緩存中的所有名稱後,重新裝入 Lmhosts 文件。

 

-r 列出 Windows 網絡名稱解析的名稱解析統計。在配置使用 WINS 的 Windows

 

2000 計算機上,此選項返回要通過廣播或 WINS 來解析和註冊的名稱數。

 

-S 顯示客戶端和服務器會話,只通過 IP 地址列出遠程計算機。

 

-s 顯示客戶端和服務器會話。嘗試將遠程計算機 IP 地址轉換成使用主機文件的名

 

稱。

 

interval 重新顯示選中的統計,在每個顯示之間暫停 interval 秒。按 CTRL+C 停止重新

 

顯示統計信息。如果省略該參數,nbtstat 打印一次當前的配置信息。

 

--------------------------------------------

 

Netstat 顯示協議統計和當前的 TCP/IP 網絡連接。該命令只有在安裝了 TCP/IP 協議後

 

纔可以使用。

 

netstat [-a] [-e] [-n] [-s] [-p protocol] [-r] [interval]

 

參數

 

-a 顯示所有連接和偵聽端口。服務器連接通常不顯示。

 

-e 顯示以太網統計。該參數可以與 -s 選項結合使用。

 

-n 以數字格式顯示地址和端口號(而不是嘗試查找名稱)。

 

-s 顯示每個協議的統計。默認情況下,顯示 TCP、UDP、ICMP 和 IP 的統計。-p 選

 

項可以用來指定默認的子集。

 

-p protocol 顯示由 protocol 指定的協議的連接;protocol 可以是 tcp 或 udp。如果與 -

 

s選項一同使用顯示每個協議的統計,protocol 可以是 tcp、udp、icmp 或ip。

 

-r 顯示路由表的內容。

 

interval 重新顯示所選的統計,在每次顯示之間暫停 interval 秒。按 CTRL+B 停止重新

 

顯示統計。如果省略該參數,netstat 將打印一次當前的配置信息。

 

--------------------------------------------

 

Ping 驗證與遠程計算機的連接。該命令只有在安裝了 TCP/IP 協議後纔可以使用。

 

ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list

 

參數

 

-t Ping 指定的計算機直到中斷。 -a 將地址解析爲計算機名。

 

-n count 發送 count 指定的 ECHO 數據包數。默認值爲 4。

 

-l length 發送包含由 length 指定的數據量的 ECHO 數據包。默認爲 32 字節;最大值是

 

65,527。

 

-f 在數據包中發送“不要分段”標誌。數據包就不會被路由上的網關分段。

 

-i ttl 將“生存時間”字段設置爲 ttl 指定的值。

 

-v tos 將“服務類型”字段設置爲 tos 指定的值。

 

-r count 在“記錄路由”字段中記錄傳出和返回數據包的路由。count 可以指定最少 1 臺,

 

最多 9 臺計算機。

 

-s count 指定 count 指定的躍點數的時間戳。

 

-j computer-list 利用 computer-list 指定的計算機列表路由數據包。連續計算機可以被中

 

間網關分隔(路由稀疏源)IP 允許的最大數量爲 9。

 

-k computer-list 利用 computer-list 指定的計算機列表路由數據包。連續計算機不能被中

 

間網關分隔(路由嚴格源)IP 允許的最大數量爲 9。

 

-w timeout 指定超時間隔,單位爲毫秒。

 

destination-list 指定要 ping 的遠程計算機。

 

------------------------------------------

 

Rcp 在 Windows 2000 計算機和運行遠程外殼端口監控程序 rshd 的系統之間複製

 

件。rcp 命令是一個連接命令,從 Windows 2000 計算機發出該命令時,也可以

 

用於其他傳輸在兩臺運行 rshd 的計算機之間複製文件。rshd 端口監控程序可以

 

在 UNIX 計算機上使用,而在 Windows 2000 上不能使用,所以 Windows 2000

 

計算機僅可以作爲發出命令的系統參與。遠程計算機必須也通過運行 rshd 提供

 

rcp 實用程序。

 

rcp [-a | -b] [-h] [-r] source1 source2 ... sourceN destination

 

參數

 

-a 指定 ASCII 傳輸模式。此模式在傳出文件上將回車/換行符轉換爲回車符,在傳

 

入文件中將換行符轉換爲回車/換行符。該模式爲默認的傳輸模式。 -b 指定二進制圖像傳輸模式。沒有執行回車/換行符轉換。

 

-h 傳輸 Windows 2000 計算機上標記爲隱藏屬性的源文件。如果沒有該選項,在

 

rcp 命令行上指定隱藏文件的效果與文件不存在一樣。

 

-r 將源的所有子目錄內容遞歸複製到目標。source 和 destination 都必須是目

 

錄,雖然即使源不是目錄,使用 -r 也能夠工作。但將沒有遞歸。

 

source 和 destination

 

格式必須爲 [computer[.user]:]filename。如果忽略了 [computer[.user]:] 部分,計算機將假定爲本地計算機。如果省略了 [.user] 部分,將使用當前登錄的 Windows 2000 用戶名。如果使用了完全合格的計算機名,其中包含句點 (.) 分隔符,則必須包含 [.user]。否則,計算機名的最後部分將解釋爲用戶名。如果指定了多個源文件,則 destination 必須是目錄。

 

如果文件名不是以 UNIX 的正斜槓 (/) 或 Windows 2000 系統的反斜槓 (/) 打頭,則假定相對於當前的工作目錄。在 Windows 2000 中,這是發出命令的目錄。在遠程系統中,這是遠程用戶的登錄目錄。句點 (.) 表示當前的目錄。在遠程路徑中使用轉義字符(/、" 或 '),以便在遠程計算機中使用通配符。

 

-------------------------------------------

 

Rexec 在運行 REXEC 服務的遠程計算機上運行命令。rexec 命令在執行指定命令前,驗

 

證遠程計算機上的用戶名,只有安裝了 TCP/IP 協議後纔可以使用該命令。

 

rexec computer [-l username] [-n] command

 

參數

 

computer 指定要運行 command 的遠程計算機。

 

-l username 指定遠程計算機上的用戶名。

 

-n 將 rexec 的輸入重定向到 NULL。

 

command 指定要運行的命令。

 

--------------------------------------------

 

Route 控制網絡路由表。該命令只有在安裝了 TCP/IP 協議後纔可以使用。

 

route [-f] [-p] [command [destination] [mask subnetmask] [gateway] [metric costmetric]]

 

參數

 

-f 清除所有網關入口的路由表。如果該參數與某個命令組合使用,路由表將在運行

 

命令前清除。

 

-p 該參數與 add 命令一起使用時,將使路由在系統引導程序之間持久存在。默認

 

情況下,系統重新啓動時不保留路由。與 print 命令一起使用時,顯示已註冊

 

的持久路由列表。忽略其他所有總是影響相應持久路由的命令。

 

command 指定下列的一個命令。

 

命令目的 print 打印路由

 

add 添加路由

 

delete 刪除路由

 

change 更改現存路由

 

destination 指定發送 command 的計算機。 mask subnetmask 指定與該路由條目關聯的子網掩碼。如果沒有指定,將使用

 

255.255.255.255。

 

gateway 指定網關。

 

名爲 Networks 的網絡數據庫文件和名爲 Hosts 的計算機名數據庫文件中均引用全部 destination 或 gateway 使用的符號名稱。如果命令是 print 或 delete,目標和網關還可以使用通配符,也可以省略網關參數。

 

metric costmetric 指派整數躍點數(從 1 到 9999)在計算最快速、最可*和(或)最便宜的

 

路由時使用。

 

---------------------------------------------------------------------------------

 

Rsh

 

在運行 RSH 服務的遠程計算機上運行命令。該命令只有在安裝了 TCP/IP 協議後纔可以使用。

 

rsh computer [-l username] [-n] command

 

參數

 

computer 指定運行 command 的遠程計算機。

 

-l username 指定遠程計算機上使用的用戶名。如果省略,則使用登錄的用戶名。

 

-n 將 rsh 的輸入重定向到 NULL。

 

command 指定要運行的命令。

 

__________________________________________________________________________________

 

Tftp 將文件傳輸到正在運行 TFTP 服務的遠程計算機或從正在運行 TFTP 服務的遠

 

程計算機傳輸文件。該命令只有在安裝了 TCP/IP 協議後纔可以使用。 tftp [-i] computer [get | put] source [destination]

 

參數

 

-i 指定二進制圖像傳送模式(也稱爲“八位字節”)。在二進制圖像模式中,文件一

 

個字節接一個字節地逐字移動。在傳送二進制文件時使用該模式。

 

如果省略了 -i,文件將以 ASCII 模式傳送。這是默認的傳送模式。此模式將 EOL 字符轉換爲 UNIX 的回車符和個人計算機的回車符/換行符。在傳送文本文件時應使用此模式。如果文件傳送成功,將顯示數據傳輸率。

 

computer 指定本地或遠程計算機。

 

put 將本地計算機上的文件 destination 傳送到遠程計算機上的文件 source。

 

get 將遠程計算機上的文件 destination 傳送到本地計算機上的文件 source。

 

如果將本地計算機上的文件 file-two 傳送到遠程計算機上的文件 file-one,請指定 put。如果將遠程計算機上的文件 file-two 傳送到遠程計算機上的文件 file-one,請指定 get。因爲 tftp 協議不支持用戶身份驗證,所以用戶必須登錄,並且文件在遠程計算機上必須可以寫入。

 

source 指定要傳送的文件。如果本地文件指定爲 -,則遠程文件在 stdout 上打印出來

 

(如果獲取),或從 stdin(如果放置)讀取。

 

destination 指定將文件傳送到的位置。如果省略了 destination,將假定與 source 同名。

 

________________________________________________________________________________

 

Tracert 該診斷實用程序將包含不同生存時間 (TTL) 值的 Internet 控制消息協議

 

(ICMP) 回顯數據包發送到目標,以決定到達目標採用的路由。要在轉發數據包上

 

的 TTL 之前至少遞減 1,必需路徑上的每個路由器,所以 TTL 是有效的躍點計

 

數。數據包上的 TTL 到達 0 時,路由器應該將“ICMP 已超時”的消息發送回源系

 

統。Tracert 先發送 TTL 爲 1 的回顯數據包,並在隨後的每次發送過程將 TTL

 

遞增 1,直到目標響應或 TTL 達到最大值,從而確定路由。路由通過檢查中級

 

路由器發送回的“ICMP 已超時”的消息來確定路由。不過,有些路由器悄悄地下傳

 

包含過期 TTL 值的數據包,而 tracert 看不到。

 

tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name

 

參數

 

/d 指定不將地址解析爲計算機名。

 

-h maximum_hops 指定搜索目標的最大躍點數。

 

-j computer-list 指定沿 computer-list 的稀疏源路由。

 

-w timeout 每次應答等待 timeout 指定的微秒數。

 

target_name 目標計算機的名稱。

 

DOS下恢復上5次註冊表命令

 

Scanreg/restore

 

 

 

 

 

 

 

 

 

 

 

 

 


FTP命令

 

FTP命令是Internet用戶使用最頻繁的命令之一,熟悉並靈活應用FTP的內部命令,可以大大方便使用者,並收到事半功倍之效。

 

如果你想學習使用進行後臺FTP下載,那麼就必須學習FTP指令。

 

FTP的命令行格式爲: ftp -v -d -i -n -g [主機名] ,

 

其中 -v 顯示遠程服務器的所有響應信息;

 

-n 限制ftp的自動登錄,即不使用;.n etrc文件;

 

-d 使用調試方式;

 

-g 取消全局文件名。

 

FTP使用的內部命令如下(中括號表示可選項):

 

1.![cmd[args>:在本地機中執行交互shell,exit回到ftp環境,如:!ls*.zip

 

2.$ macro-ame[args]: 執行宏定義macro-name。

 

3.account[password]: 提供登錄遠程系統成功後訪問系統資源所需的補充口令。

 

4.append local-file[remote-file]:將本地文件追加到遠程系統主機,若未指定遠程系統文件名,則使用本地文件名。

 

5.ascii:使用ascii類型傳輸方式。

 

6.bell:每個命令執行完畢後計算機響鈴一次。

 

7.bin:使用二進制文件傳輸方式。

 

8.bye:退出ftp會話過程。

 

9.case:在使用mget時,將遠程主機文件名中的大寫轉爲小寫字母。

 

10.cd remote-dir:進入遠程主機目錄。

 

11.cdup:進入遠程主機目錄的父目錄。

 

12.chmod mode file-name:將遠程主機文件file-name的存取方式設置爲mode,如:chmod 777 a.out。

 

13.close:中斷與遠程服務器的ftp會話(與open對應)。

 

14.cr:使用asscii方式傳輸文件時,將回車換行轉換爲回行。

 

15.delete remote-file:刪除遠程主機文件。

 

16.debug[debug-value]:設置調試方式, 顯示發送至遠程主機的每條命令,如:deb up 3,若設爲0,表示取消debug。

 

17.dir[remote-dir][local-file]:顯示遠程主機目錄,並將結果存入本地文件

 

18.disconnection:同close。

 

19.form format:將文件傳輸方式設置爲format,缺省爲file方式。

 

20.get remote-file[local-file]: 將遠程主機的文件remote-file傳至本地硬盤的local-file。

 

21.glob:設置mdelete,mget,mput的文件名擴展,缺省時不擴展文件名,同命令行的-g參數。

 

22.hash:每傳輸1024字節,顯示一個hash符號(#)。

 

23.help[cmd]:顯示ftp內部命令cmd的幫助信息,如:help get。

 

24.idle[seconds]:將遠程服務器的休眠計時器設爲[seconds]秒。

 

25.image:設置二進制傳輸方式(同binary)。

 

26.lcd[dir]:將本地工作目錄切換至dir。

 

27.ls[remote-dir][local-file]:顯示遠程目錄remote-dir, 並存入本地文件local-file。

 

28.macdef macro-name:定義一個宏,遇到macdef下的空行時,宏定義結束。

 

29.mdelete[remote-file]:刪除遠程主機文件。

 

30.mdir remote-files local-file:與dir類似,但可指定多個遠程文件,如 :mdir *.o.*.zipoutfile 。

 

31.mget remote-files:傳輸多個遠程文件。

 

32.mkdir dir-name:在遠程主機中建一目錄。

 

33.mls remote-file local-file:同nlist,但可指定多個文件名。

 

34.mode[modename]:將文件傳輸方式設置爲modename, 缺省爲stream方式。

 

35.modtime file-name:顯示遠程主機文件的最後修改時間。

 

36.mput local-file:將多個文件傳輸至遠程主機。

 

37.newer file-name: 如果遠程機中file-name的修改時間比本地硬盤同名文件的時間更近,則重傳該文件。

 

38.nlist[remote-dir][local-file]:顯示遠程主機目錄的文件清單,並存入本地硬盤的local-file。

 

39.nmap[inpattern outpattern]:設置文件名映射機制, 使得文件傳輸時,文件中的某些字符相互轉換, 如:nmap $1.$2.$3[$1,$2].[$2,$3],則傳輸文件a1.a2.a3時,文件名變爲a1,a2。 該命令特別適用於遠程主機爲非UNIX機的情況。

 

40.ntrans[inchars[outchars>:設置文件名字符的翻譯機制,如ntrans1R,則文件名LLL將變爲RRR。

 

41.open host[port]:建立指定ftp服務器連接,可指定連接端口。

 

42.passive:進入被動傳輸方式。

 

43.prompt:設置多個文件傳輸時的交互提示。

 

44.proxy ftp-cmd:在次要控制連接中,執行一條ftp命令, 該命令允許連接兩個ftp服務器,以在兩個服務器間傳輸文件。第一條ftp命令必須爲open,以首先建立兩個服務器間的連接。

 

45.put local-file[remote-file]:將本地文件local-file傳送至遠程主機。

 

46.pwd:顯示遠程主機的當前工作目錄。

 

47.quit:同bye,退出ftp會話。

 

48.quote arg1,arg2...:將參數逐字發至遠程ftp服務器,如:quote syst.

 

49.recv remote-file[local-file]:同get。

 

50.reget remote-file[local-file]:類似於get, 但若local-file存在,則從上次傳輸中斷處續傳。

 

51.rhelp[cmd-name]:請求獲得遠程主機的幫助。

 

52.rstatus[file-name]:若未指定文件名,則顯示遠程主機的狀態, 否則顯示文件狀態。

 

53.rename[from][to]:更改遠程主機文件名。

 

54.reset:清除回答隊列。

 

55.restart marker:從指定的標誌marker處,重新開始get或put,如:restart 130。

 

56.rmdir dir-name:刪除遠程主機目錄。

 

57.runique:設置文件名只一性存儲,若文件存在,則在原文件後加後綴.1, .2等。

 

58.send local-file[remote-file]:同put。

 

59.sendport:設置PORT命令的使用。

 

60.site arg1,arg2...:將參數作爲SITE命令逐字發送至遠程ftp主機。

 

61.size file-name:顯示遠程主機文件大小,如:site idle 7200。

 

62.status:顯示當前ftp狀態。

 

63.struct[struct-name]:將文件傳輸結構設置爲struct-name, 缺省時使用stream結構。

 

64.sunique:將遠程主機文件名存儲設置爲只一(與runique對應)。

 

65.system:顯示遠程主機的操作系統類型。

 

66.tenex:將文件傳輸類型設置爲TENEX機的所需的類型。

 

67.tick:設置傳輸時的字節計數器。

 

68.trace:設置包跟蹤。

 

69.type[type-name]:設置文件傳輸類型爲type-name,缺省爲ascii,如:type binary,設置二進制傳輸方式。

 

70.umask[newmask]:將遠程服務器的缺省umask設置爲newmask,如:umask 3

 

71.user user-name[password][account]:向遠程主機表明自己的身份,需要口令時,必須輸入口令,如:user anonymous my@email

 

72.verbose:同命令行的-v參數,即設置詳盡報告方式,ftp 服務器的所有響 應都將顯示給用戶,缺省爲on.

 

73.?[cmd]:同help.

 

那麼如何應用這些命令提高效率呢?下面我舉一個例子,如何利用fttp進行
後臺下載,假設你的ISP給你提供了shell並且可以用nohup,你想由fttp.downlo
ad.com/pub/internet/下載一個30M的程序aaa.zip具體步驟如下:
1.用notepad做一個文件如aaa1內容如下
   open ftp.dwonload.com user an onymous [email protected]
cd /pub/internet/ i get aaa.zip close bye
2.撥號登錄到你的ISP上。
用telnet 或netterm登錄到shell,一般都在你的home子目錄裏bbs~/
3.用fttp上傳aaa1到ISP服務器你的子目錄。     
4. 執行nohup fttp -invd aaa2& 這樣這個進程就被放在ISP服務器的後臺進行了,
如果你想知道情況如何,可以more aaa2就可以知道情況如何了。這時你可以斷線了或乾點別的,
估計時間到了(time約=30M/(33.6K/9)s)撥號上去,more aaa2如果顯示成功下載aaa.zip,
就表示aaa.zip已經被下載到ISP的服務器上了,你再由ISP的服務器拉回來就相當與點對點了,
記得下載完成後del掉你的文件(aaa.zip),免得浪費ISP資源,它會關掉shell的。

 

 

 

 

 

 


ipc$命令

 

一 摘要
注意:本文所討論的各種情況均默認發生在win NT/2000環境下,win98將不在此次討論之列。

 


二 什麼是ipc$
IPC$(Internet Process Connection)是共享"命名管道"的資源,它是爲了讓進程間通信而開放的命名管道,通過提供可信任的用戶名和口令,連接雙方可以建立安全的通道並以此通道進行加密數據的交換,從而實現對遠程計算機的訪問。IPC$是NT/2000的一項新功能,它有一個特點,即在同一時間內,兩個IP之間只允許建立一個連接。NT/2000在提供了ipc$功能的同時,在初次安裝系統時還打開了默認共享,即所有的邏輯共享(c$,d$,e$……)和系統目錄winnt或windows(admin$)共享。所有的這些,微軟的初衷都是爲了方便管理員的管理,但在有意無意中,導致了系統安全性的降低。
平時我們總能聽到有人在說ipc$漏洞,ipc$漏洞,其實ipc$並不是一個真正意義上的漏洞,我想之所以有人這麼說,一定是指微軟自己安置的那個‘後門’:空會話(Null session)。那麼什麼是空會話呢?

 


三 什麼是空會話
在介紹空會話之前,我們有必要了解一下一個安全會話是如何建立的。
在Windows NT 4.0中是使用挑戰響應協議與遠程機器建立一個會話的,建立成功的會話將成爲一個安全隧道,建立雙方通過它互通信息,這個過程的大致順序如下:
1)會話請求者(客戶)向會話接收者(服務器)傳送一個數據包,請求安全隧道的建
立;
2)服務器產生一個隨機的64位數(實現挑戰)傳送回客戶;
3)客戶取得這個由服務器產生的64位數,用試圖建立會話的帳號的口令打亂它,將結
果返回到服務器(實現響應);
4)服務器接受響應後發送給本地安全驗證(LSA),LSA通過使用該用戶正確的口令來覈實響應以便確認請求者身份。如果請求者的帳號是服務器的本地帳號,覈實本地發生;如果請求的帳號是一個域的帳號,響應傳送到域控制器去核實。當對挑戰的響應覈實爲正確後,一個訪問令牌產生,然後傳送給客戶。客戶使用這個訪問令牌連接到服務器上的資源直到建議的會話被終止。
以上是一個安全會話建立的大致過程,那麼空會話又如何呢?

 

空會話是在沒有信任的情況下與服務器建立的會話(即未提供用戶名與密碼),但根據WIN2000的訪問控制模型,空會話的建立同樣需要提供一個令牌,可是空會話在建立過程中並沒有經過用戶信息的認證,所以這個令牌中不包含用戶信息,因此,這個會話不能讓系統間發送加密信息,但這並不表示空會話的令牌中不包含安全標識符SID(它標識了用戶和所屬組),對於一個空會話,LSA提供的令牌的SID是S-1-5-7,這就是空會話的SID,用戶名是:ANONYMOUS LOGON(這個用戶名是可以在用戶列表中看到的,但是是不能在SAM數據庫中找到,屬於系統內置的帳號),這個訪問令牌包含下面僞裝的組:
Everyone
Network
在安全策略的限制下,這個空會話將被授權訪問到上面兩個組有權訪問到的一切信息。那麼建立空會話到底可以作什麼呢?

 


四 空會話可以做什麼
對於NT,在默認安全設置下,藉助空連接可以列舉目標主機上的用戶和共享,訪問everyone權限的共享,訪問小部分註冊表等,並沒有什麼太大的利用價值;對2000作用更小,因爲在Windows 2000 和以後版本中默認只有管理員和備份操作員有權從網絡訪問到註冊表,而且實現起來也不方便,需藉助工具。
從這些我們可以看到,這種非信任會話並沒有多大的用處,但從一次完整的ipc$入侵來看,空會話是一個不可缺少的跳板,因爲我們從它那裏可以得到戶列表,而大多數弱口令掃描工具就是利用這個用戶列表來進行口令猜解的,成功的導出用戶列表大大增加了猜解的成功率,僅從這一點,足以說明空會話所帶來的安全隱患,因此說空會話毫無用處的說法是不正確的。以下是空會話中能夠使用的一些具體命令:

 


1 首先,我們先建立一個空連接(當然,這需要目標開放ipc$)
命令:net use //ip/ipc$ "" /user:""
注意:上面的命令包括四個空格,net與use中間有一個空格,use後面一個,密碼左右各一個空格。

 


2 查看遠程主機的共享資源
命令:net view //ip
解釋:前提是建立了空連接後,用此命令可以查看遠程主機的共享資源,如果它開了共享,可以得到如下面的結果,但此命令不能顯示默認共享。

 

在 //*.*.*.*的共享資源
資源共享名 類型 用途 註釋

 

-----------------------------------------------------------
NETLOGON Disk Logon server share
SYSVOL Disk Logon server share
命令成功完成。

 

3 查看遠程主機的當前時間
命令: net time //ip
解釋:用此命令可以得到一個遠程主機的當前時間。

 


4 得到遠程主機的NetBIOS用戶名列表(需要打開自己的NBT)
命令:nbtstat -A ip
用此命令可以得到一個遠程主機的NetBIOS用戶名列表,返回如下結果:

 

Node IpAddress: [*.*.*.*] Scope Id: []

 

NetBIOS Remote Machine Name Table

 

Name Type Status
---------------------------------------------
SERVER <00> UNIQUE Registered
OYAMANISHI-H <00> GROUP Registered
OYAMANISHI-H <1C> GROUP Registered
SERVER <20> UNIQUE Registered
OYAMANISHI-H <1B> UNIQUE Registered
OYAMANISHI-H <1E> GROUP Registered
SERVER <03> UNIQUE Registered
OYAMANISHI-H <1D> UNIQUE Registered
..__MSBROWSE__.<01> GROUP Registered
INet~Services <1C> GROUP Registered
IS~SERVER......<00> UNIQUE Registered

 

MAC Address = 00-50-8B-9A-2D-37

 


以上就是我們經常使用空會話做的事情,好像也能獲得不少東西喲,不過要注意一點:建立IPC$連接的操作會在Event Log中留下記錄,不管你是否登錄成功。 好了,那麼下面我們就來看看ipc$所使用的端口是什麼?

 


五 ipc$所使用的端口
首先我們來了解一些基礎知識:
1 SMB:(Server Message Block) Windows協議族,用於文件打印共享的服務;
2 NBT:(NETBios Over TCP/IP)使用137(UDP)138(UDP)139(TCP)端口實現基於TCP/IP協議的NETBIOS網絡互聯。
3 在WindowsNT中SMB基於NBT實現,即使用139(TCP)端口;而在Windows2000中,SMB除了基於NBT實現,還可以直接通過445端口實現。

 

有了這些基礎知識,我們就可以進一步來討論訪問網絡共享對端口的選擇了:

 

對於win2000客戶端(發起端)來說:
1 如果在允許NBT的情況下連接服務器時,客戶端會同時嘗試訪問139和445端口,如果445端口有響應,那麼就發送RST包給139端口斷開連接,用455端口進行會話,當445端口無響應時,才使用139端口,如果兩個端口都沒有響應,則會話失敗;
2 如果在禁止NBT的情況下連接服務器時,那麼客戶端只會嘗試訪問445端口,如果445端口無響應,那麼會話失敗。

 


對於win2000服務器端來說:
1 如果允許NBT, 那麼UDP端口137, 138, TCP 端口 139, 445將開放(LISTENING);
2 如果禁止NBT,那麼只有445端口開放。

 


我們建立的ipc$會話對端口的選擇同樣遵守以上原則。顯而易見,如果遠程服務器沒有監聽139或445端口,ipc$會話是無法建立的。

 


六 ipc管道在hack攻擊中的意義
ipc管道本來是微軟爲了方便管理員進行遠程管理而設計的,但在入侵者看來,開放ipc管道的主機似乎更容易得手。通過ipc管道,我們可以遠程調用一些系統函數(大多通過工具實現,但需要相應的權限),這往往是入侵成敗的關鍵。如果不考慮這些,僅從傳送文件這一方面,ipc管道已經給了入侵者莫大的支持,甚至已經成爲了最重要的傳輸手段,因此你總能在各大論壇上看到一些朋友因爲打不開目標機器的ipc管道而一籌莫展大呼救命。當然,我們也不能忽視權限在ipc管道中扮演的重要角色,想必你一定品嚐過空會話的尷尬,沒有權限,開啓管道我們也無可奈何。但入侵者一旦獲得了管理員的權限,那麼ipc管道這把雙刃劍將顯示出它猙獰的一面。

 


七 ipc$連接失敗的常見原因
以下是一些常見的導致ipc$連接失敗的原因:

 

1 IPC連接是Windows NT及以上系統中特有的功能,由於其需要用到Windows NT中很多DLL函數,所以不能在Windows 9.x/Me系統中運行,也就是說只有nt/2000/xp纔可以相互建立ipc$連接,98/me是不能建立ipc$連接的;

 


2 如果想成功的建立一個ipc$連接,就需要響應方開啓ipc$共享,即使是空連接也是這樣,如果響應方關閉了ipc$共享,將不能建立連接;

 


3 連接發起方未啓動Lanmanworkstation服務(顯示名爲:Workstation):它提供網絡鏈結和通訊,沒有它發起方無法發起連接請求;

 


4 響應方未啓動Lanmanserver服務(顯示名爲:Server):它提供了 RPC 支持、文件、打印以及命名管道共享,ipc$依賴於此服務,沒有它主機將無法響應發起方的連接請求,不過沒有它仍可發起ipc$連接;

 


5 響應方未啓動NetLogon,它支持網絡上計算機 pass-through 帳戶登錄身份(不過這種情況好像不多);

 


6 響應方的139,445端口未處於監聽狀態或被防火牆屏蔽;

 


7 連接發起方未打開139,445端口;

 


8 用戶名或者密碼錯誤:如果發生這樣的錯誤,系統將給你類似於'無法更新密碼'這樣的錯誤提示(顯然空會話排除這種錯誤);

 


9 命令輸入錯誤:可能多了或少了空格,當用戶名和密碼中不包含空格時兩邊的雙引號可以省略,如果密碼爲空,可以直接輸入兩個引號""即可;

 


10 如果在已經建立好連接的情況下對方重啓計算機,那麼ipc$連接將會自動斷開,需要重新建立連接。

 


另外,你也可以根據返回的錯誤號分析原因:

 

錯誤號5,拒絕訪問:很可能你使用的用戶不是管理員權限的;
錯誤號51,Windows無法找到網絡路徑:網絡有問題;
錯誤號53,找不到網絡路徑:ip地址錯誤;目標未開機;目標lanmanserver服務未啓動;目標有防火牆(端口過濾);
錯誤號67,找不到網絡名:你的lanmanworkstation服務未啓動或者目標刪除了ipc$;
錯誤號1219,提供的憑據與已存在的憑據集衝突:你已經和對方建立了一個ipc$,請刪除再連;
錯誤號1326,未知的用戶名或錯誤密碼:原因很明顯了;
錯誤號1792,試圖登錄,但是網絡登錄服務沒有啓動:目標NetLogon服務未啓動;
錯誤號2242,此用戶的密碼已經過期:目標有帳號策略,強制定期要求更改密碼。

 


八 複製文件失敗的原因
有些朋友雖然成功的建立了ipc$連接,但在copy時卻遇到了這樣那樣的麻煩,無法複製成功,那麼導致複製失敗的常見原因又有哪些呢?

 


1 對方未開啓共享文件夾
這類錯誤出現的最多,佔到50%以上。許多朋友在ipc$連接建立成功後,甚至都不知道對方是否有共享文件夾,就進行盲目複製,結果導致複製失敗而且鬱悶的很。因此我建議大家在進行復制之前務必用net view //IP這個命令看一下你想要複製的共享文件夾是否存在(用軟件查看當然更好),不要認爲能建立ipc$連接就一定有共享文件夾存在。

 


2 向默認共享複製失敗
這類錯誤也是大家經常犯的,主要有兩個小方面:

 

1)錯誤的認爲能建立ipc$連接的主機就一定開啓了默認共享,因而在建立完連接之後馬上向c$,d$,admin$之類的默認共享複製文件,一旦對方未開啓默認共享,將導致複製失敗。ipc$連接成功只能說明對方打開了ipc$共享,並不能說明默認共享一定存在。ipc$共享與默認共享是兩碼事,ipc$共享是一個命名管道,並不是哪個實際的文件夾,而默認共享卻是實實在在的共享文件夾;

 

2)由於net view //IP 這個命令無法顯示默認共享文件夾(因爲默認共享帶$),因此通過這個命令,我們並不能判斷對方是否開啓了默認共享,因此如果對方未開啓默認共享,那麼所有向默認共享進行的操作都不能成功;(不過大部分掃描軟件在掃弱口令的同時,都能掃到默認共享目錄,可以避免此類錯誤的發生)

 

要點:請大家一定區分ipc共享,默認共享,普通共享這三者的區別:ipc共享是一個管道,並不是實際的共享文件夾;默認共享是安裝時默認打開的文件夾;普通共享是我們自己開啓的可以設置權限的共享文件夾。

 


3用戶權限不夠,包括四種情形:
1)空連接向所有共享(默認共享和普通共享)複製時,權限是不夠的;
2)向默認共享複製時,在Win2000 Pro版中,只有Administrators和Backup Operators組成員纔可以,在Win2000 Server版本 Server Operatros組也可以訪問到這些共享目錄;
3)向普通共享複製時,要具有相應權限(即對方管理員事先設定的訪問權限);
4)對方可以通過防火牆或安全軟件的設置,禁止外部訪問共享;

 

注意:
1 不要認爲administrator就一定具有管理員權限,管理員名稱是可以改的
2 管理員可以訪問默認共享的文件夾,但不一定能夠訪問普通的共享文件夾,因爲管理員可以對普通的共享文件夾進行訪問權限設置,如圖6,管理員爲D盤設置的訪問權限爲僅允許名爲xinxin的用戶對該文件夾進行完全訪問,那麼此時即使你擁有管理員權限,你仍然不能訪問D盤。不過有意思的是,如果此時對方又開啓了D$的默認共享,那麼你卻可以訪問D$,從而繞過了權限限制,有興趣的朋友可以自己做測試。

 


4被防火牆殺死或在局域網
還有一種情況,那就是也許你的複製操作已經成功,但當遠程運行時,被防火牆殺掉了,導致找不到文件;或者你把木馬複製到了局域網內的主機,導致連接失敗(反向連接的木馬不會發生這種情況)。如果你沒有想到這種情況,你會以爲是複製上出了問題,但實際你的複製操作已經成功了,只是運行時出了問題。

 


呵呵,大家也知道,ipc$連接在實際操作過程中會出現各種各樣的問題,上面我所總結的只是一些常見錯誤,沒說到的,大家可以給我提個醒兒。

 


九 關於at命令和xp對ipc$的限制
本來還想說一下用at遠程運行程序失敗的原因,但考慮到at的成功率不是很高,問題也很多,在這裏就不提它了(提的越多,用的人就越多),而是推薦大家用p***ec.exe遠程運行程序,假設想要遠程機器執行本地c:/xinxin.exe文件,且管理員爲administrator,密碼爲1234,那麼輸入下面的命令:
p***ec //ip -u administrator -p 1234 -c c:/xinxin.exe
如果已經建立ipc連接,則-u -p這兩個參數不需要,p***ec.exe將自動拷貝文件到遠程機器並運行。

 

本來xp中的ipc$也不想在這裏討論,想單獨拿出來討論,但看到越來越多的朋友很急切的提問爲什麼遇到xp的時候,大部分操作都很難成功。我在這裏就簡單提一下吧,在xp的默認安全選項中,任何遠程訪問僅被賦予來賓權限,也就是說即使你是用管理員帳戶和密碼,你所得到的權限也只是Guest,因此大部分操作都會因爲權限不夠而失敗,而且到目前爲止並沒有一個好的辦法來突破這一限制。所以如果你真的得到了xp的管理員密碼,我建議你儘量避開ipc管道。

 


十 如何打開目標的IPC$共享以及其他共享
目標的ipc$不是輕易就能打開的,否則就要天下打亂了。你需要一個admin權限的shell,比如telnet,木馬,cmd重定向等,然後在shell下執行:
net share ipc$
開放目標的ipc$共享;
net share ipc$ /del
關閉目標的ipc$共享;如果你要給它開共享文件夾,你可以用:
net share xinxin=c:/
這樣就把它的c盤開爲共享名爲xinxin共享文件夾了。(可是我發現很多人錯誤的認爲開共享文件夾的命令是net share c$,還大模大樣的給菜鳥指指點點,真是誤人子弟了)。再次聲明,這些操作都是在shell下才能實現的。

 


十一 一些需要shell才能完成的命令
看到很多教程這方面寫的十分不準確,一些需要shell才能完成命令就簡簡單單的在ipc$連接下執行了,起了誤導作用。那麼下面我總結一下需要在shell才能完成的命令:

 

1 向遠程主機建立用戶,激活用戶,修改用戶密碼,加入管理組的操作需要在shell下完成;

 

2 打開遠程主機的ipc$共享,默認共享,普通共享的操作需要在shell下完成;

 

3 運行/關閉遠程主機的服務,需要在shell下完成;

 

4 啓動/殺掉遠程主機的進程,也需要在shell下完成(用軟件的情況下除外,如pskill)。

 


十二 入侵中可能會用到的命令
爲了這份教程的完整性,我列出了ipc$入侵中的一些常用命令,如果你已經掌握了這些命令,你可以跳過這一部分看下面的內容。請注意這些命令是適用於本地還是遠程,如果只適用於本地,你只能在獲得遠程主機的shell(如cmd,telnet等)後,才能向遠程主機執行。

 


1 建立/刪除ipc$連接的命令

 

1)建立空連接:
net use //127.0.0.1/ipc$ "" /user:""

 

2)建立非空連接:
net use //127.0.0.1/ipc$ "密碼" /user:"用戶名"

 

3)刪除連接:
net use //127.0.0.1/ipc$ /del

 


2 在ipc$連接中對遠程主機的操作命令

 

1) 查看遠程主機的共享資源(看不到默認共享):
net view //127.0.0.1

 

2) 查看遠程主機的當前時間:
net time //127.0.0.1

 

3) 得到遠程主機的netbios用戶名列表:
nbtstat -A 127.0.0.1

 

4)映射/刪除遠程共享:
net use z: //127.0.0.1/c
此命令將共享名爲c的共享資源映射爲本地z盤

 

net use z: /del
刪除映射的z盤,其他盤類推

 

5)向遠程主機複製文件:
copy 路徑/文件名 //IP/共享目錄名,如:
copy c:/xinxin.exe //127.0.0.1/c$ 即將c盤下的xinxin.exe複製到對方c盤內
當然,你也可以把遠程主機上的文件複製到自己的機器裏:
copy //127.0.0.1/c$/xinxin.exe c:/

 

6)遠程添加計劃任務:
at //IP 時間 程序名 如:
at //127.0.0.0 11:00 xinxin.exe
注意:時間儘量使用24小時制;如果你打算運行的程序在系統默認搜索路徑(比如system32/)下則不用加路徑,否則必須加全路徑

 


3 本地命令

 

1)查看本地主機的共享資源(可以看到本地的默認共享)
net share

 

2)得到本地主機的用戶列表
net user

 

3)顯示本地某用戶的帳戶信息
net user 帳戶名

 

4)顯示本地主機當前啓動的服務
net start

 

5)啓動/關閉本地服務
net start 服務名
net stop 服務名

 

6)在本地添加帳戶
net user 帳戶名 密碼 /add

 

7)激活禁用的用戶
net uesr 帳戶名 /active:yes

 

8)加入管理員組
net localgroup administrators 帳戶名 /add

 

很顯然的是,雖然這些都是本地命令,但如果你在遠程主機的shell中輸入,比如你telnet成功後輸入上面這些命令,那麼這些本地輸入將作用在遠程主機上。

 


4 其他一些命令
1)telnet
telnet IP 端口
telnet 127.0.0.0 23

 

2)用opentelnet.exe開啓遠程主機的telnet
OpenTelnet.exe //ip 管理員帳號 密碼 NTLM的認證方式 port
OpenTelnet.exe //127.0.0.1 administrator "" 1 90
不過這個小工具需要滿足四個要求:
1)目標開啓了ipc$共享
2)你要擁有管理員密碼和帳號
3)目標開啓RemoteRegistry服務,用戶就可以更改ntlm認證
4)對僅WIN2K/XP有效

 

3)用p***ec.exe一步獲得shell,需要ipc管道支持
p***ec.exe //IP -u 管理員帳號 -p 密碼 cmd
p***ec.exe //127.0.0.1 -u administrator -p "" cmd

 


十三 對比過去和現今的ipc$入侵
既然是對比,那麼我就先把過去的ipc$入侵步驟寫給大家,都是蠻經典的步驟:

 

[1]
C:/>net

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章