https://www.informationsecurity.com.tw/Seminar/2024_TNSP/register.aspx
https://www.informationsecurity.com.tw/Seminar/2024_TNSP/register.aspx

觀點

引爆系統漏洞!

2005 / 07 / 25
ED Skoudis
引爆系統漏洞!

「Sploits」是一般對描述電腦系統漏洞攻擊的黑話,以前要寫出一個攻擊程式可是要大費周章、焦頭爛額。攻擊者會採用人工方式撰寫,創造出一段可以進行緩衝溢出攻擊或字串格式缺陷攻擊的程式碼,要精細地計算出目標電腦記憶體中的正確位址,將機器碼「塞」到這個位址中,並且計算出位址的偏移量,以引導電腦去執行這一段程式碼。對一般人來說,這個過程是極其冗長而乏味的,且時間冗長到足夠讓廠商做出修補程式和應變措施,讓企業也可以從容地進行系統弱點修補。而早期部分攻擊者的程式,常常因為撰寫者缺乏測試、鬆散、混雜的程式設計習慣,而無法對電腦弱點造成全面性的損害。
現在情況已經逆轉,透過成熟的系統漏洞攻擊架構(Exploit frameworks),或稱之為自動化滲透測試工具,能夠不費吹灰之力而製造出高品質的弱點攻擊程式,發起攻擊就像吃飯一樣簡單。這種架構提供了一個共通的開發環境、程式封裝與操作漏洞攻擊的介面,在這種組合各種攻擊元件的生產線上,可以達到量產攻擊程式的目標,針對新發現的系統弱點,約有75%的漏洞程式開發工作可以被自動完成。
聽到這種訊息,令人憂喜參半。系統漏洞攻擊架構提供資安專家一個強而有力的平台,讓他們更有彈性地完成更深入、更正確的系統滲透測試工作。正如利刃的兩面,如果用在錯的地方,這種工具給攻擊者的就不只是彈弓的威力而已,嚴格來說,應該是一把全配的機關槍。
發展現況
系統漏洞攻擊架構是一套自動化滲透測試工具應具備的功能之一,目前市面上比較有名的工具如:CORE Security Technologies的IMPACT與Immunity的CANVAS,以及頗負盛名的開放原碼專案Metasploit。當然,還是有其他類似功能的工具,只是威力不及以上所提到的這三種工具。這些工具都蒐集了不少系統漏洞攻擊程式,包括許多緩衝區溢位攻擊,以及其針對目標作業環境所夾帶的攻擊碼。漏洞攻擊碼負責攻破系統的漏洞,而其夾帶的程式碼,或稱為shellcode,則依照不同作業系統來進行其他入侵、攻擊等行為。
以Metasploit和CANVAS為例,它們所夾帶的程式碼,可以做到開啟一個命令模式下的環境,或者開啟一個埠,接受攻擊者的連線,並給予攻擊者一個足夠權限的shell。而且還可以透過程式碼,去安裝各種圖形介面的遠端遙控程式,例如:VNC。IMPACT則可以遠端執行目標電腦上的任何程式。
這些架構的奇妙之處,在於它們都使用一個共通的、物件化的管理介面,用戶甚至不需要具備什麼軟體開發技能,只要在畫面上的選項打幾個勾、按下確定,就可以創造出一系列的自動化攻擊程序。在選單中,你可以選擇要針對哪一個系統弱點攻擊,以及目標電腦的作業系統版本,使用者可以不用去了解這些弱點攻擊的來龍去脈和它是如何開啟一個命令列視窗的程式碼,就可以得到用戶預期的成果。
與網路上流傳的各種攻擊碼相比,這種架構下的攻擊程式,是透過模組化的建構與管理,並且經過高手的調校之後,其可用性與攻擊成功的可靠度都遠超過手工打造的攻擊程式。除了使用這些“罐裝”的攻擊碼之外,開發人員也可以透過內建的模組,搭配現成的shellcode,快速地生產出攻擊程式。這就是為什麼一旦系統漏洞被發現之後,漏洞攻擊程式能夠在越來越短的時間內被釋出的原因之一。目前,還有一票研究人員,以逆向工程的手法,開發自動從系統修補程式中,挖掘出漏洞攻擊碼模組的工具,也就是說未來修補程式發佈之後,你僅有幾小時去完成系統修補,否則就得面對攻擊程式無情的掃射。
這些架構中還包含其他輔助工具,用來幫你製造出新的攻擊碼。像是從已經公佈的漏洞模式裡,去找出所有用到這個漏洞的程式,看看是否還有相關的緩衝溢出點之類的漏洞。而正常的系統弱點研究人員,就可以透過這些工具來搜尋程式中緩衝溢出點,從可執行檔裡面去追蹤與辨識呼叫副程式的位址,檢查是否有邏輯上的缺陷。還有些工具可以幫你計算出這個系統漏洞可以貢獻多少記憶體空間,讓你去“塞”這些攻擊碼,所以開發者也可以據此量身打造出合適的攻擊碼,讓程式在適當的位址上引爆系統漏洞弱點。還有些工具專門處理跨平台的問題,讓一段攻擊碼可以具備跨平台的可攜性,加速開發適用各種平台的攻擊碼。當然,還有部分工具就得擔當起化妝師的角色,針對各種目標的作業環境,幫攻擊程式塗上迷彩偽裝,巧妙地規避IDS和IPS的偵測。
這些架構真正功能強大的地方,就是它們所開發出的攻擊碼或shellcode,可以套用在不同的系統漏洞攻擊碼上面,變換出各種攻擊手法。不論是Metasploit使用Perl語言、或Core IMPACT與CANVAS使用Python語言,都可以創造出可通用的新模組,惠澤廣大的用戶群。

子彈上膛
這種系統漏洞攻擊架構,是許多script-kid夢寐以求的工具,因為使用簡單難度低,堪稱是威力強大的終極武器。
Metasploit操作方式非常簡單。它有三種介面,包含文字介面的命令列模式與console介面,透過指令操作的方式,例如:use [exploit]或set [exploit],可以完成各種設定;另外一種是網頁式的介面,提供一目了然的操作環境。用戶只要適當地指出系統漏洞選項和攻擊碼,然後再按下執行鈕,就可以對目標發動攻擊。 Core IMPACT的介面也是出乎意外的簡潔有力,透過一個綜合的圖形介面,鳥瞰所有網路上要進行滲透測試的目標清單、以及攻擊者發動攻擊後的戰績,而用戶也不太需要去學習如何操作這個介面,就可以輕鬆上手。
IMPACT與CANVAS均內建弱點掃瞄工具,讓攻擊者可以預先對目標機器進行偵察,而Metasploit則需配合其他工具才能進行掃瞄,免費的Nessus或商業版的Tenable Network Security NeWT與ISS Internet Scanner都是不錯的選擇。掃瞄完成之後,攻擊者就可以透過這種漏洞攻擊架構,針對掃瞄結果指出的漏洞,對目標電腦發動攻擊。
雖然這種偵察型的掃瞄動作,比較難以被IDS/IPS發現,但是這只是時間上的問題,漏洞攻擊架構也嘗試著建構規避IDS/IPS的功能和戰術,不過大部分的攻擊者還是難逃IDS/IPS的各種最新的特徵值偵測,像這一類的工具,都間接鞭策IDS/IPS廠商不斷進步,還有管理人員更加勤於強化與修補系統漏洞。
Core和Immunity採取高價策略,Core IMPACT的授權就要索價美金5萬元,這些軟體也限制其發行對象,避免被script-kid與有心人士濫用。而對於真正犯罪型的駭客,可能擁有大量的金錢後援,更會無所不用其極地去取得各種入侵用的強大工具。Metasploit則是免費的開放原始碼工具。

善惡僅是一線之隔
雖然漏洞攻擊架構有可能被有心人士濫用,但是卻可以用在好的一面,幫助資安專家測試系統並強化其安全架構。
傳統的掃描器通常僅針對漏洞本身,而很少去判斷目標系統的版本、語系是否能被相同的攻擊程式攻破。漏洞攻擊架構就是要做到實測,讓攻擊程式真正去攻打系統漏洞,安全經理也可以據此得到更實際的數據,去評估網路安全漏洞以及其所面對的風險。
說的更明白一點,安全經理應該同時採用弱點掃瞄工具與漏洞攻擊架構的工具,弱點評估小組先執行弱點掃瞄工具,找出系統漏洞所在,再根據這些已經識別出來的弱點,以漏洞攻擊架構工具去攻打,驗證評估結果並且依照重要程度排定修補的先後次序。當然,這樣的作法可以避免一般掃瞄程式產生過多的假警報,如果漏洞攻擊架構工具可以順利取得電腦的控制權,就表示這台電腦真的要趕緊進廠維修了。因為一般的script-kid也可以用相同的方式進到你的系統裡,趕快停機修補吧。
漏洞攻擊架構工具雖然好用,但仍有一絲不確定性,還是可能有機會在運作時,使目標系統崩潰或服務中斷。安全經理在使用這些工具時,應該先通知維運人員待命,以備不時之需,隨時需要重新開啟服務或重開系統。
漏洞攻擊架構工具同樣也可以用在測試IDS與IPS的功能。當看門狗完全不會叫的時候,安全經理大概要開始擔心其感應器是不是壞了、設定錯誤或者是通訊中斷。綜觀攻擊程式的發展,未來企業可能會遭受一些特殊的攻擊手法,使IDS與IPS失效或關機,入侵系統之後還可以讓系統看起來一切正常。
為了要測試你的IDS/IPS是否正常運作,你可以考慮使用漏洞攻擊架構工具週期性的發動一些測試攻擊,做為驗證的方法。當然,傳統的弱點掃瞄工具也可以用來測試你的感應器是否正常,但是卻很容易引發大量的警訊。為了不讓你的安全分析團隊陷入瘋狂,通常只要用漏洞攻擊架構工具發起一兩種攻擊就夠了。
資安專家通常會使用這一類漏洞攻擊架構工具,來輔助完成企業內部的滲透測試工作,可以在較短的時間內達到更多更完整的測試結果。漏洞攻擊架構工具可以幫你創造出更具系統化的測試腳本,重複應用各種不同預設的攻擊程式,試圖攻擊目標機器取得控制權,達到滲透測試的目的。
以往,還沒有採用這一類工具之前,滲透測試團隊往往要花上一整年的時間,從網路上取得各種漏洞攻擊程式,並且加以修改成可用的版本,嚴格來說是完成攻擊程式的大雜燴。然而,現在有了這一類工具的輔助,更有系統化地更新與蒐集各種攻擊程式資料,滲透測試團隊也可以專注於分析整體評估的結果,而不是花太多時間埋頭鑽研與修改攻擊程式。當然,漏洞攻擊架構工具也提供很棒的開發環境,讓滲透測試人員可以發展其特殊的攻擊手法。

引爆系統漏洞
話雖如此,即使漏洞攻擊架構工具在實務上給滲透測試人員很大的彈性,但是卻不是百分之百的完全自動化。即使是識途老馬還是得在進行滲透測試前好好計畫一番,評估各種工具的適用性,修正工具所產出的報告格式,分析測試報告,找出目標電腦的脆弱之處。
值得注意的是,不能太過於依賴漏洞攻擊架構工具的光環,認為這樣就有百分百的安全,又可以加強管理層面上的安全意識。通常,安全專家還是會藉由強調系統的安全強化與設定、系統修補與綿密的事件處理計畫,讓管理層級充分了解企業內的安全風險為何。
不過,說實在的,不論是在主管面前強調過幾百次,安全管理與應變的重要性,都不及一次真正成功的漏洞攻擊,讓主管眼睛為之一亮的那種震撼。
下面就告訴大家如何給主管來堂震撼教育。首先,要建立一個測試漏洞攻擊架構工具的環境,找一台可以被攻破的受害機器,在電腦中放一個文字檔,內容可以寫些像「這是一個機密檔案,未經授權請勿開啟」之類的文字。接著,選一個可行的攻擊程式,像是Windows的RPC-DCOM,然後先做幾次測試。就可以邀請你的主管來看看,如何輕易地就攻破電腦、竊取重要資料。
漏洞攻擊架構工具的出現,代表著漏洞攻擊工具的演進、散佈與應用,進入一個新的里程碑。很顯然的,這些工具如果在壞人的手上就是不折不扣的危險武器,但是往好的一面想,資安專家也可以透過這些方便的工具強化與精進安全管理,給企業的安全評估、驗證與偵防能力打上一劑強心針,加深管理層級的安全意識。安全經理都應該要發揮其睿智,比你的對手早一步學著如何巧妙地使用這些工具。 ED SKOUDIS,CISSP(ed@intelguardians.com) 經歷:Intelguardians安全顧問公司創始人,Information Security雜誌測試聯盟成員
著作:Malware: Fighting Malicious Code與Hack-Counter Hack 若有任何建議可寫信至iseditor@asmag.com。