12 12
發新話題

[轉貼][網路][教學]電腦網路基礎知識

[轉貼][網路][教學]電腦網路基礎知識

電腦網路基礎知識(一)

第一個
什麼是FTP?
FTP是英文File Transfer Protocol的縮寫,意思是文件傳輸協議。它和HTTP一樣都是Internet上廣泛使用的協議,用來在兩台計算機之間互相傳送文件。相比於HTTP,FTP協議要複雜得多。複雜的原因,是因為FTP協議要用到兩個TCP連接,一個是命令鏈路,用來在FTP客戶端與服務器之間傳遞命令;另一個是數據鏈路,用來上傳或下載數據。
FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。
PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶端在命令鏈路上用PORT命令告訴服務器:「我打開了***X端口,你過來連接我」。於是服務器從20端口向客戶端的***X端口發送連接請求,建立一條數據鏈路來傳送數據。
PASV(被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務器在命令鏈路上用PASV命令告訴客戶端:「我打開了***X端口,你過來連接我」。於是客戶端向服務器的***X端口發送連接請求,建立一條數據鏈路來傳送數據。
從上面可以看出,兩種方式的命令鏈路連接方法是一樣的,而數據鏈路的建立方法就完全不同。而FTP的複雜性就在於此。

第二個 : HTTP是什麼?
當我們想瀏覽一個網站的時候,只要在瀏覽器的地址欄裡輸入網站的地址就可以了,例bbs.365dn.com但是在瀏覽器的地址欄裡面出現的卻是:http://bbs.365dn.com 你知道為什麼會多出一個「http」嗎?

一、HTTP協議是什麼
我們在瀏覽器的地址欄裡輸入的網站地址叫做URL (Uniform Resource Locator,統一資源定位符)。

就像每家每戶都有一個門牌地址一樣,每個網頁也都有一個Internet地址。當你在瀏覽器的地址框中輸入一個URL或是單擊一個超級鏈接時,URL就確定了要瀏覽的地址。瀏覽器通過超文本傳輸協議(HTTP),將Web服務器上站點的網頁代碼提取出來,並翻譯成漂亮的網頁。因此,在我們認識HTTP之前,有必要先弄清楚URL的組成,例如:http://www.365dn.com /market/它的含義如下:
1. http://代表超文本傳輸協議,通知365dn.com 服務器顯示Web頁,通常不用輸入;
2. www:代表一個Web(萬維網)服務器;
3. 365dn.com這是裝有網頁的服務器的域名,或站點服務器的名稱;
4. market/為該服務器上的子目錄,就好像我們的文件夾;
我們知道,Internet的基本協議是TCP/IP協議,然而在TCP/IP模型最上層的是應用層(Application layer),它包含所有高層的協議。高層協議有:文件傳輸協議FTP、電子郵件傳輸協議SMTP、域名系統服務DNS、網路 新聞傳輸協議NNTP和HTTP協議等。
HTTP協議(Hypertext Transfer Protocol,超文本傳輸協議)是用於從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可以使瀏覽器更加高效,使網路 傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示(如文本先於圖形)等。這就是你為什麼在瀏覽器中看到的網頁地址都是以http://開頭的原因。
自WWW誕生以來,一個多姿多彩的資訊和虛擬的世界便出現在我們眼前,可是我們怎麼能夠更加容易地找到我們需要的資訊呢?當決定使用超文本作為WWW文檔的標準格式後,於是在1990年,科學家們立即制定了能夠快速查找這些超文本文檔的協議,即HTTP協議。經過幾年的使用與發展,得到不斷的完善和擴展,目前在WWW中使用的是HTTP/1.0的第六版。

二、HTTP是怎樣工作的
既然我們明白了URL的構成,那麼HTTP是怎麼工作呢?我們接下來就要討論這個問題。
由於HTTP協議是基於請求/響應範式的(相當於客戶機/服務器)。一個客戶機與服務器建立連接後,發送一個請求給服務器,請求方式的格式為:統一資源標識符(URL)、協議版本號,後邊是MIME信息包括請求修飾符、客戶機信息和可能的內容。服務器接到請求後,給予相應的響應信息,其格式為一個狀態行,包括信息的協議版本號、一個成功或錯誤的代碼,後邊是MIME信息包括服務器信息、實體信息和可能的內容。
許多HTTP通訊是由一個用戶代理初始化的並且包括一個申請在源服務器上資源的請求。最簡單的情況可能是在用戶代理和服務器之間通過一個單獨的連接來完成。在Internet上,HTTP通訊通常發生在TCP/IP連接之上。缺省端口是TCP 80,但其它的端口也是可用的。但這並不預示著HTTP協議在Internet或其它網路 的其它協議之上才能完成。HTTP只預示著一個可*的傳輸。
這個過程就好像我們打電話訂貨一樣,我們可以打電話給商家,告訴他我們需要什麼規格的商品,然後商家再告訴我們什麼商品有貨,什麼商品缺貨。這些,我們是通過電話線用電話聯繫(HTTP是通過TCP/IP),當然我們也可以通過傳真,只要商家那邊也有傳真。
以上簡要介紹了HTTP協議的宏觀運作方式,下面介紹一下HTTP協議的內部操作過程。
在WWW中,「客戶」與「服務器」是一個相對的概念,只存在於一個特定的連接期間,即在某個連接中的客戶在另一個連接中可能作為服務器。基於HTTP協議的客戶/服務器模式的信息交換過程,它分四個過程:建立連接、發送請求信息、發送響應信息、關閉連接。這就好像上面的例子,我們電話訂貨的全過程。
其實簡單說就是任何服務器除了包括HTML文件以外,還有一個HTTP駐留程序,用於響應用戶請求。你的瀏覽器是HTTP客戶,向服務器發送請求,當瀏覽器中輸入了一個開始文件或點擊了一個超級鏈接時,瀏覽器就向服務器發送了HTTP請求,此請求被送往由IP地址指定的URL。駐留程序接收到請求,在進行必要的操作後回送所要求的文件。在這一過程中,在網路 上發送和接收的數據已經被分成一個或多個數據包(packet),每個數據包包括:要傳送的數據;控制信息,即告訴網路 怎樣處理數據包。TCP/IP決定了每個數據包的格式。如果事先不告訴你,你可能不會知道信息被分成用於傳輸和再重新組合起來的許多小塊。
也就是說商家除了擁有商品之外,它也有一個職員在接聽你的電話,當你打電話的時候,你的聲音轉換成各種複雜的數據,通過電話線傳輸到對方的電話機,對方的電話機又把各種複雜的數據轉換成聲音,使得對方商家的職員能夠明白你的請求。這個過程你不需要明白聲音是怎麼轉換成複雜的數據的。

第三個 : ipc$ 是什麼?
IPC$(Internet Process Connection)是共享"命名管道"的資源(大家都是這麼說的),它是為了讓進程間通信而開放的命名管道,可以通過驗證用戶名和密碼獲得相應的權限,在遠程管理計算機和查看計算機的共享資源時使用。
利用IPC$,連接者甚至可以與目標主機建立一個空的連接而無需用戶名與密碼(當然,對方機器必須開了ipc$共享,否則你是連接不上的),而利用這個空的連接,連接者還可以得到目標主機上的用戶列表(不過負責的管理員會禁止導出用戶列表的)。
我們總在說ipc$漏洞ipc$漏洞,其實,ipc$並不是真正意義上的漏洞,它是為了方便管理員的遠程管理而開放的遠程網路 登陸功能,而且還打開了默認共享,即所有的邏輯盤(c$,d$,e$……)和系統目錄winnt或windows(admin$)。
所有的這些,初衷都是為了方便管理員的管理,但好的初衷並不一定有好的收效,一些別有用心者(到底是什麼用心?我也不知道,代詞一個)會利用IPC$,訪問共享資源,導出用戶列表,並使用一些字典工具,進行密碼探測,寄希望於獲得更高的權限,從而達到不可告人的目的.

解惑:
1)IPC連接是Windows NT及以上系統中特有的遠程網路 登陸功能,其功能相當於Unix中的Telnet,由於IPC$功能需要用到Windows NT中的很多DLL函數,所以不能在Windows 9.x中運行。
也就是說只有nt/2000/xp才可以建立ipc$連接,98/me是不能建立ipc$連接的(但有些朋友說在98下能建立空的連接,不知道是真是假,不過現在都2003年了,建議98的同志換一下系統吧,98不爽的)
2)即使是空連接也不是100%都能建立成功,如果對方關閉了ipc$共享,你仍然無法建立連接
3)並不是說建立了ipc$連接就可以查看對方的用戶列表,因為管理員可以禁止導出用戶列表

第四個 : ASP 是什麼?
ASP即Active Server Page的縮寫。它是一種包含了使用VB Script或Jscript腳本程序代碼的網頁。

當瀏覽器瀏覽ASP網頁時, Web服務器就會根據請求生成相應的HTML代碼然後再返回給瀏覽器,這樣瀏覽器端看到的 就是動態生成的網頁。ASP是微軟公司開發的代替CGI腳本程序的一種應用,它可以與數據庫和其它程序進行交互。是一種簡單、方便的編程工具。在瞭解了VBSCRIPT的基本語法後,只需要清楚各個組件的用途、屬性、方法,就可以輕鬆編寫出自己的ASP系統。ASP的網頁文件的格式是.ASP。

第五個 : 什麼是病毒
下面我們談一談病毒。您以前是否聽說過電腦病毒?不要一聽到病毒就渾身發抖,只要瞭解了病毒,對付起來還是很容易的。
  電腦病毒與我們平時所說的醫學上的生物病毒是不一樣的,它實際上是一種電腦程序,只不過這種程序比較特殊,它是專門給人們搗亂和搞破壞的,它寄生在其它文件中,而且會不斷地自我複製並傳染給別的文件,沒有一點好作用。
  電腦病毒發作了都會有哪些症狀呢?
  電腦染上病毒後,如果沒有發作,是很難覺察到的。但病毒發作時就很容易感覺出來:
  有時電腦的工作會很不正常,有時會莫名其妙的死機,有時會突然重新啟動,有時程序會乾脆運行不了。
  ◎ 電腦染毒後表現為:工作很不正常,莫名其妙死機,突然重新啟動,程序運行不了。
  有的病毒發作時滿屏幕會下雨,有的屏幕上會出現毛毛蟲等,甚至在屏幕上出現對話框,這些病毒發作時通常會破壞文件,是非常危險的,反正只要電腦工作不正常,就有可能是染上了病毒。病毒所帶來的危害更是不言而喻了。
  而且,以前人們一直以為,病毒只能破壞軟件,對硬件毫無辦法,可是CIH病毒打破了這個神話,因為它竟然在某種情況下可以破壞硬件!
  電腦病毒和別的程序一樣,它也是人編寫出來的。既然病毒也是人編的程序,那就會有辦法來對付它。最重要的是採取各種安全措施預防病毒,不給病毒以可乘之機。另外,就是使用各種殺毒程序了。它們可以把病毒殺死,從電腦中清除出去

什麼是木馬
特洛伊木馬(以下簡稱木馬),英文叫做「Trojan house」,其名稱取自希臘神話的特洛伊木馬記。
它是一種基於遠程控制的黑客工具,具有隱蔽性和非授權性的特點。
所謂隱蔽性是指木馬的設計者為了防止木馬被發現,會採用多種手段隱藏木馬,這樣服務端即使發現感染了木馬,由於不能確定其具體位置,往往只能望「馬」興歎。
所謂非授權性是指一旦控制端與服務端連接後,控制端將享有服務端的大部分操作權限,包括修改文件,修改註冊表,控制鼠標,鍵盤等等,而這些權力並不是服務端賦予的,而是通過木馬程序竊取的。
從木馬的發展來看,基本上可以分為兩個階段。
最初網路 還處於以UNIX平台為主的時期,木馬就產生了,當時的木馬程序的功能相對簡單,往往是將一段程序嵌入到系統文件中,用跳轉指令來執行一些木馬的功能,在這個時期木馬的設計者和使用者大都是些技術人員,必須具備相當的網路 和編程知識。
而後隨著WINDOWS平台的日益普及,一些基於圖形操作的木馬程序出現了,用戶界面的改善,使使用者不用懂太多的專業知識就可以熟練的操作木馬,相對的木馬入侵事件也頻繁出現,而且由於這個時

期木馬的功能已日趨完善,因此對服務端的破壞也更大了。
所以所木馬發展到今天,已經無所不用其極,一旦被木馬控制,你的電腦將毫無秘密可言。
鑒於木馬的巨大危害性,我們將分原理篇,防禦與反擊篇,資料篇三部分來詳細介紹木馬,希望大家對特洛伊木馬這種攻擊手段有一個透徹的瞭解。

[ 本帖最後由 蔡逸竹 於 2006-10-14 16:14 編輯 ]

TOP

[轉貼][網路][教學]電腦網路基礎知識(二)

電腦網路基礎知識(二)


原 理 篇
基礎知識
  在介紹木馬的原理之前有一些木馬構成的基礎知識我們要事先加以說明,因為下面有很多地方會提到這些內容。
一個完整的木馬系統由硬件部分,軟件部分和具體連接部分組成。
(1)硬件部分:建立木馬連接所必須的硬件實體。 控制端:對服務端進行遠程控制的一方。 服務端:被控制端遠程控制的一方。 INTERNET:控制端對服務端進行遠程控制,數據傳輸的網路 載體。
(2)軟件部分:實現遠程控制所必須的軟件程序。 控制端程序:控制端用以遠程控制服務端的程序。 木馬程序:潛入服務端內部,獲取其操作權限的程序。 木馬配置程序:設置木馬程序的端口號,觸發條件,木馬名稱等,使其在服務端藏得更隱蔽的程序。
(3)具體連接部分:通過INTERNET在服務端和控制端之間建立一條木馬通道所必須的元素。 控制端IP,服務端IP:即控制端,服務端的網路 地址,也是木馬進行數據傳輸的目的地。 控制端端口,木馬端口:即控制端,服務端的數據入口,通過這個入口,數據可直達控制端程序或木馬 程序。
木馬原理
  用木馬這種黑客工具進行網路 入侵,從過程上看大致可分為六步(具體可見下圖),下面我們就按這六步來詳細闡述木馬的攻擊原理。
一.配置木馬
一般來說一個設計成熟的木馬都有木馬配置程序,從具體的配置內容看,主要是為了實現以下兩方 面功能:
(1)木馬偽裝:木馬配置程序為了在服務端盡可能的好的隱藏木馬,會採用多種偽裝手段,如修改圖標 ,捆綁文件,定制端口,自我銷毀等,我們將在「傳播木馬」這一節中詳細介紹。
(2)信息反饋:木馬配置程序將就信息反饋的方式或地址進行設置,如設置信息反饋的郵件地址,IRC號 ,ICO號等等,具體的我們將在「信息反饋」這一節中詳細介紹。
二.傳播木馬
(1)傳播方式:
  木馬的傳播方式主要有兩種:一種是通過E-MAIL,控制端將木馬程序以附件的形式夾在郵件中發送出 去, 收信人只要打開附件系統就會感染木馬;另一種是軟件下載,一些非正規的網站以提供軟件下載為 名義, 將木馬捆綁在軟件安裝程序上,下載後,只要一運行這些程序,木馬就會自動安裝。
(2)偽裝方式:
  鑒於木馬的危害性,很多人對木馬知識還是有一定瞭解的,這對木馬的傳播起了一定的抑製作用,這 是木馬設計者所不願見到的,因此他們開發了多種功能來偽裝木馬,以達到降低用戶警覺,欺騙用戶的目 的。
(一)修改圖標
  當你在E-MAIL的附件中看到這個圖標時,是否會認為這是個文本文件呢?但是我不得不告 訴你,這也有可能是個木馬程序,現在 已經有木馬可以將木馬服務端程序的圖標改成HTML,TXT, ZIP等各種文件的圖標,這有相當大的迷 惑性,但是目前提供這種功能的木馬還不多見,並且這種 偽裝也不是無懈可擊的,所以不必整天提 心吊膽,疑神疑鬼的。
(二)捆綁文件
  這種偽裝手段是將木馬捆綁到一個安裝程序上,當安裝程序運行時,木馬在用戶毫無察覺的 情況下 ,偷偷的進入了系統。至於被捆綁的文件一般是可執行文件(即EXE,COM一類的文件)。
(三)出錯顯示
  有一定木馬知識的人都知道,如果打開一個文件,沒有任何反應,這很可能就是個木馬程序, 木馬的 設計者也意識到了這個缺陷,所以已經有木馬提供了一個叫做出錯顯示的功能。當服務 端用戶打開木 馬程序時,會彈出一個如下圖所示的錯誤提示框(這當然是假的),錯誤內容可自由 定義,大多會定製成 一些諸如「文件已破壞,無法打開的!」之類的信息,當服務端用戶信以 為真時,木馬卻悄悄侵入了 系統。
(四)定制端口
  很多老式的木馬端口都是固定的,這給判斷是否感染了木馬帶來了方便,只要查一下特定的 端口就 知道感染了什麼木馬,所以現在很多新式的木馬都加入了定制端口的功能,控制端用戶可 以在1024---65535之間任選一個端口作為木馬端口(一般不選1024以下的端口),這樣就給判斷 所感染木馬類型帶 來了麻煩。
(五)自我銷毀  
  這項功能是為了彌補木馬的一個缺陷。我們知道當服務端用戶打開含有木馬的文件後,木馬 會將自己拷貝到WINDOWS的系統文件夾中(C:\WINDOWS或C:\WINDOWS\SYSTEM目錄下),一般來說 原木馬文件 和系統文件夾中的木馬文件的大小是一樣的(捆綁文件的木馬除外),那麼中了木馬 的朋友只要在近來 收到的信件和下載的軟件中找到原木馬文件,然後根據原木馬的大小去系統 文件夾找相同大小的文件, 判斷一下哪個是木馬就行了。而木馬的自我銷毀功能是指安裝完木 馬後,原木馬文件將自動銷毀,這 樣服務端用戶就很難找到木馬的來源,在沒有查殺木馬的工 具幫助下,就很難刪除木馬了。
(六)木馬更名
  安裝到系統文件夾中的木馬的文件名一般是固定的,那麼只要根據一些查殺木馬的文章,按 圖索驥在系統文件夾查找特定的文件,就可以斷定中了什麼木馬。所以現在有很多木馬都允許控 制端用戶自由定制安裝後的木馬文件名,這樣很難判斷所感染的木馬類型了。

三.運行木馬
  服務端用戶運行木馬或捆綁木馬的程序後,木馬就會自動進行安裝。首先將自身拷貝到WINDOWS的 系統文件夾中(C:\WINDOWS或C:\WINDOWS\SYSTEM目錄下),然後在註冊表,啟動組,非啟動組中設置好木馬 的觸發條件 ,這樣木馬的安裝就完成了。安裝後就可以啟動木馬了,具體過程見下圖:
(1)由觸發條件激活木馬
觸發條件是指啟動木馬的條件,大致出現在下面八個地方:
  1.註冊表:打開HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\下的五個以Run 和RunServices主鍵,在其中尋找可能是啟動木馬的鍵值。
  2.WIN.INI:C:\WINDOWS目錄下有一個配置文件win.ini,用文本方式打開,在[windows]字段中有啟動 命令 load=和run=,在一般情況下是空白的,如果有啟動程序,可能是木馬。             3.SYSTEM.INI:C:\WINDOWS目錄下有個配置文件system.ini,用文本方式打開,在[386Enh],[mic], [drivers32]中有命令行,在其中尋找木馬的啟動命令。
  4.Autoexec.bat和Config.sys:在C盤根目錄下的這兩個文件也可以啟動木馬。但這種加載方式一般都 需要控制端用戶與服務端建立連接後,將已添加木馬啟動命令的同名 文件上傳 到服務端覆蓋這兩個文件才行。
  5.*.INI:即應用程序的啟動配置文件,控制端利用這些文件能啟動程序的特點,將製作好的帶有木馬 啟動命令的同名文件上傳到服務端覆蓋這同名文件,這樣就可以達到啟動木馬的目的了。
  6.註冊表:打開HKEY_CLASSES_ROOT\文件類型\shell\open\command主鍵,查看其鍵值。舉個例子,國產 木馬「冰河」就是修改HKEY_CLASSES_ROOT\txtfile\shell\open\command下的鍵值,將「C :\WINDOWS \NOTEPAD.EXE %1」該為「C:\WINDOWS\SYSTEM\SY***PLR.EXE %1」,這時你雙 擊一個TXT文件 後,原本應用NOTEPAD打開文件的,現在卻變成啟動木馬程序了。還要說明 的是不光是TXT文件 ,通過修改HTML,EXE,ZIP等文件的啟動命令的鍵值都可以啟動木馬 ,不同之處只在於「文件類型」這個主鍵的差別,TXT是txtfile,ZIP是WINZIP,大家可以 試著去找一下。
  7.捆綁文件:實現這種觸發條件首先要控制端和服務端已通過木馬建立連接,然後控制端用戶用工具 軟件將木馬文件和某一應用程序捆綁在一起,然後上傳到服務端覆蓋原文件,這樣即使 木馬被刪 除了,只要運行捆綁了木馬的應用程序,木馬又會被安裝上去了。
  8.啟動菜單:在「開始---程序---啟動」選項下也可能有木馬的觸發條件。
(2)木馬運行過程
  木馬被激活後,進入內存,並開啟事先定義的木馬端口,準備與控制端建立連接。這時服務端用 戶可以在MS-DOS方式下,鍵入NETSTAT -AN查看端口狀態,一般個人電腦在脫機狀態下是不會有端口 開放的,如果有端口開放,你就要注意是否感染木馬了。下面是電腦感染木馬後,用NETSTAT命令查 看端口的兩個實例:
其中1是服務端與控制端建立連接時的顯示狀態,2是服務端與控制端還未建立連接時的顯示狀態。
在上網過程中要下載軟件,發送信件,網上聊天等必然打開一些端口,下面是一些常用的端口:
(1)1---1024之間的端口:這些端口叫保留端口,是專給一些對外通訊的程序用的,如FTP使用21, SMTP使用25,POP3使用110等。只有很少木馬會用保留端口作為木馬端口 的。
(2)1025以上的連續端口:在上網瀏覽網站時,瀏覽器會打開多個連續的端口下載文字,圖片到本地 硬盤上,這些端口都是1025以上的連續端口。
(3)4000端口:這是OICQ的通訊端口。
(4)6667端口:這是IRC的通訊端口。 除上述的端口基本可以排除在外,如發現還有其它端口打開,尤其是數值比較大的端口,那就要懷疑 是否感染了木馬,當然如果木馬有定制端口的功能,那任何端口都有可能是木馬端口。

TOP

[轉貼][網路][教學]電腦網路基礎知識(三)

電腦網路基礎知識(三)

四.信息洩露:
  一般來說,設計成熟的木馬都有一個信息反饋機制。所謂信息反饋機制是指木馬成功安裝後會收集 一些服務端的軟硬件信息,並通過E-MAIL,IRC或ICO的方式告知控制端用戶。下圖是一個典型的信息反 饋郵件。
  從這封郵件中我們可以知道服務端的一些軟硬件信息,包括使用的操作系統,系統目錄,硬盤分區況, 系統口令等,在這些信息中,最重要的是服務端IP,因為只有得到這個參數,控制端才能與服務端建立 連接,具體的連接方法我們會在下一節中講解。
五.建立連接:
  這一節我們講解一下木馬連接是怎樣建立的 。一個木馬連接的建立首先必須滿足兩個條件:一是 服務端已安裝了木馬程序;二是控制端,服務端都要在線 。在此基礎上控制端可以通過木馬端口與服 務端建立連接。為了便於說明我們採用圖示的形式來講解。
  如上圖所示A機為控制端,B機為服務端,對於A機來說要與B機建立連接必須知道B機的木馬端口和IP地 址,由於木馬端口是A機事先設定的,為已知項,所以最重要的是如何獲得B機的IP地址。獲得B機的IP 地址的方法主要有兩種:信息反饋和IP掃瞄。對於前一種已在上一節中已經介紹過了,不再贅述,我們 重點來介紹IP掃瞄,因為B機裝有木馬程序,所以它的木馬端口7626是處於開放狀態的,所以現在A機只 要掃瞄IP地址段中7626端口開放的主機就行了,例如圖中B機的IP地址是202.102.47.56,當A機掃瞄到 這個IP時發現它的7626端口是開放的,那麼這個IP就會被添加到列表中,這時A機就可以通過木馬的控 制端程序向B機發出連接信號,B機中的木馬程序收到信號後立即作出響應,當A機收到響應的信號後, 開啟一個隨即端口1031與B機的木馬端口7626建立連接,到這時一個木馬連接才算真正建立。值得一提 的要掃瞄整個IP地址段顯然費時費力,一般來說控制端都是先通過信息反饋獲得服務端的IP地址,由於 撥號上網的IP是動態的,即用戶每次上網的IP都是不同的,但是這個IP是在一定範圍內變動的,如圖中 B機的IP是202.102.47.56,那麼B機上網IP的變動範圍是在202.102.000.000---202.102.255.255,所以 每次控制端只要搜索這個IP地址段就可以找到B機了。  

六.遠程控制:
  木馬連接建立後,控制端端口和木馬端口之間將會出現一條通道,見下圖
  控制端上的控制端程序可藉這條通道與服務端上的木馬程序取得聯繫,並通過木馬程序對服務端進行遠 程控制。下面我們就介紹一下控制端具體能享有哪些控制權限,這遠比你想像的要大。
  (1)竊取密碼:一切以明文的形式,*形式或緩存在CACHE中的密碼都能被木馬偵測到,此外很多木馬還 提供有擊鍵記錄功能,它將會記錄服務端每次敲擊鍵盤的動作,所以一旦有木馬入侵, 密碼將很容易被竊取。
  (2)文件操作:控制端可藉由遠程控制對服務端上的文件進行刪除,新建,修改,上傳,下載,運行,更改屬 性等一系列操作,基本涵蓋了WINDOWS平台上所有的文件操作功能。
  (3)修改註冊表:控制端可任意修改服務端註冊表,包括刪除,新建或修改主鍵,子鍵,鍵值。有了這 項功能控制端就可以禁止服務端軟驅,光驅的使用,鎖住服務端的註冊表,將服務端 上木馬的觸發條件設置得更隱蔽的一系列高級操作。
  (4)系統操作:這項內容包括重啟或關閉服務端操作系統,斷開服務端網路 連接,控制服務端的鼠標, 鍵盤,監視服務端桌面操作,查看服務端進程等,控制端甚至可以隨時給服務端發送信 息,想像一下,當服務端的桌面上突然跳出一段話,不嚇人一跳才怪
什麼是領空呢?
舉個例子吧,你的程序要得到你輸入的那個註冊碼,就會去調用相應的函數。比如調用GetDlgItemTextA,而GetDlgItemTextA本身又會去調?*** memcpy這個函數,而這些函數都是存在於系統中的某個DLL文件中的。那麼當這個程序調用相應的API函數的話,程序的領空就會轉到這個相應的DLL文件中去執行這個API函數。(你就這樣理解就行了),Hmemcpy這個函數應用程序本身並不直接調用,而是由其它的API函數來調用。那麼,你就可以理解為你的程序調用了一個API函數,調用的同時程序的領空會轉到這個API所在的DLL文件裡,而這個API又調用了Hmemcpy函數,那麼此時領空就會又轉到了Hmemcpy所在的DLL文件中,之後當Hmemcpy執行完畢,就會返回到調用它的API的領空中去,而當這個API執行完畢的後就會返回到調用它的應用程序的領空中去。比如說我們?*** memcpy這個函數來當斷點,當我們輸入完註冊碼按確定後,程序就會去調用某個API來得到你輸入的那些數據,而這「某個API」又會去調?*** memcpy,所以程序就被斷到了。當然此時程序的領空也就不會在應用程序中了,但是當我們輸入過pmodule指令之後我們就可以反回到應用程序本身的領空中去了。這樣的話你看到的就是應用程序自身的代碼了,而不是API的!
第三十一個:什麼是ASP、PHP、CGI?他們之間有什麼聯繫和區別???
這個話題是個很大的話題,要讓我細說來,實在不容易,還是大至的說說吧,有不明白的再問。
首先,ASP、PHP、CGI都是基於服務器的腳本程序,這是他們的聯繫。說白一點吧,普通的html頁面,都是基於客戶端的。也可以說,我?*** TML寫出什麼頁面,你查一下源碼,就可以看到我最初是怎麼寫的,很多朋友就是這麼盜人家的網頁的。而我用ASP、PHP、CGI中的任何一種來寫,你將查到的我的源程序都是經過服務器編譯後的,如果我最初的源碼如果不公佈,你是不可能知道的。
至於區別,我個人為認為PHP最好,我也是最喜歡PHP。說起理由我也能說很多很多,但這裡,我簡要的說說吧。
哦,對了,我有一次發現網上有一個對比的表,不錯,拿來給朋友們看看吧。
程式介面 | PHP  | ASP | CGI |
作業系統 | 均可 | Win32 | 均可 |
Web伺服器| 數種 | IIS | 均可 |
執行效率 | 快 | 快 | 慢 |
穩定性 | 佳 | 中等 | 最高 |
開發時間 | 短 | 短 | 中等 |
修改時間 | 短 | 短 | 中等 |
程式語言 | PHP | VB | 不限 |
網頁結合 | 佳 | 佳 | 差 |
學習門檻 | 低 | 低 | 高 |
函式支援 | 多 | 少 | 不定 |
系統安全 | 佳 | 極差 | 最佳 |
改版速度 | 快 | 慢 | 無 |
CGI是Common Gateway Interface(公共網關接口)的縮寫,它是一個用於定Web服務器與外部程序之間通信方式的標準。CGI可以用任何一種語言編寫,只要這種語言具有標準的輸入,輸出和環境變量,比較常見的的語言Perl C/C++ JavaVisal BasicFoxpo等....
ASP即Active Server Page的縮寫,是基於WEB的一種編程技術,可以說是CGI的一種。它可以完成以往CGI程序的所有功能,如計數器、留言簿、公告板、聊天室等等。ASP是微軟公司開發的代替CGI腳本程序的一種應用,它可以與數據庫和其它程序進行交互。是一種簡單、方便的編程工具。在瞭解了VBSCRIPT的基本語法後,只需要清楚各個組件的用途、屬性、方法,就可以輕鬆編寫出自己的ASP系統。
PHP,一個嵌套的縮寫名稱,是英文「超級文本預處理語言」(PHP: Hypertext Preprocessor)的縮寫。PHP與微軟的ASP頗有幾分相似,語言的風格有類似於C語言,現在被很多的網站編程人員廣泛的運用。PHP 獨特的語法混合了 C、Java、Perl 以及 PHP 自創新的語法。它可以比 CGI 或者 Perl 更快速的執行動態網頁。用PHP做出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多;與同樣是嵌入HTML文檔的腳本語言****相比,PHP在服務器端執行,充分利用了服務器的性能;PHP執行引擎還會將用戶經常訪問的PHP程序駐留在內存中,其他用戶在一次訪問這個程序時就不需要誠信編譯程序了,只要直接執行內存中的代碼就可以了,這也是PHP高效率的體現之一。PHP具有非常強大的功能,所有的CGI或者****的功能PHP都能實現,而且支持幾乎所有流行的數據庫以及操作系統。

TOP

[轉貼][網路][教學]電腦網路基礎知識(四)

電腦網路基礎知識(四)

第六個 : 什麼是路由器
路由器是一種連接多個網路 或網段的網路 設備,它能將不同網路 或網段之間的數據信息進行「翻譯」,以使它們能夠相互「讀」懂對方的數據,從而構成一個更大的網路 。
 
   路由器有兩大典型功能,即數據通道功能和控制功能。數據通道功能包括轉發決定、背板轉發以及輸出鏈路調度等,一般由特定的硬件來完成;控制功能一般用軟件來實現,包括與相鄰路由器之間的信息交換、系統配置、系統管理等。
  多少年來,路由器的發展有起有伏。90年代中期,傳統路由器成為制約因特網發展的瓶頸。ATM交換機取而代之,成為IP骨幹網的核心,路由器變成了配角。進入90年代末期,Internet規模進一步擴大,流量每半年翻一番,ATM網又成為瓶頸,路由器東山再起,Gbps路由交換機在1997年面世後,人們又開始以Gbps路由交換機取代ATM交換機,架構以路由器為核心的骨幹網。
附:路由器原理及路由協議
近十年來,隨著計算機網路 規模的不斷擴大,大型互聯網路 (如Internet)的迅猛發展,路由技術在網路 技術中已逐漸成為關鍵部分,路由器也隨之成為最重要的網路 設備。用戶的需求推動著路由技術的發展和路由器的普及,人們已經不滿足於僅在本地網路 上共享信息,而希望最大限度地利用全球各個地區、各種類型的網路 資源。而在目前的情況下,任何一個有一定規模的計算機網路 (如企業網、校園網、智能大廈等),無論採用的是快速以大網技術、FDDI技術,還是ATM技術,都離不開路由器,否則就無法正常運作和管理。
1 網路 互連
把自己的網路 同其它的網路 互連起來,從網路 中獲取更多的信息和向網路 發佈自己的消息,是網路 互連的最主要的動力。網路 的互連有多種方式,其中使用最多的是網橋互連和路由器互連。
1.1 網橋互連的網路  
網橋工作在OSI模型中的第二層,即鏈路層。完成數據幀(frame)的轉發,主要目的是在連接的網路 間提供透明的通信。網橋的轉發是依據數據幀中的源地址和目的地址來判斷一個幀是否應轉發和轉發到哪個端口。幀中的地址稱為「MAC」地址或「硬件」地址,一般就是網卡所帶的地址。
網橋的作用是把兩個或多個網路 互連起來,提供透明的通信。網路 上的設備看不到網橋的存在,設備之間的通信就如同在一個網上一樣方便。由於網橋是在數據幀上進行轉發的,因此只能連接相同或相似的網路 (相同或相似結構的數據幀),如以太網之間、以太網與令牌環(token ring)之間的互連,對於不同類型的網路 (數據幀結構不同),如以太網與X.25之間,網橋就無能為力了。
網橋擴大了網路 的規模,提高了網路 的性能,給網路 應用帶來了方便,在以前的網路 中,網橋的應用較為廣泛。但網橋互連也帶來了不少問題:一個是廣播風暴,網橋不阻擋網路 中廣播消息,當網路 的規模較大時(幾個網橋,多個以太網段),有可能引起廣播風暴(broadcasting storm),導致整個網路 全被廣播信息充滿,直至完全癱瘓。第二個問題是,當與外部網路 互連時,網橋會把內部和外部網路 合二為一,成為一個網,雙方都自動向對方完全開放自己的網路 資源。這種互連方式在與外部網路 互連時顯然是難以接受的。問題的主要根源是網橋只是最大限度地把網路 溝通,而不管傳送的信息是什麼。
1.2 路由器互連網路  
路由器互連與網路 的協議有關,我們討論限於TCP/IP網路 的情況。
路由器工作在OSI模型中的第三層,即網路 層。路由器利用網路 層定義的「邏輯」上的網路 地址(即IP地址)來區別不同的網路 ,實現網路 的互連和隔離,保持各個網路 的獨立性。路由器不轉發廣播消息,而把廣播消息限制在各自的網路 內部。發送到其他網路 的數據茵先被送到路由器,再由路由器轉發出去。
IP路由器只轉發IP分組,把其餘的部分擋在網內(包括廣播),從而保持各個網路 具有相對的獨立性,這樣可以組成具有許多網路 (子網)互連的大型的網路 。由於是在網路 層的互連,路由器可方便地連接不同類型的網路 ,只要網路 層運行的是IP協議,通過路由器就可互連起來。
網路 中的設備用它們的網路 地址(TCP/IP網路 中為IP地址)互相通信。IP地址是與硬件地址無關的「邏輯」地址。路由器只根據IP地址來轉發數據。IP地址的結構有兩部分,一部分定義網路 號,另一部分定義網路 內的主機號。目前,在Internet網路 中採用子網掩碼來確定IP地址中網路 地址和主機地址。子網掩碼與IP地址一樣也是32bit,並且兩者是一一對應的,並規定,子網掩碼中數字為「1」所對應的IP地址中的部分為網路 號,為「0」所對應的則為主機號。網路 號和主機號合起來,才構成一個完整的IP地址。同一個網路 中的主機IP地址,其網路 號必須是相同的,這個網路 稱為IP子網。
通信只能在具有相同網路 號的IP地址之間進行,要與其它IP子網的主機進行通信,則必須經過同一網路 上的某個路由器或網關(gateway)出去。不同網路 號的IP地址不能直接通信,即使它們接在一起,也不能通信。
路由器有多個端口,用於連接多個IP子網。每個端口的IP地址的網路 號要求與所連接的IP子網的網路 號相同。不同的端口為不同的網路 號,對應不同的IP子網,這樣才能使各子網中的主機通過自己子網的IP地址把要求出去的IP分組送到路由器上
2 路由原理
當IP子網中的一台主機發送IP分組給同一IP子網的另一台主機時,它將直接把IP分組送到網路 上,對方就能收到。而要送給不同IP於網上的主機時,它要選擇一個能到達目的子網上的路由器,把IP分組送給該路由器,由路由器負責把IP分組送到目的地。如果沒有找到這樣的路由器,主機就把IP分組送給一個稱為「缺省網關(default gateway)」的路由器上。「缺省網關」是每台主機上的一個配置參數,它是接在同一個網路 上的某個路由器端口的IP地址。
路由器轉發IP分組時,只根據IP分組目的IP地址的網路 號部分,選擇合適的端口,把IP分組送出去。同主機一樣,路由器也要判定端口所接的是否是目的子網,如果是,就直接把分組通過端口送到網路 上,否則,也要選擇下一個路由器來傳送分組。路由器也有它的缺省網關,用來傳送不知道往哪兒送的IP分組。這樣,通過路由器把知道如何傳送的IP分組正確轉發出去,不知道的IP分組送給「缺省網關」路由器,這樣一級級地傳送,IP分組最終將送到目的地,送不到目的地的IP分組則被網路 丟棄了。
目前TCP/IP網路 ,全部是通過路由器互連起來的,Internet就是成千上萬個IP子網通過路由器互連起來的國際性網路 。這種網路 稱為以路由器為基礎的網路 (router based network),形成了以路由器為節點的「網間網」。在「網間網」中,路由器不僅負責對IP分組的轉發,還要負責與別的路由器進行聯絡,共同確定「網間網」的路由選擇和維護路由表。
路由動作包括兩項基本內容:尋徑和轉發。尋徑即判定到達目的地的最佳路徑,由路由選擇算法來實現。由於涉及到不同的路由選擇協議和路由選擇算法,要相對複雜一些。為了判定最佳路徑,路由選擇算法必須啟動並維護包含路由信息的路由表,其中路由信息依賴於所用的路由選擇算法而不盡相同。路由選擇算法將收集到的不同信息填入路由表中,根據路由表可將目的網路 與下一站(nexthop)的關係告訴路由器。路由器間互通信息進行路由更新,更新維護路由表使之正確反映網路 的拓撲變化,並由路由器根據量度來決定最佳路徑。這就是路由選擇協議(routing protocol),例如路由信息協議(RIP)、開放式最短路徑優先協議(OSPF)和邊界網關協議(BGP)等。
轉發即沿尋徑好的最佳路徑傳送信息分組。路由器首先在路由表中查找,判明是否知道如何將分組發送到下一個站點(路由器或主機),如果路由器不知道如何發送分組,通常將該分組丟棄;否則就根據路由表的相應表項將分組發送到下一個站點,如果目的網路 直接與路由器相連,路由器就把分組直接送到相應的端口上。這就是路由轉發協議(routed protocol)。
路由轉發協議和路由選擇協議是相互配合又相互獨立的概念,前者使用後者維護的路由表,同時後者要利用前者提供的功能來發佈路由協議數據分組。下文中提到的路由協議,除非特別說明,都是指路由選擇協議,這也是普遍的習慣。

TOP

[轉貼][網路][教學]電腦網路基礎知識(五)

電腦網路基礎知識(五)

3 路由協議
典型的路由選擇方式有兩種:靜態路由和動態路由。
靜態路由是在路由器中設置的固定的路由表。除非網路 管理員干預,否則靜態路由不會發生變化。由於靜態路由不能對網路 的改變作出反映,一般用於網路 規模不大、拓撲結構固定的網路 中。靜態路由的優點是簡單、高效、可*。在所有的路由中,靜態路由優先級最高。當動態路由與靜態路由發生衝突時,以靜態路由為準。
動態路由是網路 中的路由器之間相互通信,傳遞路由信息,利用收到的路由信息更新路由器表的過程。它能實時地適應網路 結構的變化。如果路由更新信息表明發生了網路 變化,路由選擇軟件就會重新計算路由,並發出新的路由更新信息。這些信息通過各個網路 ,引起各路由器重新啟動其路由算法,並更新各自的路由表以動態地反映網路 拓撲變化。動態路由適用於網路 規模大、網路 拓撲複雜的網路 。當然,各種動態路由協議會不同程度地佔用網路 帶寬和CPU資源。
靜態路由和動態路由有各自的特點和適用範圍,因此在網路 中動態路由通常作為靜態路由的補充。當一個分組在路由器中進行尋徑時,路由器首先查找靜態路由,如果查到則根據相應的靜態路由轉發分組;否則再查找動態路由。
根據是否在一個自治域內部使用,動態路由協議分為內部網關協議(IGP)和外部網關協議(EGP)。這裡的自治域指一個具有統一管理機構、統一路由策略的網路 。自治域內部採用的路由選擇協議稱為內部網關協議,常用的有RIP、OSPF;外部網關協議主要用於多個自治域之間的路由選擇,常用的是BGP和BGP-4。下面分別進行簡要介紹。

3.1 RIP路由協議
RIP協議最初是為Xerox網路 系統的Xerox parc通用協議而設計的,是Internet中常用的路由協議。RIP採用距離向量算法,即路由器根據距離選擇路由,所以也稱為距離向量協議。路由器收集所有可到達目的地的不同路徑,並且保存有關到達每個目的地的最少站點數的路徑信息,除到達目的地的最佳路徑外,任何其它信息均予以丟棄。同時路由器也把所收集的路由信息用RIP協議通知相鄰的其它路由器。這樣,正確的路由信息逐漸擴散到了全網。
RIP使用非常廣泛,它簡單、可*,便於配置。但是RIP只適用於小型的同構網路 ,因為它允許的最大站點數為15,任何超過15個站點的目的地均被標記為不可達。而且RIP每隔30s一次的路由信息廣播也是造成網路 的廣播風暴的重要原因之一。
3.2 OSPF路由協議
80年代中期,RIP已不能適應大規模異構網路 的互連,0SPF隨之產生。它是網間工程任務組織(1ETF)的內部網關協議工作組為IP網路 而開發的一種路由協議。
0SPF是一種基於鏈路狀態的路由協議,需要每個路由器向其同一管理域的所有其它路由器發送鏈路狀態廣播信息。在OSPF的鏈路狀態廣播中包括所有接口信息、所有的量度和其它一些變量。利用0SPF的路由器首先必須收集有關的鏈路狀態信息,並根據一定的算法計算出到每個節點的最短路徑。而基於距離向量的路由協議僅向其鄰接路由器發送有關路由更新信息。
與RIP不同,OSPF將一個自治域再劃分為區,相應地即有兩種類型的路由選擇方式:當源和目的地在同一區時,採用區內路由選擇;當源和目的地在不同區時,則採用區間路由選擇。這就大大減少了網路 開銷,並增加了網路 的穩定性。當一個區內的路由器出了故障時並不影響自治域內其它區路由器的正常工作,這也給網路 的管理、維護帶來方便。
3.3 BGP和BGP-4路由協議
BGP是為TCP/IP互聯網設計的外部網關協議,用於多個自治域之間。它既不是基於純粹的鏈路狀態算法,也不是基於純粹的距離向量算法。它的主要功能是與其它自治域的BGP交換網路 可達信息。各個自治域可以運行不同的內部網關協議。BGP更新信息包括網路 號/自治域路徑的成對信息。自治域路徑包括到達某個特定網路 須經過的自治域串,這些更新信息通過TCP傳送出去,以保證傳輸的可*性。
為了滿足Internet日益擴大的需要,BGP還在不斷地發展。在最新的BGp4中,還可以將相似路由合併為一條路由。
3.4 路由表項的優先問題
在一個路由器中,可同時配置靜態路由和一種或多種動態路由。它們各自維護的路由表都提供給轉發程序,但這些路由表的表項間可能會發生衝突。這種衝突可通過配置各路由表的優先級來解決。通常靜態路由具有默認的最高優先級,當其它路由表表項與它矛盾時,均按靜態路由轉發。
4 路由算法
路由算法在路由協議中起著至關重要的作用,採用何種算法往往決定了最終的尋徑結果,因此選擇路由算法一定要仔細。通常需要綜合考慮以下幾個設計目標:
——(1)最優化:指路由算法選擇最佳路徑的能力。
——(2)簡潔性:算法設計簡潔,利用最少的軟件和開銷,提供最有效的功能。
——(3)堅固性:路由算法處於非正常或不可預料的環境時,如硬件故障、負載過高或操作失誤時,都能正確運行。由於路由器分佈在網路 聯接點上,所以在它們出故障時會產生嚴重後果。最好的路由器算法通常能經受時間的考驗,並在各種網路 環境下被證實是可*的。
——(4)快速收斂:收斂是在最佳路徑的判斷上所有路由器達到一致的過程。當某個網路 事件引起路由可用或不可用時,路由器就發出更新信息。路由更新信息遍及整個網路 ,引發重新計算最佳路徑,最終達到所有路由器一致公認的最佳路徑。收斂慢的路由算法會造成路徑循環或網路 中斷。
——(5)靈活性:路由算法可以快速、準確地適應各種網路 環境。例如,某個網段發生故障,路由算法要能很快發現故障,並為使用該網段的所有路由選擇另一條最佳路徑。
路由算法按照種類可分為以下幾種:靜態和動態、單路和多路、平等和分級、源路由和透明路由、域內和域間、鏈路狀態和距離向量。前面幾種的特點與字面意思基本一致,下面著重介紹鏈路狀態和距離向量算法。
鏈路狀態算法(也稱最短路徑算法)發送路由信息到互聯網上所有的結點,然而對於每個路由器,僅發送它的路由表中描述了其自身鏈路狀態的那一部分。距離向量算法(也稱為Bellman-Ford算法)則要求每個路由器發送其路由表全部或部分信息,但僅發送到鄰近結點上。從本質上來說,鏈路狀態算法將少量更新信息發送至網路 各處,而距離向量算法發送大量更新信息至鄰接路由器。
由於鏈路狀態算法收斂更快,因此它在一定程度上比距離向量算法更不易產生路由循環。但另一方面,鏈路狀態算法要求比距離向量算法有更強的CPU能力和更多的內存空間,因此鏈路狀態算法將會在實現時顯得更昂貴一些。除了這些區別,兩種算法在大多數環境下都能很好地運行。
最後需要指出的是,路由算法使用了許多種不同的度量標準去決定最佳路徑。複雜的路由算法可能採用多種度量來選擇路由,通過一定的加權運算,將它們合併為單個的復合度量、再填入路由表中,作為尋徑的標準。通常所使用的度量有:路徑長度、可*性、時延、帶寬、負載、通信成本等

TOP

[轉貼][網路][教學]電腦網路基礎知識(六)

電腦網路基礎知識(六)

5 新一代路由器
由於多媒體等應用在網路 中的發展,以及ATM、快速以太網等新技術的不斷採用,網路 的帶寬與速率飛速提高,傳統的路由器已不能滿足人們對路由器的性能要求。因為傳統路由器的分組轉發的設計與實現均基於軟件,在轉發過程中對分組的處理要經過許多環節,轉發過程複雜,使得分組轉發的速率較慢。另外,由於路由器是網路 互連的關鍵設備,是網路 與其它網路 進行通信的一個「關口」,對其安全性有很高的要求,因此路由器中各種附加的安全措施增加了CPU的負擔,這樣就使得路由器成為整個互聯網上的「瓶頸」。
傳統的路由器在轉發每一個分組時,都要進行一系列的複雜操作,包括路由查找、訪問控制表匹配、地址解析、優先級管理以及其它的附加操作。這一系列的操作大大影響了路由器的性能與效率,降低了分組轉發速率和轉發的吞吐量,增加了CPU的負擔。而經過路由器的前後分組間的相關性很大,具有相同目的地址和源地址的分組往往連續到達,這為分組的快速轉發提供了實現的可能與依據。新一代路由器,如IP Switch、Tag Switch等,就是採用這一設計思想用硬件來實現快速轉發,大大提高了路由器的性能與效率。
新一代路由器使用轉發緩存來簡化分組的轉發操作。在快速轉發過程中,只需對一組具有相同目的地址和源地址的分組的前幾個分組進行傳統的路由轉發處理,並把成功轉發的分組的目的地址、源地址和下一網關地址(下一路由器地址)放人轉發緩存中。當其後的分組要進行轉發時,茵先查看轉發緩存,如果該分組的目的地址和源地址與轉發緩存中的匹配,則直接根據轉發緩存中的下一網關地址進行轉發,而無須經過傳統的複雜操作,大大減輕了路由器的負擔,達到了提高路由器吞吐量的目標。
第七個:什麼是肉雞
肉雞就是具有最高管理權限的遠程電腦。簡單的說就是受你控制的遠程電腦。肉雞可以是win、Unix/Linux……等各種系統;肉雞可以是一家公司的服務器,一家網站的服務器,甚至是美國白宮或軍方的電腦,只要你有這本事入侵並控制他,呵呵。萊鳥所說用的肉雞一般是開了3389端口的Win2K系統的服務器。
要登陸肉雞,必須知道3個參數:遠程電腦的IP、用戶名、密碼。
什麼是shell
操作系統與外部最主要的接口就叫做shell。shell是操作系統最外面的一層。shell管理你與操作系統之間的交互:等待你輸入,向操作系統解釋你的輸入,並且處理各種各樣的操作系統的輸出結果。
  shell提供了你與操作系統之間通訊的方式。這種通訊可以以交互方式(從鍵盤輸入,並且可以立即得到響應),或者以shell script(非交互)方式執行。shell script是放在文件中的一串shell和操作系統命令,它們可以被重複使用。本質上,shell script是命令行命令簡單的組合到一個文件裡面。
  Shell基本上是一個命令解釋器,類似於DOS下的command.com。它接收用戶命令(如ls等),然後調用相應的應用程序。較為通用的shell有標準的Bourne shell (sh)和C shell (csh)。
交互式shell和非交互式shell
交互式模式就是shell等待你的輸入,並且執行你提交的命令。這種模式被稱作交互式是因為shell與用戶進行交互。這種模式也是大多數用戶非常熟悉的:登錄、執行一些命令、簽退。當你簽退後,shell也終止了。
shell也可以運行在另外一種模式:非交互式模式。在這種模式下,shell不與你進行交互,而是讀取存放在文件中的命令,並且執行它們。當它讀到文件的結尾,shell也就終止了。

shell的類型
在UNIX中主要有兩大類shell
Bourne shell (包括 sh, ksh, and bash)
Bourne shell ( sh)
Korn shell ( ksh)
Bourne Again shell ( bash)
POSIX shell ( sh)
C shell (包括 csh and tcsh)
C shell ( csh)
TENEX/TOPS C shell ( tcsh)
Bourne Shell
最初的UNIX shell是由Stephen R. Bourne於20世紀70年代中期在新澤西的AT&T貝爾實驗室編寫的,這就是Bourne shell。Bourne shell 是一個交換式的命令解釋器和命令編程語言。Bourne shell 可以運行為login shell或者login shell的子shell(subshell)。只有login命令可以調用Bourne shell作為一個login shell。此時,shell先讀取/etc/profile文件和$HOME/.profile文件。/etc/profile文件為所有的用戶定制環境,$HOME/.profile文件為本用戶定制環境。最後,shell會等待讀取你的輸入。
C Shell
Bill Joy於20世紀80年代早期,在Berkeley的加利福尼亞大學開發了C shell。它主要是為了讓用戶更容易的使用交互式功能,並把ALGOL風格的語法結構變成了C語言風格。它新增了命令歷史、別名、文件名替換、作業控制等功能。
Korn Shell
有很長一段時間,只有兩類shell供人們選擇,Bourne shell用來編程,C shell用來交互。為了改變這種狀況,AT&T的bell實驗室David Korn開發了Korn shell。ksh結合了所有的C shell的交互式特性,並融入了Bourne shell的語法。因此,Korn shell廣受用戶的歡迎。它還新增了數學計算,進程協作(coprocess)、行內編輯(inline editing)等功能。Korn Shell 是一個交互式的命令解釋器和命令編程語言.它符合POSIX——一個操作系統的國際標準.POSIX不是一個操作系統,而是一個目標在於應用程序的移植性的標準——在源程序一級跨越多種平台。
Bourne Again Shell (bash)
bash是GNU計劃的一部分,用來替代Bourne shell。它用於基於GNU的系統如Linux.大多數的Linux(Red Hat, Slackware, Caldera)都以bash作為缺省的shell,並且運行sh時,其實調用的是bash。
POSIX Shell
POSIX shell 是Korn shell的一個變種. 當前提供POSIX shell的最大賣主是Hewlett-Packard。在HP-UX 11.0 , POSIX shell 就是/bin/sh,而bsh是/usr/old/bin/sh.
各主要操作系統下缺省的shell:
AIX 下是Korn Shell.
Solaris和FreeBSD缺省的是Bourne shell.
HP-UX缺省的是POSIX shell.
Linux是Bourne Again shell.
【TIP】
#!/usr/bin/sh的用途
shell script的第一行一般都是#!/usr/bin/sh或#!/usr/bin/ksh等,它的用途就是指出本腳本是用的哪種shell寫的,執行時系統應該用哪種shell來解釋執行它。
附:LINUX系統的shell原理
  Linux系統的shell作為操作系統的外殼,為用戶提供使用操作系統的接口。它是命令語言、命令解釋程序及程序設計語言的統稱。
  shell是用戶和Linux內核之間的接口程序,如果把Linux內核想像成一個球體的中心,shell就是圍繞內核的外層。當從shell或其他程序向Linux傳遞命令時,內核會做出相應的反應。   shell是一個命令語言解釋器,它擁有自己內建的shell命令集,shell也能被系統中其他應用程序所調用。用戶在提示符下輸入的命令都由shell先解釋然後傳給Linux核心。
  有一些命令,比如改變工作目錄命令cd,是包含在shell內部的。還有一些命令,例如拷貝命令cp和移動命令rm,是存在於文件系統中某個目錄下的單獨的程序。對用戶而言,不必關心一個命令是建立在shell內部還是一個單獨的程序。
  shell首先檢查命令是否是內部命令,若不是再檢查是否是一個應用程序(這裡的應用程序可以是Linux本身的實用程序,如ls和rm,也可以是購買的商業程序,如xv,或者是自由軟件,如emacs)。然後shell在搜索路徑裡尋找這些應用程序(搜索路徑就是一個能找到可執行程序的目錄列表)。如果鍵入的命令不是一個內部命令並且在路徑裡沒有找到這個可執行文件,將會顯示一條錯誤信息。如果能夠成功找到命令,該內部命令或應用程序將被分解為系統調用並傳給Linux內核。
  shell的另一個重要特性是它自身就是一個解釋型的程序設計語言,shell程序設計語言支持絕大多數在高級語言中能見到的程序元素,如函數、變量、數組和程序控制結構。shell編程語言簡單易學,任何在提示符中能鍵入的命令都能放到一個可執行的shell程序中。
  當普通用戶成功登錄,系統將執行一個稱為shell的程序。正是shell進程提供了命令行提示符。作為默認值(TurboLinux系統默認的shell是BASH),對普通用戶用「$」作提示符,對超級用戶(root)用「#」作提示符。
  一旦出現了shell提示符,就可以鍵入命令名稱及命令所需要的參數。shell將執行這些命令。如果一條命令花費了很長的時間來運行,或者在屏幕上產生了大量的輸出,可以從鍵盤上按ctrl+c發出中斷信號來中斷它(在正常結束之前,中止它的執行)。
  當用戶準備結束登錄對話進程時,可以鍵入logout命令、exit命令或文件結束符(EOF)(按ctrl+d實現),結束登錄。
  我們來實習一下shell是如何工作的。
  $ make work
  make:***No rule to make target 『work』. Stop.
  $
  註釋:make是系統中一個命令的名字,後面跟著命令參數。在接收到這個命令後,shell便執行它。本例中,由於輸入的命令參數不正確,系統返回信息後停止該命令的執行。
  在例子中,shell會尋找名為make的程序,並以work為參數執行它。make是一個經常被用來編譯大程序的程序,它以參數作為目標來進行編譯。在「make work」中,make編譯的目標是work。因為make找不到以work為名字的目標,它便給出錯誤信息表示運行失敗,用戶又回到系統提示符下。
  另外,用戶鍵入有關命令行後,如果shell找不到以其中的命令名為名字的程序,就會給出錯誤信息。例如,如果用戶鍵入:
  $ myprog
  bash:myprog:command not found
  $
  可以看到,用戶得到了一個沒有找到該命令的錯誤信息。用戶敲錯命令後,系統一般會給出這樣的錯誤信息。

TOP

[轉貼][網路][教學]電腦網路基礎知識(七)

電腦網路基礎知識(七)

第八個:(2)什麼是Suid Shell
(下面這些並不是所講的基礎範圍,但與第八個有關,所以順便介紹一下)
+++++++++================++++++++++
  Suid shell是一種可用於以擁有者權限運行的shell。也就是說,如果擁有者是root,那你就可能以root的身份執行命令。普通的shell文件屬性為rwxr-xr-x,擁有者為root,root可讀/寫/執行這個shell,而其他用戶則只能以自己的權限讀和運行它。然而,如果有一個文件屬性為rwsr-xr-x的shell,就可以獲得文件擁有者權限;如果文件擁有者是root,那麼任何運行了這個shell的用戶便可以控制整個系統,如增加用戶、修改root口令、清除日誌等等。
為什麼需要它?
   這是一個非常容易回答的問題。當通過某些方法進入系統後,如果系統管理員有一定的水平,會很快發現問題。通常他們會查看日誌和修改root口令,你可能就要跟這個系統說再見了。這就是需要suid shell的原因 。:)
怎樣才能得到suid shell呢?
   首先你要足夠狡猾,這取決於你面對的是什麼樣的系統管理員。當你用盡一切方法,如猜口令、苦難root 、安全漏洞攻擊等等,終於成功地取得了root權限,盡快找到一個幾乎從未使用過的目錄。無論如何,不要將suid shell放在你的主目錄下。一個比較好的地方是/usr下的深層子目錄,如/usr/X11/include/X11/。這個目錄幾乎不會有人進去的,而且很少會因存放過多文件而使系統管理員檢查裡面的文件。另外,suid shell的名字應該盡量與其它文件相似。例如,在這個目錄下有sync.h、shape.h等文件,suid shell可以取part.h這種隱蔽性較好的名字。
   另一個比較好的地方是將suid shell與其它suid程序放置在一起,如/usr/sbin,並同樣取一個隱蔽的名字。
  接著,就是在這些目錄下創建suid shell了。如:
cp /bin/sh /usr/X11/include/X11/extensions/part.h
chmod 4755 /usr/X11/include/X11/extensions/part.h
   注意,為了使整個過程在最短的時間內完成,應該在進入系統前做好相應準備。最好在嘗試攻擊前仔細研究系統和計劃。另外總是多創建幾個suid shell,這樣即使其中一個被發現了,仍然有通過使用其它suid shell控制系統的機會。
  如何利用suid shell呢?
  在許多系統中,往往限制用戶所能使用的shell。這個只要檢查一下/etc下的相應文件就能知道。在Linux系統中這個文件是/etc/shells,其中列出了所有的shell程序。但你可以用suid shell做任何事!例如,你準備將/etc/passwd改名為/etc/passwd.heh,編寫如下腳本即可:
#!/usr/X11/include/X11/extensions/part.h
mv /etc/passwd /etc/passwd.heh
exit
(這只是個示例,最好別這樣做)
上面的例子好像只提供了一個非交互的程序,但只要精心編寫腳本,同樣可以實現虛擬的「交互」程序。
如果你仍然想真正得到可交互的訪問,請閱讀以下內容。
首先將/etc/passwd複製到主目錄下,編輯它以刪除root的加密口令。接著輸入"ps ax|grep syslog';取得syslogd的進程號。現在以';interactive XX';(XX是syslogd的進程號)格式運行如下腳本:
#!/usr/X11/include/X11/extensions/part.h
kill -9 $1
rm -f /var/adm/syslog
cp /etc/passwd /etc/passwd.OLD
cp ~backend/passwd /etc/passwd
chmod 644 /etc/passwd
exit
  現在可以無須口令就成為root了
  一旦完成所要做的」工作「後,記住運行如下腳本,替換回最初的口令文件。
#!/usr/X11/include/X11/extensions/part.h
cp /etc/passwd.OLD /etc/passwd
chmod 644 /etc/passwd
exit

什麼是端口?
在開始講什麼是端口之前,我們先來聊一聊什麼是 port 呢?常常在網路 上聽說『我的主機開了多少的 port ,會不會被入侵呀!?』或者是說『開那個 port 會比較安全?又,我的服務應該對應什麼 port 呀!?』呵呵!很神奇吧!怎麼一部主機上面有這麼多的奇怪的 port 呢?這個 port 有什麼作用呢?!
由於每種網路 的服務功能都不相同,因此有必要將不同的封包送給不同的服務來處理,所以囉,當你的主機同時開啟了 FTP 與 WWW 服務的時候,那麼別人送來的資料封包,就會依照 TCP 上面的 port 號碼來給 FTP 這個服務或者是 WWW 這個服務來處理,當然就不會搞亂囉!(註:嘿嘿!有些很少接觸到網路 的朋友,常常會問說:『咦!為什麼你的計算機同時有 FTP、WWW、E-Mail 這麼多服務,但是人家傳資料過來,你的計算機怎麼知道如何判斷?計算機真的都不會誤判嗎?!』現在知道為什麼了嗎?!對啦!就是因為 port 不同嘛!你可以這樣想啦,有一天,你要去銀行存錢,那個銀行就可以想成是『主機』,然後,銀行當然不可能只有一種業務,裡頭就有相當多的窗口,那麼你一進大門的時候,在門口的服務人員就會問你說:『嗨!你好呀!你要做些什麼事?』你跟他說:『我要存錢呀!』,服務員接著就會告訴你:『喝!那麼請前往三號窗口!那邊的人員會幫您服務!』這個時候你總該不會往其它的窗口跑吧?! ^_^""這些窗口就可以想成是『 port 』囉!所以啦!每一種服務都有特定的 port 在監聽!您無須擔心計算機會誤判的問題呦!)
· 每一個 TCP 聯機都必須由一端(通常為 client )發起請求這個 port 通常是隨機選擇大於 1024 以上的 port 號來進行!其 TCP 封包會將(且只將) SYN 旗標設定起來!這是整個聯機的第一個封包;
· 如果另一端(通常為 Server ) 接受這個請求的話(當然囉,特殊的服務需要以特殊的 port 來進行,例如 FTP 的 port 21 ),則會向請求端送回整個聯機的第二個封包!其上除了 SYN 旗標之外同時還將 ACK 旗標也設定起來,並同時時在本機端建立資源以待聯機之需;
· 然後,請求端獲得服務端第一個響應封包之後,必須再響應對方一個確認封包,此時封包只帶 ACK 旗標(事實上﹐後繼聯機中的所有封包都必須帶有 ACK 旗標)﹔
· 只有當服務端收到請求端的確認( ACK )封包(也就是整個聯機的第三個封包)之後﹐兩端的聯機才能正式建立。這就是所謂的 TCP 聯機的';三段式交握( Three-Way Handshake )';的原理。
  經過三向交握之後,呵呵!你的 client 端的 port 通常是高於 1024 的隨機取得的 port 至於主機端則視當時的服務是開啟哪一個 port 而定,例如 WWW 選擇 80 而 FTP 則以 21 為正常的聯機信道!
總而言之,我們這裡所說的端口,不是計算機硬件的I/O端口,而是軟件形式上的概念.工具提供服務類型的不同,端口分為兩種,一種是TCP端口,一種是UDP端口。計算機之間相互通信的時候,分為兩種方式:一種是發送信息以後,可以確認信息是否到達,也就是有應答的方式,這種方式大多採用TCP協議;一種是發送以後就不管了,不去確認信息是否到達,這種方式大多採用UDP協議。對應這兩種協議的服務提供的端口,也就分為TCP端口和UDP端口。
那麼,如果攻擊者使用軟件掃瞄目標計算機,得到目標計算機打開的端口,也就瞭解了目標計算機提供了那些服務。我們都知道,提供服務就一定有服務軟件的漏洞,根據這些,攻擊者可以達到對目標計算機的初步瞭解。如果計算機的端口打開太多,而管理者不知道,那麼,有兩種情況:一種是提供了服務而管理者沒有注意,比如安裝IIS的時候,軟件就會自動增加很多服務,而管理員可能沒有注意到;一種是服務器被攻擊者安裝木馬,通過特殊的端口進行通信。這兩種情況都是很危險的,說到底,就是管理員不瞭解服務器提供的服務,減小了系統安全係數。
本帖最近評分記錄
  • 蔡逸竹 經驗 -40 扣掉灌水的6篇積分 2006-10-14 16:20

TOP

感謝大大的無私分享--------------  真是感恩啦---------------------

TOP

雖然很複雜 但還是收藏起來 等有機會接觸 當資料看

TOP

感謝大大的分享~~增加了更多的基礎學習

TOP

 12 12
發新話題

本站所有圖文均屬網友發表,僅代表作者的觀點與本站無關,如有侵權請通知版主會盡快刪除。