高宏佳, 李世明,2
(1 哈爾濱師范大學(xué) 計算機(jī)科學(xué)與信息工程學(xué)院, 哈爾濱150025;2 上海市信息安全綜合管理技術(shù)研究重點(diǎn)實(shí)驗(yàn)室, 上海200240)
開放的互聯(lián)網(wǎng)上,網(wǎng)絡(luò)安全事件頻發(fā),各種網(wǎng)絡(luò)攻擊行為已經(jīng)嚴(yán)重威脅著網(wǎng)絡(luò)服務(wù)的安全運(yùn)行。 如何進(jìn)行預(yù)防和在線檢測成為網(wǎng)絡(luò)安全防護(hù)的研究熱點(diǎn)。 為最小化安全風(fēng)險、減少被入侵概率,有必要在系統(tǒng)正式運(yùn)行前進(jìn)行滲透測試,事先進(jìn)行攻擊模擬。為降低在滲透測試過程中大量人工操作成本,有效提高測試效率,本文提出了基于自動化思想的滲透測試策略,來提高滲透測試效率。 國內(nèi)外也有相關(guān)研究成果被提出,如基于Agent 智能模型思想的滲透測試系統(tǒng)[1]。 歷年各級各類網(wǎng)絡(luò)攻防賽、黑客大賽等也為滲透測試自動化做出了貢獻(xiàn),促進(jìn)了該研究熱點(diǎn)的研究和發(fā)展。
滲透測試攻擊,是通過模擬惡意黑客的攻擊手段,實(shí)現(xiàn)對被測系統(tǒng)的安全性測試與評估。 它主要包括前期信息采集、交互獲取操作系統(tǒng)、目標(biāo)IP、開放端口、提供服務(wù)SQL 漏洞及注入點(diǎn)等等。 隨后對所獲取的信息進(jìn)行審核處理,獲取外網(wǎng)IP 以及內(nèi)網(wǎng)IP 并進(jìn)行滲透測試、提權(quán)等操作。 最后,通過大量的分析,自動得出滲透測試報告,報告中對所有的漏洞,包括HTTP 請求頭泄露、文件泄露、XSS 泄露、點(diǎn)擊劫持、是否SQL 注入成功、是否設(shè)置X-contenttype-options 頭等情況,以及所有的端口開放情況、服務(wù)情況進(jìn)行整理、對主機(jī)的漏洞進(jìn)行評級。 最終給出的報告有利于對主機(jī)進(jìn)行安全分析,盡量減少入侵風(fēng)險。
本文自動化滲透攻擊核心總體為:(1)輸入目標(biāo)主機(jī)域名及參數(shù);(2)輸入?yún)?shù)執(zhí)行自動化滲透;(3)生成滲透測試報告。 執(zhí)行流程如圖1 所示。
通過分析部分滲透攻擊技術(shù),結(jié)合并分析漏洞特點(diǎn)及復(fù)雜性,現(xiàn)闡述本系統(tǒng)重要模塊如下:
(1)信息收集。 滲透測試首先從搜集攻擊目標(biāo)的基本信息開始,經(jīng)過一系列分析、排除、進(jìn)一步搜集的迭代過程。 本文創(chuàng)新性利用python 代碼編程進(jìn)行自動搜集網(wǎng)站Title 和banners,通過對外網(wǎng)和內(nèi)網(wǎng)的探測來獲取目標(biāo)主機(jī)等有效信息,為后面的測試做好前期準(zhǔn)備[2]。
圖1 滲透攻擊流程Fig.1 Penetration attack process
(2)漏洞掃描滲透。 為簡化實(shí)驗(yàn),本文利用已知漏洞對目標(biāo)web 應(yīng)用可能存在的利用點(diǎn)進(jìn)行檢測與利用[3];通過檢測并成功利用漏洞,可以得出滲透測試的憑證,并依據(jù)HTTP 協(xié)議的通用性,改變HTTP 協(xié)議的內(nèi)容以達(dá)到web 應(yīng)用系統(tǒng)滲透檢測利用的目的,對其存在已知漏洞進(jìn)行滲透攻擊[4]。
(3)滲透日志。 滲透日志是記錄在滲透過程中滲透過程所獲得的信息(如端口掃描、弱口令等)、對滲透過程以及攻擊過程中出現(xiàn)的其它問題加以整理并進(jìn)行文檔化記錄。
本文自動滲透測試?yán)胮ython 語言編程,來搜集網(wǎng)站Title 和banners,對內(nèi)網(wǎng)設(shè)備探索,快速確定目標(biāo),Title 可由BeautifulSoup 直接獲取。 以利用python 語言進(jìn)行SQL 盲注為例[5],采取二分查找算法實(shí)現(xiàn)信息檢索[6],偽代碼描述如下:
INPUT:I ={ipi|ipi∈IPset,i ∈Z+} / / IPset:被攻擊目標(biāo)IP 集合
OUTPUT:O =? ∪{ <ui,pi>|ui∈U,pi∈P,i ∈Z+} / /輸出結(jié)果
/ /其中,U,P 分別為破解時用的用戶名字典和密碼字典
connecting ipi
Initialization / /初始化
define chardataU[U_MAX] / /
define chardataP[P_MAX] / /
dataU =U; / / 將用戶名字典拷貝到數(shù)組中
dataP =P; / / 將密碼字典拷貝到數(shù)組中
Asc_sort(dataU); / /對用戶名字典數(shù)據(jù)按升序排序
Asc_sort(dataP); / /對密碼字典數(shù)據(jù)按升序排序
int low, high, mid;
char ui,pi;
int low =0,high,mid;
high =MAX-1;
/?用戶名檢測?/
Low =0;
high =U_MAX -1;
while(low! =high)
{
mid =(low+high)/2;
if (dataU[mid]! =ui)
{
if(dataU[mid]>ui)
high =mid-1;
else if(dataU[mid]<ui)
low =mid+1;
}
else return ui;
} /?密碼檢測?/同上
通過模型得到盲注實(shí)例,部分關(guān)鍵代碼如下:
url_dump ='http:/ /%s/? id =-1\' union select{inc}if( ord(mid( (select group_concat({column_name}) from {table_name}), {pos}, 1)) {op}{ord}, sleep(2.5), 1) ;--+' % url_part
req_count =0
sleep_count =0
def binary_search(url, low, high):
gt ='>'
lt ='<'
eq ='='
while low <=high:
mid =(low +high) / / 2
if judge(url % (eq, mid)):
return mid
elif judge(url % (gt, mid)):
low =mid +1
else:
high =mid - 1
return -1
def dump_binsearch(column_count, table_name,column_name):
data =''
pos =1
inc =make_union(column_count)
while True:
url =url_dump.format(inc =inc, pos =pos,op ='%s', ord ='%d', table_name =table_name,column_name =column_name)
ord =binary_search(url, low, high)
if ord >-1:
data +=chr(ord)
pos +=1
continue
else:
return data
本仿真實(shí)驗(yàn)測試硬件配置環(huán)境為CPU 酷睿I5,2.3GHz 主頻,系統(tǒng)內(nèi)存8GB,自動滲透測試系統(tǒng)采用python3.7 開發(fā),采用kali linux 虛擬機(jī)作為測試主機(jī):
測試是基于python 的kali+linux 滲透測試需要而 搭 建 的 selenium + firefox + geckodriver +beautifulSoup 環(huán)境。
其中:
(1)Selenium 是一款Web 程序測試工具,不受瀏覽器、語言等限制,能夠完成自動化測試功能。
(2)geckodriver+firefox
Geckodriver 采 用 WebDriver 兼 容 模 式,WebDriver 協(xié)議描述以及HTTP API 編程接口,可實(shí)現(xiàn)Marionette 遠(yuǎn)程協(xié)議通信。
(3)BeautifulSoup
將Beautiful Soup 添加到python 環(huán)境中,將獲得更多庫函數(shù)。 并具有分析搜素結(jié)果、數(shù)據(jù)抓取、unicode 編碼轉(zhuǎn)化、UTF-8 編碼輸出等功能,起到python 解釋器作用。
實(shí)驗(yàn)過程中通過直接輸入目標(biāo)主機(jī)的IP 地址和相應(yīng)參數(shù),自動進(jìn)行信息收集、滲透攻擊和日志生成。
攻擊靶機(jī)過程中獲取了目標(biāo)主機(jī)類型、端口、服務(wù)、網(wǎng)絡(luò)類型、網(wǎng)絡(luò)安全和漏洞等信息,實(shí)驗(yàn)結(jié)果如表1 所示。
本項(xiàng)目通過對目標(biāo)主機(jī)進(jìn)行滲透實(shí)驗(yàn)得出滲透測試中易受攻擊的滲透點(diǎn)、可利用代碼、開放端口、SQL 注入點(diǎn)、文件上傳漏洞、接觸漏洞等。 此外滲透測試可能帶來一些風(fēng)險,如因頻繁掃描、違反安全策略等可能出現(xiàn)系統(tǒng)崩潰、運(yùn)行出錯或賬號鎖定,造成滲透測試被迫中止。 此外,也可采用適當(dāng)技術(shù)措施來降低風(fēng)險[7]。 如對測試任務(wù)分解、約束掃描測試策略、規(guī)則測試危險時間段等。 本實(shí)驗(yàn)的弊端在于滲透時間過長,滲透測試需要大量的前期信息搜集,對于防護(hù)較好的目標(biāo)主機(jī)需要更長的滲透時間。
表1 滲透攻擊信息表Tab.1 Penetration attack information
本項(xiàng)目可以自動完成網(wǎng)絡(luò)下的安全掃描、探測、利用等工作,具備全面、低干擾的特點(diǎn)。 利用python進(jìn)行信息采集搜集網(wǎng)站Title 和banners,對內(nèi)網(wǎng)設(shè)備探索,快速確定目標(biāo)。 具有查找注入點(diǎn)等應(yīng)用漏洞、破解數(shù)據(jù)庫結(jié)構(gòu)、爆破弱口令、遠(yuǎn)程指令執(zhí)行、外網(wǎng)注入、內(nèi)網(wǎng)掃描等功能,能夠發(fā)現(xiàn)指定目標(biāo)的漏洞點(diǎn),對漏洞進(jìn)行綜合利用,最終獲取帶有指定關(guān)鍵字的文件。 減輕安全測試給業(yè)務(wù)帶來的干擾。
由于本文的研究還處于探索自動滲透測試階段,有諸多研究沒有開展。 在后繼工作中,還將擴(kuò)展對滲透測試自動化更多的研究,進(jìn)一步優(yōu)化信息收集、滲透測試工具利用優(yōu)化等。