***初級技術講解(中)

***初級技術講解(中)

  當然大多數***成功的範例還是利用了系統軟件本身的漏洞。造成軟件漏洞的主要原因在於編制該軟件的程序員缺乏安全意識。當***者對軟件進行非正常的調用請求時造成緩衝區溢出或者對文件的非法訪問。其中利用緩衝區溢出進行的***最爲普遍,據統計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命令失效<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下,多數管理員沒有檢查根區的軟件,所以一些***者將一些後門留在根區。 
. 所以更多的管理員是 用MD5校驗和檢測這種後門的。 
<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試圖某個訪問的數據,但當***者給網絡通行後門加密 後,就不可能被判定兩臺機器間的傳輸內容了。 

 

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