999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

LSTM-Exploit:基于LSTM 的智能滲透工具

2021-07-16 06:13:24王璽民朱俊瀾黃路一秦朝鵬賀文博
網絡安全技術與應用 2021年7期
關鍵詞:利用信息模型

◆王璽民 朱俊瀾 黃路一 秦朝鵬 賀文博

(江蘇警官學院 江蘇 210031)

1 背景概述

根據2020 年《網絡攻擊趨勢:2020 年上半年報告》顯示,2020年上半年網絡釣魚和惡意軟件攻擊急劇增加,從2 月份的每周不足5,000 次激增至4 月下旬的每周超過20 萬次。此外,在5 月和6 月,隨著各國開始解除防疫封禁措施,攻擊者隨之加大了與新冠肺炎疫情相關的攻擊。與3 月和4 月相比,6 月底全球所有類型的網絡攻擊增加了34%。

頻繁的網絡攻擊暴露出了更多的安全問題:一方面,攻擊者的攻擊目標正從傳統的系統漏洞轉向各種移動感染媒介,另一方面,傳統DDoS 分布式拒絕服務攻擊趨緩,APT 高級持續滲透攻擊興起,攻擊者往往先通過一系列有組織,有計劃的信息搜集活動獲得目標可能的攻擊點,而后進行大規模,多手段的網絡攻擊,很容易突破目標防御,直接導致敏感信息泄露或系統癱瘓。

面對日趨復雜的網絡環境,滲透測試作為產品安全檢測的一個重要環節備受關注。

當前主流滲透測試需要大量手工工作。手動挖掘系統或應用漏洞,有利于發掘0day 漏洞,但是如果目標開放了多個端口,就需要對每個端口進行多個測試,基于端口的測試工具是nmap 和metasploit 框架,在開放多個端口的環境下,利用nmap 掃描后,就需要手動在metasploit中進行測試,在metasploit終端中利用search 命令根據nmap掃描到的服務名搜索exploit 測試模塊,在選定exploit 后,通過set target 命令定義測試目標系統,show payloads 命令產生針對不同協議和系統的payloads 測試載荷,set 命令選擇payload,再根據已選對象設置對應的option,完成后需要從exploit,target,payload 形成的集合中遍歷數據進行測試。但是由于目標系統和端口服務版本限制,往往會產生很多無效測試過程,針對這種情況可以引入現流行的人工智能算法進行預測。

現存的智能工具有GyoiThon 和Deep Exploit 兩大類。

GyoiThon:用來實現對存在漏洞的Web 網站實現攻擊,機器學習體現在利用樸素貝葉斯算法實現對Web 指紋和服務器的預測,在獲得信息后直接傳送給metasploit 執行,缺少對metasploit 中exploit,target,payload 數據的學習,預測只體現在信息搜集過程中,在執行Metasploit 命令時,還是根據if來判斷使用的exploit,target 和payload,無法滿足exploit->target->payloads 大量數據的學習預測,效率依然低下,只不過能夠更為廣泛地搜集信息。

Deep Exploit:在2018 DEFCON 黑客大會上發布的工具,LSTM-Exploit 學習了它的執行過程,優化了它的以下問題:Deep Exploit 無法針對Windows 的445 端口進行測試,原因是靜態文件配置問題。LSTM-Exploit 優化了靜態config.ini 文件。Deep Exploit 利用的是A3C 強化學習算法,利用多線程模型提高了預測速度,但是沒有將公共訓練模型保存下來,只是保存了測試成功的數據,使得每次重新測試一個IP 時都需要重新訓練模型,并且鑒于A3C 的結果往往是局部最優解,無法完全將payload 中指定的隧道協議和操作系統值影響到整個payload 預測中。所以LSTM-Exploit 利用LSTM 考慮全局預測結果,并將LSTM 訓練好的模型保存下來,方便下一次直接預測,減少因為訓練帶來的時間損耗。

2 智能滲透

2.1 智能滲透工具簡介

滲透測試本質上是開發者和測試者之間的對抗,為了讓安全測試人員更加高效地進行滲透測試,主流滲透工具開發大多指向漏洞掃描器或惡意代碼檢測工具,缺少發現漏洞后精準定位目標環境執行惡意代碼的全自動工具,LSTM-Exploit 基于長短期記憶神經網絡LSTM,實現從漏洞發掘到惡意代碼執行這一全自動過程。

鑒于 nmap 和 metasploit 在滲透測試中的普遍搭配使用,LSTM-Exploit 選擇將兩者通過LSTM 神經網絡整合,完成端口服務到漏洞,再到測試載荷執行的滲透過程。

LSTM-Exploit 將metasploit 中內置的漏洞利用模塊作為漏洞集,對于不同的metasploit 版本通過開啟msfrpcd,開放metasploit 的rpc服務的55552 或55553 端口,作為LSTM-Exploit 和metasploit 連接通信的api。

工具將連接的rpc 端口和地址,可攻擊的服務和系統等信息保存在config.ini 文件中,方便直接引用。

前期信息搜集利用nmap 端口掃描工具,方便探測目標主機信息和開放端口等信息,通過保存nmap 掃描結果為xml 更詳細簡便的讀取掃描信息。之后讀取xml 文件信息,探測Web 端口,并對網站進行指紋驗證,得到網站所用模板或者中間件信息,將以上所有信息整合并和metasploit 交互選擇exploit。

LSTM 模型進行預測需要的訓練數據在learning 模式,同時得到exploit 映射到的 target 和 payload,利用遍歷的手段攻擊metasploitable2 和metasploitable3 兩個靶機得到。在得到成功攻擊的數據后保存為train.csv,并利用訓練數據對LSTM 模型進行訓練,將訓練完成的模型保存下來,為test 模式下進行真實滲透環境提供訓練好的LSTM 模型。

當工具在test 模式下,不需要和metasploit 交互得到payload,只需要利用搜集到的數據通過現存模型預測就可以得到payload,完成一次滲透測試后,會將測試成功的數據更新到train.csv 文件中。

2.2 LSTM 神經網絡和滲透測試

LSTM 神經網絡存在門限機制,能夠較好地記憶和遺忘數據,對于關聯性較大的數據可以充分考慮之前數據對之后數據的影響,可以利用這種特點實現對metasploit 中不同payload 進行記憶。

遺忘門:

在遺忘門中,上一層輸出狀態 payload,例 如Windows/meterpreter/reverse_http 會和本層的輸入向量進行處理遺忘掉一些特征,比如http 協議,保留下reverse 這個建立通信隧道的方式,原理如下:

將輸入向量xt和上一層的輸入狀態ht-1合并經過激活函數sigmoid(xt,ht-1)后得到門限向量ft,將ft和共享狀態Ct-1進行點積操作,實現令Ct-1遺忘掉需要被舍棄的部分上一層狀態和本層輸入。

傳入門:

在傳入層,本層的輸入會和上一層的輸入狀態payload 進行處理,記憶上一層需要記憶的內容,例如Windows/meterpreter/reverse_http就可以記住http 協議和reverse 反彈方式兩種對payload 的標注,原理如下:

將輸入向量xt和上一層的輸入狀態ht-1合并經過激活函數sigmoid(xt,ht-1)后得到新的門限向量it。輸入向量xt和上一層的輸入狀態ht-1合并經過激活函數tanh(ht-1,xt)后得到新的門限向量lt,表示需要傳入的部分上一層狀態和本層輸入。再將lt和it進行點積操作it*lt,并將結果和共享狀態Ct-1相加,表示需要傳入的信息被共享cell 狀態記憶,此時的Ct-1已經完成了本層的更新,并成為Ct,等待輸出門的輸出操作。

輸出門:

在輸出門,確認本次預測需要輸出的payload 信息,例如輸出經過記憶和遺忘操作的新payload:Windows/meterpreter/ reverse_tcp,表示遺忘了上一層的http 協議,但是記住了reverse 反彈,原理如下:

將輸入向量xt和上一層的輸入狀態ht-1合并經過激活函數sigmoid(xt,ht-1)后得到新的門限向量Ot,將更新后的Ct經過激活函數tanh(Ct)后和Ot進行點積操作tanh(Ct)*Ot,用于確認哪些信息可以被輸出,更新ht-1為ht,傳遞ht和Ct到下一層重復三個選擇層操作。

總的來說,LSTM 門限機制會記憶住payload 中必要的信息,并且在下一預測中更加偏向于這種類型的payload,成功率也就更高。因為測試的是單個目標IP,如果該測試對象可以利用某種協議和某種方式建立單個連接,那么其他類型的漏洞測試也可能適用于這種連接建立方式。

2.3 LSTM 長短期神經網絡實現

更新完訓練集文件train.csv 后,即可對神經網絡進行訓練。通過分割train.csv 文件不同列,得到訓練集數據,LSTM 層設置激活函數為relu,利用adam 算法反向傳播調整weight 和bias 值以降低損失值。LSTM-Exploit 利用tensorflow.keras 中封裝的LSTM 模型實現LSTM 長短期記憶神經網絡搭建。

利用keras 搭建單層單向LSTM 神經網絡:

3 工具的設計和實現

3.1 總體架構

工具架構如圖1 所示。工具由信息搜集,獲取模塊,執行測試三個功能組成。

圖1 工具架構圖

(1)Learning 模式下

第一步,利用nmap 掃描目標IP,并將結果導入到XML 文件中。獲取打開的Web 端口并利用爬蟲爬取網頁內容,正則匹配得到網站啟用的CMS 和服務器信息。并和XML 文件內容整合。

第二步,根據字典類型數據,向metasploit 中發送搜索exploit命令得到exploit->target->payload 信息,并根據exploit,payload的名稱和必要參數篩選匹配的exploit 和payload 數據。

第三步,向Metasploit 發送測試指令,并將測試結果返回,本地將成功的測試結果整理成訓練集并進行訓練得到LSTM 的模型。

(2)Test 模式下

前兩步和Learning 模式相同,第三步,通過Learning 模式訓練得到的LSTM 模型訓練搜集到的信息,直接得到payload,而不需要再和metasploit 通信得到所有payload,第四步,直接利用預測得到的exploit->payload 進行測試,將成功結果保存到訓練集csv 文件中,并重新訓練并保存模型,將測試成功的exploit->target->payload 映射保存到csv 文件中方便查看。

Learning 模式用于前期的模型訓練,Test 模式適用于真實滲透測試環境,并且能夠在每次訓練后更新訓練數據,提高下一次模型的預測精度。

3.2 信息搜集

產品在不同環境下需要開啟不同的端口,實現各種相互配合或者彼此獨立的功能。開放的端口可以是WEB 服務器和中間件端口,也可以是數據庫端口和隧道協議端口。針對使用相同端口的不同版本服務,可能存在未被補丁修復的已知漏洞。所以,為了發現現存漏洞,不僅需要大規模掃描端口,還需要獲取端口表示服務的banner信息,以及目標服務運行環境的主機信息。所以可以啟用metasploit 中內置的nmap 功能對目標進行信息搜集,并對搜集到的WEB 端口獲取網站信息,用來實現可能的WEB 網站測試。

信息搜集代碼為:

#獲取nmap_data

filename=nmap_front_scan(self.client,self.command,

self.timeout,self.target_ip,self.front_filename)

nmap_data=nmap_data_process(filename)

#得到nmap 中的Web 端口

Web_ports=get_Web_ports(self.target_ip,nmap_data)

#利用爬蟲爬取網站頁面

Web_target_info=run_spider(self.target_ip,Web_ports,

self.spider_concurrent_reqs,self.spider_depth_limit,

self.spider_delay_time,self.spider_item_count,

self.spider_time_out,self.spider_page_count,

self.spider_error_count,self.spider_path,

self.output_base_path,self.output_filename)

#利用指紋獲取Web 網頁信息

signature_data=Web_signature(target_port,self.target_ip,

nmap_data,self.signature_path,

self.signature_file,target_path)

#利用content 獲得Web 網頁信息

content_data=Web_content(Web_port,self.target_ip,nmap_data,

self.dirsearch_path,self.dirsearch_file)

3.3 獲取模塊

根據搜集到的信息,以product 和ostype 為參數,與metasploit進行通信執行search product 和show targets 命令,得到每個服務可以執行的exploit 集合,以及exploit 集合中每個exploit 對應的target 集合,并根據ostype 刪除不符合操作系統類型的exploit 選項,在Learning 模式和Test 模式下選擇不同方法獲取payload。

Learning 模式和metasploit 通信,根據選擇不同的exploit,獲取每個exploit 對應的payload 集合代碼如下:

#得到metasploit 中所有的exploit 和payload

exploit_list=get_exploit_list(self.client)

payload_list=get_payload_list(self.client)

#根據信息搜集結果得到exploit

nmap_to_exploit=nmap_get_exploit(self.client,self.nmap_data,

exploit_list,self.allow_os_types,self.allow_services)

#根據exploit 得到target,payload

exploits_to_payloads=exploit_to_payloads(self.client,

nmap_to_exploit,exploit_list)

#合并以上信息得到完整單項匹配數據

execute_nmap_data,new_path_index=nmap_exploit_to_payloads(

self.nmap_data,exploits_to_payloads,payload_list,

self.path_index)

Test 模式下,利用現存模型預測得到payload,代碼如下:

#信息搜集和模塊獲取

exploit_list=get_exploit_list(self.client)

payload_list=get_payload_list(self.client)

nmap_to_exploit=nmap_get_exploit(client,self.nmap_data,

exploit_list,self.allow_os_types,

self.allow_services)

exploit_to_targets=get_exploit_to_targets(self.client,

nmap_to_exploit,exploit_list)

nmap_exploit_targets,tmp_path_index=get_nmap_exploit_targets(

nmap_to_exploit,exploit_to_targets,

self.tunnel,self.path_index)

#預測payload

lstm_result=lstm_predict(nmap_exploit_targets,

self.model_path,self.model_name)

3.4 執行測試

根據已經探測好的exploit,target,payload 信息和metasploit通信得到測試模塊需要設置的options,將本地靜態文件中的配置寫入對應的options 中后和metasploit 通信測試對應端口服務,并將測試成功的結果保存到訓練集文件中。通過導入訓練集文件訓練LSTM神經網絡,更新LSTM 模型,實現每次測試后預測精度的提高。

代碼如下:

# Get the options that need to be set for each exploit and payload

exploit_options=get_options_from_etp(self.client,

self.execute_nmap_data,self.exploit_list,

self.allow_options)

# Set the obtained option to the dictionary obtained by collecting information

tmp_execute_nmap_data,tmp_path_index=set_option_to_data(self.client,self.execute_nmap_data,exploit_options,

self.path_index,self.allow_payloads,

self.payload_list)

# Perform the test and save the successful result to a csv file

success_data=start_attack(client,target_ip,

tmp_execute_nmap_data,self.path_index,

self.exploit_list,self.payload_list,self.local_ip)

success_data=success_to_train(success_data,exploit_list,

payload_list)

train_csv=save_to_csv(success_data,self.train_csv_path,

self.train_csv_filename,payload_list)

# Train module

model_file=train_new_model(train_csv,self.epochs,

self.model_path,self.model_name)

4 結束語

metasploit 企業版中存在一鍵滲透腳本 auto-pwn.rb,LSTM-Exploit 和auto-pwn.rb 腳本有著相同的功能,即能夠自動化滲透,但是auto-pwn.rb 等傳統腳本采用的是if 判斷手段來進行滲透測試,而LSTM-Exploit 采用的是LSTM 模型進行測試,能夠明顯的提升效率,并且隨著測試的增多,也會使預測的準確率得到提升。在面對不同的metasploit 版本時,只需要添加靜態端口信息就能夠實現信息加載,而不需要大量修改代碼來兼容metasploit 的漏洞集。為了和metasploit 框架通信,利用pymetasploit3 庫,能夠直接訪問metasploit內置所有數據,簡化了編寫網絡連接的過程。

但是LSTM-Exploit 也存在一些不足,此工具只能測試提前設定好的靜態服務端口,只能識別設置好的網站指紋和目錄信息,利用固定參數的漏洞載荷進行測試。在Learning 模式下,由于對metapsploit的rpc 服務訪問過多,不同漏洞利用模塊執行速度不同,容易產生并發錯誤導致服務崩潰。在實踐過程中還存在一些不便,未來還需要不斷完善。

猜你喜歡
利用信息模型
一半模型
利用min{a,b}的積分表示解決一類絕對值不等式
中等數學(2022年2期)2022-06-05 07:10:50
重要模型『一線三等角』
利用一半進行移多補少
重尾非線性自回歸模型自加權M-估計的漸近分布
利用數的分解來思考
Roommate is necessary when far away from home
訂閱信息
中華手工(2017年2期)2017-06-06 23:00:31
3D打印中的模型分割與打包
展會信息
中外會展(2014年4期)2014-11-27 07:46:46
主站蜘蛛池模板: 亚洲色图欧美视频| 女人18一级毛片免费观看| 久久亚洲日本不卡一区二区| 日本www色视频| 国产波多野结衣中文在线播放| 无码精品国产VA在线观看DVD| 欧美一区中文字幕| 成年人国产网站| 欧美97色| 亚洲欧美不卡视频| 在线中文字幕网| aa级毛片毛片免费观看久| 无码'专区第一页| 欧美色图久久| 91热爆在线| 国产欧美在线观看视频| 丰满的熟女一区二区三区l| 在线网站18禁| 国内精品伊人久久久久7777人| 看你懂的巨臀中文字幕一区二区| 五月天天天色| 国产制服丝袜91在线| 欧美成人国产| 久久精品这里只有精99品| 亚洲性视频网站| 婷婷亚洲最大| 国产精品99久久久久久董美香| 婷婷亚洲最大| 在线国产三级| 欧美精品成人| 亚洲第一成网站| 天天摸夜夜操| 亚洲av无码专区久久蜜芽| 视频在线观看一区二区| 五月激激激综合网色播免费| 免费观看无遮挡www的小视频| 国产欧美日韩专区发布| 久久久精品国产SM调教网站| 欧美综合激情| 国产91视频免费观看| 国产精品一区二区不卡的视频| 九九热视频在线免费观看| 一级做a爰片久久毛片毛片| 伊大人香蕉久久网欧美| 91香蕉国产亚洲一二三区| 国产一级二级三级毛片| 在线网站18禁| 色噜噜狠狠色综合网图区| 激情爆乳一区二区| 色综合中文字幕| 精品天海翼一区二区| 精品国产网| 午夜福利免费视频| 永久免费精品视频| 伊人激情综合| 国产极品美女在线播放| 国内精品视频| 香蕉eeww99国产在线观看| 亚洲精品人成网线在线| 精品国产一区二区三区在线观看| 日本伊人色综合网| 无码精品福利一区二区三区| 国产精品久线在线观看| 久久婷婷六月| 亚洲色图综合在线| 国产精品无码久久久久久| 国产亚洲男人的天堂在线观看 | 天堂在线视频精品| 久久国产毛片| 青青青视频免费一区二区| 在线中文字幕网| 欧美在线三级| 亚洲伦理一区二区| 99在线观看精品视频| 任我操在线视频| 亚洲 日韩 激情 无码 中出| 欧美日韩综合网| 国产欧美日韩精品综合在线| 伊人精品视频免费在线| 福利在线不卡一区| 午夜在线不卡| 久久青草免费91观看|