轉自:寒路

我聲明整理這篇文章的初衷不是慫恿更多人去搞破壞,只是想說明這麼一件事情而已。如果你以為這篇文章能教會你什麼的話,那麼你也錯了,因為往往技術取決於你的經驗,而經驗這東西需要自己去實踐。當然了,最重要的是這篇文章總得來說還是比較雜亂的。

#漏洞的感念:
漏洞是硬件、軟件或者是安全策略上的錯誤而引起的缺陷,從而可以使別人能夠利用這個缺陷在系統未授權的情況下訪問系統或者破壞系統的正常使用。這些缺陷所能影響到的網絡範圍是很大的,其中包括路由器、客戶和服務器程序、操作系統、防火牆等。
漏洞本身不會自己出現,它依賴於人的發現。而你每天看到的那些「最新」安全漏洞描述,這些可能是被HACKER、安全服務組織、其程序生產商或者還有不安分者發現的。而這些漏洞的信息則是以不同的方式發佈的。如果這個漏洞是安全服務者或者是HACKER還有就是程序生產商發現的話那麼就會及時的出現在一些安全資訊郵件列表或者BBS上,以便於網絡單位查詢和彌補。而那些被不安分者發現的漏洞,一般是通過破壞一大堆或者更多的服務器來「發佈」的。這個例子你可以用去年微軟的一個bug來證實。因為微軟公司和安全服務者接受到這個漏洞信息的代價是近萬台服務器被Denial of Service。我記得我在去年在訂閱的國外一個網絡破壞組織的內部郵件列表中收到一個關於Unix中的緩衝區溢出的漏洞,它所能影響到的Unix版
本很多而且危險程度不小。但這個漏洞最後被打上補丁由安全服務組織發佈卻是在一個半月之後,這短短的一個半月所受到傷害的服務器一大堆,其中還包括美國的MILNET和印度某核武器研究所。

#發現安全漏洞:
要想發現漏洞是一件複雜的過程,它需要你熟悉各種語言和相當的網絡技術。但我提前說了,我並沒有發現過什麼可值得說明的漏洞,你可理解為我僅僅只是知道這是怎麼一回事就行了。:)
在這裡我本想從兩部分來描述,第一就是漏洞的是怎麼產生和人為產生的安全弱點;第二就是我們做為一般用戶怎麼樣才可以得到目標服務中存在著一些漏洞。但上個月在Net.kook BBS上Ghastful-elf有發一篇《Simple Discover Safety Failing》,在這篇裡他系統的講述了產生漏洞的情況和它們的共性,所以我就沒必要再浪費我們的時間去描述了,就只說其二。

如何得到系統的漏洞信息
當然是掃瞄了。掃瞄器是自動檢測遠程或本地安全性弱點的程序。而真正的掃瞄器是TCP端口掃瞄器,這樣的一些程序可以指定某些TCP/IP端口(ftp等)以及她的服務進行檢測,記錄住每個從目標機器中返回的信息。這樣可以幫助你收集到目標主機上的有用的信息。而其它像host、rusers僅只是一些Unix上的網絡
應用程序,這些一般用在觀察某種服務是否正常工作。掃瞄程序也是很多攻擊者較為常用的,很多攻擊的開始都是從掃瞄先進行的。
一、SATAN——撒旦
SATAN這程序應當是你知道的,它是Dan Farmer and Weitse Venema用C、Perl和一些HTML專門為Unix而設計的分析網絡的安全管理和檢測、報告的工具,利用它可以收集到目標主機的很多信息。它能在很多Unix平台上運行,大多都不需要移植。SATAN的確很古老了,但是它目前在網絡安全領域中所起到的作用卻一直沒有衰退過,這也是值得我去描述它的原因。SATAN特點包括可擴展的框架、友好的界面以及檢測系統的可伸縮方法。它總體結構允許使用者方便的增加附加的探測器,它可以方便快速自動的檢測很多系統,這也就是SATAN自1995年4月發佈以來能成為網絡安全領域的重要程序的原因之一。
SATAN有一個很重要的也很奇特的功能,這個功能也體現了它的創造者的理念是很清楚的,他明白這個是幹什麼的。那就是SATAN的自動攻擊程序。因為創作者把入侵做為了安全最慎重的環節。
在進一步討論SATAN之前有必要先瞭解SATAN都能幹些什麼,如果你經常更新你的漏洞資訊的話那麼這對SATAN來說是最好不過的了。因為它可以掃到目標主機的很多已知漏洞。具體表現為:
●FTPD脆弱性及ftp目錄是否可寫。
目前大多數Unix系統都提供FTPD(有些版本的Unix是in.ftpd)守護進程,但啟動時都是不帶參數啟動的,有時候很多入侵者控制到主機後想得到更高級功能的FTPD時會做重新啟動機器的處理,在啟動FTPD時會加進一些參數……
●NIS的脆弱性
NIS是一種網絡查詢服務,它可以將所有包含系統管理員信息的文件保存在一個指定的主機上向來自網絡其它的用戶提供這些信息。
●RSH的脆弱性
它是Unix中的一個服務程序,可以執行指定的命令。
●NFS的脆弱性
NFS是一種網絡文件系統,一種允許一台機器通過TCP/IP網絡連接使用另一台機器上磁盤空間和文件的協議。它目前已經成為了Int-ernet上進行分佈式訪問的一種事實上的標準。
●X服務器的脆弱性
●Sendmail服務器的脆弱性
Sendmail的主要功能是轉發郵件。從Sendmail可以得到一些如當前時間和主機號等…
具體的掃瞄內容表現為:
●可寫匿名的FTP根目錄
●借助TFTP的對任意文件的訪問
●從任何主機上的REXD訪問
●NIS口令File可被任何主機訪問
●向任何host調出的NFS文件系統
●X服務器的服務器控制無效
●老版本(在8.6.10前)的Sendmail(據我所知現在這個似乎沒有了)
我們就先從SATAN的安裝說起吧。SATAN要比一般的掃瞄程序佔用更多的資源,尤其是內存和CPU功能方面要求更高一些。並且它還需要一套Perl5.0以上的腳本解釋程序的支持,還需要一個瀏覽器,因為它在運行的時候會自動啟動瀏覽器。SATAN程序包個頭也比較大,容易暴露目標,所以你在尋找SATAN的安裝平台的時候要想到以上幾點,否則就有可能白費功夫。SATAN安裝一般所在的目錄是/satan -1.1.1(少數不同)。安裝之前首先得運行Perl程序reconfig,用它搜索各種不同的組成成分,並自定義目錄的路徑。要是遇到那些沒有把瀏覽器安裝在標準目錄裡(並且沒有在PATH中進行設置)的那麼就得你自己手工進行設置了,因為reconfig找不到。還有就是遇到沒有用DNS(指的是自己機器上)的,那麼就必須在/satan-1.1.1/conf/satan.cf中進行$dont_use_nslookuo=1的設置了;最後你可以在分佈式系統上運行SATAN的安裝程序(IRIX或SunOS),不過在編譯的時候你可得多注意一下了,很容易出錯的。SATAN可以自動掃瞄整個子網,駕御它很容易。但使用之前你必須擁有起碼的網絡攻擊的普通知識。一般對Unix進行攻擊大多首要目標就是得到一個普通的登陸用戶(我想這個在很多初學者都提過),即在/etc/passwd或NIS映射中的加密口令拷貝的獲取,得到後便可利用Crack猜出至少一個口令。這就明顯的表示出來對單一主機攻擊的優越性,注重在目標主機與漏洞共存的系統,也就理解為系統受托於目標系統、各個系統連接在一個物理網上或者各個系統擁有相同的用戶,那麼攻擊的發起者可以利用DNS高速緩存崩潰或IP欺騙偽裝成某個受托系統或是用戶,也可以是在信任主機或者是偽裝成的信任關係與目標機器的傳輸間架起一道屏障,即所謂的包截獲,來截獲來於目標機器與各個機器間的數據信息。而目前最常見的則是對第一個用戶口令的尋找,也就是上述所描述的/etc/passwd或NIS了。SATAN可以幫助你搜尋目標系統中未加限制的NFS允許根對其讀與寫或根的腳本,換句話來說就是SATAN可以為你收集到目標機器各個用戶的管理級別或根級別訪問系統。如果說用SATAN對一台毫無安全而言的Unix的話,根本不需要你做任何複雜的過程,它都可以為你得到系統的進入點或是找到一些不需要級別用戶的權限即可控制系統。這就言語著ITL Scale中所說的ITL9級了,SATAN可以跨越它。
因為在SATAN中作者寫進了攻擊程序,即可以模擬入侵者來自動完成對系統的入侵。
這一點在Farmer&Venema93年合著的《Improving the Securty of Your Site Breaking Into It》和Farmer的《computer-Oracle and passwd system(COPS)》中都有詳細的說明,即便是現在已經過了幾年了,但這兩篇著作仍有保持著其的權威性和重要性。
總得來說,一般遠程攻擊第一階段是獲取系統上的一個user name and passwd,而第一步又可分為針對目標主機建立安全漏洞列表和信息庫兩個步驟,攻擊者通過對目標主機的漏洞與機會進行搭配,而獲取對系統的訪問權限;第二階段就是獲取根的訪問權限,一旦可以獲取根的訪問權限了那麼這個機器就已經可以說被完全控制;第三階段就是擴展訪問權,用來對其它網絡進行攻擊,這個階段還包括清掃攻擊時留下的痕跡,這樣就可以把自己隱藏起來不被發現(為此有人專門編寫了一些隱藏蹤跡的工具,最為著名的就是Kit Vtivoy的rootkit了,rootkit裡包括了ps、ls 、sum、who等內容,rootkit本身可以篡改系統內的ps、ls、sum、who等信息的輸出,這樣管理員就不能確定二進制的完整性Integrity,因為sum被感染過,被感染過的ps則不能顯示攻擊者運行的程序,不過rootkit這個程序因為作者只是想做為技術交流所以沒公開發佈過,所以一般不容易得到它(如果你運氣好的話可以到ftp://semxa.technotr.com/tools/中「找」到它)。而SATAN所能做到的就是第一、二階段。

要想對SATAN做詳細的介紹和說明的話我想它可能得一本書來描述。在這裡當然不能那麼詳細的去做,所以盡量的用事例來說明它。可以從攻擊者的角度來進行,首先來確定一個虛擬的攻擊目標再jack in it。
它為www.semxa.com,接著就這個目標進行走馬觀花一般的步驟說明。
A\第一步千篇一律,那就是收集目標機器的信息。為了簡單但又詳細說明SATAN的功能,首先做的是不用SATAN對www.semxa.com進行掃瞄,而是背棄SATAN之外的工具也或者完全是手工完成它。因為我覺得這樣更加有persuasion。
1、獲取主機名和IP地址以:
通過運行whois和nslookup可以獲得semxa.com域裡的dns1.semxa.com等幾個主機,再用named-xfer程序的執行結果和whois、nslookup的結果一起分析,這樣就得到在semxa.com域裡那些DNS服務器跟網絡有連接。到了這個時候一個簡單的分別ping各主機便可得到這些主機有那些是在Firewall後等等信息。
同時還得到semxa.com運行有ftp、telnet、SMTP等服務。
不過很多攻擊者不習慣於此!僅僅只是直接ping主機獲取IP,其它不做出判斷。在這裡獲得的IP地址為:4.4.4.4
2、獲取系統OS類型信息:
通常攻擊者習慣於利用telnet來判斷系統的OS,因為它得到的信息是比較可靠的。有時候僅僅一個telnet因為系統做過保護所以也不一定能有詳細的諸如OS具體類型、版本或者硬件平台等等結果,攻擊者會嘗試利用缺省的無口令帳號登陸系統,這些帳號有:guest、lp、nuucp、tour、demos、4Dggifs9、root等等。如果說某個telnet守護程序允許你向它發送環境變量並且不做任何接收限制的話這可是好的開端.當然管理員不會這麼認為 or ;-)or;》3、獲取FTPD信息:
一個簡單的ftp登陸,在起始行一般都會給出版本的信息。如
#ftp www.semxa.com
Connected to www.semxa.com
220 www.semxa.com FTP server(Digital UNX Version wed Apr 8
09:21:53 EDT 1998) ready.
……
這個時候可以利用匿名用戶ftp或者anonymous來嘗試登陸,匿名的Ftp對攻擊收集信息來說是很重要的。
User (www.semxa.com none)): ftp
530 User ftp access denied
Login failed.
……
不過這個不允許匿名用戶登陸,那麼得到FTP server的所存在的弱點也是很有必要的,雖然說目前很多時候對於FTP server的弱點不會更多的引起注意力,但我想不久的將來FTP Server上的弱點有可能是個deathblow。
4、獲取Sendmail信息:
直接用telnet connected to SMTP的端25來獲取信息。Sendmail最初
設計沒有考慮其安全性,所以也是一個漏洞集中地。
#telnet www.semxa.com 25
229 www.semxa.com Sendmail 8.8.7/8.8.7 ready at Wed Apr
這裡得到了Sendmail版本為8.8.7,其配置文件版本也是8.8.7。如果說這裡的版本是8.6.10以前的話那麼我就可以就此止步了。因為完全可以在它上面找到幾個可用的漏洞來結束這次攻擊的第一階段。
5、UDP/TCP掃瞄獲取信息:
這樣去做主要是想獲取目標系統中的/etc/inetd.conf文件信息。這些文件提供了假定的監聽端口服務列表,它們允許對其進行telnet的連接。但這麼做很浪費時間,針對TCP端口可以依賴更快捷的途徑如利用Strobe(ftp://semxa.technotr.com/tools/得到)來完成,但得注意Strobe遺留痕跡的問題。可我喜歡它的速度,還因它不需要money來login。:-)而對UDP端口可用COAST(ftp://semxa.technotr.com/tools/)來完成。這些信息那些可取那些不可取現在先別去理會。等把所有的信息全部收集完成之後自己就這些信息做一個列表再慢慢analysis了。
6、獲取Portmap信息:
網絡服務主要通過三種機制提供的,它們是:永遠監聽端口的Network guardianship course、用inetd監聽端口並在inetd獲得一個連接請求時被調用的網絡程序以及用Portmap程序為特定程序的請求動態分配一個響應端口的rpc服務。對此類信息的收集可以利用rpcbind(ftp://semxa.tech-notr.com/tools/)程序完成,這個程序也是Weitse Venema寫的。
7、獲取Boot信息:
在這裡主要想做的就是獲得同一個LAN網段內的bootps服務訪問權限,通過一個ping來確定目標機器的LAN地址,而ping會讓目標機器產生一個ARP請求包,在這個包裡含有目標機器的LAN地址,然後可以轉儲目標系統的ARP告訴緩存……這是案例!需要你跟目標主機在同一個LAN內,而現在的semxa.com並非如此。所以此段信息即便是能獲取也不會有太大用處。當然了,如果能獲取的話那麼就證明跟semxa.com是在一個LAN內了。你可以當這些話是廢話。:)
8、嘗試finger、rusers、rwho來獲取信息:
finger用來顯示用戶信息,具體的做法隨處可見了。而rusers則是用來顯示一台遠程主機的登陸用戶列表的。rwho跟who有點相同,rwho是顯示在本地的網絡上和主機有那些人在登陸。rusers會產生跟finger類似的列表,但rusers則不能查詢單個用戶的信息。表現為:#rusers -1 www.semxa.com……
rwho對於攻擊來說不是很有用的信息,但如果你跟目標主機是在同一個LAN的話那麼就可另當別論了,rwho依賴其守護進程rwhod,責任是向其它rwhod程序定期廣播這個時間段誰在系統上的信息。
9、獲取NFS Export信息:
NFS是一種系統程序,它主要負責文件傳送操作的NFS協議,另外還可以使用MOUNT協議標識要訪問的文件系統及其所在的遠程主機。NFS有著良好的擴展性、信息訪問的透明性、簡化了中央支持任務和網絡管理等等優點。但它在安全上卻有很大的問題。NFS採用的是客戶機/server結構的系統,客戶機是一個使用遠程目錄的系統,那麼此時遠程目錄就像是它自己的本地文件系統的一部分一樣;而server提供本地資源能被遠程主機安裝的服務,允許磁盤上的有關目錄或文件被其它主機訪問。網絡文件系統就是通過NFS s-erver的文件系統安裝到客戶機的文件系統而得以實現的。NFS協議只負責文件的傳輸工作,但不負責連接文件系統。在server端有一個叫mountd的守護進程則負責安裝任務,響應的安裝程序負責維持包含在安裝工作中的一系列主機名和路徑名,一般在Unix中把已經共享的遠程目錄安裝到本地的過程叫做「安裝(mountd)目錄」,再把做為遠程訪問提供一個目錄叫做:「輸出(exporting)目錄」,前者是客戶機的功能,後者是一種server的功能。
在Unix中,有個查詢消息的showmount命令,它的作用是在一台NFS主機上跟某遠程的NFS的信息。如果某個遠程主機是通過rpcinfo -p顯示安裝服務的話,那麼用showmount命令可以詢問到rpc.nounted中的detail。它的參數包括有showmount -a(命令打印一列已經加載輸出文件系統的host)和showmount -e(命令請求打印的列表包含通過NFS輸出的文件系統以及它的授權)。NFS uid 16-bit就是個很顯著的例子,一個NFS server依賴客戶端的認證,但這種認證只是請求時的IP add,有個聲稱客戶uid為0+2^16=65536
的用戶被accept並且不重新映射為新UID。當這個用戶提出請求訪問擁有的文件時,對uid的比較僅對其低16位進行,就將允許這個用戶偽裝成根。就本身而言,NFS應該是不對Internet開放的,即便是你需要那麼做但也僅僅只能是讀。如果說可以對根可以寫的話,那麼這對網絡安全來說絕對是一個笑柄了。NFS依賴於客戶方認證的。如果對showmount所輸出的信息多加以分析的話,尋找它的漏洞所在,利用很多諸如Nfsbug、nfsmunu等工具就可以對NFS進行jack in。

10、獲取NIS信息:
網絡信息服務NIS(以前也叫做黃頁服務)允許在一個單位或者組織結構中共享系統管理方面的信息數據庫,比如用戶組、口令文件等,NIS可以為重要的管理文件提供重要服務,並自動傳送這些文件。使用NIS可以達到集中管理的目的,不用再那麼麻煩的在多台不同機器上修改文件,能夠保證整個網絡上管理信息的一致性。NIS也是基於客戶/服務器模型。通過NIS訪問同樣的數據庫的客戶機的集合稱為域。那些供網絡查詢的數據庫通常由幾個標準的Unix文件轉換而成,這些數據庫一般稱為NIS映像。NIS的域的概念類似於DNS中的域。
在一個NIS域中所有的計算機不但共享了NIS數據庫文件,也共享著同一個NIS server。為了訪問NIS信息host必須有相應的域名,並且只能屬於一個特定的域。NIS主server保存所有的數據庫文件並對客戶提供數據庫訪問和其它一些相關服務。NIS的數據庫ASCII碼文件一般保存在/var/yp/dom-inname。而在Unix下通過命令#domainname x可以來檢查或設置NIS域名。NIS server在向NIS/yp域中所有的系統分發關於數據庫文件時,一般不做檢測,只要對方是自己NIS域內並且知道其域名的每個ypbind用戶。這顯然就安全而言不是什麼好事情,但對攻擊者來說則是不錯的現象。如果說用ftp或者telnet smtp發去N次請求,導致NIS客戶請求的響應發生反應遲鈍的現象,這樣就使NIS客戶廣播一個請求,這請求跟另一個NIS server相連。
那麼攻擊的時候對這個請求進行響應,讓它連到自己的系統之上,並向該客戶發佈口令映射,如果這麼完整的做完的話那麼也就可以結束這次攻擊的第一階段了。
做為管理者而言,NIS同NFS一樣,都不應該對Internet是訪問的。更不應在不信任的環境下使用。保持良好的NIS域名秘密而不易被猜到。
11、獲取Web server信息:
收集Web server的信息是攻擊中很main的環節,雖然說Web的守護進程httpd不會發生間接暴露server信息的情況,但Web page上的信息卻很多都是有用的,當然了,這有用是針對攻擊者而言的。比如說一個信箱用戶名也許對應的就是一個可以登陸系統的用戶名等等。而CGI、ASP漏洞被攻擊者所利用來攻擊系統的事件也都屢見不鮮。這裡可以為獲取semxa.com的Web頁面路徑做些測試。簡單的利用瀏覽器眼睛多注視左下角就可以獲得頁面的存放路徑,大多時間還將獲得有關本地環境和URL的信息,如果目標機器對它的URL是隱藏的話那麼這個就是不存在的。通過建立一個Web站點並使semxa.com內的成員機跟它相連接,這樣可以獲得一些客戶信息,但也只實用於LAN。我一般是利用瀏覽器觀察,把暫時認為有用的信息會記錄下來。

點閱: 21

By tony

自由軟體愛好者~喜歡不斷的思考各種問題,有新的事物都會想去學習嘗試 做實驗並熱衷研究 沒有所謂頂天的技術 只有謙虛及不斷的學習 精進專業,本站主要以分享系統及網路相關知識、資源而建立。 Github http://stnet253.github.io

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料