田立軍
(西安鐵路局 信息化處,西安 710054)
滲透性測試技術(shù)及方法研究
田立軍
(西安鐵路局 信息化處,西安 710054)
隨著企業(yè)對信息系統(tǒng)安全性需求的增強(qiáng),對滲透測試方法和技術(shù)的研究也越來越重要。本文對安全滲透測試工程師經(jīng)常采用的方法和技術(shù)進(jìn)行了綜述類研究,總結(jié)了若干方法和技術(shù)及滲透測試流程,在此基礎(chǔ)上結(jié)合等級保護(hù)測評基本要求中對于滲透測試的要求提出了滲透測試方法。
滲透測試;測試技術(shù);滲透測試流程;等級保護(hù)
滲透測試通常指模擬黑客采用的漏洞發(fā)掘技術(shù)及攻擊方法,測試工程師對被測試單位的網(wǎng)絡(luò)、主機(jī)、應(yīng)用及數(shù)據(jù)是否存在安全問題進(jìn)行檢測的過程,這種活動主要是發(fā)現(xiàn)系統(tǒng)的脆弱性,評估信息系統(tǒng)是否安全,從攻擊者角度發(fā)現(xiàn)分析系統(tǒng)的缺陷及漏洞,并利用這些漏洞實(shí)現(xiàn)主動攻擊。滲透測試是一個逐漸深入信息系統(tǒng)內(nèi)部的過程,有可能影響業(yè)務(wù)信息系統(tǒng)的正常運(yùn)行,所以一般選擇對業(yè)務(wù)最少影響的通用方法測試。
1.1 滲透測試方法
(1)信息收集。通常被稱作“踩點(diǎn)”,是進(jìn)行攻擊入侵的首要任務(wù)。收集信息系統(tǒng)的網(wǎng)絡(luò)信息,主要是為了制定有目的性和針對性的滲透測試計劃和方案,來減小被發(fā)現(xiàn)的概率、提高測試的成功率、減小漏報率。“踩點(diǎn)”的主要內(nèi)容有掃描主機(jī)域名和IP地址、判斷操作系統(tǒng)類型、發(fā)現(xiàn)系統(tǒng)開放的端口及該端口對應(yīng)的應(yīng)用程序、掃描系統(tǒng)賬號列表、收集系統(tǒng)配置信息等。信息收集常用的工具有BT5、nmap、X-Scan、Appscan等。
(2)端口掃描。端口掃描是通過掃描目標(biāo)地址的開放端口,發(fā)現(xiàn)其所開放的所有服務(wù)來確定系統(tǒng)的基本特征,這是進(jìn)行滲透測試的基礎(chǔ)步驟,安全測試者通過掃描結(jié)果并結(jié)合經(jīng)驗發(fā)現(xiàn)系統(tǒng)可被利用的安全缺陷,為進(jìn)一步的滲透提供依據(jù)。
(3)遠(yuǎn)程溢出。遠(yuǎn)程溢出攻擊是通過遠(yuǎn)程終端對信息系統(tǒng)實(shí)現(xiàn)溢出攻擊的方式,它由于較易掌握和實(shí)施,導(dǎo)致成為出現(xiàn)頻率最高、威脅最嚴(yán)重的滲透測試方式,通常只要攻擊者具備基礎(chǔ)網(wǎng)絡(luò)常識就能通過利用現(xiàn)成的遠(yuǎn)程溢出攻擊工具實(shí)現(xiàn)這種攻擊。
(4)本地溢出。本地溢出是指本地計算機(jī)因程序數(shù)據(jù)溢出而關(guān)閉或無法執(zhí)行。本地溢出攻擊是指在本地執(zhí)行一段特定的代碼指令導(dǎo)致本地計算機(jī)程序溢出從而獲得管理員權(quán)限的方法,使用該攻擊方法的前提是需要經(jīng)過口令猜測或暴力破解獲得普通用戶的密碼口令。由于本地計算機(jī)設(shè)置了弱口令的不當(dāng)密碼策略導(dǎo)致了本地溢出,在使用普通用戶登錄到系統(tǒng)后對未部署主動安全防御的系統(tǒng)實(shí)施本地溢出攻擊,達(dá)到獲得完全控制管理權(quán)限的目的。
(5)網(wǎng)絡(luò)嗅探。嗅探是進(jìn)行信息收集的一種方法,主要是用來捕捉網(wǎng)絡(luò)中像明文密碼這樣的傳輸數(shù)據(jù)的方法,同時也能夠抓取特定計算機(jī)之間的完整會話信息。要強(qiáng)調(diào)的是為了達(dá)到捕獲網(wǎng)絡(luò)中所有傳輸數(shù)據(jù)的目的,通常要求計算機(jī)的網(wǎng)卡模式在嗅探時設(shè)置為混合模式,嗅探器或計算機(jī)需要直連到網(wǎng)絡(luò)來獲取大量數(shù)據(jù)信息,所以嗅探常被用在內(nèi)部測試。
(6)SQL注入攻擊。SQL注入是指在網(wǎng)站中的Web表單、字符查詢輸入框中,通過提交某些特殊SQL語句達(dá)到篡改網(wǎng)站后端采用數(shù)據(jù)庫中內(nèi)容的方式。SQL注入攻擊是黑客攻擊數(shù)據(jù)庫的常用技術(shù)手段之一,由于網(wǎng)站沒有詳細(xì)的過濾用戶輸入的數(shù)據(jù)導(dǎo)致存在SQL注入漏洞,這也是非法數(shù)據(jù)侵入數(shù)據(jù)庫系統(tǒng)的主要原因。
(7)跨站腳本攻擊。跨站腳本攻擊是指攻擊者將具有惡意目的的數(shù)據(jù)潛入到遠(yuǎn)程用戶信任的WEB頁面的HTML代碼中,當(dāng)該頁面被瀏覽器下載運(yùn)行時嵌入的腳本將被執(zhí)行,用戶頁面被跳轉(zhuǎn)到攻擊者精心編織的其他頁面,用戶毫無顧及的填寫各種敏感信息,殊不知已被攻擊者盜取或被站點(diǎn)掛馬控制。
(8)暴力破解。暴力攻擊的主要目的是通過嘗試各種密碼字典和窮舉法查出合法的用戶名和口令,所采用的字典比較龐大,比如最常使用的彩虹表有100 G以上,這種字典由大量的字母、數(shù)字、符號等組合而成的,雖比較完善但這種破解用戶口令的方法是很耗時的,并且可能會造成系統(tǒng)過載而無法響應(yīng)合法的請求。另外若系統(tǒng)開啟了帳戶鎖定策略,這種口令嘗試攻擊會關(guān)閉合法登錄帳戶。
(9)漏洞掃描。漏洞掃描是針對目標(biāo)系統(tǒng)的窮舉檢查發(fā)現(xiàn)系統(tǒng)是否存在漏洞的一種方法。掃描的目標(biāo)范圍包括網(wǎng)絡(luò)設(shè)備、主機(jī)操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)及應(yīng)用系統(tǒng),它通常是使用自動化工具執(zhí)行的,如綠盟漏洞掃描設(shè)備,這些工具能夠測試目標(biāo)范圍內(nèi)已知漏洞方面的大量潛在弱點(diǎn),并出具漏洞掃描報告,羅列系統(tǒng)潛在的安全問題并提供整改方案。
(10)代碼審查。代碼審查主要是通過手工或?qū)彶楣ぞ邔Ρ粶y業(yè)務(wù)信息系統(tǒng)進(jìn)行安全代碼審查,發(fā)現(xiàn)可能會導(dǎo)致安全問題的不安全編碼規(guī)范、編碼技術(shù)和代碼漏洞。代碼審查測試工作包括:審查代碼中的XSS腳本漏洞;審查代碼中的SQL注入漏洞;審查代碼中的緩沖區(qū)溢出漏洞;審查不規(guī)范的編碼技術(shù);另外也包括發(fā)現(xiàn)軟件代碼編寫錯誤及其他潛在漏洞的審查。
1.2 滲透測試技術(shù)
滲透測試按照滲透的對象不同可分為操作系統(tǒng)滲透、數(shù)據(jù)庫系統(tǒng)滲透、應(yīng)用系統(tǒng)滲透和網(wǎng)絡(luò)設(shè)備滲透。對于不同的滲透目標(biāo)或?qū)ο螅捎貌煌臐B透測試技術(shù),主要分為內(nèi)網(wǎng)測試技術(shù)和外網(wǎng)測試技術(shù)。
1.2.1 內(nèi)網(wǎng)測試
內(nèi)網(wǎng)測試通常指滲透測試執(zhí)行者從信息系統(tǒng)內(nèi)部網(wǎng)絡(luò)繞過防火墻直接進(jìn)行的測試,這種測試能夠模擬內(nèi)部員工的違規(guī)操作。進(jìn)行這種測試主要可能采用的滲透方法包括:緩沖區(qū)溢出攻擊、口令破解、應(yīng)用程序測試、漏洞掃描、端口掃描等,其中對C/S模式的應(yīng)用程序進(jìn)行測試之前需準(zhǔn)備好有關(guān)客戶端軟件。內(nèi)網(wǎng)測試也稱為白盒測試,測試者可以通過與被測單位的程序員、維護(hù)人員、管理人員面對面交流取得各種資料,包括網(wǎng)絡(luò)拓?fù)洹⒉僮飨到y(tǒng)和數(shù)據(jù)庫類型、員工資料甚至網(wǎng)站或其他程序的代碼片段。
1.2.2 外網(wǎng)測試
外網(wǎng)測試指的是在公司網(wǎng)絡(luò)的外部進(jìn)行的測試,測試人員在對內(nèi)部網(wǎng)絡(luò)狀態(tài)完全不知道的情況下,模擬外部攻擊者的一種行為[1]。其中包括防火墻規(guī)則的規(guī)避、試探,遠(yuǎn)程攻擊網(wǎng)絡(luò)設(shè)備,對口令管理的安全性測試,其它開放應(yīng)用服務(wù)及相關(guān)Web的安全性測試等。外網(wǎng)測試通常也被稱為黑盒測試,所以,外網(wǎng)測試最初獲取的信息大多通過搜索引擎、單位論壇或單位公開對外的服務(wù)器。
1.2.3 滲透測試實(shí)例
下面以主機(jī)滲透測試為例,闡述針對主機(jī)身份鑒別如何開展?jié)B透測試。
等級保護(hù)《基本要求》中對第3、第4級系統(tǒng)要求如下:
(1)針對服務(wù)器的操作系統(tǒng)進(jìn)行滲透性測試,可以通過應(yīng)用口令破解等相關(guān)工具,針對具體服務(wù)器的操作系統(tǒng)強(qiáng)度檢測其相關(guān)的用戶口令,查看是否能夠有針對性地對用戶口令進(jìn)行破解,其用戶口令被破解后是否能夠登錄進(jìn)入服務(wù)器的操作系統(tǒng)[3]。
(2)針對服務(wù)器的操作系統(tǒng)進(jìn)行滲透性測試,主要是指檢查是否真正存在著一種能夠繞過用戶認(rèn)證方式而進(jìn)行操作系統(tǒng)登錄的方法[3]。
針對要求點(diǎn)(1)指出的通過破解服務(wù)器用戶口令的工具對系統(tǒng)進(jìn)行較高強(qiáng)度檢測,主要采用的工具有綠盟漏洞掃描設(shè)備中的口令破解模塊以及BT5工具中在線密碼破解工具h(yuǎn)ydra的圖形化界面hydragtk,這里用到了用戶字典和密碼字典,口令是否破解成功與字典是否強(qiáng)大有直接關(guān)聯(lián)[5]。
滲透測試實(shí)例如下:
(1)Windows服務(wù)器口令破解實(shí)例
對于Windows服務(wù)器操作系統(tǒng)主要版本有Winnt 4.0 Server、Win2000/Advanced Server、Win2003/ Advanced Server、Windows Server 2008。首先采用Windows(SMB)常見用戶名口令組合字典,字典中包含Administrator:123/1234/123123/111111等的弱口令賬戶,新建任務(wù)輸入要掃描的IP地址,選擇字典模板進(jìn)行弱口令賬戶的掃描,掃描結(jié)果,該服務(wù)器操作系統(tǒng)類型為Windows Server 2008 R2 Enterprise 7601 Service Pack 1,運(yùn)行的應(yīng)用程序MySQL存在弱口令賬戶root/root。
采用hydra-gtk工具對Windows XP 系統(tǒng)進(jìn)行簡單的實(shí)驗,實(shí)驗截圖如圖1~圖3所示。

圖1 滲透第一步

圖2 填寫滲透測試目標(biāo)IP

圖3 滲透測試結(jié)果
(2)繞過操作系統(tǒng)認(rèn)證方式進(jìn)入系統(tǒng)
采用U盤啟動Win PE系統(tǒng),開機(jī)時按F12進(jìn)入Win PE系統(tǒng)USB模式,打開程序,選擇密碼修改或密碼恢復(fù),對密碼進(jìn)行重置,修改成功后重啟電腦,輸入新密碼即可登錄系統(tǒng)。
當(dāng)Windows系統(tǒng)用戶列表中有除Administrator管理員用戶(用戶密碼為空)之外的普通用戶如aa,可以進(jìn)入帶命令行模式的安全模式下通過net user aa 1234/add來重新設(shè)置aa的密碼,也可以通過net localgroup administrators aa/add來提升其權(quán)限為管理員,重啟電腦后即可采用aa登錄系統(tǒng)。
使用Windows安裝光盤,選擇用“恢復(fù)控制臺”修復(fù)Windows XP 安裝,跳過管理員密碼輸入步驟,隨后進(jìn)入System32文件夾:cd system32,并重命名該目錄下的文件sfcfiles.dll :ren sfcfiles.dll sfcfiles. lld。接著從光盤中I386目錄下復(fù)制文件pinball.ex_到system32文件夾中,并命名為sfcfiles.dll:copy d:i386pinball.ex_ sfcfiles.dll.至此前期工作全部做完,把光盤拿出,輸入exit命令退回控制臺,重啟電腦。
利用發(fā)現(xiàn)的操作系統(tǒng)漏洞對操作系統(tǒng)進(jìn)行滲透測試,獲取操作系統(tǒng)權(quán)限。主要可利用系統(tǒng)緩沖區(qū)的溢出漏洞、遠(yuǎn)程代碼執(zhí)行漏洞、系統(tǒng)拒絕服務(wù)的漏洞、內(nèi)存破壞漏洞等。下面舉例采用Windows Server 操作系統(tǒng)的服務(wù)RPC請求其系統(tǒng)緩沖區(qū)溢出的一個漏洞(ms08-067),即針對Windows操作系統(tǒng)的Server服務(wù),在進(jìn)行處理特制的一種RPC請求時,存在著這種關(guān)于緩沖區(qū)溢出的系統(tǒng)漏洞[4],使用BT5中的metasploit工具攻陷XP系統(tǒng)獲取系統(tǒng)權(quán)限,流程如圖4所示。

圖4 獲取系統(tǒng)權(quán)限流程
至此攻擊成功,獲取了服務(wù)器操作系統(tǒng)的shell,也即獲取了系統(tǒng)的控制權(quán)限,進(jìn)行新建管理員用戶及口令即可成功繞過認(rèn)證方式登錄系統(tǒng)。
滲透測試流程如圖5所示。
2.1 準(zhǔn)備階段

圖5 滲透測試流程圖
項目經(jīng)理根據(jù)從客戶收集到的文檔資料及調(diào)查數(shù)據(jù),編制《信息系統(tǒng)滲透測試方案》,主要目的是確定具體日期及雙方配合人員名單,并要求被測評單位簽訂《信息系統(tǒng)滲透測試用戶授權(quán)單》。
2.2 預(yù)攻擊階段
主要確定進(jìn)一步攻擊策略,目的為收集信息,包括獲得域名及IP分布,獲得網(wǎng)絡(luò)拓?fù)浜筒僮飨到y(tǒng),獲得服務(wù)器端口和服務(wù),獲得應(yīng)用系統(tǒng)情況,跟蹤新漏洞發(fā)布,主要包括以下幾個方面。
(1)獲取基本網(wǎng)絡(luò)信息
a.使用Ping命令得到網(wǎng)絡(luò)IP和ttl等信息;
b.使用Tcptraceroute和traceroute查看路由結(jié)果;
c.使用Curl域名方式獲取目標(biāo)Web基本信息;
d.使用Nmap命令進(jìn)行端口掃描并判斷操作系統(tǒng)類型;
e.谷歌、百度搜索引擎獲取目標(biāo)信息;
f.使用hping3工具進(jìn)行防火墻規(guī)則探測。
(2)漏洞掃描
a.采用Xscan、nessus、綠盟漏洞掃描等商用或免費(fèi)的掃描工具進(jìn)行漏掃掃描;
b.采用綠盟漏洞掃描對網(wǎng)絡(luò)設(shè)備、Web應(yīng)用程序、數(shù)據(jù)庫進(jìn)行掃描分析。
(3)對Web應(yīng)用進(jìn)行分析
a.采用Webscarab工具對Web進(jìn)行分析;
b.用Ethereal、wireshark抓包協(xié)助分析;
教師在智慧職教云上安排了課后拓展階段,提出思考問題,進(jìn)行頭腦風(fēng)暴,拓展知識視野,進(jìn)一步提升學(xué)生專業(yè)技能學(xué)習(xí)的廣度和深度。學(xué)生利用課余時間,通過移動終端和PC終端訪問智慧職教云平臺,學(xué)習(xí)任課教師構(gòu)建的一體化教學(xué)資源。這樣既培養(yǎng)學(xué)生進(jìn)行持續(xù)學(xué)習(xí),提升學(xué)生自我學(xué)習(xí)能力,又對已學(xué)知識進(jìn)行檢測。
c.用Webscan、appscan進(jìn)行SQL注入和XSS漏洞初步分析。
分析應(yīng)用時為防止直接繞過系統(tǒng)修改數(shù)據(jù)庫文件需檢查應(yīng)用系統(tǒng)架構(gòu);為防止非法繞過身份認(rèn)證需檢查身份認(rèn)證模塊;為防止用戶獲得系統(tǒng)權(quán)限需檢查數(shù)據(jù)庫接口模塊;為防止用戶獲取系統(tǒng)文件需檢查文件接口模塊。
2.3 攻擊階段
攻擊獲得系統(tǒng)的權(quán)限。主要有獲得遠(yuǎn)程權(quán)限進(jìn)入系統(tǒng),提升本地權(quán)限,進(jìn)一步擴(kuò)展權(quán)限,進(jìn)行實(shí)質(zhì)性操作。攻擊主要針對通用設(shè)備、數(shù)據(jù)庫、操作系統(tǒng)和應(yīng)用展開。
(1)Web腳本攻擊:SQL注入攻擊、跨站腳本攻擊、文件上傳攻擊、cookie欺騙等。
(2)木馬攻擊:木馬偽裝、木馬免殺、網(wǎng)頁木馬偽裝、網(wǎng)頁木馬免殺。
(3)緩沖區(qū)溢出:系統(tǒng)服務(wù)緩沖區(qū)溢出等。
(5)網(wǎng)絡(luò)設(shè)備滲透:防火墻攻擊、路由器攻擊等。
(6)賬戶口令攻擊:內(nèi)存截獲賬戶數(shù)據(jù)、口令暴力破解、克隆賬戶等。
(7)管理缺陷利用:遠(yuǎn)程終端入侵通道、FTP弱口令破解與入侵利用等。
(8)嗅探欺騙技術(shù):“廣播型”網(wǎng)絡(luò)環(huán)境的嗅探、ARP欺騙、DNS欺騙劫持等。
2.4 后攻擊階段
消除痕跡并維持一段長期的權(quán)限。主要包括刪除滲透日志,修補(bǔ)漏洞,植入后門,進(jìn)一步滲透,進(jìn)入潛伏狀態(tài)。
(1)鍵盤記錄與口令嗅探:使用木馬植入、鍵盤記錄、嗅探等相關(guān)功能簡單的入侵軟件,但需要不被殺毒軟件和防火墻發(fā)覺,所以通常需要進(jìn)行部分修改完善或完全自行開發(fā)。
(2)口令破解:借助如Cain、L0phtCrack等破解用戶操作系統(tǒng)口令的相關(guān)軟件進(jìn)行日志清除,為避免入侵痕跡被系統(tǒng)管理員發(fā)現(xiàn),通常刪除系統(tǒng)或應(yīng)用日志需要技巧。
2.5 滲透測試報告編寫階段
項目組和客戶溝通核對測試結(jié)果,編制滲透測試報告,在必要時可召開報告評審會,如果客戶要求復(fù)測,則要被測評單位在整改完畢后提交信息系統(tǒng)整改報告,開展復(fù)測工作。復(fù)測結(jié)束后,測評方出具《信息系統(tǒng)滲透測試復(fù)測報告》。
社會網(wǎng)絡(luò)化不斷發(fā)展和各類信息系統(tǒng)在商業(yè)、政府、軍事領(lǐng)域的廣泛使用,系統(tǒng)的安全問題也日益被重視。為了能夠有效地檢測系統(tǒng)的安全性,提升其防御能力,降低系統(tǒng)被攻擊的風(fēng)險,滲透測試作為一種能全面檢測系統(tǒng)可能存在的安全漏洞的手段被廣泛使用,由于需要測試的對象比較復(fù)雜,所以滲透測試的技術(shù)和方法多種多樣。本文主要對滲透測試的技術(shù)、方法和測試流程進(jìn)行了探討和總結(jié),并結(jié)合等級保護(hù)基本要求對主機(jī)安全身份鑒別測試項的滲透要求進(jìn)行了測試方法的介紹及測試實(shí)驗,為后續(xù)的網(wǎng)絡(luò)安全、應(yīng)用安全等滲透提供借鑒的思路。
[1]王曉聰,張 冉. 滲透測試技術(shù)淺析[J]. 計算機(jī)科學(xué),2012(6).
[2]唐秀存,杜德慧. 滲透測試技術(shù)與模型研究[J]. 計算機(jī)與信息技術(shù),2007(5).
[3] 中華人民共和國國家質(zhì)量監(jiān)督檢驗檢疫總局,中國國家標(biāo)準(zhǔn)化管理委員會. GB/T 22239-2008,信息安全技術(shù)—信息系統(tǒng)安全等級保護(hù)基本要求[S].北京:中國標(biāo)準(zhǔn)出版社, 2008.
[4] David Kennedy,Jim O'Gorman,Devon Kearns,Mati Aharoni. Metasploit滲透測試指南[M].北京:電子工業(yè)出版社,2013.
[5]卞崢嶸.back track5從入門到精通[M].北京:國防工業(yè)出版社,2012.
責(zé)任編輯 方 圓
Techniques and methods for penetration testing
TIAN Lijun
( Department of Information Technology, Xi’an Railway Administration, Xi’an 710054, China )
With the increased demand of information system security for enterprise, the research of penetration testing methods and techniques became more and more important. This paper mainly researched on the methods and technologies which were often used by penetration testing engineer, and summarized these methods, skills and penetration testing process. Based on these researches and basic requirements of classified protection, the paper
proposed the penetration testing methods.
penetration testing; testing techniques; penetration testing process; level protection
U29-39
A
1005-8451(2015)02-0008-05
2014-10-08
田立軍,高級工程師。