歡迎您光臨本站 註冊首頁

遠程攻擊學習ABC—從SATAN開始的漏洞收集(上)

←手機掃碼閱讀     火星人 @ 2014-03-12 , reply:0
  我聲明整理這篇文章的初衷不是慫恿更多人去搞破壞,只是想說明這麼一件
事情而已。如果你以為這篇文章能教會你什麼的話,那麼你也錯了,因為往往技
術取決於你的經驗,而經驗這東西需要自己去實踐。當然了,最重要的是這篇文
章總得來說還是比較雜亂的。
————————————————————————————————————
#漏洞的感念:
漏洞是硬體、軟體或者是安全策略上的錯誤而引起的缺陷,從而可以使別人能
夠利用這個缺陷在系統未授權的情況下訪問系統或者破壞系統的正常使用。這些缺
陷所能影響到的網路範圍是很大的,其中包括路由器、客戶和伺服器程序、操作系
統、防火牆等。
漏洞本身不會自己出現,它依賴於人的發現。而你每天看到的那些「最新」
安全漏洞描述,這些可能是被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。我
一般是利用瀏覽器觀察,把暫時認為有用的信息會記錄下來。


[火星人 ] 遠程攻擊學習ABC—從SATAN開始的漏洞收集(上)已經有642次圍觀

http://coctec.com/docs/security/show-post-73021.html