系統被入侵後的恢復(轉)

post0發表於2007-08-11
系統被入侵後的恢復(轉)[@more@]

  本文主要講述UNIX或者NT系統如果被侵入,應該如何應對。

  注意:你在系統恢復過程中的所有步驟都應該與你所在組織的網路安全策略相符。

  A.準備工作

  1.商討安全策略

  如果你的組織沒有自己的安全策略,那麼需要按照以下步驟建立自己的安全策略。

  1.1.和管理人員協商

  將入侵事故通知管理人員,可能在有的組織中很重要。在be aware進行事故恢復的時候,網路管理人員能夠得到內部各部門的配合。也應該明白入侵可能引起傳媒的注意。

  1.2.和法律顧問協商

  在開始你的恢復工作之前,你的組織需要決定是否進行法律調查。

  注意CERT(Computer Emergency Response Team)只提供技術方面的幫助和提高網路主機對安全事件的反應速度。它們不會提出法律方面的建議。所以,對於法律方面的問題建議你諮詢自己的法律顧問。你的法律顧問能夠告訴你入侵者應該承擔的法律責任(民事的或者是刑事的),以及有關的法律程式。

  現在,是你決定如何處理這起事故的時候了,你可以加強自己系統的安全或者選擇報警。

  如果你想找出入侵者是誰,建議你與管理人員協商並諮詢法律顧問,看看入侵者是否觸犯了地方或者全國的法律。根據這些,你可以報案,看看警方是否願意對此進行調查。

  針對與入侵事件,你應該與管理人員和法律顧問討論以下問題:

  如果你要追蹤入侵者或者跟蹤網路連線,是否會觸犯法律。

  如果你的站點已經意識到入侵但是沒有采取措施阻止,要承擔什麼法律責任。

  入侵者是否觸犯了全國或者本地的法律。

  是否需要進行調查。

  是否應該報警。

  1.3.報警

  通常,如果你想進行任何型別的調查或者起訴入侵者,最好先跟管理人員和法律顧問商量以下。然後通知有關執法機構。

  一定要記住,除非執法部門的參與,否則你對入侵者進行的一切跟蹤都可能是非法的。

  1.4.知會其他有關人員

  除了管理者和法律顧問之外,你還需要通知你的恢復工作可能影響到的人員,例如其他網路管理人員和使用者。

  2.記錄恢復過程中所有的步驟

  毫不誇張地講,記錄恢復過程中你採取的每一步措施,是非常重要的。恢復一個被侵入的系統是一件很麻煩的事,

要耗費大量的時間,因此經常會使人作出一些草率的決定。記錄自己所做的每一步可以幫助你避免作出草率的決定,還可以留作以後的參考。

記錄還可能對法律調查提供幫助。

B.奪回對系統的控制權

  1.將被侵入的系統從網路上斷開

  為了奪回對被侵入系統的控制權,你需要將其從網路上斷開,包括播號連線。斷開以後,你可能想進入UNIX系統的單使用者模式或者NT的本地管理者(local administrator)模式,以奪回系統控制權。然而,重啟或者切換到單使用者/本地管理者模式,會丟失一些有用的資訊,因為被侵入系統當前執行的所有程式都會被殺死。

  因此,你可能需要進入C.5.檢查網路嗅探器節,以確定被侵入的系統是否有網路嗅探器正在執行。

  在對系統進行恢復的過程中,如果系統處於UNIX單使用者模式下,會阻止使用者、入侵者和入侵程式對系統的訪問或者切換主機的執行狀態。

  如果在恢復過程中,沒有斷開被侵入系統和網路的連線,在你進行恢復的過程中,入侵者就可能連線到你的主機,破壞你的恢復工作。

  2.複製一份被侵入系統的影像

  在進行入侵分析之前,建議你備份被侵入的系統。以後,你可能會用得著。

  如果有一個相同大小和型別的硬碟,你就可以使用UNIX命令dd將被侵入系統複製到這個硬碟。

  例如,在一個有兩個SCSI硬碟的Linux系統,以下命令將在相同大小和型別的備份硬碟(/dev/sdb)上覆制被侵入系統(在/dev/sda盤上)的一個精確複製。

  # dd if=/dev/sda of=/dev/sdb

  請閱讀dd命令的手冊頁獲得這個命令更詳細的資訊。

  還有一些其它的方法備份被侵入的系統。在NT系統中沒有類似於dd的內建命令,你可以使用一些第三方的程式複製被侵入系統的整個硬碟影像。

  建立一個備份非常重要,你可能會需要將系統恢復到侵入剛被發現時的狀態。它對法律調查可能有幫助。記錄下備份的卷標、標誌和日期,然後儲存到一個安全的地方以保持資料的完整性。

  C.入侵分析

  現在你可以審查日誌檔案和系統配置檔案了,檢查入侵的蛛絲馬跡,入侵者對系統的修改,和系統配置的脆弱性。

  1.檢查入侵者對系統軟體和配置檔案的修改

  a.校驗系統中所有的二進位制檔案

  在檢查入侵者對系統軟體和配置檔案的修改時,一定要記住:你使用的校驗工具本身可能已經被修改過,作業系統的核心也有可能被修改了,這非常普遍。因此,建議你使用一個可信任的核心啟動系統,而且你使用的所有分析工具都應該是乾淨的。對於UNIX系統,你可以透過建立一個啟動盤,然後對其防寫來獲得一個可以信賴的作業系統核心。

  你應該徹底檢查所有的系統二進位制檔案,把它們與原始釋出介質(例如光碟)做比較。因為現在已經發現了大量的特洛伊木馬二進位制檔案,攻擊者可以安裝到系統中。

  在UNIX系統上,通常有如下的二進位制檔案會被特洛伊木馬代替:telnet、in.telnetd、login、su、ftp、ls、 ps、netstat、ifconfig、find、du、df、libc、sync、inetd和syslogd。除此之外,你還需要檢查所有被 /etc/inetd.conf檔案引用的檔案,重要的網路和系統程式以及共享庫檔案。

  在NT系統上。特洛伊木馬通常會傳播病毒,或者所謂的"遠端管理程式",例如Back Orifice和NetBus。特洛伊木馬會取代處理網路連線的一些系統檔案。

  一些木馬程式具有和原始二進位制檔案相同的時間戳和sum校驗值,透過校驗和無法判斷檔案是否被修改。因此,對於UNIX系統,我們建議你使用cmp程式直接把系統中的二進位制檔案和原始釋出介質上對應的檔案進行比較。

  你還可以選擇另一種方法檢查可疑的二進位制檔案。向供應商索取其釋出的二進位制檔案的MD5校驗值,然後使用MD5校驗值對可疑的二進位制檔案進行檢查。這種方法適用於UNIX和NT。

  b.校驗系統配置檔案

  在UNIX系統中,你應該進行如下檢查:

  檢查/etc/passwd檔案中是否有可疑的使用者

  檢查/etc/inet.conf檔案是否被修改過

  如果你的系統允許使用r命令,例如rlogin、rsh、rexec,你需要檢查/etc/hosts.equiv或者.rhosts檔案。

  檢查新的SUID和SGID檔案。下面命令會列印出系統中的所有SUID和SGID檔案:

  #find / ( -perm -004000 -o -perm -002000 ) -type f -print

  對於NT,你需要進行如下檢查:

  檢查不成對的使用者和組成員

  檢查啟動登入或者服務的程式的登錄檔入口是否被修改

  檢查"net share"命令和伺服器管理工具共有的非驗證隱藏檔案

  檢查pulist.ext程式無法識別的程式

  2.檢查被修改的資料

  入侵者經常會修改系統中的資料。所以建議你對web頁面檔案、ftp存檔檔案、使用者目錄下的檔案以及其它的檔案進行校驗。

  3.檢查入侵者留下的工具和資料

  入侵者通常會在系統中安裝一些工具,以便繼續監視被侵入的系統。

  入侵者一般會在系統中留下如下種類的檔案:

  網路嗅探器

  網路嗅探器就是監視和記錄網路行動的一種工具程式。入侵者通常會使用網路嗅探器獲得在網路上以明文進行傳輸的使用者名稱和密碼。(見C.5)

  嗅探器在UNIX系統中更為常見。

  特洛伊木馬程式

  特洛伊木馬程式能夠在表面上執行某種功能,而實際上執行另外的功能。因此,入侵者可以使用特洛伊木馬程式隱藏自己的行為,獲得使用者名稱和密碼資料,建立後門以便將來對系統在此訪問被侵入系統。

  後門

  後門程式將自己隱藏在被侵入的系統,入侵者透過它就能夠不透過正常的系統驗證,不必使用安全缺陷攻擊程式就可以進入系統。

  安全缺陷攻擊程式

  系統執行存在安全缺陷的軟體是其被侵入的一個主要原因。入侵者經常會使用一些針對已知安全缺陷的攻擊工具,以此獲得對系統的非法訪問許可權。這些工具通常會留在系統中,儲存在一個隱蔽的目錄中。

入侵者使用的其它工具

  以上所列無法包括全部的入侵工具,攻擊者在系統中可能還會留下其它入侵工具。這些工具包括:

  系統安全缺陷探測工具

  對其它站點發起大規模探測的指令碼

  發起拒絕服務攻擊的工具

  使用被侵入主機計算和網路資源的程式

  入侵工具的輸出

  你可能會發現入侵工具程式留下的一些日誌檔案。在這些檔案中可能會包含被牽扯的其它站點,攻擊者利用的安全缺陷,以及其它站點的安全缺陷。

  因此,建議你對系統進行徹底的搜尋,找出上面列出的工具及其輸出檔案。一定要注意:在搜尋過程中,要使用沒有被攻擊者修改過的搜尋工具複製。

  搜尋主要可以集中於以下方向:

  檢查UNIX系統/dev/目錄下意外的ASCII檔案。一些特洛伊木馬二進位制檔案使用的配置檔案通常在/dev目錄中。

  仔細檢查系統中的隱藏檔案和隱藏目錄。如果入侵者在系統中建立一個一個新的帳戶,那麼這個新帳戶的起始目錄以及他使用的檔案可能是隱藏的。

  檢查一些名字非常奇怪的目錄和檔案,例如:...(三個點)、..(兩個點)以及空白(在UNIX系統中)。入侵者通常會在這樣的目錄中隱藏檔案。對於NT,應該檢查那些名字和一些系統檔名非常接近的目錄和檔案。

  4.審查系統日誌檔案

  詳細地審查你的系統日誌檔案,你可以瞭解系統是如何被侵入的,入侵過程中,攻擊者執行了哪些操作,以及哪些遠端主機訪問了你的主機。透過這些資訊,你能夠對入侵有更加清晰的認識。

  記住:系統中的任何日誌檔案都可能被入侵者改動過。

  對於UNIX系統,你可能需要檢視/etc/syslog.conf檔案確定日誌資訊檔案在哪些位置。NT通常使用三個日誌檔案,記錄所有的 NT事件,每個NT事件都會被記錄到其中的一個檔案中,你可以使用Event Viewer檢視日誌檔案。其它一些NT應用程式可能會把自己的日誌放到其它的地方,例如ISS伺服器預設的日誌目錄是c:winntsys_tem32(去掉"_")logfiles。

  以下是一個通常使用的UNIX系統日誌檔案列表。由於系統配置的不同可能你的系統中沒有其中的某些檔案。

  messages

  messages日誌檔案儲存了大量的資訊。可以從這個檔案中發現異常資訊,檢查入侵過程中發生了哪些事情。

  xferlog

  如果被侵入系統提供FTP服務,xferlog檔案就會記錄下所有的FTP傳輸。這些資訊可以幫助你確定入侵者向你的系統上載了哪些工具,以及從系統下載了哪些東西。

  utmp

  儲存當前登入每個使用者的資訊,使用二進位制格式。這個檔案只能確定當前哪些使用者登入。使用who命令可以讀出其中的資訊。

  wtmp

  每次使用者成功的登入、退出以及系統重啟,都會在wtmp檔案中留下記錄。這個檔案也使用二進位制格式,你需要使用工具程式從中獲取有用的資訊。 last就是一個這樣的工具。它輸出一個表,包括使用者名稱、登入時間、發起連線的主機名等資訊,詳細用法可以使用man last查詢。檢查在這個檔案中記錄的可疑連線,可以幫助你確定牽扯到這起入侵事件的主機,找出系統中的哪些帳戶可能被侵入了。

  secure

  某些些版本的UNIX系統(例如:RedHat Linux)會將tcp_wrappers資訊記錄到secure檔案中。如果系統的 inetd精靈使用tcp_wrappers,每當有連線請求超出了inetd提供的服務範圍,就會在這個檔案中加入一條日誌資訊。透過檢查這個日誌檔案,可以發現一些異常服務請求,或者從陌生的主機發起的連線。

  審查日誌,最基本的一條就是檢查異常現象。

  5.檢查網路嗅探器

  入侵者侵入一個UNIX系統後,為了獲得使用者名稱和密碼資訊,一般會在系統上安裝一個網路監視程式,這種程式就叫作嗅探器或者資料包嗅探器。對於NT,入侵者會使用遠端管理程式實現上述目的。

  判斷系統是否被安裝了嗅探器,首先要看當前是否有程式使你的網路介面處於混雜(Promiscuous)模式下。如果任何網路介面處於 promiscuous模式下,就表示可能系統被安裝了網路嗅探器。注意如果你重新啟動了系統或者在單使用者模式下操作,可能無法檢測到 Promiscuous模式。使用ifconfig命令就可以知道系統網路介面是否處於promoscuous模式下(注意一定使用沒有被侵入者修改的 ifconfig):

  #/path-of-clean-ifconfig/ifconfig -a

  有一些工具程式可以幫助你檢測系統內的嗅探器程式:

  cpm(Check Promiscuous Mode)--UNIX可以從以下地址下載:

  ftp://coast.cs.purdue.edu/pub/tools/unix/cpm/

  ifstatus--UNIX可以從以下地址下載:

  ftp://coast.cs.purdue.edu/pub/tools/unix/ifstatus/

  neped.c可以從以下地址的到:

  ftp://apostols.org/AposTolls/snoapshots/neped/neped.c

  一定要記住一些合法的網路監視程式和協議分析程式也會把網路介面設定為promiscuous模式。檢測到網路介面處於promicuous模式下,並不意味著系統中有嗅探器程式正在執行。

  但是,在Phrack雜誌的一篇文章:(Phrack Magazine Volume 8,Issue 53 July 8,1998, article 10 of 15, Interface Promiscuity Obscurity)中,有人提供了一些針對FreeBSD、 Linux、HP-UX、IRIX和Solaris系統的模組,可以擦除IFF_PROMISC標誌位,從而使嗅探器逃過此類工具的檢查。以此,即使使用以上的工具,你沒有發現嗅探器,也不能保證攻擊者沒有在系統中安裝嗅探器。

  現在,LKM(Loadable Kernel Model,可載入核心模組)的廣泛應用,也增加了檢測難度。關於這一方面的檢測請參考使用KSAT檢測可載入核心模組。

還有一個問題應該注意,嗅探器程式的日誌檔案的大小會急劇增加。使用df程式檢視檔案系統的某個部分的大小是否太大,也可以發現嗅探器程式的蛛絲馬跡。建議使用lsof程式發現嗅探器程式開啟的日誌檔案和訪問訪問報文裝置的程式。在此,還要注意:使用的df程式也應該是乾淨的。

  一旦在系統中發現了網路嗅探器程式,我們建議你檢查嗅探器程式的輸出檔案確定哪些主機受到攻擊者威脅。被嗅探器程式捕獲的報文中目的主機將受到攻擊者的威脅,不過如果系統的密碼是透過明文傳輸,或者目標主機和源主機互相信任,那麼源主機將受到更大的威脅。

  通常嗅探器程式的日誌格式如下:

  -- TCP/IP LOG -- TM: Tue Nov 15 15:12:29 --

  PATH: not_at_risk.domain.com(1567) => at_risk.domain.com(telnet)

  使用如下命令可以從嗅探器程式的日誌檔案中得到受到威脅的主機列表:

  % grep PATH: $sniffer_log_file   awk "{print $4}"  

  awk -F( "{print $1}"  sort -u

  你可能需要根據實際情況對這個命令進行一些調整。一些嗅探器程式會給日誌檔案加密,增加了檢查的困難。

  你應該知道不只是在嗅探器程式日誌檔案中出現的主機受到攻擊者的威脅,其它的主機也可能受到威脅。

  建議你參獲得更為詳細的資訊。

  6.檢查網路上的其它系統

  除了已知被侵入的系統外,你還應該對網路上所有的系統進行檢查。主要檢查和被侵入主機共享網路服務(例如:NIX、NFS)或者透過一些機制(例如:hosts.equiv、.rhosts檔案,或者kerberos伺服器)和被侵入主機相互信任的系統。

  建議你使用CERT的入侵檢測檢查列表進行這一步檢查工作。

  

  

  7.檢查涉及到的或者受到威脅的遠端站點

  在審查日誌檔案、入侵程式的輸出檔案和系統被侵入以來被修改的和新建立的檔案時,要注意哪些站點可能會連線到被侵入的系統。根據經驗那些連線到被侵入主機的站點,通常已經被侵入了。所以要儘快找出其它可能遭到入侵的系統,通知其管理人員。

D.通知相關的CSIRT和其它被涉及的站點

  1.事故報告

  入侵者通常會使用被侵入的帳戶或者主機發動對其它站點的攻擊。如果你發現針對其它站點的入侵活動,建議你馬上和這些站點聯絡。告訴他們你發現的入侵徵兆,建議他們檢查自己的系統是否被侵入,以及如何防護。要儘可能告訴他們所有的細節,包括:日期/時間戳、時區,以及他們需要的資訊。

  你還可以向CERT(計算機緊急反應組)提交事故報告,從他們那裡的到一些恢復建議。

  中國大陸地區的網址是:

  

  2.與CERT調節中心聯絡

  你還可以填寫一份事故報告表,使用電子郵件傳送從那裡可以得到更多幫助。CERT會根據事故報告表對攻擊趨勢進行分析,將分析結果總結到他們的安全建議和安全總結,從而防止攻擊的蔓延。可以從以下網址獲得事故報告表:

  

  3.獲得受牽連站點的聯絡資訊

  如果你需要獲得頂級域名(.com、.edu、.net、.org等)的聯絡資訊,建議你使用interNIC的whois資料庫。

  

  如果你想要獲得登記者的確切資訊,請使用interNIC的登記者目錄:

  

  想獲得亞太地區和澳洲的聯絡資訊,請查詢:

  

  

  如果你需要其它事故反應組的聯絡資訊,請查閱FIRST(Forum of Incident Response and Security Teams)的聯絡列表:

  

  要獲得其它的聯絡資訊,請參考:

  

  建議你和捲入入侵活動的主機聯絡時,不要發信給root或者postmaster。因為一旦這些主機已經被侵入,入侵者就可能獲得了超級使用者的許可權,就可能讀到或者攔截送到的e-mail。

  E.恢復系統

  1.安裝乾淨的作業系統版本

  一定要記住如果主機被侵入,系統中的任何東西都可能被攻擊者修改過了,包括:核心、二進位制可執行檔案、資料檔案、正在執行的程式以及記憶體。通常,需要從釋出介質上重灌作業系統,然後在重新連線到網路上之前,安裝所有的安全補丁,只有這樣才會使系統不受後門和攻擊者的影響。只是找出並修補被攻擊者利用的安全缺陷是不夠的。

  我們建議你使用乾淨的備份程式備份整個系統。然後重灌系統。

  2.取消不必要的服務

  只配置系統要提供的服務,取消那些沒有必要的服務。檢查並確信其配置檔案沒有脆弱性以及該服務是否可靠。通常,最保守的策略是取消所有的服務,只啟動你需要的服務。

  3.安裝供應商提供的所有補丁

  我們強烈建議你安裝了所有的安全補丁,要使你的系統能夠抵禦外來攻擊,不被再次侵入,這是最重要的一步。

  你應該關注所有針對自己系統的升級和補丁資訊。

  4.查閱CERT的安全建議、安全總結和供應商的安全提示

  我們鼓勵你查閱CERT以前的安全建議和總結,以及供應商的安全提示,一定要安裝所有的安全補丁。

  CERT安全建議:

  

  CERT安全總結:

  

  供應商安全提示:

  ftp://ftp.cert.org/pub/cert_bulletins/

  5.謹慎使用備份資料

  在從備份中恢復資料時,要確信備份主機沒有被侵入。一定要記住,恢復過程可能會重新帶來安全缺陷,被入侵者利用。如果你只是恢復使用者的home目錄以及資料檔案,請記住檔案中可能藏有特洛伊木馬程式。你還要注意使用者起始目錄下的.rhost檔案。

  6.改變密碼

  在彌補了安全漏洞或者解決了配置問題以後,建議你改變系統中所有帳戶的密碼。一定要確信所有帳戶的密碼都不容易被猜到。你可能需要使用供應商提供的或者第三方的工具加強密碼的安全。

  澳大利亞CERT發表了一篇choosing good passwords的文章,可以幫助你選擇良好的密碼。

  F.加強系統和網路的安全

  1.根據CERT的UNIX/NT配置指南檢查系統的安全性

  CERT的UNIX/NT配置指南可以幫助你檢查系統中容易被入侵者利用的配置問題。

  

  

  查閱安全工具文件可以參考以下文章,決定使用的安全工具。

  http://www.cert.org/tech_tips/security_tools.html

  2.安裝安全工具

  在將系統連線到網路上之前,一定要安裝所有選擇的安全工具。同時,最好使用Tripwire、aide等工具對系統檔案進行MD5校驗,把校驗碼放到安全的地方,以便以後對系統進行檢查。

  3.開啟日誌

  啟動日誌(logging)/檢查(auditing)/記帳(accounting)程式,將它們設定到準確的級別,例如sendmail日誌應該是9級或者更高。經常備份你的日誌檔案,或者將日誌寫到另外的機器、一個只能增加的檔案系統或者一個安全的日誌主機。

  4.配置防火牆對網路進行防禦

  現在有關防火牆的配置文章很多,在此就不一一列舉了。你也可以參考:

  

  G.重新連線到Internet全

  完成以上步驟以後,你就可以把系統連線回Internet了。

  H.升級你的安全策略

  CERT調節中心建議每個站點都要有自己的電腦保安策略。每個組織都有自己特殊的文化和安全需求,因此需要根據自己的情況指定安全策略。關於這一點請參考RFC2196站點安全手冊:

  ftp://ftp.isi.edu/in-notes/rfc2196.txt

  1.總結教訓

  從記錄中總結出對於這起事故的教訓,這有助於你檢討自己的安全策略。

  2.計算事故的代價

  許多組織只有在付出了很大代價以後才會改進自己的安全策略。計算事故的代價有助於讓你的組織認識到安全的重要性。而且可以讓管理者認識到安全有多麼重要。

  3.改進你的安全策略

  最後一步是對你的安全策略進行修改。所做的修改要讓組織內的所有成員都知道,還要讓他們知道對他們的影響。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-945609/,如需轉載,請註明出處,否則將追究法律責任。

相關文章