<output id="r87xx"></output>
    1. 
      
      <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
        •   

              琪琪色原网站在线观看 | 99爱视频免费在线观看 | 色吧AV乱伦 | 99久久这里只有精品 | 黄片在线免费观 | 黄色一级录像片 | 久久不卡视频精典视频 | 国产精品久久久久久无码牛牛章艳 | 色播成人网站 | 天天操妹子 |
                   當前位置:首頁>軟件介紹>UNIX系統(tǒng)下的應(yīng)急響應(yīng)工具介紹 查詢:
              <output id="r87xx"></output>
            • <mark id="r87xx"><thead id="r87xx"><input id="r87xx"></input></thead></mark>
                   

              UNIX系統(tǒng)下的應(yīng)急響應(yīng)工具介紹
              文章來源:名易軟件

              注:這是一篇基礎(chǔ)的應(yīng)急工具介紹文檔。適合經(jīng)驗不多者。限于水平,不足之處請指出。

              整個文章分三個系列介紹對于OpenBSD,Linux,或者Solaris系統(tǒng)的應(yīng)急響應(yīng)和取證過程中有用的工具。本部份聚焦在系統(tǒng)工具上,第二部份主要是介紹文件系統(tǒng)工具,最后部分則主要是網(wǎng)絡(luò)工具。本文用到的都是基于OpenBSD3.2,DebianGNULinux3.0(woody),RedHat8.0(psyche),andSolaris9(akaSolaris2.9orSunOS5.9)的。

              依賴于你所使用的操作系統(tǒng),本文討論的許多軟件可能不是默認安裝的。這種情況下,請根據(jù)文章后面的參考部分獲得這些工具。


              TheSoapbox

              那些可以用來處理入侵威脅的工具不在本系列討論內(nèi)容中,本文只覆蓋在入侵發(fā)生之后使用的工具。入侵通常是可以防止的。使用一些比如保證系統(tǒng)更新安裝最新補丁的技術(shù),按照最小化服務(wù)配置系統(tǒng),使用設(shè)計為安全的操作系統(tǒng),使用能夠加固系統(tǒng)的核心補丁等等,這些來防范入侵的技術(shù)可能讓你根本就從來不會使用在本系列文章中介紹到的這些工具。

              讀者應(yīng)該命令,一旦攻擊者獲得了系統(tǒng)控制權(quán),這個系統(tǒng)就基本不應(yīng)該被信任。我們討論的工具多數(shù)都操作在用戶方式。一個欺騙的核心模塊可能不會讓你正常地檢查系統(tǒng),比如,這個系統(tǒng)已經(jīng)被入侵的情況下。這些欺騙的模塊會采用多種辦法來隱藏自己,比如根據(jù)系統(tǒng)設(shè)計來讓自己在系統(tǒng)運行的時候不能輕易檢測到。這意味著,你不應(yīng)該相信你使用的那些工具的輸出結(jié)果。這意味著在響應(yīng)入侵事件中,應(yīng)該采取懷疑、研究和謹慎的方式。

              你用于分析系統(tǒng)的工具應(yīng)該是你可以去信任,而且沒有被修改的。下面討論了一些技術(shù),比如將工具保存在離線的只讀介質(zhì)中,這樣,你就更可以信賴,而不是那些在已經(jīng)被入侵的系統(tǒng)上的二進制程序。

              你已經(jīng)做了所有正確的事情,可以進行下面的一些練習,你的系統(tǒng)已經(jīng)被入侵了。現(xiàn)在怎么辦呢?

              BreakingOuttheToolbelt

              現(xiàn)在首先應(yīng)該檢查那些我們后面需要用到的工具。這里不說man(1)提供的信息,特別是因為命令參數(shù)因為系統(tǒng)不同而不同。檢查這樣的信息是留給讀者的一種練習。

              vmstat-這是可以快速察看內(nèi)存、CPU和磁盤子系統(tǒng)的命令。vmstat通常執(zhí)行一個短時間,以便可以察看子系統(tǒng)利用的趨勢。vmstat經(jīng)??梢栽谙到y(tǒng)性能有一些問題的時候幫助我們知道哪些地方應(yīng)該去深究。

              mpstat-這個命令在Linux和Solaris上都有,可以用它察看處理器利用的統(tǒng)計。mpstat提供一個選項,允許在多處理器系統(tǒng)中察看指定CPU的統(tǒng)計。vmstat沒有這個功能。

              iostat-顯示比vmstat更詳細的跟子系統(tǒng)相關(guān)的統(tǒng)計信息。

              sar,sa,lastcomm,last-這些是檢查歷史數(shù)據(jù)和一些近來的系統(tǒng)事件。sar是一個Solaris和Linux的系統(tǒng)性能分析工具。這些可以用于檢查的性能數(shù)據(jù)類似于vmstat,mpstat和iostat的顯示。sar的數(shù)據(jù)是一段時間保存的內(nèi)容,因此可以察看過去的信息。lastcomm可以現(xiàn)在系統(tǒng)最近被執(zhí)行的命令。這些可以用在系統(tǒng)審計中。sa可以在*BSD和Linux中找到,它給用戶在系統(tǒng)審計中更多的選項來收集信息。

              ps-立足于進程狀態(tài),用于顯示系統(tǒng)執(zhí)行的進程和他們的信息。

              top-顯示的信息同ps接近,但是top可以了解到CPU消耗,可以根據(jù)用戶指定的時間來更新顯示。

              lsof-列舉打開的文件,顯示系統(tǒng)當前打開的所有文件。Unix系統(tǒng)的所有東西幾乎都可以看作是文件,因此lsof也顯示了系統(tǒng)的狀態(tài)中有重要意義的內(nèi)容。

              file-判斷文件是什么,不同的文件格式可以16進制的形式現(xiàn)實文件的內(nèi)容

              readelf-顯示二進制文件的ELF(可執(zhí)行鏈接和格式)頭的細節(jié)。這些內(nèi)容可以判斷可執(zhí)行提供的函數(shù)。

              od-以用戶指定的格式輸出文件內(nèi)容。od對于在文件內(nèi)容中有一些解釋的情況下察看原始內(nèi)容是有幫助的。

              ldd-讀取ELF頭的內(nèi)容,并顯示可執(zhí)行文件依賴的對象庫。

              string-現(xiàn)實文件中的ASCII字符串。對于在二進制文件中查找其中可讀的字符串是非常有用處的。

              find-用于在文件系統(tǒng)中查找指定的對象。

              strace-這個工具開始或者附加到一個當前運行的進程中,顯示這個進程所作的所有系統(tǒng)調(diào)用。這可以用來判斷程序運行的行為,并且來決定是否是合適的程序。strace存在于Linux上。在Solaris上是truss,*BSD提供的ktrace可以達到相似的功能。

              sudo-可以讓管理員給用戶以其他用戶的權(quán)限執(zhí)行命令的能力,而不用給該用戶密碼。

              grep-用于按照用戶指定的模式查詢。grep用匹配規(guī)則。

              less-頁面調(diào)度程序,用來按頁顯示文本。

              在參考部分中的"CD-ROMandFloppydistributions"[3]中,一些站點介紹了怎么編譯這些工具以便用于不同的操作系統(tǒng),并放置在CD-ROM?,F(xiàn)在,開始檢查運行的系統(tǒng)了。

              運氣就是在機會面前有所準備

              運氣對于技術(shù)來說,并不是可求解的。攻擊者可以采用很多方法來危及OS的安全。威脅系統(tǒng)安全的漏洞可能是OS提供商,也可以是那些應(yīng)用軟件。當漏洞還沒有大面積公布,或者還沒有讓它的相關(guān)提供商自己知道的時候,攻擊者已經(jīng)在IRC里面知道那種系統(tǒng)可以被入侵了。作為一個安全管理員,你必須在這場游戲中表現(xiàn)一直出色。但是,攻擊者則只需要一次就足夠。

              然而,你需要做許多前期的準備工作。你應(yīng)該有一個應(yīng)急響應(yīng)的策略。你必須有一張CD-ROM或者軟盤什么的,來存儲檢查系統(tǒng)中需要的工具,而不是使用被入侵的系統(tǒng)中的工具。如果正使用軟盤,讓他們處于寫保護模式,你可以在取證[5]中獲得非常優(yōu)秀的資源。

              現(xiàn)在回到機器上。把事件響應(yīng)的日期和時間都紀錄在記錄本上。并且紀錄采取的每一步的所有細節(jié)和時間。裝載CD-ROM或者軟盤,并且使用紀錄在這些介質(zhì)上的軟件,緊記按照易失性的順序[6]保存相關(guān)的信息到安全的地方。

              按照易失性順序的重要原因是因為入侵事件發(fā)生后與之相關(guān)信息的數(shù)量和自量都將隨時間增加而迅速減少。那些經(jīng)驗豐富的攻擊者制造的事件則可能讓曲線更陡,下降速度更快。


              了解自己

              可能在入侵事件之前,你已經(jīng)在系統(tǒng)上花費了大量時間。你了解這些系統(tǒng)的里里外外,進行了相當多的文檔工作,并且做了備份。在系統(tǒng)上,開啟了進程審計(或者*BSD的系統(tǒng)審計),進行了系統(tǒng)實時數(shù)據(jù)(sadc[8])來保存系統(tǒng)的性能數(shù)據(jù)。管理日志的時候,可能沒有足夠的空間來頻繁存儲這些數(shù)據(jù),你可以發(fā)送syslog數(shù)據(jù)到安全的日志服務(wù)器上。

              你接到webmaster的電話,他發(fā)現(xiàn)某個web服務(wù)器上CPU負載很高,而這個服務(wù)器每天的瀏覽量僅僅幾千而已。webmaster確信服務(wù)器存在有什么問題。

              vmstat和mpstat(只在*BSD系統(tǒng)上)表明CPU被用戶空間的一個或者多個進程消耗掉了,但是內(nèi)存和IO子系統(tǒng)還沒有大量使用。iostat也顯示出磁盤系統(tǒng)不正常。

              $vmstat14
              procsmemoryswapiosystemcpu
              rbwswpdfreebuffcachesisobiboincsussyid
              10037677562977257096000734413978758
              5003766728297725709600000498124910000
              600376724029772570960000065215639730
              600376760429772570960000053613239730
              $mpstat14
              20:51:21CPU%user%nice%system%idleintr
              20:51:22all100.000.000.000.00479.00
              20:51:23all100.000.000.000.00496.00
              20:51:24all100.000.000.000.00499.00
              20:51:25all97.000.003.000.00481.00
              Average:all98.000.601.400.00486.60
              $iostat-dk14
              Device:tpsBlk_readBlk_wrtnBlk_readBlk_wrtn
              dev3-00.000.000.01731296
              dev3-00.000.000.0000
              dev3-00.000.000.0000
              dev3-00.000.000.0000

              sar(*BSD的sa)顯示CPU從早些晚上03:17就開始被使用。lastcomm顯示FTP客戶端在03:17以root運行了幾次,last這個命令顯示最近的登錄,沒有顯示出這個時間段有root從什么地方登錄進來。另外,這個服務(wù)器又使用sudo來管理root權(quán)限。這里有兩個系統(tǒng)管理員賬號可以用root登錄,但是他們并沒有登錄過,特別是在AM3這個時間附近。根據(jù)這一點,你決定使用CD上準備好的二進制工具?,F(xiàn)在運行top-d1,并且發(fā)現(xiàn)apache這個進程占用了100%的CPU。

              現(xiàn)在用grep檢查apche的錯誤日志,這個GNU工具可以有更多有用的參數(shù),-A,-B和-C可以讓你指定想從哪一個匹配的行的開始,之前或者周圍看。grep可以通過-E來使用擴展的模式匹配表達式??梢詸z查系統(tǒng)日志。但是并沒有在這些日志里面檢查到什么奇怪的地方。

              現(xiàn)在繼續(xù)進行檢查。運行ps-eflcyL(Solaris9),ps-eflcym--headers(Deb3.0,RH8.0)或者psauwxhkwvl(OBSD3.2)。找到進程apache,而這一次發(fā)現(xiàn)有問題了。這里只有一個apache進程和多個httpd進程。httpd實際上是Apache服務(wù)器,因為httpd是在apachectl文件執(zhí)行的二進制,運行的apache是前派生的,因此,如果二進制文件被重命名為"apache",那么也應(yīng)該有多個進程存在。這就是問題所在。

              使用lsof-p[9],發(fā)現(xiàn)這個apache進程打開了一個叫john.pot的文件。立刻通過google,查詢這是一個叫"JohntheRipper"的密碼破解工具,正是這個東西讓CPU滿負荷了。

              現(xiàn)在來檢查這個所謂的apache程序。通過fileapache,表明這個文件是ELF可執(zhí)行的。現(xiàn)在進行進一步的挖掘,執(zhí)行readelf-aapache,確信這是一個ELF可執(zhí)行程序。od-xcapache|less現(xiàn)實ELF魔法數(shù)字(7f454c46),ldd顯示apache連接的共享對象庫比實際的httpd進程小一些,這里面一定有文章:

              $ldd.apache
              libc.so.6=>liblibc.so.6(0x4001f000)
              libld-linux.so.2=>libld-linux.so.2(0x40000000)
              $lddusrbinhttpd
              libm.so.6=>liblibm.so.6(0x7002c000)
              libcrypt.so.1=>liblibcrypt.so.1(0x700c4000)
              libdb.so.2=>liblibdb.so.2(0x70100000)
              libdb2.so.2=>liblibdb2.so.2(0x70120000)
              libexpat.so.1=>usrliblibexpat.so.1(0x70180000)
              libdl.so.2=>liblibdl.so.2(0x701b4000)
              libc.so.6=>liblibc.so.6(0x701c8000)
              libld-linux.so.2=>libld-linux.so.2(0x70000000)

              執(zhí)行:strings|grep-ijohn,顯示如下:

              $stringsapache|grep-ijohn
              usrharejohnpassword.lst
              etcjohn.ini
              ~john.pot
              etcjohn.ini
              john
              JohntheRipperVersion1.6Copyright(c)1996-98bySolarDesigner
              etcjohn.ini
              etcjohn.ini
              etcjohn.ini

              用strace-fp"pgrepapache"(Deb3.0,RH8.0),truss-fp"pgrepapache"(Sol9),或者ktrace-dip(OBSD3.2),來察看apache進程到底在做什么。


              #strace-fp`pgrepapache`
              ---SIGALRM(Alarmclock)---
              sigreturn()=?(masknow[])
              ---SIGALRM(Alarmclock)---
              sigreturn()=?(masknow[])
              ---SIGALRM(Alarmclock)---
              sigreturn()=?(masknow[])
              _llseek(4,65536,[65536],SEEK_SET)=0
              read(4,"2YUz