【***教程】******、防範及善後

網絡安全從其本質上來講就是網絡上的信息安全。從廣義來說,凡是涉及到網絡上信息的保密性、完整性、可用性、真實性和可控性的相關技術和理論都是網絡安全的研究領域。確保網絡系統的信息安全是網絡安全的目標,信息安全包括兩個方面:信息的存 儲安全和信息的傳輸安全。信息的存儲安全是指信息在靜態存放狀態下的安全,如是否會被非授權調用等。信息的傳輸安全是指信息在動態傳輸過程中安全。爲了確保網絡信息的傳輸安全,有以下幾個問題:   (1)對網絡上信息的監聽
  (2)對用戶身份的仿冒
  (3)對網絡上信息的篡改
  (4)對發出的信息予以否認
  (5)對信息進行重發
  對於一般的常用***方法主要有
  1.口令***
  所謂口令***,就是指用一些軟件解開已經得到但被人加密的口令文檔,不過許多***已大量採用一種可以繞開或屏蔽口令保護的程序來完成這項工作。對於那些可以解開或屏蔽口令保護的程序通常被稱爲“Crack”。由於這些軟件的廣爲流傳,使得***電腦網絡系統有時變得相當簡單,一般不需要很深入瞭解系統的內部結構,是初學者的好方法。
  2.特洛伊***術
  說到特洛伊***,只要知道這個故事的人就不難理解,它最典型的做法可能就是把一個能幫助***完成某一特定動作的程序依附在某一合法用戶的正常程序中,這時合法用戶的程序代碼已被改變。一旦用戶觸發該程序,那麼依附在內的***指令代碼同時被激活,這些代碼往往能完成***指定的任務。由於這種***法需要***有很好的編程經驗,且要更改代碼、要一定的權限,所以較難掌握。但正因爲它的複雜性,一般的系統管理員很難發現。
  3.監聽法
  這是一個很實用但風險也很大的******方法,但還是有很多***系統的***採用此類方法,正所謂藝高人膽大。
  網絡節點或工作站之間的交流是通過信息流的轉送得以實現,而當在一個沒有集線器的網絡中,數據的傳輸並沒有指明特定的方向,這時每一個網絡節點或工作站都是一個接口。這就好比某一節點說:“嗨!你們中有誰是我要發信息的工作站。”
  此時,所有的系統接口都收到了這個信息,一旦某個工作站說:“嗨!那是我,請把數據傳過來。”聯接就馬上完成。
  目前有網絡上流傳着很多嗅探軟件,利用這些軟件就可以很簡單的監聽到數據,甚至就包含口令文件,有的服務在傳輸文件中直接使用明文傳輸,這也是非常危險的。
4.E-mail技術
  使用email加***程序這是***經常使用的一種手段,而且非常奏效,一般的用戶,甚至是網管,對網絡安全的意識太過於淡薄,這就給很多***以可乘之機。
  5.病毒技術
  作爲一個***,如此使用應該是一件可恥的事情,不過大家可以學習,畢竟也是一種***的辦法,特殊時間,特殊地點完全可以使用。
  6.隱藏技術
  網絡***的一般步驟及實例
  ***的準備階段
  首先需要說明的是,***者的來源有兩種,一種是內部人員利用自己的工作機會和權限來獲取不應該獲取的權限而進行的***。另一種是外部人員***,包括遠程***、網絡節點接入***等。本節主要討論遠程***。
  進行網絡***是一件系統性很強的工作,其主要工作流程是:收集情報,遠程***,遠程登錄,取得普通用戶的權限,取得超級用戶的權限,留下後門,清除日誌。主要內容包括目標分析,文檔獲取,破解密碼,日誌清除等技術,下面分別介紹。
  1.確定***的目的
  ***者在進行一次完整的***之前首先要確定***要達到什麼樣的目的,即給對方造成什麼樣的後果。常見的***目的有破壞型和***型兩種。破壞型***指的只是破壞***目標,使其不能正常工作,而不能隨意控制目標的系統的運行。要達到破壞型***的目的,主要的手段是拒絕服務***(Denial Of Service)。另一類常見的***目的是******目標,這種***是要獲得一定的權限來達到控制***目標的目的。應該說這種***比破壞型***更爲普遍,威脅性也更大。因爲***一旦獲取***目標的管理員權限就可以對此服務器做任意動作,包括破壞性的***。此類***一般也是利用服務器操作系統、應用軟件或者網絡協議存在的漏洞進行的。當然還有另一種造成此種***的原因就是密碼泄露,***者靠猜測或者窮舉法來得到服務器用戶的密碼,然後就可以用和真正的管理員一樣對服務器進行訪問。
  2.信息收集
  除了確定***目的之外,***前的最主要工作就是收集儘量多的關於***目標的信息。這些信息主要包括目標的操作系統類型及版本,目標提供哪些服務,各服務器程序的類型與版本以及相關的社會信息。
  要***一臺機器,首先要確定它上面正在運行的操作系統是什麼,因爲對於不同類型的操作系統,其上的系統漏洞有很大區別,所以***的方法也完全不同,甚至同一種操作系統的不同版本的系統漏洞也是不一樣的。要確定一臺服務器的操作系統一般是靠經驗,有些服務器的某些服務顯示信息會泄露其操作系統。例如當我們通過TELNET連上一臺機器時,如果顯示
  Unix(r)System V Release 4.0
  login:
  那麼根據經驗就可以確定這個機器上運行的操作系統爲SUN OS 5.5或5.5.l。但這樣確定操作系統類型是不準確的,因爲有些網站管理員爲了迷惑***者會故意更改顯示信息,造成假象。
還有一種不是很有效的方法,諸如查詢DNS的主機信息(不是很可靠)來看登記域名時的申請機器類型和操作系統類型,或者使用社會工程學的方法來獲得,以及利用某些主機開放的SNMP的公共組來查詢。
  另外一種相對比較準確的方法是利用網絡操作系統裏的TCP/IP堆棧作爲特殊的“指紋”來確定系統的真正身份。因爲不同的操作系統在網絡底層協議的各種實現細節上略有不同。可以通過遠程向目標發送特殊的包,然後通過返回的包來確定操作系統類型。例如通過向目標機發送一個FIN的包(或者是任何沒有ACK或SYN標記的包)到目標主機的一個開放的端口然後等待迴應。許多系統如windows、 BSDI、 CISCO、 HP/UX和 IRIX會返回一個RESET。通過發送一個SYN包,它含有沒有定義的TCP標記的TCP頭。那麼在Linux系統的迴應包就會包含這個沒有定義的標記,而在一些別的系統則會在收到SYN+BOGU包之後關閉連接。或是利用尋找初始化序列長度模板與特定的操作系統相匹配的方法。利用它可以對許多系統分類,如較早的Unix系統是64K長度,一些新的Unix系統的長度則是隨機增長。還有就是檢查返回包裏包含的窗口長度,這項技術根據各個操作系統的不同的初始化窗口大小來唯一確定它們。利用這種技術實現的工具很多,比較著名的有NMAP、CHECKOS、QUESO等。
  獲知目標提供哪些服務及各服務daemon的類型、版本同樣非常重要,因爲已知的漏洞一般都是對某一服務的。這裏說的提供服務就是指通常我們提到的喘口,例如一般TELNET在23端口,FTP在對21端口,WWW在80端口或8080端口,這只是一般情況,網站管理完全可以按自己的意願修改服務所監聽的端口號。在不同服務器上提供同一種服務的軟件也可以是不同,我們管這種軟件叫做daemon,例如同樣是提供FTP服務,可以使用wuftp、proftp,ncftp等許多不同種類的daemon。確定daemon的類型版本也有助於***利用系統漏洞攻破網站。
  另外需要獲得的關於系統的信息就是一些與計算機本身沒有關係的社會信息,例如網站所屬公司的名稱、規模,網絡管理員的生活習慣、電話號碼等。這些信息看起來與***一個網站沒有關係,實際上很多***都是利用了這類信息攻破網站的。例如有些網站管理員用自己的電話號碼做系統密碼,如果掌握了該電話號碼,就等於掌握了管理員權限進行信息收集可以用手工進行,也可以利用工具來完成,完成信息收集的工具叫做掃描器。用掃描器收集信息的優點是速度快,可以一次對多個目標進行掃描。
  ***的實施階段
  1.獲得權限
  當收集到足夠的信息之後,***者就要開始實施***行動了。作爲破壞性***,只需利用工具發動***即可。而作爲***性***,往往要利用收集到的信息,找到其系統漏洞,然後利用該漏洞獲取一定的權限。有時獲得了一般用戶的權限就足以達到修改主頁等目的了,但作爲一次完整的***是要獲得系統最高權限的,這不僅是爲了達到一定的目的,更重要的是證明***者的能力,這也符合***的追求。
  能夠被***者所利用的漏洞不僅包括系統軟件設計上的安全漏洞,也包括由於管理配置不當而造成的漏洞。前不久,因特網上應用最普及的著名www服務器提供商Apache的主頁被***攻破,其主頁面上的 Powered by Apache圖樣(羽毛狀的圖畫)被改成了Powered by Microsoft Backoffice的圖樣,那個***者就是利用了管理員對Webserver用數據庫的一些不當配置而成功取得最高權限的。
  當然大多數***成功的範例還是利用了系統軟件本身的漏洞。造成軟件漏洞的主要原因在於編制該軟件的程序員缺乏安全意識。當***者對軟件進行非正常的調用請求時造成緩衝區溢出或者對文件的非法訪問。其中利用緩衝區溢出進行的***最爲普遍,據統計80%以上成功的***都是利用了緩衝區溢出漏洞來獲得非法權限的。關於緩衝區溢出在後面用專門章節來作詳細解釋。
  無論作爲一個***還是一個網絡管理員,都需要掌握儘量多的系統漏洞。***需要用它來完成***,而管理員需要根據不同的漏洞來進行不同的防禦措施。瞭解最新最多的漏洞信息,可以到諸如Rootshell(www.rootshell.com)、Packetstorm(packetstorm.securify.com)、Securityfocus(www.securityfocus.com)等網站去查找。
  2.權限的擴大
  系統漏洞分爲遠程漏洞和本地漏洞兩種,遠程漏洞是指***可以在別的機器上直接利用該漏洞進行***並獲取一定的權限。這種漏洞的威脅性相當大,***的***一般都是從遠程漏洞開始的。但是利用遠程漏洞獲取的不一定是最高權限,而往往只是一個普通用戶的權限,這樣常常沒有辦法做***們想要做的事。這時就需要配合本地漏洞來把獲得的權限進行擴大,常常是擴大至系統的管理員權限。
 只有獲得了最高的管理員權限之後,纔可以做諸如網絡監聽、打掃痕跡之類的事情。要完成權限的擴大,不但可以利用已獲得的權限在系統上執行利用本地漏洞的程序,還可以放一些***之類的欺騙程序來套取管理員密碼,這種***是放在本地套取最高權限用的,而不能進行遠程控制。例如一個***已經在一臺機器上獲得了一個普通用戶的賬號和登錄權限,那麼他就可以在這臺機器上放置一個假的su程序。一旦***放置了假su程序,當真正的合法用戶登錄時,運行了su,並輸入了密碼,這時root密碼就會被記錄下來,下次***再登錄時就可以使用su變成root了。
  ***的善後工作
  1.日誌系統簡介
  如果***者完成***後就立刻離開系統而不做任何善後工作,那麼他的行蹤將很快被系統管理員發現,因爲所有的網絡操作系統一般都提供日誌記錄功能,會把系統上發生的動作記錄下來。所以,爲了自身的隱蔽性,***一般都會抹掉自己在日誌中留下的痕跡。想要了解***抹掉痕跡的方法,首先要了解常見的操作系統的日誌結構以及工作方式。Unix的日誌文件通常放在下面這幾個位置,根據操作系統的不同略有變化
  /usr/adm——早期版本的Unix。
  /Var/adm新一點的版本使用這個位置。
  /Varflort一些版本的Solaris、 Linux BSD、 Free BSD使用這個位置。
  /etc,大多數Unix版本把Utmp放在此處,一些Unix版本也把Wtmp放在這裏,這也是Syslog.conf的位置。
  下面的文件可能會根據你所在的目錄不同而不同:
  acct或pacct-一記錄每個用戶使用的命令記錄。
  accesslog主要用來服務器運行了NCSA HTTP服務器,這個記錄文件會記錄有什麼站點連接過你的服務器。
  aculo保存撥出去的Modems記錄。
  lastlog記錄了最近的Login記錄和每個用戶的最初目的地,有時是最後不成功Login的記錄。
  loginlog一記錄一些不正常的L0gin記錄。
  messages——記錄輸出到系統控制檯的記錄,另外的信息由Syslog來生成
  security記錄一些使用 UUCP系統企圖進入限制範圍的事例。
  sulog記錄使用su命令的記錄。
  utmp記錄當前登錄到系統中的所有用戶,這個文件伴隨着用戶進入和離開系統而不斷變化。
  Utmpx,utmp的擴展。
  wtmp記錄用戶登錄和退出事件。
  Syslog最重要的日誌文件,使用syslogd守護程序來獲得。
  2.隱藏蹤跡
  ***者在獲得系統最高管理員權限之後就可以隨意修改系統上的文件了(只對常規 Unix系統而言),包括日誌文件,所以一般***想要隱藏自己的蹤跡的話,就會對日誌進行修改。最簡單的方法當然就是刪除日誌文件了,但這樣做雖然避免了系統管理員根據IP追蹤到自己,但也明確無誤地告訴了管理員,系統己經被人侵了。所以最常用的辦法是隻對日誌文件中有關自己的那一部分做修改。關於修改方法的具體細節根據不同的操作系統有所區別,網絡上有許多此類功能的程序,例如 zap、 wipe等,其主要做法就是清除 utmp、wtmp、Lastlog和 Pacct等日誌文件中某一用戶的信息,使得當使用w、who、last等命令查看日誌文件時,隱藏掉此用戶的信息。
管理員想要避免日誌系統被***修改,應該採取一定的措施,例如用打印機實時記錄網絡日誌信息。但這樣做也有弊端,***一旦瞭解到你的做法就會不停地向日志裏寫入無用的信息,使得打印機不停地打印日誌,直到所有的紙用光爲止。所以比較好的避免日誌被修改的辦法是把所有日誌文件發送到一臺比較安全的主機上,即使用loghost。即使是這樣也不能完全避免日誌被修改的可能性,因爲***既然能攻入這臺主機,也很可能攻入loghost。
  只修改日誌是不夠的,因爲百密必有一漏,即使自認爲修改了所有的日誌,仍然會留下一些蛛絲馬跡的。例如安裝了某些後門程序,運行後也可能被管理員發現。所以,***高手可以通過替換一些系統程序的方法來進一步隱藏蹤跡。這種用來替換正常系統程序的***程序叫做rootkit,這類程序在一些***網站可以找到,比較常見的有LinuxRootKit,現在已經發展到了5.0版本了。它可以替換系統的ls、ps、netstat、inetd等等一系列重要的系統程序,當替換了ls後,就可以隱藏指定的文件,使得管理員在使用ls命令時無法看到這些文件,從而達到隱藏自己的目的。
  3.後門
   一般***都會在攻入系統後不只一次地進入該系統。爲了下次再進入系統時方便一點,***會留下一個後門,特洛伊***就是後門的最好範例。Unix中留後門的方法有很多種,下面介紹幾種常見的後門,供網絡管理員參考防範。
  <1>密碼破解後門
  這是***者使用的最早也是最老的方法,它不僅可以獲得對Unix機器的訪問,而且可 以通過破解密碼製造後門。這就是破解口令薄弱的帳號。以後即使管理員封了***者的當前帳號,這些新的帳號仍然可能是重新侵入的後門。多數情況下,***者尋找口令薄弱的未使用帳號,然後將口令改的難些。當管理員尋找口令薄弱的帳號是,也不會發現這些密碼已修改的帳號。因而管理員很難確定查封哪個帳號。
  <2>Rhosts + + 後門
  在連網的Unix機器中,象Rsh和Rlogin這樣的服務是基於rhosts文件裏的主機名使用簡 單的認證方法。用戶可以輕易的改變設置而不需口令就能進入。 ***者只要向可以訪問的某用戶的rhosts文件中輸入"+ +",就可以允許任何人從任何地方無須口令便能進 入這個帳號。特別當home目錄通過NFS向外共享時,***者更熱中於此。這些帳號也成 了***者再次侵入的後門。許多人更喜歡使用Rsh,因爲它通常缺少日誌能力. 許多管理員經常檢查 "+ +",所以***者實際上多設置來自網上的另一個帳號的主機名和 用戶名,從而不易被發現。
  <3>校驗和及時間戳後門
  早期,許多***者用自己的trojan程序替代二進制文件。系統管理員便依靠時間戳和系 統校驗和的程序辨別一個二進制文件是否已被改變,如Unix裏的sum程序。***者又發展了使trojan文件和原文件時間戳同步的新技術。它是這樣實現的: 先將系統時鐘撥 回到原文件時間,然後調整trojan文件的時間爲系統時間。一旦二進制trojan文件與 原來的精確同步,就可以把系統時間設回當前時間。Sum程序是基於CRC校驗,很容易 騙過。***者設計出了可以將trojan的校驗和調整到原文件的校驗和的程序。MD5是被 大多數人推薦的,MD5使用的算法目前還沒人能騙過。
  <4>Login後門
  在Unix裏,login程序通常用來對telnet來的用戶進行口令驗證. ***者獲取login.c的 原代碼並修改,使它在比較輸入口令與存儲口令時先檢查後門口令。如果用戶敲入後門 口令,它將忽視管理員設置的口令讓你長驅直入。這將允許***者進入任何帳號,甚至 是root。由於後門口令是在用戶真實登錄並被日誌記錄到utmp和wtmp前產生一個訪問 的,所以***者可以登錄獲取shell卻不會暴露該帳號。管理員注意到這種後門後,便 用"strings"命令搜索login程序以尋找文本信息. 許多情況下後門口令會原形畢露。***者就開始加密或者更好的隱藏口令,使strings命令失效. 所以更多的管理員是 用MD5校驗和檢測這種後門的。
<5>Telnetd後門
  當用戶telnet到系統,監聽端口的inetd服務接受連接隨後遞給in.telnetd,由它運行 login.一些***者知道管理員會檢查login是否被修改,就着手修改in.telnetd. 在in.telnetd內部有一些對用戶信息的檢驗,比如用戶使用了何種終端. 典型的終端 設置是Xterm或者VT100.***者可以做這樣的後門,當終端設置爲"letmein"時產生一 個不要任何驗證的shell. ***者已對某些服務作了後門,對來自特定源端口的連接產 生一個shell。
  <6>服務後門
  幾乎所有網絡服務曾被***者作過後門. Finger,rsh,rexec,rlogin,ftp,甚至 inetd等等的作了的版本隨處多是。有的只是連接到某個TCP端口的shell,通過後門口令就能獲取訪問。這些程序有時用刺媧□?Ucp這樣不用的服務,或者被加入inetd.conf 作爲一個新的服務,管理員應該非常注意那些服務正在運行,並用MD5對原服務程序做校驗。
  <7>Cronjob後門
  Unix上的Cronjob可以按時間表調度特定程序的運行。***者可以加入後門shell程序 使它在1AM到2AM之間運行,那麼每晚有一個小時可以獲得訪問。也可以查看cronjob中 經常運行的合法程序,同時置入後門。
  <8>庫後門
  幾乎所有的UNIX系統使用共享庫,共享庫用於相同函數的重用而減少代碼長度。一些***者在象crypt.c和_crypt.c這些函數裏作了後門;象login.c這樣的程序調用了 crypt()。當使用後門口令時產生一個shell。 因此,即使管理員用MD5檢查login程序,仍然能產生一個後門函數,而且許多管理員並不會檢查庫是否被做了後門。對於許多***者來說有一個問題: 一些管理員對所有東西多作了MD5校驗,有一種辦法是***者對open()和文件訪問函數做後門。後門函數讀原文件但執行trojan後門程序。所以 當MD5讀這些文件時,校驗和一切正常,但當系統運行時將執行trojan版本的,即使trojan庫本身也可躲過MD5校驗,對於管理員來說有一種方法可以找到後門,就是靜態編連MD5校驗程序然後運行,靜態連接程序不會使用trojan共享庫。
  <9>內核後門
  內核是Unix工作的核心,用於庫躲過MD5校驗的方法同樣適用於內核級別,甚至連靜態 連接多不能識別. 一個後門作的很好的內核是最難被管理員查找的,所幸的是內核的 後門程序還不是隨手可得,每人知道它事實上傳播有多廣。
  <10>文件系統後門
  ***者需要在服務器上存儲他們的掠奪品或數據,並不能被管理員發現,***者的文章常是包括exploit腳本工具,後門集,sniffer日誌,email的備分,原代碼,等等!有時爲了防止管理員發現這麼大的文件,***者需要修補"ls","du","fsck"以隱匿特定的目錄和文件,在很低的級別,***者做這樣的漏洞: 以專有的格式在硬盤上割出一部分,且表示爲壞的扇區。因此***者只能用特別的工具訪問這些隱藏的文件,對於普通的管理員來說,很難發現這些"壞扇區"裏的文件系統,而它又確實存在。
  <11>Boot塊後門
  在PC世界裏,許多病毒藏匿與根區,而殺病毒軟件就是檢查根區是否被改變。Unix下,多數管理員沒有檢查根區的軟件,所以一些***者將一些後門留在根區。
  <12>隱匿進程後門
  ***者通常想隱匿他們運行的程序,這樣的程序一般是口令破解程序和監聽程序 (sniffer),有許多辦法可以實現,這裏是較通用的: 編寫程序時修改自己的argv[] 使它看起來象其他進程名。可以將sniffer程序改名類似in.syslog再執行,因此 當管理員用"ps"檢查運行進程時,出現 的是標準服務名。可以修改庫函數致使 "ps"不能顯示所有進程,可以將一個後門或程序嵌入中斷驅動程序使它不會在進程表顯現。使用這個技術的一個後門例子是
  amod.tar.gz :
  http://star.niimm.spb.su/~maillist/bugtraq.1/0777.html網絡通行. 這些網絡通行後 門有時允許***者通過防火牆進行訪問。有許多網絡後門程序允許***者建立某個端 口號並不用通過普通服務就能實現訪問. 因爲這是通過非標準網絡端口的通行,管理 員可能忽視***者的足跡. 這種後門通常使用TCP,UDP和ICMP,但也可能是其他類型報文。
  <14>TCP Shell 後門
  ***者可能在防火牆沒有阻塞的高位TCP端口建立這些TCP Shell後門. 許多情況下,他 們用口令進行保護以免管理員連接上後立即看到是shell訪問. 管理員可以用netstat 命令查看當前的連接狀態,那些端口在偵聽,目前連接的來龍去脈. 通常這些後門可 以讓***者躲過TCP Wrapper技術. 這些後門可以放在SMTP端口,許多防火牆允許 e-mail通行的.
  <15>UDP Shell 後門
  管理員經常注意TCP連接並觀察其怪異情況,而UDP Shell後門沒有這樣的連接,所以 netstat不能顯示***者的訪問痕跡,許多防火牆設置成允許類似DNS的UDP報文的通行,通常***者將UDP Shell放置在這個端口,允許穿越防火牆。
  <16>ICMP Shell 後門
  Ping是通過發送和接受ICMP包檢測機器活動狀態的通用辦法之一。許多防火牆允許外界ping它內部的機器,***者可以放數據入Ping的ICMP包,在ping的機器間形成一個shell通道,管理員也許會注意到Ping包暴風,但除了他查看包內數據,否者***者不會暴露。
  <17>加密連接
  管理員可能建立一個sniffer試圖某個訪問的數據,但當***者給網絡通行後門加密 後,就不可能被判定兩臺機器間的傳輸內容了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章