歡迎您光臨本站 註冊首頁

Cisco路由入侵藝術

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
奔流不息的網路里,Web綻放著絢麗的色彩、電子郵件呼哧的穿梭網際、語音電話、網路會議、文件傳輸,各種數據交織錯落,形成輝煌的數字世界.在喧鬧的數字世界底層,存在一種精緻的次序,這種次序決定著數據的選路、異構介質銜接、協議的交互等功能.而這一次序的締造者正是布滿整個網路的路由器.於是,路由器成了數據通信的交通亭,也成為了眾多黑帽(Blackhat)爭奪的目標之一.

Cisco路由器佔據這網路世界的絕對位置,於是安全焦點效應激發了路由入侵與防禦而產生的精美藝術.下面我將由淺入深的方式講述Cisco入侵的手段以及防禦策略.


【路由器感冒】

路由器從本身的IOS來說,並不是一個健壯的體系,因而它偶爾也會讓自己感冒發燒.系統感冒發燒起來,抵抗力自然就降低不少.


*IOS自身欺騙

Cisco路由器是用IOS系統來實現路由的細節功能,因此它是路由系統的靈魂.Show命令的在線系統方式卻為我們打開一個偷窺之門.

眾所周知,Cisco路由器中,一般用戶只能查看路由器的很少信息.而能進入特權模式的用戶才有資格查看全部信息和修改路由.一般模式下,show的在線幫助系統不會列表所有可用的命令,雖然75個show的擴展參數只能用於特權模式下(enable),實際上只有13個受到限制.這意味著一般用戶(非特權用戶)可以查看訪問列表或其他路由安全相關信息.

重要安全相關的ACL信息可以被登錄路由的非特權用戶查看,諸如:

#show access-lists

#show ip prot

#show ip ospf dat

#sh ip eigrp top

等命令可以在非特權模式下泄露網路敏感信息.通過這些命令,我們能得出路由器配置的大致情況,這對採取進一步的入侵起到輔助作用.不過由於這種方式需要用戶已經有一個登錄帳戶,因此得到這樣的信息有一定難度.




*WCCP暗道

Cisco在IOS 11.2版本中引入WCCP(Web Cache Control Protocol),為Cisco緩存引擎提供協議通信.Cisco緩存引擎為www提供透明緩存服務.緩存引擎用WCCP來和其他cisco路由器通信.路由器把HTTP數據發送到緩存引擎主機中.

雖然這種方式默認是關閉的.假如使能(enable)的話,那麼WCCP本身是沒有認證機制的.路由器將會把每一個發送合法緩存引擎類型的Hello包的主機認為緩存引擎,於是把HTTP數據緩存到那台主機.這意味著惡意用戶可以通過這種方式獲取信息.

通過這種方式,攻擊者可以截獲站點認證信息,包括站點密碼;替代實際WEB內容為自己設計的陷阱;通過路由徹底破壞Web提供的服務.這種方式,可以完全規避登錄煩瑣的攻擊方法,對Web提供全面致命的打擊.

我們既可關閉WCCP的啟用機制,也可通過ACL阻止WCCP發送HTTP流量給不信任主機來防止這樣的惡劣情況發生.



*HTTP服務的困惑

Cisco在IOS版本加入了遠程管理路由的Web特性,這對於新羽(newbie)的管理員來,無疑是值得高興的事情.但引入方便的同時,隱患也隨之進入.

1.基於拒絕式服務攻擊的HTTP的漏洞

Cisco路由啟用(enable)遠程WEB管理,很容易遭受DoS.這種DoS能導致路由器停止對網路請求的響應.這是功能是Cisco路由的內嵌功能.但啟用這個特性,通過構造一個簡單的Http請求就會造成DoS攻擊:

http:///%%

這種請求導致路由停止響應,甚至引起路由器執行硬重置(hard reset).


2.基於HTTP伺服器查詢的漏洞

Cisco 安全建議小組在2000年10月30日公布了這個漏洞.IOS 11.0引入通過Web方式管理路由.」?」是HTML規範中定義的CGI參數的分界符.它也被IOS命令行介面解釋成請求幫助.在IOS 12.0中,當問號鄰接於」/」,URL解釋器就不能正確解釋其含義.當一個包括」?/」的URL對路由器HTTP伺服器進行請求,並且提供一個有效的啟用口令,則路由器進入死循環.因而引起路由崩潰並重起.



如果http起用,瀏覽

http://route_ip_addr/anytest?/

並且提供特權口令,則可以導致DoS攻擊,導致路由停機或者重啟.

除了讓路由死亡之外,Http額外提供了一種可怕許可權提升的漏洞,如下所論.


3.Cisco IOS 認證漏洞

當HTTP伺服器啟用並且使用本地用戶認證方式.在某些條件,可以繞過認證並執行設備上的任何命令.用戶可以對設備完全的控制.所有命令都將以最高特權執行(level 15).

使用username 和password的路由設備帳戶認證方式,構造如下URL:

http://router_ip_addr/level/xx/exec/….

(註:xx代表16至99之間的84種不同的組合攻擊,路由器硬體類型眾多,而IOS版本也存在不同,因此針對不同的路由器類型,攻擊組合數字不同.)

通過這種方式,攻擊者可以完全控制路由並可以改變路由表配置.這種可怕的事實讓網管也感到驚悸.這種完整的控制方式將是網站數據通信樞紐的致命一擊.


雖然Http漏洞帶來如此之多的漏洞,但這種漏洞最主要原因是啟用http伺服器管理路由的緣故,由於這種管理是種命令行方式的替代物,因此對於熟練的網管來說,沒有必要啟動這種危害性很大的服務.

#no ip http server 的路由配置也成為時髦的安全配置語句.



【在SNMP中行走】

談到Cisco路由的安全性,我們就必須涉及到SNMP這個看似簡單,實際扮演著重要角色的協議,正它的存在,路由器的入侵變的豐富有趣多了.


*SNMP基礎簡介:

每個SNMP啟用的路由設備都包含一個叫做管理信息模塊(MIB),這是一種包含簡單等級的數據目錄結構,在這種樹結構中包含設備各種信息.SNMP基本的命令GET,可以檢索MIB的信息,而SET命令則可設置MIB變數.一種用於監控和管理CISCO路由的的軟體工具是MRTG,至於如何配置其用於Cisco設備的監控可以參閱LOG的《怎樣在Windows NT/2K下安裝MRTG》一文(http://www.2hackers.org/cgi-bin/2hb/topic.cgi?forum=7&topic=212).



在路由器中配置SNMP的方法如下:

(conf)#snmp-server community readonly RO

(conf)#snmp-server community readwrite RW

SNMP協議通過社區(community)字串的概念賦予對設備MIB對象訪問的許可權.上例中,設置了只讀訪問的社區字串readonly和可進行讀寫操作的readwrite社區字串.而大部分管理員喜歡使用public和private設置只讀字串和讀寫字串,疏不知,這樣輕易的結果將給網路帶來巨大的波動.我們可以在【觸及RouterKit】部分清楚認識到這種危害.

通過SNMP我們可以方便管理和監控Cisco的設備(參閱Log文章介紹),同時也給攻擊者帶來可乘之機.


*Cisco IOS軟體SNMP讀寫ILMI社區字串漏洞

ILMI是一個獨立的工業標準,用於配置ATM介面.MIB是一個樹形結構,包括操作(只讀)數據以及配置(讀寫)選項.在有漏洞的設備上,通過在SNMP請求中指定一個ILMI社團字元串,可以訪問整個樹形管理結構中三個特定部分的對象:MIB-II系統組,LAN-EMULATION-CLIENT MIB以及PNNI(Private Network-to-Network Interface)MIB.每一部分的子集對象都可以使用相同的「ILMI」社團字元串修改.

MIB-II系統組包括設備本身的基本信息.能被修改對象的數目雖然是有限的.例如包括:

system.sysContact.

system.sysLocation.

system.sysName.

Cisco IOS軟體版本11.x和12.0允許使用一個非文檔的ILMI社區字串未經授權就查看和修改某些SNMP對象.其中就包括諸如上面所說的"sysContact","sysLocation",和"sysName"對象,雖然修改它們不會影響設備的正常操作,但如果意外修改可能會產生混亂.剩下的對象包含於LAN-EMULATION-CLIENT和PNNI MIBs,修改這些對象可以影響ATM配置.如果沒有防止未授權使用ILMI社團字元串,一台有漏洞的路由器可能會遭受DoS攻擊.



如果SNMP請求可以被有漏洞的設備接收,那麼沒有適當授權,就可以訪問某些MIB對象,違背了保密性.沒有授權就可以修改可讀MIB對象的子集,破壞了完整性.而更具有危害性的方法是向SNMP埠發送大量的讀和寫請求.有漏洞的設備,如果沒有防範接收SNMP包的措施,就會遭受DoS攻擊,導致路由重載.


至於如何查看這些對象的信息,可以參閱【觸及RouterKit】部分.*Cisco IOS軟體層疊SNMP共享社區字串漏洞

Cisco 配置文件中,意外創建和暴露SNMP共享字元串,可以允許未授權地查閱或者修改感染的設備.這種漏洞是調用SNMP函數中的缺陷引起的.SNMP利用「community」的標記來劃分「object」組,可以在設備上查看或者修改它們.在組中的數據組織MIB.單個設備可以有幾個MIBs,連接在一起形成一個大的結構,不同的社團字元串可以提供只讀或者讀寫訪問不同的,可能重疊的大型數據結構的一部分.

啟用SNMP,鍵入「snmp-server」命令時,如果社區在設備上不是以有效的社區字串存在,就會不可預料地添加一個只讀社區字串.如果刪除它,這個社區字串將會在重載設備時重新出現.

缺陷源於SNMPv2的「通知(informs)」功能的實現,這個功能包括交換隻讀社區字元串來共享狀態信息.當一個有漏洞的設備處理一條定義接收SNMP "traps"(陷阱消息)主機的命令時(常規snmp-server配置),在trap消息中指定的社團也還是配置成通用,如果它在保存配置中沒有定義.即使社區在前面被刪除並且配置在系統重載前保存到存儲器,也會發生這種情況.

當通過"snmpwalk"(一種檢測SNMP配置正確性的工具),或者使用設備的只讀社團字元串遍歷基於視圖的訪問控制MIB來檢查設備時,就會泄漏讀寫社團字元串.這意味著知道只讀社區字串允許讀訪問存儲在設備中的MIB,導致信息泄露.而更為嚴重的是,如果知道讀寫社區字元串就可以允許遠程配置的路由,可以繞開授權認證機制,從而完全控制路由器的整體功能.




題外話:一個被發現漏洞很具有諷刺意味,使用nmap等安全掃描工具對路由進行掃描,居然會產生DoS的攻擊.有興趣的朋友可以參閱:http://online.securityfocus.com/archive/1/28601/2002-11-29/2002-12-05/1


【另類攻擊】

前面的漏洞綜述,似乎我們都在圍繞著如何獲得路由配置信息而講述,得到一個完整Router-config,那麼我們便掌握了路由的世界.下面的入侵方法則另闢奚徑.


*TFTP的藝術

Cisco的熟練管理員,一般習慣於Cisco免費提供的TFTP伺服器(http://www.cisco.com/pcgi-bin/tablebuild.pl/tftp),而Cisco培訓的書籍總會介紹使用copy running-config tftp的命令來保存路由配置文件.於是獲得TFTP就有可能獲得路由配置文件.

幸運的是,TFTPD守護程序存在目錄遍歷的漏洞,允許遠程用戶從目標系統中獲得任意文件.我們可以通過下面簡單方法獲取目標系統中的任何文件:

Exploit

tftp> connect target_machine

tftp> get cisco-conf.bin

Recieved 472 bytes in 0.4 seconds

tftpd> quit

  而這個免費軟體還沒有任何修補措施,因此藉助這種方式,可以不費吹灰之力就可能得到一份完整的路由配置存檔.


*SSH安全感

通過Telnet管理方式,造就了一批密碼竊聽者.通過明文的ASCII的網路傳輸形式,竊聽者隨便放置嗅探裝置(sniffer),就可安閑的等待著登錄用戶,密碼以及各類敏感信息自動送到面前.SSH加密方式在路由器的應用,大大的消滅了這種囂張的氣焰.

但入侵與反入侵本來就是個古老的話題.於是,SSH也開始有了危機感.Cisco SSH存在著三個精妙且複雜的漏洞,這種攻擊的手法所涉及的知識已經大大超出本文的範疇,以簡略的形式給予說明並指出應用漏洞的文章出處.(這些漏洞整理自中國網路安全響應中心CNSAN,http://www.cns911.com/holes/router/router01062902.php,在此對漏洞整理工作者的無私工作給予致敬.)



1.RC-32完整性檢查漏洞

參考:http://www.core-sdi.com/files/files/11/CRC32.pdf

作者運用及其複雜的數學方式來證明這種漏洞的存在性,看懂這片文章需要相當的數學功底,本人在看這篇文章的時候也是頭痛萬分.不過文章中的理論分析十分精彩,初學者可以省略此漏洞.

CNSAN的文章則指出「要使這種攻擊成功,攻擊者要擁有一或者2個已知chipertxt/plaintext串,這一般並不難,每個進程啟動時的問候屏幕是固定並可探測的,這樣可以通過SNIFF進程來獲得相應的chipertext」.


2.通信分析

參考:http://online.securityfocus.com/archive/1/169840

CNSAN的文章論述:「要利用這個漏洞,攻擊者必須捕獲信息包,這樣可以分析使用的密碼長度並用暴力手段猜測密碼」.

在SSH中封裝明文數據時,數據從8位元組的邊界上開始封裝並對數據進行加密.這樣的包在明文數據長度之後進行某中數學封裝,SSH在加密通道內以明文的方式傳輸,結果,能檢測SSH傳輸的攻擊就能獲得SSH內的內容.文章還友善的給出了Patch程序來修正這個漏洞.


3.在SSH 1.5協議中KEY恢復

參考:http://www.securityfocus.com/archive/1/161150

CNSAN的文章論述:要利用這個協議,攻擊者必須能嗅探SSH進程並能對SSH伺服器建立連接,要恢復SERVER KEY,攻擊者必須執行2^20 2^19=1572864 連接,由於KEY是一小時的生存時間,攻擊者必須每秒執行400此連接.

這種技巧的要求非常高,通常的遠程入侵中,使用KEY來獲得SSH會話過程的概率相當之低.


*本地密碼劫持

在所有入侵中,這種類型的入侵活動可謂是蓄謀以久的野蠻做法.方法本來的意圖是用於管理員忘記密碼后的恢復措施.而技術做為雙刃劍的一面,便在於我們如何使用它.



如果你有一台筆記本電腦,你有一根與路由器相應類型的連接線,那麼你配備了入侵路由的武器.剩下的時間,你將思考如何閉開網管的眼睛,把連接線與路由器連接.以後的動作,需要你行動迅速了.(以25xx系列路由為例)

1.切斷路由器的電源.

2.連接計算機與路由器.

3.打開超級終端(CTL-Break in Hyperterm).

4.在啟動路由器的30秒時間內,迅速按CTL-Break組合鍵,使路由器進入rom monitor 狀態,出現提示符如下:

Followed by a '>' prompt...

5.輸入 O/R 0x2142,修改配置註冊器(config register)路由器從Flash

memory引導.

6.輸入I,路由器初始化設置后重新啟動.

7.輸入系統配置 對話提示符敲no,一直等提示信息顯示: Press RETURN to get started.

8.輸入enable 命令,出現Router# 提示符.

這是,我們可以完全使用show命令查看路由中的一切配置,並可轉儲到計算機上.如果使用了enable的加密方式,雖然現在無法看,但可以使用工具進行破解.當然,粗魯的做法是直接修改:

Router#conf term

Router(conf)#enable password 7 123pwd


進行完以上操作,別忘了恢復路由的正常狀態,否則網管很快就能發現問題所在:

Router(conf)#config-register 0x2102

Router(conf)#exit


至此,我們從幾個方面試圖獲得整個路由的配置,那麼如何進一步擴大入侵的戰果,一些令人激動的工具給我們帶來的無比愉悅的方便.【觸及RouterKit】

就如攻擊視窗系統人喜歡用NTRK,攻擊Linux的人則喜歡用rootkit,Router的世界也有這優秀的Kit,讓人愛不釋手.


*密碼破解機

得到路由配置文件后,如果看見在特權模式的配置中可能會有:「enable password 7 14341B180F0B187875212766」這樣的加密字串.那麼恭喜了,enable password命令的密碼加密機制已經很古老,存在極大安全漏洞.通過一些簡單的工具就可以得到破解的特權密碼.




*RAT的豐厚禮物

RAT是系統管理網路安全研究機構(SANS)開發的免費路由審核工具(route audit tools).這套工具能自動和立即的檢索路由配置的情況,並針對配置的問題給出極其詳盡的漏洞發現和推薦修改配置,並能定址SNMP的漏洞給予安全建議.這種安全的配置文檔對於管理員和黑帽來說,都是非常珍貴的資料.

RAT是用Pearl語言編寫而成,因此在Windows需要安裝ActiveState Perl的環境.安裝過程十分簡單,對於路由的掃描結果以Html和ASCII文本格式給予用戶查看.下面是掃描的具體實例.

Exploit:

C:>perl c:ratbinrat –a –u username –w passwd –e enablepass {router_ip_addr}

snarfing router_ip_addr...done.

auditing router_ip_addr...done.

ncat_report: Guide file rscg.pdf not found in current directory. Searching...

Linking to guide found at c:rat/rscg.pdf

ncat_report: writing {router_ip_addr}.ncat_fix.txt.

ncat_report: writing {router_ip_addr}.ncat_report.txt.

ncat_report: writing {router_ip_addr}.html.

ncat_report: writing rules.html (cisco-ios-benchmark.html).

ncat_report: writing all.ncat_fix.txt.

ncat_report: writing all.ncat_report.txt.

ncat_report: writing all.html.

(註:-a參數掃描所有漏洞選項,-u登錄帳戶,-w登陸密碼,-e特權模式密碼.掃描產生的漏洞檢測報告和安全建議則使用ncat_report寫入相關文件中.{router_ip_addr}是實際的路由IP地址)


可以說RAT 是IOS的安全配置檢測工具,提供了詳細的配置安全漏洞,並提供Fix Script for {router_ip_addr}的修補腳本,這樣周全的工具不僅是管理員的福音,也給入侵者帶來巨大好處.如果入侵者得到這樣一份周詳的報告,情況會有多糟糕?



可惜的是,這樣優秀的程序在對路由配置文件進行檢索時,所用的snarf程序是以telnet的方式對配置文件進行檢索,這樣的話,任何傳輸過程都將是明文的方式,而程序的文檔介紹中推薦使用的SSH協議本身也並不完善(可參閱【另類攻擊】部分的介紹),這樣就為攻擊者提供了偷竊的途徑,從而獲得路由全面的明晰配置圖,這樣結果對於網管來說將是多麼的不幸.因此我們需要謹慎的使用這個威力巨大的工具.

當然,這個優秀的免費工具帶給我們的另一個豐厚的禮物便是程序中自動裝入《路由安全配置指南》(RSCG)的PDF文檔,裡面詳盡的Cisco安全路由配置文檔介紹了路由的管理和安全配置方式,給出薄弱的路由配置配置說明.這種實惠既便利了安全工作者對於理解,也成為了攻擊者利用漏洞的極佳參考.


*終極力量Solarwinds

Solarwinds公司出品Solarwinds.net的全面產品中包容了針對許多管理監測Cisco設備的精美工具,良好的GUI、容易操作的截面、還有Perfect的Toolbar(比較起龐大而複雜的Ciscowork管理軟體,我偏向於Solarwinds提供的簡單配置工具,當然Ciscowork如果被攻擊者運用,那麼破壞的威力簡直可以搞拷一個大型網站的通信樞紐.至於Ciscowork的使用說明,篇幅問題,不在贅述).

主要工具簡介:

SNMP Dictionary Attack

SNMP字典攻擊用於測試SNMP的社區字串的強度.在SNMP字典攻擊中,攻擊程序裝載社區字串習慣用語字典和字典編輯器編輯的字典,然後按照字典排序進行猜解.


SNMP Brute Force Attack

SNMP暴力破解程序將會以字母和數字的組合形式遠程對SNMP的只讀字串和讀寫字串進行窮舉破解,同時我們可以定義包括的字元和字串的估計長度,這樣有助於加快破解速度.




Router Security Check

路由安全檢查程序能嘗試的進入到路由器中並提示IOS是否需要升級,同時它也自動嘗試只讀和讀寫的SNMP社區字串.下面就是一個實際檢測的結果:


IP Address202.xx.xx.xxSystem Namecisco7507Contact--Test Contact—010xxxxxxLocationCisco Internetwork Operating System Software IOS (tm) RSP Software (RSP-AJSV-M), Version 12.0(7), RELEASE SOFTWARE (fc1)Copyright (c) 1986-1999 by cisco Systems, Inc.Compiled Wed 13-Oct-99 23:20 by phanguyeRead-Only Community StringsILMIxxxxRead-Write Community StringsILMIXxxx

註:從結果看,我們獲得了讀寫字串,這種利用方式在前面已經論述過,不在重複.使用x隱含了真實的屬性資料.


Remote TCP Session Reset

可以遠程顯示路由器上的所有TCP活動連接,更有意思的是,如果得知SNMP社區的讀寫字串,這個程序可以隨意切斷TCP的連接,這種惡作劇也常常讓人苦惱不堪.


Cisco Router Password Decryption

不言而喻,這個程序是用來破解特權模式下的密碼.至於如何取得密碼,請參閱【觸及RouterKit】的說明.


當然,除了以上幾種工具外,Solarwinds來集合了實用的Config Editor/View,upload Config,Download Config,Running Vs Startup Configs,Proxy Ping, Advanced CPU Load,Router CPU Load路由配置管理工具,通過工具名字我們不難得出這些工具的用途.


Solarwinds牛刀小試

這裡將使用Solarwinds的工具組合進行一次高層次的入侵演習.不過這裡的先決條件是,你已經通過各種漏洞探測針方式獲取了社區可讀寫的字串(粗魯的做法就可利用通過Solarwinds SNMP暴力破解方式來獲取讀寫字串).

,創建一個包含新密碼的文本文件:

enable password New*Password

註:這種設置甚至可以覆蓋enable secret 5加密設置,不清楚Cisco既然得知Password 7方式加密是非常容易破解的,為什麼還要保留這個遺物.




接著,在文件中輸入修改登錄密碼的語句:

line vty 0 4password New*Passwordlogin


啟動Solarwinds自帶的TFTP伺服器,把創建的文件放置到伺服器的根目錄中.並在Config uploader實用工具中輸入路由地址,讀寫字串和TFTP伺服器的地址,並在TFTP目錄中選擇剛才創建的文件,按「Copy config PC to Router/Switch」.大致過程如圖示:


通過這種隱蔽的方式,我們更改了路由器的登錄密碼和特權模式密碼.這種把戲經常讓通過遠程管理路由的網管大吃一驚,但重啟路由后我們設置的密碼就失效了.原因在於我們是在Running-conf模式下修改路由配置,而沒有保存到NVRAM中.當然,許多過激的做法乾脆使用修改的密碼登錄路由器,把配置文件寫(write)到NVRAM.強權控管路由設備.


【幾點安全建議】

綜述了這些觸目驚心的漏洞和威力無比工具的應用,我們是否應該行動起來,採取適當的措施來保護自身利益呢?

*關於IOS的問題

1.通過no ip http server取消http服務,消除Http帶來的隱患.

2.限制SNMP訪問配置

access-list 10 permit 204.50.25.0 0.0.0.255snmp-server community readwrite RW 10 (通過ACL限制受信主機訪問)###########監測非授權的SNMP訪問配置##########snmp-server enable traps (設置陷阱)snmp-server trap-authentication (如何認證失敗,告訴路由發送陷阱.)snmp-server host 204.50.25.5 (陷阱消息接受工作站)(註:ciscoworks 工作站可以截獲這些信息.)

3.及時升級Cisco的IOS程序或者修補程序

4.推薦閱讀RAT中的RSCG文檔建議

5.利用安全工具對路由進行安全檢查.

關於安全的建議問題,不是一勞永逸的事情,漏洞在暗處挖掘著,新的技術在不斷膨脹著,因此以上的幾點建議只作為參考,實際的運用當中我們應該根據實際情況作出正確的策略.


[火星人 ] Cisco路由入侵藝術已經有479次圍觀

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