ping
ping是個使用頻率極高的實用程序,用于確定本地主機是否能與另一臺主機交換(發送與接收)數據報。根據返回的信息,你就可以推斷TCP/IP參數是否設置得正確以及運行是否正常。需要注意的是:成功地與另一臺主機進行一次或兩次數據報交換并不表示TCP/IP配置就是正確的,我們必須執行大量的本地主機與遠程主機的數據報交換,才能確信TCP/IP的正確性。
簡單的說,Ping就是一個測試程序,如果Ping運行正確,你大體上就可以排除網絡訪問層、網卡、MODEM的輸入輸出線路、電纜和路由器等存在的故障,從而減小了問題的范圍。但由于可以自定義所發數據報的大小及無休止的高速發送,Ping也被某些別有用心的人作為DDOS(拒絕服務攻擊)的工具,前段時間Yahoo就是被黑客利用數百臺可以高速接入互聯網的電腦連續發送大量Ping數據報而癱瘓的。
按照缺省設置,Windows上運行的Ping命令發送4個ICMP(網間控制報文協議)回送請求,每個32字節數據,如果一切正常,你應能得到4個回送應答。
Ping能夠以毫秒為單位顯示發送回送請求到返回回送應答之間的時間量。如果應答時間短,表示數據報不必通過太多的路由器或網絡連接速度比較快。Ping還能顯示TTL(Time To Live存在時間)值,你可以通過TTL值推算一下數據包已經通過了多少個路由器:源地點TTL起始值(就是比返回TTL略大的一個2的乘方數)-返回時TTL值。例如,返回TTL值為119,那么可以推算數據報離開源地址的TTL起始值為128,而源地點到目標地點要通過9個路由器網段(128-119);如果返回TTL值為246,TTL起始值就是256,源地點到目標地點要通過9個路由器網段。
通過Ping檢測網絡故障的典型次序
正常情況下,當你使用Ping命令來查找問題所在或檢驗網絡運行情況時,你需要使用許多Ping命令,如果所有都運行正確,你就可以相信基本的連通性和配置參數沒有問題;如果某些Ping命令出現運行故障,它也可以指明到何處去查找問題。下面就給出一個典型的檢測次序及對應的可能故障:
ping 127.0.0.1——這個Ping命令被送到本地計算機的IP軟件,該命令永不退出該計算機。如果沒有做到這一點,就表示TCP/IP的安裝或運行存在某些最基本的問題。
ping 本機IP——這個命令被送到你計算機所配置的IP地址,你的計算機始終都應該對該Ping命令作出應答,如果沒有,則表示本地配置或安裝存在問題。出現此問題時,局域網用戶請斷開網絡電纜,然后重新發送該命令。如果網線斷開后本命令正確,則表示另一臺計算機可能配置了相同的IP地址。
ping 局域網內其他IP——這個命令應該離開你的計算機,經過網卡及網絡電纜到達其他計算機,再返回。收到回送應答表明本地網絡中的網卡和載體運行正確。但如果收到0個回送應答,那么表示子網掩碼(進行子網分割時,將IP地址的網絡部分與主機部分分開的代碼)不正確或網卡配置錯誤或電纜系統有問題。
ping 網關IP——這個命令如果應答正確,表示局域網中的網關路由器正在運行并能夠作出應答。
ping 遠程IP——如果收到4個應答,表示成功的使用了缺省網關。對于撥號上網用戶則表示能夠成功的訪問Internet(但不排除ISP的DNS會有問題)。
ping localhost——localhost是個操作系統的網絡保留名,它是127.0.0.1的別名,每臺計算機都應該能夠將該名字轉換成該地址。如果沒有做到這一帶內,則表示主機文件(/Windows/host)中存在問題。
ping www.yahoo.com——對這個域名執行Ping命令,你的計算機必須先將域名轉換成IP地址,通常是通過DNS服務器。如果這里出現故障,則表示DNS服務器的IP地址配置不正確或DNS服務器有故障(對于撥號上網用戶,某些ISP已經不需要設置DNS服務器了)。順便說一句:你也可以利用該命令實現域名對IP地址的轉換功能。
如果上面所列出的所有Ping命令都能正常運行,那么你對你的計算機進行本地和遠程通信的功能基本上就可以放心了。但是,這些命令的成功并不表示你所有的網絡配置都沒有問題,例如,某些子網掩碼錯誤就可能無法用這些方法檢測到。
Ping命令的常用參數選項
-t 表示將不間斷向目標IP發送數據包,直到我們強迫其停止(Ctrl+C)。試想,如果你使用100M的寬帶接入,而目標IP是56K的小貓,那么要不了多久,目標IP就因為承受不了這么多的數據而掉線,呵呵,一次攻擊就這么簡單的實現了。
-l 定義發送數據包的大小,默認為32字節,我們利用它可以最大定義到65500字節。結合上面介紹的-t參數一起使用,會有更好的效果。
-n 定義向目標IP發送數據包的次數,默認為3次。如果網絡速度比較慢,3次對我們來說也浪費了不少時間,因為現在我們的目的僅僅是判斷目標IP是否存在,那么就定義為一次吧。
說明一下,如果-t 參數和 -n參數一起使用,ping命令就以放在后面的參數為標準,比如“ping IP -t -n 3”,雖然使用了-t參數,但并不是一直ping下去,而是只ping 3次。另外,ping命令不一定非得ping IP,也可以直接ping主機域名,這樣就可以得到主機的IP。
從TTL的返回值可以初步判斷被ping主機的操作系統,之所以說“初步判斷”是因為這個值是可以修改的。這里TTL=32表示操作系統可能是win98。
(小知識:如果TTL=128,則表示目標主機可能是Win2000;如果TTL=250,則目標主機可能是Unix)
Netstat
Netstat用于顯示與IP、TCP、UDP和ICMP協議相關的統計數據,一般用于檢驗本機各端口的網絡連接情況。
如果你的計算機有時候接受到的數據報會導致出錯數據刪除或故障,你不必感到奇怪,TCP/IP可以容許這些類型的錯誤,并能夠自動重發數據報。但如果累計的出錯情況數目占到所接收的IP數據報相當大的百分比,或者它的數目正迅速增加,那么你就應該使用Netstat查一查為什么會出現這些情況了。
Netstat的一些常用選項:
這是一個用來查看網絡狀態的命令,操作簡便功能強大。
netstat -s——本選項能夠按照各個協議分別顯示其統計數據。如果你的應用程序(如Web瀏覽器)運行速度比較慢,或者不能顯示Web頁之類的數據,那么你就可以用本選項來查看一下所顯示的信息。你需要仔細查看統計數據的各行,找到出錯的關鍵字,進而確定問題所在。
netstat -e——本選項用于顯示關于以太網的統計數據。它列出的項目包括傳送的數據報的總字節數、錯誤數、刪除數、數據報的數量和廣播的數量。這些統計數據既有發送的數據報數量,也有接收的數據報數量。這個選項可以用來統計一些基本的網絡流量。
netstat -r——本選項可以顯示關于路由表的信息,類似于后面所講使用route print命令時看到的信息。除了顯示有效路由外,還顯示當前有效的連接。告訴我們機器的網關、子網掩碼等信息。
netstat -a——本選項顯示一個所有的有效連接信息列表,即查看所有開放端口,包括已建立的連接(ESTABLISHED),也包括監聽連接請求(LISTENING)的那些連接。可以有效發現和預防木馬,可以知道機器所開的服務等信息。
netstat -n——顯示所有已建立的有效連接。
Netstat的妙用
經常上網的人一般都使用ICQ的,不知道你有沒有被一些討厭的人騷擾得不敢上線,想投訴卻又不知從何下手?其實,你只要知道對方的IP,就可以向他所屬的ISP投訴了。但怎樣才能通過ICQ知道對方的IP呢?如果對方在設置ICQ時選擇了不顯示IP地址,那你是無法在信息欄中看到的。其實,你只需要通過Netstat就可以很方便的做到這一點:當他通過ICQ或其他的工具與你相連時(例如你給他發一條ICQ信息或他給你發一條信息),你立刻在DOS Prompt下輸入netstat -n或netstat -a就可以看到對方上網時所用的IP或ISP域名了。甚至連所用Port都完全暴露了,如果你想給他一些教訓,這些信息已經足夠……
IPConfig
IPConfig實用程序和它的等價圖形用戶界面——Windows 95/98中的WinIPCfg可用于顯示當前的TCP/IP配置的設置值。這些信息一般用來檢驗人工配置的TCP/IP設置是否正確。但是,如果你的計算機和所在的局域網使用了動態主機配置協議(Dynamic Host Configuration Protocol,DHCP——Windows NT下的一種把較少的IP地址分配給較多主機使用的協議,類似于撥號上網的動態IP分配),這個程序所顯示的信息也許更加實用。這時,IPConfig可以讓你了解你的計算機是否成功的租用到一個IP地址,如果租用到則可以了解它目前分配到的是什么地址。了解計算機當前的IP地址、子網掩碼和缺省網關實際上是進行測試和故障分析的必要項目。
最常用的選項:
ipconfig——當使用IPConfig時不帶任何參數選項,那么它為每個已經配置了的接口顯示IP地址、子網掩碼和缺省網關值。
ipconfig /all——當使用all選項時,IPConfig能為DNS和WINS服務器顯示它已配置且所要使用的附加信息(如IP地址等),并且顯示內置于本地網卡中的物理地址(MAC)。如果IP地址是從DHCP服務器租用的,IPConfig將顯示DHCP服務器的IP地址和租用地址預計失效的日期(有關DHCP服務器的相關內容請詳見其他有關NT服務器的書籍或詢問你的網管),其輸出信息見圖6的下半部分。
ipconfig /release和ipconfig /renew——這是兩個附加選項,只能在向DHCP服務器租用其IP地址的計算機上起作用。如果你輸入ipconfig /release,那么所有接口的租用IP地址便重新交付給DHCP服務器(歸還IP地址)。如果你輸入ipconfig /renew,那么本地計算機便設法與DHCP服務器取得聯系,并租用一個IP地址。請注意,大多數情況下網卡將被重新賦予和以前所賦予的相同的IP地址。
如果你使用的是Windows 95/98,那么你應該更習慣使用winipcfg而不是ipconfig,因為它是一個圖形用戶界面,而且所顯示的信息與ipconfig相同,并且也提供發布和更新動態IP地址的選項(見圖7,全部詳細資料見圖8)。如果你購買了Windows NT Resource Kit(NT資源包),那么Windows NT也包含了一個圖形替代界面,該實用程序的名字是wntipcfg,和Windows 95/98的winipcfg類似。
ARP(地址轉換協議)
ARP是一個重要的TCP/IP協議,并且用于確定對應IP地址的網卡物理地址。實用arp命令,你能夠查看本地計算機或另一臺計算機的ARP高速緩存中的當前內容。此外,使用arp命令,也可以用人工方式輸入靜態的網卡物理/IP地址對,你可能會使用這種方式為缺省網關和本地服務器等常用主機進行這項操作,有助于減少網絡上的信息量。
按照缺省設置,ARP高速緩存中的項目是動態的,每當發送一個指定地點的數據報且高速緩存中不存在當前項目時,ARP便會自動添加該項目。一旦高速緩存的項目被輸入,它們就已經開始走向失效狀態。例如,在Windows NT網絡中,如果輸入項目后不進一步使用,物理/IP地址對就會在2至10分鐘內失效。因此,如果ARP高速緩存中項目很少或根本沒有時,請不要奇怪,通過另一臺計算機或路由器的ping命令即可添加。所以,需要通過arp命令查看高速緩存中的內容時,請最好先ping 此臺計算機(不能是本機發送ping命令)。
常用命令選項:
arp -a或arp -g——用于查看高速緩存中的所有項目。-a和-g參數的結果是一樣的,多年來-g一直是UNIX平臺上用來顯示ARP高速緩存中所有項目的選項,而Windows用的是arp -a(-a可被視為all,即全部的意思),但它也可以接受比較傳統的-g選項。
arp -a IP——如果你有多個網卡,那么使用arp -a加上接口的IP地址,就可以只顯示與該接口相關的ARP緩存項目。
arp -s IP 物理地址——你可以向ARP高速緩存中人工輸入一個靜態項目。該項目在計算機引導過程中將保持有效狀態,或者在出現錯誤時,人工配置的物理地址將自動更新該項目。
arp -d IP——使用本命令能夠人工刪除一個靜態項目。
Tracert
當數據報從你的計算機經過多個網關傳送到目的地時,Tracert命令可以用來跟蹤數據報使用的路由(路徑)。該實用程序跟蹤的路徑是源計算機到目的地的一條路徑,不能保證或認為數據報總遵循這個路徑。如果你的配置使用DNS,那么你常常會從所產生的應答中得到城市、地址和常見通信公司的名字。Tracert是一個運行得比較慢的命令(如果你指定的目標地址比較遠),每個路由器你大約需要給它15秒鐘。
Tracert的使用很簡單,只需要在tracert后面跟一個IP地址或URL,Tracert會進行相應的域名轉換的。Tracert一般用來檢測故障的位置,你可以用tracert IP在哪個環節上出了問題,雖然還是沒有確定是什么問題,但它已經告訴了我們問題所在的地方,你也就可以很有把握的告訴別人——某某出了問題。
Route
大多數主機一般都是駐留在只連接一臺路由器的網段上。由于只有一臺路由器,因此不存在使用哪一臺路由器將數據報發表到遠程計算機上去的問題,該路由器的IP地址可作為該網段上所有計算機的缺省網關來輸入。
但是,當網絡上擁有兩個或多個路由器時,你就不一定想只依賴缺省網關了。實際上你可能想讓你的某些遠程IP地址通過某個特定的路由器來傳遞,而其他的遠程IP則通過另一個路由器來傳遞。
在這種情況下,你需要相應的路由信息,這些信息儲存在路由表中,每個主機和每個路由器都配有自己獨一無二的路由表。大多數路由器使用專門的路由協議來交換和動態更新路由器之間的路由表。但在有些情況下,必須人工將項目添加到路由器和主機上的路由表中。Route就是用來顯示、人工添加和修改路由表項目的。
一般使用選項:
route print——本命令用于顯示路由表中的當前項目,在單路由器網段上的輸出結果如圖12,由于用IP地址配置了網卡,因此所有的這些項目都是自動添加的。
route add——使用本命令,可以將信路由項目添加給路由表。例如,如果要設定一個到目的網絡209.98.32.33的路由,其間要經過5個路由器網段,首先要經過本地網絡上的一個路由器,器IP為202.96.123.5,子網掩碼為255.255.255.224,那么你應該輸入以下命令:
route add 209.98.32.33 mask 255.255.255.224 202.96.123.5 metric 5
route change——你可以使用本命令來修改數據的傳輸路由,不過,你不能使用本命令來改變數據的目的地。下面這個例子可以將數據的路由改到另一個路由器,它采用一條包含3個網段的更直的路徑:
route add 209.98.32.33 mask 255.255.255.224 202.96.123.250 metric 3
route delete——使用本命令可以從路由表中刪除路由。例如:route delete 209.98.32.33
NBTStat
該命令使用TCP/IP上的NetBIOS顯示協議統計和當前TCP/IP連接,使用這個命令你可以得到遠程主機的NETBIOS信息,比如用戶名、所屬的工作組、網卡的MAC地址等。在此我們就有必要了解幾個基本的參數。
當得到了對方的IP或者機器名的時候,就可以使用nbtstat命令來進一步得到對方的信息了,這又增加了我們入侵的保險系數。
常用選項:
nbtstat -n——列出本地機器的NETBIOS信息(顯示寄存在本地的名字和服務程序)。
nbtstat -c——本命令用于顯示NetBIOS名字高速緩存的內容。NetBIOS名字高速緩存用于寸放與本計算機最近進行通信的其他計算機的NetBIOS名字和IP地址對。
nbtstat -r——本命令用于清除和重新加載NetBIOS名字高速緩存。
nbtstat -a IP——通過IP顯示另一臺計算機的物理地址和名字列表,你所顯示的內容就像對方計算機自己運行nbtstat -n一樣。
nbtstat -s IP——顯示實用其IP地址的另一臺計算機的NetBIOS連接表。
Net
這個命令是網絡命令中最重要的一個,必須透徹掌握它的每一個子命令的用法,因為它的功能實在是太強大了,這簡直就是微軟為我們提供的最好的入侵工具。首先讓我們來看一看它都有那些子命令,鍵入net /?回車。
在這里,我們重點掌握幾個入侵常用的子命令。
net view
使用此命令查看遠程主機的所以共享資源。命令格式為net view \\IP。
net use
把遠程主機的某個共享資源影射為本地盤符,圖形界面方便使用,呵呵。命令格式為net use x: \\IP\sharename。下面表示和192.168.0.7建立IPC$連接(net use \\IP\IPC$ "password" /user:"name"),
建立了IPC$連接后,呵呵,就可以上傳文件了:copy nc.exe \\192.168.0.7\admin$,表示把本地目錄下的nc.exe傳到遠程主機,結合后面要介紹到的其他DOS命令就可以實現入侵了。
net start
使用它來啟動遠程主機上的服務。當你和遠程主機建立連接后,如果發現它的什么服務沒有啟動,而你又想利用此服務怎么辦?就使用這個命令來啟動吧。用法:net start servername,如啟動telnet服務等。
net stop
入侵后發現遠程主機的某個服務礙手礙腳,怎么辦?利用這個命令停掉就ok了,用法和net start同。
net user
查看和帳戶有關的情況,包括新建帳戶、刪除帳戶、查看特定帳戶、激活帳戶、帳戶禁用等。這對我們入侵是很有利的,最重要的,它為我們克隆帳戶提供了前提。鍵入不帶參數的net user,可以查看所有用戶,包括已經禁用的。下面分別講解。
1,net user abcd 1234 /add,新建一個用戶名為abcd,密碼為1234的帳戶,默認為user組成員。
2,net user abcd /del,將用戶名為abcd的用戶刪除。
3,net user abcd /active:no,將用戶名為abcd的用戶禁用。
4,net user abcd /active:yes,激活用戶名為abcd的用戶。
5,net user abcd,查看用戶名為abcd的用戶的情況
net localgroup
查看所有和用戶組有關的信息和進行相關操作。鍵入不帶參數的net localgroup即列出當前所有的用戶組。在入侵過程中,我們一般利用它來把某個帳戶提升為administrator組帳戶,這樣我們利用這個帳戶就可以控制整個遠程主機了。用法:net localgroup groupname username /add。
net time
這個命令可以查看遠程主機當前的時間。如果你的目標只是進入到遠程主機里面,那么也許就用不到這個命令了。但簡單的入侵成功了,難道只是看看嗎?我們需要進一步滲透。這就連遠程主機當前的時間都需要知道,因為利用時間和其他手段可以實現某個命令和程序的定時啟動,為我們進一步入侵打好基礎。用法:net time \\IP。
at
這個命令的作用是安排在特定日期或時間執行某個特定的命令和程序(知道net time的重要了吧?)。當我們知道了遠程主機的當前時間,就可以利用此命令讓其在以后的某個時間(比如2分鐘后)執行某個程序和命令。用法:at time command \\computer。
ftp
大家對這個命令應該比較熟悉了吧?網絡上開放的ftp的主機很多,其中很大一部分是匿名的,也就是說任何人都可以登陸上去。現在如果你掃到了一臺開放ftp服務的主機(一般都是開了21端口的機器),如果你還不會使用ftp的命令怎么辦?下面就給出基本的ftp命令使用方法。
首先在命令行鍵入ftp回車,出現ftp的提示符,這時候可以鍵入“help”來查看幫助(任何DOS命令都可以使用此方法查看其幫助)。
大家可能看到了,這么多命令該怎么用?其實也用不到那么多,掌握幾個基本的就夠了。
首先是登陸過程,這就要用到open了,直接在ftp的提示符下輸入“open 主機IP ftp端口”回車即可,一般端口默認都是21,可以不寫。接著就是輸入合法的用戶名和密碼進行登陸了,這里以匿名ftp為例介紹。
用戶名和密碼都是ftp,密碼是不顯示的。當提示**** logged in時,就說明登陸成功。這里因為是匿名登陸,所以用戶顯示為Anonymous。
接下來就要介紹具體命令的使用方法了。
dir 跟DOS命令一樣,用于查看服務器的文件,直接敲上dir回車,就可以看到此ftp服務器上的文件。
cd 進入某個文件夾。
get 下載文件到本地機器。
put 上傳文件到遠程服務器。這就要看遠程ftp服務器是否給了你可寫的權限了,如果可以,呵呵,該怎么 利用就不多說了,大家就自由發揮去吧。
delete 刪除遠程ftp服務器上的文件。這也必須保證你有可寫的權限。
bye 退出當前連接。
quit 同上。
telnet
功能強大的遠程登陸命令,幾乎所有的入侵者都喜歡用它,屢試不爽。為什么?它操作簡單,如同使用自己的機器一樣,只要你熟悉DOS命令,在成功以administrator身份連接了遠程機器后,就可以用它來做想干的一切了。下面介紹一下使用方法,首先鍵入telnet回車,再鍵入help查看其幫助信息。
然后在提示符下鍵入open IP回車,這時就出現了登陸窗口,讓你輸入合法的用戶名和密碼,這里輸入任何密碼都是不顯示的。
當輸入用戶名和密碼都正確后就成功建立了telnet連接,這時候你就在遠程主機上具有了和此用戶一樣的權限,利用DOS命令就可以實現你想干的事情了。這里我使用的超級管理員權限登陸的。
另外大家應該清楚,任何人要想進入系統,必須得有一個合法的用戶名和密碼(輸入法漏洞差不多絕跡了吧),哪怕你拿到帳戶的只有一個很小的權限,你也可以利用它來達到最后的目的。所以堅決消滅空口令,給自己的帳戶加上一個強壯的密碼,是最好的防御弱口令入侵的方法