日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[当人工智能遇上安全] 6.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例

發(fā)布時間:2024/6/1 编程问答 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [当人工智能遇上安全] 6.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

您或許知道,作者后續(xù)分享網絡安全的文章會越來越少。但如果您想學習人工智能和安全結合的應用,您就有福利了,作者將重新打造一個《當人工智能遇上安全》系列博客,詳細介紹人工智能與安全相關的論文、實踐,并分享各種案例,涉及惡意代碼檢測、惡意請求識別、入侵檢測、對抗樣本等等。只想更好地幫助初學者,更加成體系的分享新知識。該系列文章會更加聚焦,更加學術,更加深入,也是作者的慢慢成長史。換專業(yè)確實挺難的,系統(tǒng)安全也是塊硬骨頭,但我也試試,看看自己未來四年究竟能將它學到什么程度,漫漫長征路,偏向虎山行。享受過程,一起加油~

首先,祝大家1024程序員節(jié)快樂,祝CSDN越來越好,感謝大家十年的陪伴。

隨著互聯(lián)網的繁榮,現(xiàn)階段的惡意代碼也呈現(xiàn)出快速發(fā)展的趨勢,主要表現(xiàn)為變種數(shù)量多、傳播速度快、影響范圍廣。在這樣的形勢下,傳統(tǒng)的惡意代碼檢測方法已經無法滿足人們對惡意代碼檢測的要求。比如基于簽名特征碼的惡意代碼檢測,這種方法收集已知的惡意代碼,以一種固定的方式生成特定的簽名,維護這樣的簽名庫,當有新的檢測任務時,通過在簽名庫中檢索匹配的方法進行檢測。暫且不說更新、維護簽名庫的過程需要耗費大量的人力物力,惡意代碼編寫者僅僅通過混淆、壓縮、加殼等簡單的變種方式便可繞過這樣的檢測機制。

為了應對上面的問題,基于機器學習的惡意代碼檢測方法一直是學界研究的熱點。由于機器學習算法可以挖掘輸入特征之間更深層次的聯(lián)系,更加充分地利用惡意代碼的信息,因此基于機器學習的惡意代碼檢測往往表現(xiàn)出較高的準確率,并且一定程度上可以對未知的惡意代碼實現(xiàn)自動化的分析。下面讓我們開始進行系統(tǒng)的介紹吧~

文章目錄

  • 一.KDD CUP背景知識
  • 二.數(shù)據(jù)特征描述
    • 1.TCP連接基本特征(共9種,序號1~9)
    • 2.TCP連接的內容特征(共13種,序號10~22)
    • 3.基于時間的網絡流量統(tǒng)計特征 (共9種,序號23~31)
    • 4.基于主機的網絡流量統(tǒng)計特征 (共10種,序號32~41)
    • 5.樣本分析
  • 三.Python數(shù)據(jù)處理
    • 1.KDD 99數(shù)據(jù)集評價
    • 2.字符型轉換為數(shù)值型
  • 四.KNN實現(xiàn)入侵檢測
    • 1.KNN
    • 2.算法實現(xiàn)
  • 五.入侵檢測算法優(yōu)化
    • 1.數(shù)值標準化
    • 2.數(shù)值歸一化
    • 3.KNN檢測及評估
    • 4.Github代碼分享
  • 六.總結

作者作為網絡安全的小白,分享一些自學基礎教程給大家,主要是在線筆記,希望您們喜歡。同時,更希望您能與我一起操作和進步,后續(xù)將深入學習AI安全和系統(tǒng)安全知識并分享相關實驗。總之,希望該系列文章對博友有所幫助,寫文不易,大神們不喜勿噴,謝謝!如果文章對您有幫助,將是我創(chuàng)作的最大動力,點贊、評論、私聊均可,一起加油喔!

前文推薦:

  • [當人工智能遇上安全] 1.人工智能真的安全嗎?浙大團隊外灘大會分享AI對抗樣本技術
  • [當人工智能遇上安全] 2.清華張超老師 - GreyOne: Discover Vulnerabilities with Data Flow Sensitive Fuzzing
  • [當人工智能遇上安全] 3.安全領域中的機器學習及機器學習惡意請求識別案例分享
  • [當人工智能遇上安全] 4.基于機器學習的惡意代碼檢測技術詳解
  • [當人工智能遇上安全] 5.基于機器學習算法的主機惡意代碼識別研究
  • [當人工智能遇上安全] 6.基于機器學習的入侵檢測和攻擊識別——以KDD CUP99數(shù)據(jù)集為例

作者的github資源:

  • https://github.com/eastmountyxz/AI-Security-Paper

本文將分享機器學習在安全領域的應用,并復現(xiàn)一個基于機器學習的入侵檢測和攻擊識別。嚴格意義上來說,這篇文章是數(shù)據(jù)分析,它有幾個亮點:

  • (1) 詳細介紹了數(shù)據(jù)分析預處理中字符特征轉換為數(shù)值特征、數(shù)據(jù)標準化、數(shù)據(jù)歸一化,這都是非常基礎的工作。
  • (2) 結合入侵檢測應用KNN實現(xiàn)分類。
  • (3) 繪制散點圖采用序號、最小歐式距離、類標,ROC曲線繪制都是之前沒分享的。

文章中也有很多不足之處,惡意代碼或入侵檢測作者還會繼續(xù)深入,包括源代碼、二進制分析。作者作為網絡安全的小白,分享一些自學基礎教程給大家,希望你們喜歡。同時,更希望你能與我一起操作進步,爭取能入門,后續(xù)也將深入學習網絡安全和系統(tǒng)安全知識并分享相關實驗。總之,希望該系列文章對博友有所幫助,寫文不容易,大神請飄過,不喜勿噴,謝謝!


一.KDD CUP背景知識

KDD是數(shù)據(jù)挖掘與知識發(fā)現(xiàn)(Data Mining and Knowledge Discovery)的簡稱,”KDD CUP 99 dataset”是KDD競賽在1999年舉行時采用的數(shù)據(jù)集。從官網下載KDD99數(shù)據(jù)集,如下圖所示:
http://kdd.ics.uci.edu/databases/kddcup99/kddcup99.html

This is the data set used for The Third International Knowledge Discovery and Data Mining Tools Competition, which was held in conjunction with KDD-99 The Fifth International Conference on Knowledge Discovery and Data Mining. The competition task was to build a network intrusion detector, a predictive model capable of distinguishing between bad connections, called intrusions or attacks, and good normal connections. This database contains a standard set of data to be audited, which includes a wide variety of intrusions simulated in a military network environment.

KDD Cup 1999數(shù)據(jù)集: 是KDD知識發(fā)現(xiàn)和數(shù)據(jù)挖掘會議的比賽數(shù)據(jù)集,主要為軍事網絡環(huán)境中模擬的多種入侵,是入侵檢測應用的常用數(shù)據(jù)集,后續(xù)衍生出NSL-KDD。建議讀者結合論文和官網數(shù)據(jù)集進行分析:

  • https://www.unb.ca/cic/datasets/nsl.html

數(shù)據(jù)文件包括:

kddcup.names 功能列表。 kddcup.data.gz 完整數(shù)據(jù)集(18M; 743M未壓縮) kddcup.data_10_percent.gz 10%的數(shù)據(jù)集(2.1M; 75M未壓縮) kddcup.newtestdata_10_percent_unlabeled.gz(1.4M; 45M未壓縮) kddcup.testdata.unlabeled.gz (11.2M; 430M未壓縮) kddcup.testdata.unlabeled_10_percent.gz (1.4M; 45M未壓縮) corrected.gz 正確標簽的測試數(shù)據(jù) training_attack_types 入侵類型列表 typo-correction.txt 關于數(shù)據(jù)集中的簡要說明

1998年美國國防部高級規(guī)劃署(DARPA)在MIT林肯實驗室進行了一項入侵檢測評估項目。林肯實驗室建立了模擬美國空軍局域網的一個網絡環(huán)境,收集了9周時間的TCPdump()網絡連接和系統(tǒng)審計數(shù)據(jù),仿真各種用戶類型、各種不同的網絡流量和攻擊手段,使它就像一個真實的網絡環(huán)境。這些TCPdump采集的原始數(shù)據(jù)被分為兩個部分:7周時間的訓練數(shù)據(jù),大概包含5,000,000多個網絡連接記錄,剩下的2周時間的測試數(shù)據(jù)大概包含2,000,000個網絡連接記錄。

4種異常類型分別是:

  • DOS(denial-of-service)
    拒絕服務攻擊,例如ping-of-death, syn flood, smurf等
  • R2L(unauthorized access from a remote machine to a local machine)
    來自遠程主機的未授權訪問,例如guessing password
  • U2R(unauthorized access to local superuser privileges by a local unpivileged user)
    未授權的本地超級用戶特權訪問,例如buffer overflow attacks。
  • PROBING(surveillance and probing)
    端口監(jiān)視或掃描,例如port-scan, ping-sweep等

隨后來自哥倫比亞大學的Sal Stolfo 教授和來自北卡羅萊納州立大學的 Wenke Lee 教授采用數(shù)據(jù)挖掘等技術對以上的數(shù)據(jù)集進行特征分析和數(shù)據(jù)預處理,形成了一個新的數(shù)據(jù)集。該數(shù)據(jù)集用于1999年舉行的KDD CUP競賽中,成為著名的KDD99數(shù)據(jù)集。雖然年代有些久遠,但KDD99數(shù)據(jù)集仍然是網絡入侵檢測領域的事實Benckmark,為基于計算智能的網絡入侵檢測研究奠定基礎。

數(shù)據(jù)分布如下圖所示(作者自己論文截圖):每個網絡連接被標記為正常(normal)或異常(attack),異常類型被細分為4大類共39種攻擊類型,其中22種攻擊類型出現(xiàn)在訓練集中,另有17種未知攻擊類型出現(xiàn)在測試集中。


二.數(shù)據(jù)特征描述

下載的數(shù)據(jù)集如下圖所示,這里以10%的數(shù)據(jù)集來進行實驗。

  • kddcup.data_10_percent_corrected
  • kddcup.testdata.unlabeled_10_percent

下面展現(xiàn)了其中3條記錄,總共有42項特征,最后一列是標記特征(Label),其他前41項特征共分為四大類。

  • TCP連接基本特征(共9種,序號1~9)
  • TCP連接的內容特征(共13種,序號10~22)
  • 基于時間的網絡流量統(tǒng)計特征 (共9種,序號23~31)
  • 基于主機的網絡流量統(tǒng)計特征 (共10種,序號32~41)

0,tcp,http,SF,239,486,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,8,8,0.00,0.00,0.00,0.00,1.00,0.00,0.00,19,19,1.00,0.00,0.05,0.00,0.00,0.00,0.00,0.00,normal.
0,icmp,ecr_i,SF,1032,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,511,511,0.00,0.00,0.00,0.00,1.00,0.00,0.00,255,255,1.00,0.00,1.00,0.00,0.00,0.00,0.00,0.00,smurf.
0,tcp,private,S0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,13,1.00,1.00,0.00,0.00,0.25,0.10,0.00,255,13,0.05,0.07,0.00,0.00,1.00,1.00,0.00,0.00,neptune.

數(shù)據(jù)集特征如下表所示:


接下來按順序解釋各個特征的具體含義,這是進行數(shù)據(jù)分析之前非常必要的一個環(huán)節(jié)。

1.TCP連接基本特征(共9種,序號1~9)

基本連接特征包含了一些連接的基本屬性,如連續(xù)時間,協(xié)議類型,傳送的字節(jié)數(shù)等。

  • (1) duration - 連接持續(xù)時間,以秒為單位,連續(xù)類型。范圍是 [0, 58329] 。它的定義是從TCP連接以3次握手建立算起,到FIN/ACK連接結束為止的時間;若為UDP協(xié)議類型,則將每個UDP數(shù)據(jù)包作為一條連接。數(shù)據(jù)集中出現(xiàn)大量的duration = 0 的情況,是因為該條連接的持續(xù)時間不足1秒。
  • (2) protocol_type - 協(xié)議類型,離散類型,共有3種:TCP, UDP, ICMP。
  • (3) service - 目標主機的網絡服務類型,離散類型,共有70種。’aol’, ‘auth’, ‘bgp’, ‘courier’, ‘csnet_ns’, ‘ctf’, ‘daytime’, ‘discard’, ‘domain’, ‘domain_u’, ‘echo’, ‘eco_i’, ‘ecr_i’, ‘efs’, ‘exec’, ‘finger’, ‘ftp’, ‘ftp_data’, ‘gopher’, ‘harvest’, ‘hostnames’, ‘http’, ‘http_2784′, ‘http_443′, ‘http_8001′, ‘imap4′, ‘IRC’, ‘iso_tsap’, ‘klogin’, ‘kshell’, ‘ldap’, ‘link’, ‘login’, ‘mtp’, ‘name’, ‘netbios_dgm’, ‘netbios_ns’, ‘netbios_ssn’, ‘netstat’, ‘nnsp’, ‘nntp’, ‘ntp_u’, ‘other’, ‘pm_dump’, ‘pop_2′, ‘pop_3′, ‘printer’, ‘private’, ‘red_i’, ‘remote_job’, ‘rje’, ‘shell’, ‘smtp’, ‘sql_net’, ‘ssh’, ‘sunrpc’, ‘supdup’, ‘systat’, ‘telnet’, ‘tftp_u’, ‘tim_i’, ‘time’, ‘urh_i’, ‘urp_i’, ‘uucp’, ‘uucp_path’, ‘vmnet’, ‘whois’, ‘X11′, ‘Z39_50′。
  • (4) flag - 連接正常或錯誤的狀態(tài),離散類型,共11種。’OTH’, ‘REJ’, ‘RSTO’, ‘RSTOS0′, ‘RSTR’, ‘S0′, ‘S1′, ‘S2′, ‘S3′, ‘SF’, ‘SH’。它表示該連接是否按照協(xié)議要求開始或完成。例如SF表示連接正常建立并終止;S0表示只接到了SYN請求數(shù)據(jù)包,而沒有后面的SYN/ACK。其中SF表示正常,其他10種都是error。
  • (5) src_bytes - 從源主機到目標主機的數(shù)據(jù)的字節(jié)數(shù),連續(xù)類型,范圍是 [0, 1379963888]。
  • (6) dst_bytes - 從目標主機到源主機的數(shù)據(jù)的字節(jié)數(shù),連續(xù)類型,范圍是 [0. 1309937401]。
  • (7) land - 若連接來自/送達同一個主機/端口則為1,否則為0,離散類型,0或1。
  • (8) wrong_fragment - 錯誤分段的數(shù)量,連續(xù)類型,范圍是 [0, 3]。
  • (9) urgent - 加急包的個數(shù),連續(xù)類型,范圍是[0, 14]。

2.TCP連接的內容特征(共13種,序號10~22)

第二部分特征是TCP連接的內容特征,共13種。對于U2R和R2L之類的攻擊,由于它們不像DoS攻擊那樣在數(shù)據(jù)記錄中具有頻繁序列模式,而一般都是嵌入在數(shù)據(jù)包的數(shù)據(jù)負載里面,單一的數(shù)據(jù)包和正常連接沒有什么區(qū)別。為了檢測這類攻擊,Wenke Lee等從數(shù)據(jù)內容里面抽取了部分可能反映入侵行為的內容特征,如登錄失敗的次數(shù)等。

  • (10) hot - 訪問系統(tǒng)敏感文件和目錄的次數(shù),連續(xù),范圍是 [0, 101]。例如訪問系統(tǒng)目錄,建立或執(zhí)行程序等。
  • (11) num_failed_logins - 登錄嘗試失敗的次數(shù)。連續(xù),[0, 5]。
  • (12) logged_in - 成功登錄則為1,否則為0,離散,0或1。
  • (13) num_compromised - compromised條件出現(xiàn)的次數(shù),連續(xù),[0, 7479]。
  • (14) root_shell - 若獲得root shell 則為1,否則為0,離散,0或1。root_shell是指獲得超級用戶權限。
  • (15) su_attempted - 若出現(xiàn)”su root” 命令則為1,否則為0,離散,0或1。
  • (16) num_root - root用戶訪問次數(shù),連續(xù),[0, 7468]。
  • (17) num_file_creations - 文件創(chuàng)建操作的次數(shù),連續(xù),[0, 100]。
  • (18) num_shells - 使用shell命令的次數(shù),連續(xù),[0, 5]。
  • (19) num_access_files - 訪問控制文件的次數(shù),連續(xù),[0, 9]。例如對 /etc/passwd 或 .rhosts 文件的訪問。
  • (20) num_outbound_cmds - 一個FTP會話中出站連接的次數(shù),連續(xù),0。數(shù)據(jù)集中這一特征出現(xiàn)次數(shù)為0。
  • (21) is_hot_login - 登錄是否屬于“hot”列表,是為1,否則為0,離散,0或1。例如超級用戶或管理員登錄。
  • (22) is_guest_login - 若是guest 登錄則為1,否則為0,離散,0或1。

3.基于時間的網絡流量統(tǒng)計特征 (共9種,序號23~31)

第三類特征是基于時間的網絡流量統(tǒng)計特征。包括相同目標主機和相同服務。

由于網絡攻擊事件在時間上有很強的關聯(lián)性,因此統(tǒng)計出當前連接記錄與之前一段時間內的連接記錄之間存在的某些聯(lián)系,可以更好的反映連接之間的關系。這類特征又分為兩種集合:

  • 一個是 “same host”特征,只觀察在過去兩秒內與當前連接有 相同目標主機 的連接,例如相同的連接數(shù),在這些相同連接與當前連接有相同的服務的連接等等;
  • 另一個是 “same service”特征,只觀察過去兩秒內與當前連接有 相同服務 的連接,例如這樣的連接有多少個,其中有多少出現(xiàn)SYN錯誤或者REJ錯誤。

具體翻譯內容如下:

  • (23) count - 過去兩秒內,與當前連接具有相同的目標主機的連接數(shù),連續(xù),[0, 511]。
  • (24) srv_count - 過去兩秒內,與當前連接具有相同服務的連接數(shù),連續(xù),[0, 511]。
  • (25) serror_rate - 過去兩秒內,在與當前連接具有相同目標主機的連接中,出現(xiàn)“SYN” 錯誤的連接的百分比,連續(xù),[0.00, 1.00]。
  • (26) srv_serror_rate - 過去兩秒內,在與當前連接具有相同服務的連接中,出現(xiàn)“SYN” 錯誤的連接的百分比,連續(xù),[0.00, 1.00]。
  • (27) rerror_rate - 過去兩秒內,在與當前連接具有相同目標主機的連接中,出現(xiàn)“REJ” 錯誤的連接的百分比,連續(xù),[0.00, 1.00]。
  • (28) srv_rerror_rate - 過去兩秒內,在與當前連接具有相同服務的連接中,出現(xiàn)“REJ” 錯誤的連接的百分比,連續(xù),[0.00, 1.00]。
  • (29) same_srv_rate - 過去兩秒內,在與當前連接具有相同目標主機的連接中,與當前連接具有相同服務的連接的百分比,連續(xù),[0.00, 1.00]。
  • (30) diff_srv_rate - 過去兩秒內,在與當前連接具有相同目標主機的連接中,與當前連接具有不同服務的連接的百分比,連續(xù),[0.00, 1.00]。
  • (31) srv_diff_host_rate - 過去兩秒內,在與當前連接具有相同服務的連接中,與當前連接具有不同目標主機的連接的百分比,連續(xù),[0.00, 1.00]。

注意:這一大類特征中,23、25、27、29、30這5個特征是 “same host” 特征,前提都是與當前連接具有相同目標主機的連接;24、26、28、31這4個特征是 “same service” 特征,前提都是與當前連接具有相同服務的連接。


4.基于主機的網絡流量統(tǒng)計特征 (共10種,序號32~41)

基于時間的流量統(tǒng)計只是在過去兩秒的范圍內統(tǒng)計與當前連接之間的關系,而在實際入侵中,有些 Probing攻擊使用慢速攻擊模式來掃描主機或端口,當它們掃描的頻率大于2秒的時候,基于時間的統(tǒng)計方法就無法從數(shù)據(jù)中找到關聯(lián)。所以Wenke Lee等按照目標主機進行分類,使用一個具有100個連接的時間窗,統(tǒng)計當前連接之前100個連接記錄中與當前連接具有 相同目標主機 的統(tǒng)計信息。

  • (32) dst_host_count - 前100個連接中,與當前連接具有相同目標主機的連接數(shù),連續(xù),[0, 255]。
  • (33) dst_host_srv_count - 前100個連接中,與當前連接具有相同目標主機相同服務的連接數(shù),連續(xù),[0, 255]。
  • (34) dst_host_same_srv_rate - 前100個連接中,與當前連接具有相同目標主機相同服務的連接所占的百分比,連續(xù),[0.00, 1.00]。
  • (35) dst_host_diff_srv_rate - 前100個連接中,與當前連接具有相同目標主機不同服務的連接所占的百分比,連續(xù),[0.00, 1.00]。
  • (36) dst_host_same_src_port_rate - 前100個連接中,與當前連接具有相同目標主機相同源端口的連接所占的百分比,連續(xù),[0.00, 1.00]。
  • (37) dst_host_srv_diff_host_rate - 前100個連接中,與當前連接具有相同目標主機相同服務的連接中,與當前連接具有不同源主機的連接所占的百分比,連續(xù),[0.00, 1.00]。
  • (38) dst_host_serror_rate - 前100個連接中,與當前連接具有相同目標主機的連接中,出現(xiàn)SYN錯誤的連接所占的百分比,連續(xù),[0.00, 1.00]。
  • (39) dst_host_srv_serror_rate - 前100個連接中,與當前連接具有相同目標主機相同服務的連接中,出現(xiàn)SYN錯誤的連接所占的百分比,連續(xù),[0.00, 1.00]。
  • (40) dst_host_rerror_rate - 前100個連接中,與當前連接具有相同目標主機的連接中,出現(xiàn)REJ錯誤的連接所占的百分比,連續(xù),[0.00, 1.00]。
  • (41) dst_host_srv_rerror_rate - 前100個連接中,與當前連接具有相同目標主機相同服務的連接中,出現(xiàn)REJ錯誤的連接所占的百分比,連續(xù),[0.00, 1.00]。

5.樣本分析

KDD99數(shù)據(jù)集總共由500萬條記錄構成,它還提供一個10%的訓練子集和測試子集,它的樣本類別分布如下:

  • NORMAL:正常訪問,訓練集(10%)有97278個樣本,測試集(Corrected)有60593個樣本。
  • PROBE: 端口監(jiān)視或掃描,訓練集(10%)有4107個樣本,測試集(Corrected)有4166個樣本。攻擊包括: ipsweep、 mscan、nmap、portsweep、saint、satan。
  • DOS:拒絕服務攻擊,訓練集(10%)有391458個樣本,測試集(Corrected)有229853個樣本。攻擊包括: apache2、back、land、mailbomb、neptune、pod、processtable、smurf、teardrop、udpstorm。
  • U2R:未授權的本地超級用戶特權訪問,訓練集(10%)有52個樣本,測試集(Corrected)有228個樣本。攻擊包括:buffer_overflow、httptunnel、loadmodule、perl、ps、rootkit、sqlattack、 xterm。
  • R2L:來自遠程主機的未授權訪問,訓練集(10%)有1126個樣本,測試集(Corrected)有16189個樣本。攻擊包括:ftp_write、guess_passwd、imap、multihop、named、phf、sendmail、snmpgetattack、snmpguess、spy、warezclient、warezmaster、worm、xlock、xsnoop。

具體的數(shù)據(jù)描述如下:


三.Python數(shù)據(jù)處理

1.KDD 99數(shù)據(jù)集評價

入侵檢測
入侵檢測的方法從根本上講就是設計一個分類器,能將數(shù)據(jù)流中的正常與異常數(shù)據(jù)區(qū)分出來,從而實現(xiàn)對攻擊行為的報警。本文KDD99數(shù)據(jù)集的目的就是為入侵檢測系統(tǒng)提供統(tǒng)一的性能評價基準,常用來在學術圈檢驗入侵檢測算法的好壞。本文將數(shù)據(jù)集中的10%訓練集來訓練分類器,然后用corrected測試集測試分類器性能,這個分類器可以是基于貝葉斯的、決策樹的、神經網絡的或者是支持向量機的。

特征選擇
特征選擇是KDD99數(shù)據(jù)集的另一個主要應用。KDD99數(shù)據(jù)集中,每個連接有41個特征,對于一個分類器來說,要從這么多特征中提取規(guī)則是費時且不精確的,這體現(xiàn)在一些無關或冗余的特征往往會降低分類器模型的檢測精度和速度。而且對于從原始的tcpdump數(shù)據(jù)中提取特征這一過程,也將是困難和費時的,這對于在線入侵檢測系統(tǒng)是致命的。因此去除冗余特征或不重要特征,對于提高分類器訓練速度和檢測精度來說,是必要的。要說明的是對于不同的分類器來說,最優(yōu)的特征子集可以是不同的。

數(shù)據(jù)集評價
KDD 99數(shù)據(jù)集是入侵檢測領域的Benchmark(基準),為基于計算智能的網絡入侵檢測研究奠定了基礎,從那以后很多學者開始研究入侵檢測算法,當然不能不提到眾所周知的“功夫網”,實際上它就是一個大規(guī)模的入侵檢測系統(tǒng)。KDD99從1999年創(chuàng)建已經過去多年,當年的實驗條件和攻擊手段放到今天早已過時,而且從原來的網絡層攻擊進化為針對應用層的攻擊,例如跨站腳本、數(shù)據(jù)庫注入等等(當然,針對應用層攻擊自有新的解決方案)。你可以說,要解決這個問題,重新做一遍98年那個實驗,用新的設備新的攻擊手段,產生新的數(shù)據(jù)集不就行了嗎?事實是據(jù)我所知還沒有學術組織公開新的且質量較高的數(shù)據(jù)集,安全軟件公司里肯定有足夠的數(shù)據(jù)庫,當然,人家是不會共享出來的,就靠這個賺錢。另一個解決辦法是你自己搭建網絡環(huán)境,自己做實驗,就是累點,當然可行。

所以,希望這篇基礎性文章對您有所幫助。


2.字符型轉換為數(shù)值型

在數(shù)據(jù)挖掘的過程中,數(shù)據(jù)的預處理一直都是非常重要的一個環(huán)節(jié),只有把數(shù)據(jù)轉化為分類器認可的形式才可以對其進行訓練。下面這段代碼參考CSDN asialee_bird大神的文章及Github代碼,非常厲害的一位博主,推薦大家閱讀他的文章(https://blog.csdn.net/asialee_bird)。

個人認為這段代碼最大的亮點是:
(1) 有效地將數(shù)據(jù)集中字符型轉換為數(shù)值型,這是數(shù)據(jù)集預處理常見的方法。
(2) 訓練集和測試集的類標不同,通過全局變量動態(tài)增加新類標,對未知類型的檢測是評價算法的重要指標。

#coding:utf-8 import numpy as np import pandas as pd import csv""" 功能:數(shù)據(jù)預處理 將KDD99數(shù)據(jù)集中字符型轉換為數(shù)值型 原文:https://blog.csdn.net/asialee_bird/article/details/80491256強烈推薦博友們閱讀asialee_bird大神的文章及Github代碼,非常厲害的一位博主。 修訂:Eastmount 2019-11-22 """#label_list為全局變量 global label_list #文件名 source_file='kddcup.data_10_percent_corrected' handled_file='kddcup.data_10_percent_corrected.csv'#文件寫入操作 data_file = open(handled_file,'w',newline='')#將相應的非數(shù)字類型轉換為數(shù)字標識即符號型數(shù)據(jù)轉化為數(shù)值型數(shù)據(jù) def find_index(x,y):return [i for i in range(len(y)) if y[i]==x]#定義將源文件行中3種協(xié)議類型轉換成數(shù)字標識的函數(shù) def handleProtocol(inputs):protocol_list=['tcp','udp','icmp']if inputs[1] in protocol_list:return find_index(inputs[1], protocol_list)[0]#定義將源文件行中70種網絡服務類型轉換成數(shù)字標識的函數(shù) def handleService(inputs):service_list=['aol','auth','bgp','courier','csnet_ns','ctf','daytime','discard','domain','domain_u','echo','eco_i','ecr_i','efs','exec','finger','ftp','ftp_data','gopher','harvest','hostnames','http','http_2784','http_443','http_8001','imap4','IRC','iso_tsap','klogin','kshell','ldap','link','login','mtp','name','netbios_dgm','netbios_ns','netbios_ssn','netstat','nnsp','nntp','ntp_u','other','pm_dump','pop_2','pop_3','printer','private','red_i','remote_job','rje','shell','smtp','sql_net','ssh','sunrpc','supdup','systat','telnet','tftp_u','tim_i','time','urh_i','urp_i','uucp','uucp_path','vmnet','whois','X11','Z39_50']if inputs[2] in service_list:return find_index(inputs[2],service_list)[0]#定義將源文件行中11種網絡連接狀態(tài)轉換成數(shù)字標識的函數(shù) def handleFlag(inputs):flag_list=['OTH','REJ','RSTO','RSTOS0','RSTR','S0','S1','S2','S3','SF','SH']if inputs[3] in flag_list:return find_index(inputs[3],flag_list)[0]#定義將源文件行中攻擊類型轉換成數(shù)字標識的函數(shù)(訓練集中共出現(xiàn)了22個攻擊類型,而剩下的17種只在測試集中出現(xiàn)) def handleLabel(inputs):label_list=['normal.', 'buffer_overflow.', 'loadmodule.', 'perl.', 'neptune.', 'smurf.','guess_passwd.', 'pod.', 'teardrop.', 'portsweep.', 'ipsweep.', 'land.', 'ftp_write.','back.', 'imap.', 'satan.', 'phf.', 'nmap.', 'multihop.', 'warezmaster.', 'warezclient.','spy.', 'rootkit.']#在函數(shù)內部使用全局變量并修改它global label_list if inputs[41] in label_list:return find_index(inputs[41],label_list)[0]else:label_list.append(inputs[41])return find_index(inputs[41],label_list)[0]#主函數(shù) if __name__=='__main__':#循環(huán)讀取文件數(shù)據(jù)with open(source_file,'r') as data_source:csv_reader = csv.reader(data_source)csv_writer = csv.writer(data_file)count = 0 #行數(shù)for row in csv_reader:temp_line=np.array(row) temp_line[1] = handleProtocol(row) #將源文件行中3種協(xié)議類型轉換成數(shù)字標識temp_line[2] = handleService(row) #將源文件行中70種網絡服務類型轉換成數(shù)字標識temp_line[3] = handleFlag(row) #將源文件行中11種網絡連接狀態(tài)轉換成數(shù)字標識temp_line[41] = handleLabel(row) #將源文件行中23種攻擊類型轉換成數(shù)字標識csv_writer.writerow(temp_line)count += 1#輸出每行數(shù)據(jù)中所修改后的狀態(tài)#print(count,'status:',temp_line[1],temp_line[2],temp_line[3],temp_line[41])data_file.close()

處理后的結果如下圖所示:

0,2,12,9,520,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,457,457,0.00,0.00,0.00,0.00,1.00,0.00,0.00,255,255,1.00,0.00,1.00,0.00,0.00,0.00,0.00,0.00,5
0,0,21,9,428,7512,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,7,18,0.00,0.00,0.00,0.00,1.00,0.00,0.11,255,255,1.00,0.00,0.00,0.00,0.00,0.00,0.00,0.00,0


四.KNN實現(xiàn)入侵檢測

這里通過KNN算法實現(xiàn)一個最簡單的入侵檢測。

1.KNN

K最近鄰(K-Nearest Neighbor,簡稱KNN)分類算法是數(shù)據(jù)挖掘分類技術中最簡單常用的方法之一。所謂K最近鄰,就是尋找K個最近的鄰居的意思,每個樣本都可以用它最接近的K個鄰居來代表。本小節(jié)主要講解KNN分類算法的基礎知識及分析實例。

KNN分類算法是最近鄰算法,字面意思就是尋找最近鄰居,由Cover和Hart在1968年提出,簡單直觀易于實現(xiàn)。下面通過一個經典的例子來講解如何尋找鄰居,選取多少個鄰居。下圖是非常經典的KNN案例,需要判斷右邊這個動物是鴨子、雞還是鵝?它涉及到了KNN算法的核心思想,判斷與這個樣本點相似的類別,再預測其所屬類別。由于它走路和叫聲像一只鴨子,所以右邊的動物很可能是一只鴨子。

所以,KNN分類算法的核心思想是從訓練樣本中尋找所有訓練樣本X中與測試樣本距離(歐氏距離)最近的前K個樣本(作為相似度),再選擇與待分類樣本距離最小的K個樣本作為X的K個最鄰近,并檢測這K個樣本大部分屬于哪一類樣本,則認為這個測試樣本類別屬于這一類樣本。假設現(xiàn)在需要判斷下圖中的圓形圖案屬于三角形還是正方形類別,采用KNN算法分析如下:

1.當K=3時,圖中第一個圈包含了三個圖形,其中三角形2個,正方形一個,該圓的則分類結果為三角形。
2.當K=5時,第二個圈中包含了5個圖形,三角形2個,正方形3個,則以3:2的投票結果預測圓為正方形類標。

總之,設置不同的K值,可能預測得到不同的結果。

KNeighborsClassifier可以設置3種算法:brute、kd_tree、ball_tree,設置K值參數(shù)為n_neighbors=3。
調用方法如下:

from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3, algorithm=“ball_tree”)

它也包括兩個方法:

  • 訓練:nbrs.fit(data, target)
  • 預測:pre = clf.predict(data)

2.算法實現(xiàn)

接下來開始進行KNN算法分類分析,其中KNN核心算法主要步驟包括五步:

  • 加載數(shù)據(jù)集
  • 劃分數(shù)據(jù)集
  • KNN訓練
  • 評價算法
  • 降維可視化
# -*- coding: utf-8 -*- import os import csv import numpy as np import pandas as pd from sklearn import metrics import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap from sklearn.model_selection import train_test_split from sklearn.decomposition import PCA from sklearn import neighbors#-----------------------------------------第一步 加載數(shù)據(jù)集----------------------------------------- fr= open("kddcup.data_10_percent_corrected.csv") lines = fr.readlines() line_nums = len(lines) print(line_nums)#創(chuàng)建line_nums行 para_num列的矩陣 x_mat = np.zeros((line_nums, 41)) y_label = []#劃分數(shù)據(jù)集 for i in range(line_nums):line = lines[i].strip()item_mat = line.split(',')x_mat[i, :] = item_mat[0:41] #前41個特征y_label.append(item_mat[-1]) #類標 fr.close() print x_mat.shape print len(y_label)#-----------------------------------------第二步 劃分數(shù)據(jù)集----------------------------------------- y = [] for n in y_label: y.append(int(n)) y = np.array(y, dtype = int) #list轉換數(shù)組#劃分數(shù)據(jù)集 測試集40% train_data, test_data, train_target, test_target = train_test_split(x_mat, y, test_size=0.4, random_state=42) print train_data.shape, train_target.shape print test_data.shape, test_target.shape#-----------------------------------------第三步 KNN訓練----------------------------------------- clf = neighbors.KNeighborsClassifier() clf.fit(train_data, train_target) print clf result = clf.predict(test_data) print result print test_target#-----------------------------------------第四步 評價算法----------------------------------------- print sum(result==test_target) #預測結果與真實結果比對 print(metrics.classification_report(test_target, result)) #準確率 召回率 F值#----------------------------------------第五步 降維可視化--------------------------------------- pca = PCA(n_components=2) newData = pca.fit_transform(test_data) plt.figure() plt.scatter(newData[:,0], newData[:,1], c=test_target, s=50) plt.show()

上面代碼非常簡單,其輸出結果如下圖所示。但也存在幾個缺點:

  • 數(shù)據(jù)集 kddcup.data_10_percent_corrected.csv 隨機劃分為訓練集和測試集,而真實的是用某個數(shù)據(jù)集訓練,另一個數(shù)據(jù)集預測,并且測試集中存在未知的攻擊。
  • 該代碼沒有考慮數(shù)據(jù)歸一化、數(shù)據(jù)標準化處理,而該數(shù)據(jù)集數(shù)值集中分布幾個值,這會影響最終實驗結果。
  • 該實驗的評價應該計算ROC、AUC曲線,推薦這篇文章:機器學習分類算法常用評價指標
494021 (494021L, 41L) 494021 (296412L, 41L) (296412L,) (197609L, 41L) (197609L,) KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',metric_params=None, n_jobs=None, n_neighbors=5, p=2,weights='uniform') [5 5 5 ... 5 4 5] [5 5 5 ... 5 4 5] 197299precision recall f1-score support0 1.00 1.00 1.00 389771 0.88 0.50 0.64 142 0.00 0.00 0.00 23 0.00 0.00 0.00 24 1.00 1.00 1.00 427975 1.00 1.00 1.00 1123646 0.92 0.96 0.94 237 0.94 1.00 0.97 938 0.98 1.00 0.99 3989 0.94 0.87 0.91 43410 0.91 0.97 0.94 49711 1.00 0.75 0.86 812 0.00 0.00 0.00 213 1.00 0.99 1.00 87914 1.00 0.50 0.67 415 0.98 0.89 0.93 60216 1.00 1.00 1.00 117 0.75 0.49 0.60 8518 0.00 0.00 0.00 219 0.86 0.86 0.86 720 0.96 0.98 0.97 41522 0.00 0.00 0.00 3micro avg 1.00 1.00 1.00 197609macro avg 0.73 0.67 0.69 197609 weighted avg 1.00 1.00 1.00 197609

數(shù)據(jù)高度重疊,所以接下來我們對KNN算法進行優(yōu)化。


五.入侵檢測算法優(yōu)化

1.數(shù)值標準化

數(shù)據(jù)標準化是機器學習、數(shù)據(jù)挖掘中常用的一種方法。
數(shù)據(jù)標準化主要是應對特征向量中數(shù)據(jù)很分散的情況,防止小數(shù)據(jù)被大數(shù)據(jù)(絕對值)吞并的情況。另外,數(shù)據(jù)標準化也有加速訓練,防止梯度爆炸的作用。下面是從李宏毅教授視頻中截下來的兩張圖,左圖表示未經過數(shù)據(jù)標準化處理的loss更新函數(shù),右圖表示經過數(shù)據(jù)標準化后的loss更新圖。可見經過標準化后的數(shù)據(jù)更容易迭代到最優(yōu)點,而且收斂更快。

在聚類\分類算法中,使用計算距離的方法對數(shù)據(jù)進行聚類\分類,而連接記錄的固定特征屬性中有兩種類型的數(shù)值——離散型和連續(xù)型。對于連續(xù)型特征屬性,各屬性的度量方法不一樣。一般而言,所用的度量單位越小,變量可能的值域就越大,這樣對聚類結果的影響也越大,即在計算數(shù)據(jù)間距離時對聚類的影響越大,甚至會出現(xiàn)“大數(shù)”吃“小數(shù)”的現(xiàn)象。

因此為了避免對度量單位選擇的依賴,消除由于屬性度量的差異對聚類\分類產生的影響,需要對屬性值進行標準化。對于離散型特征屬性本文中并不作標準化處理,而是放在聚類算法中計算距離時處理。所以數(shù)據(jù)標準化是針對連續(xù)型特征屬性的。

設訓練數(shù)據(jù)集有n條網絡連接記錄,每個記錄中有22個連續(xù)型屬性向量記作 Xij(1≤i≤n,11≤j≤41) 。對 Xij 數(shù)據(jù)預處理分為兩步:數(shù)值標準化和數(shù)值歸一化。


Z-score標準化:
基于數(shù)據(jù)均值和方差的標準化化方法。標準化后的數(shù)據(jù)是均值為0,方差為1的正態(tài)分布。這種方法要求原始數(shù)據(jù)的分布可以近似為高斯分布,否則效果會很差。標準化公式如下,

x′=x?meanstdx' = \frac{x-mean}{std} x=stdx?mean?

核心代碼為:

#Z-score normaliaztion def ZscoreNormalization(x):x = (x - np.mean(x)) / np.std(x)return x

針對該數(shù)據(jù)集,通過標注化處理連續(xù)型特征,具體公式如下:

xij′=xij?AVGjSTDjx'_{ij} = \frac{x_{ij}-AVG_j}{STD_j} xij?=STDj?xij??AVGj??

AVGi=1n(X1j+X2j+...+Xnj)AVG_i = \frac{1}{n}(X_{1j}+X_{2j}+...+X_{nj}) AVGi?=n1?(X1j?+X2j?+...+Xnj?)

STDi=1n(∣X1j?AVGj∣+∣X2j?AVGj∣+...+∣Xnj?AVGj∣)STD_i = \frac{1}{n}(|X_{1j}-AVG_j|+|X_{2j}-AVG_j|+...+|X_{nj}-AVG_j|) STDi?=n1?(X1j??AVGj?+X2j??AVGj?+...+Xnj??AVGj?)

其中,AVG為平均值,STAD為平均絕對偏差,如果AVG等于0,則X’=0;如果STD等于0,則X’=0。

核心代碼如下所示,這里建議讀者直接使用我的數(shù)據(jù)集或測試數(shù)據(jù)集測試,否則花費巨大時間。

注意:將np.mean和np.std以及后面的np.max、np.min計算提出來賦值變量,否則會非常耗時。之前速度慢的原因就是這個細節(jié)沒有注意,大家寫代碼一定要避免不必要的運算,尤其是多層循環(huán)計算過程中,盡量寫優(yōu)美的代碼!

#coding:utf-8 import numpy as np import pandas as pd import csv#全局變量 global x_mat#數(shù)據(jù)標準化 def ZscoreNormalization(x, n):meanValue = np.mean(x)stdValue = np.std(x)print(len(x))i = 0while i<len(x):x_mat[i][n] = (x[i] - meanValue) / stdValueif x_mat[i][n]>0:print(x_mat[i][n])i = i + 1print("The ", n , "feature is normal.")#-------------------------------------讀取文件劃分數(shù)據(jù)集----------------------------------------- fr = open("test-normal.csv") data_file = open("test-normal-result.csv",'wb+',newline='') lines = fr.readlines() line_nums = len(lines) print(line_nums)#創(chuàng)建line_nums行 para_num列的矩陣 x_mat = np.zeros((line_nums, 42))#劃分數(shù)據(jù)集 for i in range(line_nums):line = lines[i].strip()item_mat = line.split(',')x_mat[i, :] = item_mat[0:42] #獲取42個特征 fr.close() print(x_mat.shape)#--------------------------------獲取某列特征并依次標準化并賦值----------------------------- print(len(x_mat[:, 0])) #獲取某列數(shù)據(jù) 494021 print(len(x_mat[0, :])) #獲取某行數(shù)據(jù) 42#標準化處理 ZscoreNormalization(x_mat[:, 0], 0) #duration ZscoreNormalization(x_mat[:, 4], 4) #src_bytes ZscoreNormalization(x_mat[:, 5], 5) #dst_bytes ZscoreNormalization(x_mat[:, 7], 7) #wrong_fragment ZscoreNormalization(x_mat[:, 8], 8) #urgentZscoreNormalization(x_mat[:, 9], 9) #hot ZscoreNormalization(x_mat[:, 10], 10) #num_failed_logins ZscoreNormalization(x_mat[:, 12], 12) #num_compromised ZscoreNormalization(x_mat[:, 14], 14) #su_attempte ZscoreNormalization(x_mat[:, 15], 15) #num_root ZscoreNormalization(x_mat[:, 16], 16) #num_file_creations ZscoreNormalization(x_mat[:, 17], 17) #num_shells ZscoreNormalization(x_mat[:, 18], 18) #num_access_files ZscoreNormalization(x_mat[:, 19], 19) #num_outbound_cmdsZscoreNormalization(x_mat[:, 22], 22) #count ZscoreNormalization(x_mat[:, 23], 23) #srv_count ZscoreNormalization(x_mat[:, 24], 24) #serror_rate ZscoreNormalization(x_mat[:, 25], 25) #srv_serror_rate ZscoreNormalization(x_mat[:, 26], 26) #rerror_rate ZscoreNormalization(x_mat[:, 27], 27) #srv_rerror_rate ZscoreNormalization(x_mat[:, 28], 28) #same_srv_rate ZscoreNormalization(x_mat[:, 29], 29) #diff_srv_rate ZscoreNormalization(x_mat[:, 30], 30) #srv_diff_host_rateZscoreNormalization(x_mat[:, 31], 31) #dst_host_count ZscoreNormalization(x_mat[:, 32], 32) #dst_host_srv_count ZscoreNormalization(x_mat[:, 33], 33) #dst_host_same_srv_rate ZscoreNormalization(x_mat[:, 34], 34) #dst_host_diff_srv_rate ZscoreNormalization(x_mat[:, 35], 35) #dst_host_same_src_port_rate ZscoreNormalization(x_mat[:, 36], 36) #dst_host_srv_diff_host_rate ZscoreNormalization(x_mat[:, 37], 37) #dst_host_serror_rate ZscoreNormalization(x_mat[:, 38], 38) #dst_host_srv_serror_rate ZscoreNormalization(x_mat[:, 39], 39) #dst_host_rerror_rate ZscoreNormalization(x_mat[:, 40], 40) #dst_host_srv_rerror_rate#文件寫入操作 csv_writer = csv.writer(data_file) i = 0 while i<len(x_mat[:, 0]):csv_writer.writerow(x_mat[i, :])i = i + 1 data_file.close()

標準化之前的數(shù)據(jù)顯示如下圖所示:

0,1,47,9,105,146,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0.00,0.00,0.00,0.00,1.00,0.00,0.00,255,254,1.00,0.01,0.00,0.00,0.00,0.00,0.00,0.00,0

經常處理后的數(shù)據(jù)如下所示:

-0.024411893497851576,1.0,47.0,9.0,-0.030455897580918892,-0.030455897580918892,0.0,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,0.0,-0.030455897580918892,0.0,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,0.0,0.0,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,-0.030455897580918892,0


2.數(shù)值歸一化

數(shù)據(jù)標準化(歸一化)處理是數(shù)據(jù)挖掘的一項基礎工作,不同評價指標往往具有不同的量綱和量綱單位,這樣的情況會影響到數(shù)據(jù)分析的結果,為了消除指標之間的量綱影響,需要進行數(shù)據(jù)標準化處理,以解決數(shù)據(jù)指標之間的可比性。原始數(shù)據(jù)經過數(shù)據(jù)標準化處理后,各指標處于同一數(shù)量級,適合進行綜合對比評價。以下是常用的歸一化方法:

min-max標準化(Min-Max Normalization)
也稱為離差標準化,是對原始數(shù)據(jù)的線性變換,使結果值映射到[0 , 1]之間。轉換函數(shù)如下:

x′=x?minmax?minx' = \frac{x-min}{max-min} x=max?minx?min?

其中max為樣本數(shù)據(jù)的最大值,min為樣本數(shù)據(jù)的最小值。這種方法有個缺陷就是當有新數(shù)據(jù)加入時,可能導致max和min的變化,需要重新定義。min-max標準化python代碼如下:

import numpy as nparr = np.asarray([0, 10, 50, 80, 100]) for x in arr:x = float(x - np.min(arr))/(np.max(arr)- np.min(arr))print x # output # 0.0 # 0.1 # 0.5 # 0.8 # 1.0

歸一化核心代碼如下所示:

#coding:utf-8 import numpy as np import pandas as pd import csv#全局變量 global x_mat#數(shù)據(jù)歸一化 def MinmaxNormalization(x, n):minValue = np.min(x)maxValue = np.max(x)print(minValue, maxValue)print(len(x))i = 0while i<len(x):x_mat[i][n] = (x[i] - minValue) / (maxValue - minValue)#if x_mat[i][n]>0:# print(x_mat[i][n])i = i + 1print("The ", n , "feature is normal.")#-------------------------------------讀取文件劃分數(shù)據(jù)集----------------------------------------- fr = open("test-normal-result.csv") data_file = open("test-normal-result-minmax.csv",'wb+',newline='') lines = fr.readlines() line_nums = len(lines) print(line_nums)#創(chuàng)建line_nums行 para_num列的矩陣 x_mat = np.zeros((line_nums, 42))#劃分數(shù)據(jù)集 for i in range(line_nums):line = lines[i].strip()item_mat = line.split(',')x_mat[i, :] = item_mat[0:42] #獲取42個特征 fr.close() print(x_mat.shape)#--------------------------------獲取某列特征并依次標準化并賦值----------------------------- print(len(x_mat[:, 0])) #獲取某列數(shù)據(jù) 494021 print(len(x_mat[0, :])) #獲取某行數(shù)據(jù) 42#歸一化處理 MinmaxNormalization(x_mat[:, 0], 0) #duration MinmaxNormalization(x_mat[:, 4], 4) #src_bytes MinmaxNormalization(x_mat[:, 5], 5) #dst_bytes MinmaxNormalization(x_mat[:, 7], 7) #wrong_fragment MinmaxNormalization(x_mat[:, 8], 8) #urgentMinmaxNormalization(x_mat[:, 9], 9) #hot MinmaxNormalization(x_mat[:, 10], 10) #num_failed_logins MinmaxNormalization(x_mat[:, 12], 12) #num_compromised MinmaxNormalization(x_mat[:, 14], 14) #su_attempte MinmaxNormalization(x_mat[:, 15], 15) #num_root MinmaxNormalization(x_mat[:, 16], 16) #num_file_creations MinmaxNormalization(x_mat[:, 17], 17) #num_shells MinmaxNormalization(x_mat[:, 18], 18) #num_access_files MinmaxNormalization(x_mat[:, 19], 19) #num_outbound_cmdsMinmaxNormalization(x_mat[:, 22], 22) #count MinmaxNormalization(x_mat[:, 23], 23) #srv_count MinmaxNormalization(x_mat[:, 24], 24) #serror_rate MinmaxNormalization(x_mat[:, 25], 25) #srv_serror_rate MinmaxNormalization(x_mat[:, 26], 26) #rerror_rate MinmaxNormalization(x_mat[:, 27], 27) #srv_rerror_rate MinmaxNormalization(x_mat[:, 28], 28) #same_srv_rate MinmaxNormalization(x_mat[:, 29], 29) #diff_srv_rate MinmaxNormalization(x_mat[:, 30], 30) #srv_diff_host_rateMinmaxNormalization(x_mat[:, 31], 31) #dst_host_count MinmaxNormalization(x_mat[:, 32], 32) #dst_host_srv_count MinmaxNormalization(x_mat[:, 33], 33) #dst_host_same_srv_rate MinmaxNormalization(x_mat[:, 34], 34) #dst_host_diff_srv_rate MinmaxNormalization(x_mat[:, 35], 35) #dst_host_same_src_port_rate MinmaxNormalization(x_mat[:, 36], 36) #dst_host_srv_diff_host_rate MinmaxNormalization(x_mat[:, 37], 37) #dst_host_serror_rate MinmaxNormalization(x_mat[:, 38], 38) #dst_host_srv_serror_rate MinmaxNormalization(x_mat[:, 39], 39) #dst_host_rerror_rate MinmaxNormalization(x_mat[:, 40], 40) #dst_host_srv_rerror_rate#文件寫入操作 csv_writer = csv.writer(data_file) i = 0 while i<len(x_mat[:, 0]):csv_writer.writerow(x_mat[i, :])i = i + 1 data_file.close()

輸出結果如下圖所示:

5.1346198410647435e-05,1.0,47.0,9.0,5.1346198410647435e-05,5.1346198410647435e-05,0.0,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,0.0,5.1346198410647435e-05,0.0,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,0.0,0.0,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,5.1346198410647435e-05,0


3.KNN檢測及評估

最后代碼如下所示,主要包括以下功能:

  • 針對上面標準化和歸一化處理后的數(shù)據(jù)集,進行KNN算法分類
  • 采用歐式距離計算,并繪制散點分布圖(序列號、最小歐式距離、類標)
  • ROC曲線評估

但實驗效果非常不理想,不知道什么具體原因,哎,心累~博友們使用的時候幫忙檢測下前面的標準化和歸一化代碼是否正確。

# -*- coding: utf-8 -*- import os import csv import numpy as np from sklearn.svm import SVC from sklearn import metrics import matplotlib.pyplot as plt from matplotlib.colors import ListedColormap from sklearn.model_selection import train_test_split from sklearn.decomposition import PCA from sklearn import neighbors#-----------------------------------------第一步 加載數(shù)據(jù)集----------------------------------------- fr= open("kddcup.data_10_yxz-result-minmax.csv") lines = fr.readlines() line_nums = len(lines) print(line_nums)#創(chuàng)建line_nums行 para_num列的矩陣 x_mat = np.zeros((line_nums, 31)) y_label = []#劃分數(shù)據(jù)集 for i in range(line_nums):line = lines[i].strip()item_mat = line.split(',')x_mat[i, :] = item_mat[0:31] #前41個特征y_label.append(item_mat[-1]) #類標 fr.close() print(x_mat.shape) print(len(y_label))#-----------------------------------------第二步 劃分數(shù)據(jù)集----------------------------------------- y = [] for n in y_label: y.append(int(float(n))) y = np.array(y, dtype = int) #list轉換數(shù)組#劃分數(shù)據(jù)集 測試集40% train_data, test_data, train_target, test_target = train_test_split(x_mat, y, test_size=0.4, random_state=42) print(train_data.shape, train_target.shape) print(test_data.shape, test_target.shape)#-----------------------------------------第三步 KNN訓練----------------------------------------- def classify(input_vct, data_set):data_set_size = data_set.shape[0]#擴充input_vct到與data_set同型并相減diff_mat = np.tile(input_vct, (data_set_size, 1)) - data_set sq_diff_mat = diff_mat**2 #矩陣中每個元素都平方distance = sq_diff_mat.sum(axis=1)**0.5 #每行相加求和并開平方根return distance.min(axis=0) #返回最小距離test_size = len(test_target) result = np.zeros((test_size, 3)) for i in range(test_size):#序號 最小歐氏距離 測試集數(shù)據(jù)類別result[i] = i + 1, classify(test_data[i], train_data), test_target[i] #矩陣轉置 result = np.transpose(result) #-----------------------------------------第四步 評價及可視化----------------------------------------- def roc(data_set):normal = 0data_set_size = data_set.shape[1]roc_rate = np.zeros((2, data_set_size)) #輸出ROC曲線 二維矩陣#計算正常請求數(shù)量for i in range(data_set_size):if data_set[2][i] == 1:normal += 1abnormal = data_set_size - normalmax_dis = data_set[1].max() #歐式距離最大值for j in range(1000):threshold = max_dis / 1000 * jnormal1 = 0abnormal1 = 0for k in range(data_set_size):if data_set[1][k] > threshold and data_set[2][k] == 1:normal1 += 1if data_set[1][k] > threshold and data_set[2][k] != 1:abnormal1 += 1roc_rate[0][j] = normal1 / normal # 閾值以上正常點/全體正常的點roc_rate[1][j] = abnormal1 / abnormal # 閾值以上異常點/全體異常點return roc_rate#圖1 散點圖 #橫軸為序號 縱軸為最小歐氏距離 #點中心顏色根據(jù)測試集數(shù)據(jù)類別而定 點外圍無顏色 點大小為最小1 灰度為最大1 plt.figure(1) plt.scatter(result[0], result[1], c=result[2], edgecolors='None', s=2, alpha=1)#圖2 ROC曲線 #橫軸誤報率:即閾值以上正常點/全體正常的點 #縱軸檢測率:即閾值以上異常點/全體異常點 roc_rate = roc(result) plt.figure(2) plt.scatter(roc_rate[0], roc_rate[1], edgecolors='None', s=1, alpha=1) plt.show()

4.Github代碼分享

最后提供Github的代碼,希望對讀者有所幫助,參考龔炎大神的文章和代碼。
https://blog.gongyan.me/2017/04/kdd-cup99/
https://github.com/gongyanc/kddcup99

運行結果如下圖所示,本篇文章所有資源參考我的Github。

橫坐標序號,縱坐標最小歐式距離,散點顏色類標(正常、攻擊)。

ROC曲線:

# coding=utf-8 from __future__ import division import numpy as np import matplotlib.pyplot as pltdef classify(input_vct, data_set):data_set_size = data_set.shape[0]diff_mat = np.tile(input_vct, (data_set_size, 1)) - data_set #擴充input_vct到與data_set同型并相減sq_diff_mat = diff_mat**2 #矩陣中每個元素都平方distance = sq_diff_mat.sum(axis=1)**0.5 #每行相加求和并開平方根return distance.min(axis=0) #返回最小距離def file2mat(test_filename, para_num):"""將表格存入矩陣,test_filename為表格路徑,para_num為存入矩陣的列數(shù)返回目標矩陣,和矩陣每一行數(shù)據(jù)的類別"""fr = open(test_filename)lines = fr.readlines()line_nums = len(lines)result_mat = np.zeros((line_nums, para_num)) #創(chuàng)建line_nums行 para_num列的矩陣class_label = []for i in range(line_nums):line = lines[i].strip()item_mat = line.split(',')result_mat[i, :] = item_mat[0: para_num]class_label.append(item_mat[-1]) #表格中最后一列正常1異常2的分類存入class_labelfr.close()return result_mat, class_labeldef roc(data_set):normal = 0data_set_size = data_set.shape[1]roc_rate = np.zeros((2, data_set_size))for i in range(data_set_size):if data_set[2][i] == 1:normal += 1abnormal = data_set_size - normalmax_dis = data_set[1].max()for j in range(1000):threshold = max_dis / 1000 * jnormal1 = 0abnormal1 = 0for k in range(data_set_size):if data_set[1][k] > threshold and data_set[2][k] == 1:normal1 += 1if data_set[1][k] > threshold and data_set[2][k] == 2:abnormal1 += 1roc_rate[0][j] = normal1 / normal #閾值以上正常點/全體正常的點roc_rate[1][j] = abnormal1 / abnormal #閾值以上異常點/全體異常點return roc_ratedef test(training_filename, test_filename):training_mat, training_label = file2mat(training_filename, 32)test_mat, test_label = file2mat(test_filename, 32)test_size = test_mat.shape[0]result = np.zeros((test_size, 3))for i in range(test_size):result[i] = i + 1, classify(test_mat[i], training_mat), test_label[i] # 序號 最小歐氏距離 測試集數(shù)據(jù)類別result = np.transpose(result) #矩陣轉置plt.figure(1)plt.scatter(result[0], result[1], c=result[2], edgecolors='None', s=1, alpha=1)# 圖1 散點圖:橫軸為序號,縱軸為最小歐氏距離,點中心顏色根據(jù)測試集數(shù)據(jù)類別而定, 點外圍無顏色,點大小為最小1,灰度為最大1roc_rate = roc(result)plt.figure(2)plt.scatter(roc_rate[0], roc_rate[1], edgecolors='None', s=1, alpha=1)# 圖2 ROC曲線:橫軸誤報率,即閾值以上正常點/全體正常的點;縱軸檢測率,即閾值以上異常點/全體異常點plt.show()if __name__ == "__main__":test('training.csv', 'test.csv')

六.總結

寫到這里,這篇基于機器學習的入侵檢測和攻擊識別分享完畢。嚴格意義上來說,這篇文章是數(shù)據(jù)分析,它有幾個亮點:

  • (1) 詳細介紹了數(shù)據(jù)分析預處理中字符特征轉換為數(shù)值特征、數(shù)據(jù)標準化、數(shù)據(jù)歸一化,這都是非常基礎的工作。
  • (2) 結合入侵檢測應用KNN實現(xiàn)分類。
  • (3) 繪制散點圖采用序號、最小歐式距離、類標,ROC曲線繪制都是之前沒分享的。
  • (4) 惡意代碼或入侵檢測,后續(xù)作者還會深入,包括源代碼、二進制分析。

這篇文章中也有幾個不足之處:

  • (1) 最后的實驗效果非常不理想,但本文的整體思路是值得學習的,推薦各位從我的Github下載學習。
  • (2) 后續(xù)作者嘗試結合深度學習、圖像識別來進行惡意代碼分析。
  • (3) 作者剛剛學習安全領域,還非常菜,還有太多要學習的知識,但會一直努力的。

總之,希望基礎性文章對您有所幫助,如果文章中有錯誤或不足之處,還請?zhí)岢龊秃:?#xff0c;希望與您共同進步。天行健,君子以自強不息。地勢坤,君子以厚德載物。祝大家1024程序員節(jié)快樂,祝CSDN越來越好。

(By:Eastmount 2021-10-24 周末寫于武大 早上11點 http://blog.csdn.net/eastmount/ )


該篇文章參考了以下文獻,非常推薦大家閱讀這些大牛的文章:

  • [1] 機器學習在安全攻防場景的應用與分析 - 騰訊云FreeBuf官方
  • [2] 用機器學習玩轉惡意URL檢測 - 騰訊云FreeBuf官方
  • [3] https://github.com/exp-db/AI-Driven-WAF
  • [4] https://github.com/eastmountyxz
  • [5] 張思思, 左信, 劉建偉. 深度學習中的對抗樣本問題[J]. 計算機學報,2019(8).
  • [6] KDD CUP 99數(shù)據(jù)集
  • [7] KDD CUP99數(shù)據(jù)集預處理(Python實現(xiàn)) CSDN Asia-Lee大神
  • [8] The 1998 Lincoln Laboratory IDS Evaluation A Critique. by John McHugh
  • [9] Testing Intrusion Detection Systems: A Critique of the 1998 and 1999 DARPA Intrusion Detection System Evaluations as Performed by Lincoln Laboratory. by John McHugh
  • [10] The Comparison of IP Networks. by ST Brugger
  • [11] KDD Cup ’99 dataset (Network Intrusion) considered harmful. by ST Brugger
  • [12] https://github.com/gongyanc/kddcup99
  • [13] https://blog.gongyan.me/2017/04/kdd-cup99/
  • [14] Python3實現(xiàn)常用數(shù)據(jù)標準化方法 - z小白

總結

以上是生活随笔為你收集整理的[当人工智能遇上安全] 6.基于机器学习的入侵检测和攻击识别——以KDD CUP99数据集为例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久久免费在线观看 | 色综合小说 | 免费观看9x视频网站在线观看 | 午夜丁香视频在线观看 | 亚洲五月花 | 亚洲国产欧美在线人成大黄瓜 | 不卡电影免费在线播放一区 | 免费在线观看不卡av | 久久免费毛片 | 国产正在播放 | 国产高清久久 | 丰满少妇在线观看网站 | 国产成人精品在线 | 免费久久精品视频 | 69久久久 | 日韩一级片大全 | 精品资源在线 | 国产日韩欧美在线免费观看 | 亚洲免费av在线播放 | 国产日韩精品一区二区三区在线 | 色婷婷在线观看视频 | 超碰在线官网 | 在线观看视频黄色 | 国产综合福利在线 | 福利一区二区 | 国产精品激情在线观看 | 人人澡人人添人人爽一区二区 | www亚洲精品 | 国产特级毛片aaaaaa毛片 | 天天射日 | 热久久精品在线 | 99热在线精品观看 | 欧美精品黑人性xxxx | 久久精品一区八戒影视 | 日韩欧美在线中文字幕 | 国产午夜精品免费一区二区三区视频 | 九九精品久久 | 天天色综合1 | 国产精品久久电影观看 | 久草在线这里只有精品 | 亚洲二级片 | 狠狠干网址 | 狠狠干干 | 国产精品一区电影 | 91久久人澡人人添人人爽欧美 | 夜夜夜影院 | 91av在线视频免费观看 | 欧美乱熟臀69xxxxxx | 五月天综合网站 | 开心激情五月网 | 美女精品在线观看 | 人人干天天射 | 免费看三级网站 | 国产午夜三级一区二区三 | 国产亚洲在 | 狠狠色噜噜狠狠狠合久 | 色综合久久久久综合99 | 日韩三级在线 | 精品你懂的 | 久碰视频在线观看 | 日日夜夜网 | 天天插综合网 | 天天插天天 | 91专区在线观看 | 国内一级片在线观看 | 美女福利视频在线 | 99久久夜色精品国产亚洲96 | 九九九九热精品免费视频点播观看 | 粉嫩av一区二区三区四区在线观看 | 99热国产精品 | 麻豆久久久久 | 91超碰免费在线 | 亚洲区精品 | 久久国产一二区 | 亚洲国产精品va在线看黑人 | 亚洲精品网站 | 欧美一级乱黄 | 18国产精品福利片久久婷 | 国产精品久久久免费 | 天天天天射 | 在线成人高清电影 | 国产欧美在线一区二区三区 | 中文字幕av在线不卡 | 国产日韩一区在线 | 在线视频日韩欧美 | 久久精品一 | 国产xxxx| 中文字幕国产 | 午夜电影久久 | 国产在线精品福利 | 国产精品视频免费看 | 国产精品永久免费在线 | 激情久久一区二区三区 | 亚洲日本欧美 | 国产中文字幕在线观看 | 国产精品久久久区三区天天噜 | 91九色porn在线资源 | 91成人免费看片 | 激情九九 | 青青河边草免费直播 | 一区在线免费观看 | 香蕉久久久久久av成人 | 五月天亚洲婷婷 | 在线欧美小视频 | 国产一级视频在线观看 | 久草在线免费在线观看 | 久久高清 | 一区在线观看 | 91av综合 | 免费人成在线观看网站 | 中文字幕欧美三区 | 91精品久久久久久粉嫩 | 午夜精品一区二区三区免费 | 亚洲黄a | 正在播放国产精品 | 玖玖精品在线 | 日韩精品视频在线观看网址 | 蜜臀久久99精品久久久酒店新书 | 在线 你懂 | 国产探花视频在线播放 | 97精品在线 | 黄色片毛片 | 国产精品久久久久久一区二区三区 | 久久久久久久久久久成人 | 国产亚洲视频在线免费观看 | 久草久热 | 亚洲人久久久 | 国产中文在线播放 | 在线观看日韩精品视频 | 天天天射| 国模一区二区三区四区 | 日本爱爱免费 | 欧美日韩在线观看一区二区 | 欧美九九九 | av大全免费在线观看 | 中文字幕成人在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产色视频网站2 | 日韩网站一区二区 | 中文字幕电影高清在线观看 | 国内揄拍国产精品 | 亚洲 精品在线视频 | 少妇bbr搡bbb搡bbb | 色噜噜在线观看视频 | 五月激情姐姐 | 国产精品你懂的在线观看 | 国产五码一区 | 欧美精品久久久久久久久免 | 色综合久久88色综合天天 | 久久伊人五月天 | 亚洲作爱视频 | 亚洲精品久久久久久久蜜桃 | 黄色影院在线播放 | 欧美午夜精品久久久久 | 国产一区二区久久精品 | 精品亚洲一区二区三区 | 黄在线免费观看 | 欧美日韩综合在线观看 | 久久99精品久久只有精品 | 国产精品丝袜 | 久久五月婷婷丁香社区 | 国产一级一片免费播放放 | 日韩在线视| 亚洲国产中文字幕在线观看 | 特级黄色片免费看 | 国产综合91 | 91视频传媒| 国产黄影院色大全免费 | 热久久免费国产视频 | 日韩激情久久 | 国产999精品久久久久久绿帽 | 激情久久小说 | 久久不卡国产精品一区二区 | 国产视频精选在线 | 国产视频 亚洲视频 | 日韩欧美91 | 免费观看性生活大片 | 碰碰影院| 一区二区三区久久 | 国产一区二区三区久久久 | 国产精品久久久久永久免费 | 免费观看黄色12片一级视频 | 最新精品国产 | 久久久国产一区二区三区四区小说 | 国产亚洲综合精品 | 999久久国产 | 国产一区二区三区高清播放 | 在线亚洲高清视频 | 亚洲精品国产精品国自产观看 | 婷婷激情网站 | 精品国产aⅴ一区二区三区 在线直播av | 国产视频2021| 午夜精品福利一区二区三区蜜桃 | 在线视频日韩精品 | 一区二区三区 亚洲 | 97天堂| 久久精品国产亚洲精品 | 黄色大片入口 | 天天射天天 | 99久久日韩精品视频免费在线观看 | 成人av教育 | 国产精品黑丝在线观看 | 中文字幕免费高清在线观看 | 奇米影视999 | 亚洲一级片在线观看 | 国产精品丝袜在线 | 激情在线免费视频 | 99久久精品国产一区二区成人 | 免费观看av| 五月天激情婷婷 | 欧美日韩国产精品一区二区亚洲 | 国产不卡精品视频 | 黄色成人影视 | 丁香高清视频在线看看 | 黄色大片免费网站 | 日韩欧美v| 亚洲自拍av在线 | 美女av电影| 91精品国产自产91精品 | 国产日产欧美在线观看 | 国产资源在线免费观看 | 日韩欧美视频在线观看免费 | 能在线看的av | 中日韩男男gay无套 日韩精品一区二区三区高清免费 | 69欧美视频 | 国产三级av在线 | 久久婷婷亚洲 | 日本爱爱免费视频 | 久久久国产精品久久久 | 国产高清中文字幕 | 成人免费一区二区三区在线观看 | 久久精品伊人 | av中文字幕免费在线观看 | 51久久成人国产精品麻豆 | 观看免费av | 青青草华人在线视频 | 亚洲视频在线观看免费 | 日韩精品一区二区在线观看视频 | 欧美精品久久久久久久久久丰满 | 伊人天天色 | 国产精品免费成人 | 国产在线a视频 | 成人免费观看完整版电影 | 91女子私密保健养生少妇 | 欧美一区二区三区特黄 | 亚洲专区在线视频 | 中日韩在线 | 国产在线免费 | 天天插日日插 | 欧美色插| 国产精品久久一卡二卡 | 国产精品麻豆视频 | 中文字幕第一页av | 在线中文字幕网站 | 欧美一二区在线 | 亚洲精品国产高清 | 国产黄色精品在线 | 国产精品美女久久久久久久网站 | 成人黄色电影在线观看 | 又黄又刺激又爽的视频 | 亚洲精品婷婷 | 国内精品毛片 | 久久久久电影网站 | 免费在线一区二区 | 欧洲视频一区 | 久久久久久久久久免费 | 亚洲,国产成人av | 日韩视频精品在线 | 国产美女精彩久久 | 色吊丝在线永久观看最新版本 | 欧美日韩国语 | 91九色国产蝌蚪 | 日日日爽爽爽 | 国产一级二级av | 一区二区三区动漫 | 五月天av在线 | 久久国语露脸国产精品电影 | 在线看91| 国产精品自产拍在线观看中文 | 亚洲少妇xxxx | 国产精品一区久久久久 | 96精品在线 | 欧美日韩大片在线观看 | 国产成人精品一区二区三区福利 | 日韩中文字幕在线不卡 | 超碰99人人 | 久久综合九色 | 婷婷av网站 | 精品xxx| 国产爽妇网 | 国产高清视频在线观看 | 免费在线观看污 | 久久精品中文视频 | 成人黄色电影在线观看 | 中文字幕国内精品 | 久草视频在线新免费 | 国产精品手机播放 | 在线观看aa | 91在线亚洲 | 69av视频在线观看 | 国产资源在线视频 | 狠狠操导航 | 久久精品屋 | 超碰在线个人 | 亚洲一级影院 | 国产精品99久久久久久武松影视 | 精品一区 在线 | 国产精品福利小视频 | 国产理论一区二区三区 | 精品视频www| 久久久久久久久久电影 | 亚洲精品美女久久久久 | 超碰97国产在线 | 狠狠色伊人亚洲综合网站野外 | 日韩精品首页 | 黄色三级网站在线观看 | 国产资源免费在线观看 | 精品一二三四视频 | 高清一区二区三区 | 日韩激情久久 | 伊人天堂网 | 久久久精品影视 | 久久精品最新 | 久久人人爽人人爽人人片av免费 | 美女国产 | 欧美va电影 | 成人午夜精品久久久久久久3d | 亚洲婷婷免费 | 美女国产网站 | 天天色棕合合合合合合 | 97人人超碰在线 | 中文字幕美女免费在线 | 欧美国产在线看 | 视频一区久久 | 天天操天天操 | 中文亚洲欧美日韩 | 国产麻豆成人传媒免费观看 | 日韩理论电影在线观看 | 国产色秀视频 | 99r在线播放 | 美女精品网站 | 97视频免费| 在线观看日本高清mv视频 | 在线观看亚洲专区 | 9999激情| 91亚洲国产成人久久精品网站 | 高清国产午夜精品久久久久久 | av电影免费 | 99国产成+人+综合+亚洲 欧美 | 国产午夜一区 | 久久av免费 | 麻豆久久一区二区 | 狠狠狠色丁香婷婷综合久久五月 | 香蕉视频在线观看免费 | 亚洲国产欧美在线人成大黄瓜 | 99视频在线免费观看 | 午夜久久久精品 | 九九久久久久99精品 | 婷婷亚洲五月色综合 | 激情五月婷婷丁香 | 99在线观看免费视频精品观看 | 91av官网 | 亚洲三级精品 | 日本公乱妇视频 | 久久爱www.| 在线观看视频你懂得 | 91亚洲精品国产 | 中文av在线播放 | 97在线观看免费观看高清 | 波多野结衣综合网 | 国产成人在线观看 | 久久九九国产视频 | 精品成人在线 | 欧美性做爰猛烈叫床潮 | 丁香婷婷在线 | 综合婷婷丁香 | 黄色一级动作片 | 亚洲一区二区观看 | 久久久久久毛片精品免费不卡 | 天天综合网~永久入口 | 日韩精品一区二区三区外面 | 久草在线视频网站 | 久久精品影视 | 国产精品丝袜在线 | 欧美91在线 | 欧美日韩在线观看视频 | 国产色婷婷精品综合在线手机播放 | 国产精品大尺度 | 日韩在线视频观看免费 | 亚洲在线看 | 麻豆91网站 | 亚洲.www | 97超碰人人爱 | 欧美巨大荫蒂茸毛毛人妖 | 亚洲jizzjizz日本少妇 | 夜夜躁狠狠躁日日躁 | 成人黄色av网站 | 国产精品11 | 一区在线观看视频 | 国产免费视频在线 | 女人高潮特级毛片 | 久久99在线视频 | 超碰人人草 | 一级片视频免费观看 | 免费观看的av | 911国产精品 | 日日弄天天弄美女bbbb | 99re亚洲国产精品 | 国产不卡在线视频 | 午夜视频久久久 | 免费在线观看亚洲视频 | 97精品国产91久久久久久 | 日韩三级不卡 | 亚洲一区二区观看 | 日批视频在线 | 狠狠干成人 | 天天色欧美 | 久久综合婷婷 | 精品电影一区 | 天天综合成人网 | 亚洲综合丁香 | 69视频国产| 夜夜夜夜爽 | 白丝av免费观看 | 手机av资源 | 久久久久久久久久免费视频 | 一二三区视频在线 | 日韩中文字幕第一页 | 天天狠狠| 99久久婷婷国产综合精品 | 欧美一级片 | 亚洲性xxxx| 亚洲精品婷婷 | 久热国产视频 | 国产精品视频app | 中文字幕成人一区 | 久久免费片 | 婷婷免费在线视频 | 日韩欧美国产免费播放 | 国产一级视频在线 | 久久久这里有精品 | 波多野结衣电影一区二区 | 欧美电影黄色 | 欧美日韩高清不卡 | 日韩欧美综合精品 | 国产成视频在线观看 | 亚洲精品自在在线观看 | 夜夜看av| 一级α片 | 美女视频黄免费 | 黄色在线免费观看网址 | 亚洲国产大片 | 在线观看深夜视频 | 色天天久久 | 亚洲精品视频一二三 | 精品电影一区二区 | 免费看片在线观看 | 国产在线观看地址 | 久久免费公开视频 | 亚洲精品美女在线观看 | 视频一区视频二区在线观看 | 精品一区二区三区久久 | 一级α片免费看 | 精品美女久久久久 | 美女视频一区二区 | 免费观看性生活大片 | 国产精品高清在线 | 99色在线观看视频 | 久久视频国产 | 精品毛片久久久久久 | 丁香六月婷婷开心婷婷网 | 亚洲视频资源在线 | 国内精品久久久久久久久久久久 | 国产1区在线观看 | 国产一级电影免费观看 | 精品国产123 | 亚洲japanese制服美女 | 日韩黄色免费电影 | www.国产毛片 | 五月天激情视频在线观看 | 在线草 | 亚洲va欧美va人人爽 | 99久久精品国产亚洲 | 一区二区三区日韩在线 | 日韩在线观看精品 | 欧美 日韩 性 | 国产精品国产精品 | 国产一级h| 国产亚洲精品久久久久久电影 | 久久黄页| 亚洲特级片 | 国产免费一区二区三区网站免费 | 在线色吧 | 亚洲一区二区91 | 欧美精品久久久久久久久久丰满 | 国产免费av一区二区三区 | 天天综合色天天综合 | 视频国产一区二区三区 | av一区在线播放 | 99超碰在线播放 | 在线观看亚洲电影 | 精品免费久久 | 久久久久久综合网天天 | 成人a级网站 | 免费看污片 | 777视频在线观看 | 97在线观| 伊人五月天婷婷 | 五月婷婷综合久久 | 久久久精品亚洲 | 99免费在线视频观看 | 九九久久精品 | 欧美综合色| 国产精品久久久久久久久久不蜜月 | 国产电影一区二区三区四区 | 国产精品人成电影在线观看 | 亚洲一区欧美精品 | 欧美日韩大片在线观看 | 免费高清看电视网站 | 午夜123 | 亚洲成人资源网 | 欧美-第1页-屁屁影院 | 亚洲精品1234区 | 伊人色综合久久天天网 | 九九久久久久久久久激情 | 国产精品9999久久久久仙踪林 | 日本黄区免费视频观看 | 国产美女久久 | 日本久久免费视频 | 色婷婷狠狠操 | 成人免费看片98欧美 | 黄色免费网站 | 热久精品 | 亚洲精品久久激情国产片 | 99国产精品视频免费观看一公开 | 中文字幕在线成人 | 免费观看91视频大全 | 中文字幕在线网 | 精品一区电影国产 | 亚洲天天综合 | 亚洲精品视频中文字幕 | 麻豆视频免费在线播放 | 亚洲免费观看视频 | 国产一区二区不卡视频 | 六月丁香色婷婷 | 手机av资源| 97在线超碰 | 在线观看视频日韩 | 最新av在线网站 | 五月天激情视频 | 国产黄色片一级 | 激情视频91 | 日日干天天操 | 狠狠干夜夜爱 | 五月天视频网站 | 制服丝袜一区二区 | 中文字幕一区二区三区在线观看 | 精品一二三区视频 | 午夜精品一区二区三区在线 | 国产精品黄色影片导航在线观看 | 成人影视免费看 | 波多在线视频 | 中文在线a在线 | 69视频网站 | 久久亚洲专区 | 久久久久久久久电影 | 久久久这里有精品 | 九九九在线 | 天天草天天摸 | 69视频在线 | 国产亚洲免费观看 | 久久国产网 | 国产精品手机在线观看 | 嫩小bbbb摸bbb摸bbb | 99视频免费播放 | 久久久久综合视频 | 久久视频在线观看中文字幕 | www.操.com| 怡春院av | 超碰人人干人人 | 国产亚洲久一区二区 | 999精品 | 韩国av一区二区 | 亚洲五月综合 | 五月婷婷av在线 | 4hu视频| 色婷婷综合久久久 | 国产美女网站在线观看 | 国际av在线 | 久操中文字幕在线观看 | 99婷婷| 99视频网站| 97精品国产97久久久久久久久久久久 | 亚洲精品国产精品99久久 | 97爱| 日韩精品一二三 | 亚洲精品国产成人av在线 | 日韩精品免费专区 | 高潮毛片无遮挡高清免费 | 国产成人精品在线观看 | 亚洲精品无 | 99免费观看视频 | 日日夜夜操操操操 | 成人黄大片视频在线观看 | 亚洲 欧美 综合 在线 精品 | 国产福利一区二区在线 | 激情深爱| 黄色av高清 | 天堂av最新网址 | 久久综合九色欧美综合狠狠 | 日本xxxxav| 成人午夜精品福利免费 | 中文字幕日本特黄aa毛片 | 日韩| 日本女人逼 | 久章操 | 久久一精品 | 久久久黄色 | 国产精品久久艹 | 亚洲精区二区三区四区麻豆 | 色天堂在线视频 | 国产亚洲欧美在线视频 | 天堂成人在线 | 91男人影院 | 天天爱天天插 | 国产精品视频久久久 | 国产拍揄自揄精品视频麻豆 | 久久精品一区二区三区视频 | 国色天香第二季 | 日韩免费一二三区 | 高清不卡毛片 | 国产一区二区三区高清播放 | 91av中文| 欧洲精品视频一区 | 曰韩精品 | 精品国产乱码 | 久久人人爽视频 | 日韩大片在线 | 国产免费一区二区三区最新 | 一区二区三区影院 | 亚洲人久久久 | 亚洲视频在线看 | 麻豆极品| 在线日本v二区不卡 | 在线午夜av | 草久久久久 | 懂色av一区二区三区蜜臀 | 国产高清av在线播放 | 国产中文字幕一区二区 | 亚洲高清91 | 99国产精品 | 91视频亚洲 | 亚洲涩涩色 | 久久久久久高潮国产精品视 | 91九色网址| 夜夜嗨av色一区二区不卡 | 91九色国产在线 | 天天爽天天射 | 日韩网站一区 | 国产欧美三级 | 成人禁用看黄a在线 | 久久精品视频18 | av一二三区 | 97理论电影 | 久久久91精品国产一区二区精品 | 婷婷色婷婷 | 色视频网站在线观看一=区 a视频免费在线观看 | 欧美性极品xxxx做受 | 99在线观看免费视频精品观看 | 人人澡人人干 | 久青草影院 | 亚洲精品久久久久久久不卡四虎 | 色综合亚洲精品激情狠狠 | 久久久久亚洲精品国产 | 伊人久久电影网 | 日日麻批40分钟视频免费观看 | 国产小视频在线 | 国产精品18久久久久久久 | 欧美精品国产综合久久 | 最近中文字幕高清字幕在线视频 | 黄色精品久久久 | 国产高清免费观看 | 伊人五月天av| 999久久久久久久久久久 | 亚洲精品乱码久久 | 日韩激情精品 | 国产精品一区二区62 | 在线电影 一区 | 免费看一级 | 99久久日韩精品免费热麻豆美女 | 国产91九色视频 | 欧美91av | 亚洲精品乱码久久久久久按摩 | 亚洲不卡av一区二区三区 | 欧美色综合天天久久综合精品 | 激情亚洲综合在线 | 黄色视屏av | 色狠狠综合 | 国产电影一区二区三区四区 | 欧美做受高潮 | 黄色成年片| 日韩高清黄色 | 婷婷开心久久网 | 干干日日 | 欧美人操人 | 欧美精品久久久久久久久免 | 天天躁日日躁狠狠躁av中文 | 亚洲一二三区精品 | 精品国产乱码久久久久久浪潮 | 日韩欧美xxx | 一级黄色电影网站 | 亚洲黄网址 | 99精品免费久久久久久久久 | 国产糖心vlog在线观看 | 一区二区三区日韩视频在线观看 | 国产手机视频在线观看 | 五月天六月色 | 婷婷久久丁香 | 久久精品视频中文字幕 | 久久久久久久18 | 91av视频在线播放 | 91一区二区在线 | www.777奇米| 人人狠狠综合久久亚洲婷 | 日韩av一区二区在线播放 | 九九视频网 | 日韩超碰在线 | 999成人国产 | 久久国产精品99久久久久久进口 | 日本少妇久久久 | 有码中文字幕 | 免费网址你懂的 | 天天爽夜夜爽人人爽曰av | 韩国精品福利一区二区三区 | 不卡的av电影 | 99精品久久99久久久久 | 91丨九色丨高潮丰满 | 97在线精品视频 | 亚洲日b视频 | 日本3级在线观看 | 99re久久精品国产 | 午夜精品一区二区三区免费视频 | 国产精品视频免费在线观看 | 国产最新精品视频 | 日日夜夜免费精品 | 成人在线免费av | 精品久久久久久久久久久久 | 午夜精品成人一区二区三区 | 99在线精品免费视频九九视 | 国产丝袜一区二区三区 | 亚洲日本黄色 | 99久久日韩精品视频免费在线观看 | 91香蕉视频污在线 | 亚洲黄污 | 亚洲永久精品在线观看 | 狠狠狠干狠狠 | 丁香 久久 综合 | 中文字幕一区二区三区四区久久 | 中文字幕一二 | 欧美另类激情 | 国产精品一区欧美 | 欧美淫aaa免费观看 日韩激情免费视频 | 在线免费高清一区二区三区 | 一区二区三区高清在线 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 伊人国产在线播放 | 97色se | 色婷婷久久一区二区 | 天天干天天干天天操 | 国产黄色片一级三级 | 欧美日韩国产伦理 | 亚洲欧美视频在线播放 | 91中文字幕网 | 国内精品在线一区 | 久久久久中文 | 精品一二三区视频 | 国产大片免费久久 | 久久久久久视频 | 在线观看日本高清mv视频 | 激情五月网站 | 韩国av一区二区三区在线观看 | 91色偷偷 | 精品久久久久久久久久久久久久久久 | 九九精品视频在线 | 日韩成片| 国产精品久久久久久久99 | 九九99靖品 | 色精品视频 | 欧美一区在线看 | 国产一级视频在线 | www.eeuss影院av撸 | 一区二区三区日韩视频在线观看 | 色噜噜狠狠色综合中国 | 97av.com| 久久人人爽人人人人片 | 黄色影院在线免费观看 | 亚洲国产精品传媒在线观看 | 日日操日日 | 天堂在线视频免费观看 | 国产一级免费在线 | 国产亚洲精品日韩在线tv黄 | 久久国产电影院 | 亚洲电影一区二区 | 日韩精品高清视频 | 五月婷婷导航 | 精品国产一区二区三区久久久蜜臀 | 日韩com | 久久美女精品 | 波多野结衣最新 | 激情一区二区三区欧美 | 最近最新mv字幕免费观看 | 欧美地下肉体性派对 | 西西4444www大胆视频 | 亚洲黄色免费在线 | 久久国产精品区 | 久久久精品国产免费观看同学 | 久久久久综合精品福利啪啪 | 中文字幕在线专区 | 在线免费黄色av | 日韩在线观看av | 亚洲一片黄| 国产在线观看免费观看 | 91免费网站在线观看 | 亚洲精品久久久久久久蜜桃 | 亚洲成av人电影 | 国模精品在线 | 最近高清中文字幕 | 日韩av在线资源 | 亚洲第一久久久 | 日韩欧美精品在线 | 91.精品高清在线观看 | 欧美国产精品久久久久久免费 | 天天操狠狠操网站 | 成人av在线网| 免费视频97 | 青青草在久久免费久久免费 | 亚洲精品国偷拍自产在线观看蜜桃 | 久久久久亚洲精品 | 国产精品福利av | 超碰97在线资源 | 天天摸天天舔 | 手机av永久免费 | 久久99国产精品久久 | 婷婷在线色 | 欧美激情视频在线观看免费 | 国产在线a视频 | 在线观看播放av | 91在线看 | 欧美日韩国产精品一区二区三区 | 91视频电影 | 久久深夜| 性色av免费观看 | 久草久草在线观看 | 亚洲毛片视频 | 亚洲黄色av网址 | 字幕网在线观看 | 四虎最新域名 | 中文字幕传媒 | 免费热情视频 | www.夜色321.com | 91麻豆精品国产91久久久久久久久 | 狠狠操狠狠操 | 亚洲精品一区二区三区新线路 | 手机在线日韩视频 | 91福利视频网站 | 91麻豆精品国产 | 麻豆精品视频在线 | 99热.com| 国产视频色 | 毛片视频电影 | 激情五月开心 | 国产精品久久久久一区二区三区共 | 国产自产高清不卡 | 日本精品在线视频 | a色视频| 久草91视频| 欧美日韩一区二区三区在线观看视频 | 天天射网| 91大神精品视频 | 亚洲国产精品99久久久久久久久 | 久久99偷拍视频 | 激情五月亚洲 | 亚洲女同ⅹxx女同tv | 久久精彩免费视频 | 亚洲精品视频偷拍 | 成人h视频 | 亚洲黄污 | 丁香久久婷婷 | 免费h在线观看 | 国产成人精品999在线观看 | 日韩免费在线观看 | 青青久草在线 | 天天综合色天天综合 | 久久精品美女 | 狠狠干在线| 99久久婷婷国产精品综合 | 欧美小视频在线观看 | 国产69久久精品成人看 | 亚洲精品成人 | 91九色精品国产 | 99久久久久免费精品国产 | 极品嫩模被强到高潮呻吟91 | 99久久99久久精品国产片 | 麻豆传媒一区二区 | www国产亚洲精品 | 午夜美女网站 | 亚洲激情在线 | 麻豆免费观看视频 | 三级黄色免费片 | 日日草天天干 | 精品9999 | 日韩在线观看影院 | 99中文字幕| 日日夜夜精品视频天天综合网 | 欧美日韩国产网站 | 亚洲成人av电影在线 | 亚洲国产精品久久久久婷婷884 | 视频二区 | 免费色视频网址 | 在线观看亚洲视频 | 久久 精品一区 | 免费看的黄网站 | 日韩激情网 | 精品久久久久久电影 | 日韩小视频 | 久久精品国产亚洲精品2020 | 亚洲欧美日韩精品久久久 | 欧美日韩视频观看 | 久久在线视频在线 | 国产亚洲精品久久久久久大师 | www.久草视频| 国产69精品久久99的直播节目 | 超碰在线中文字幕 | 啪啪免费视频网站 | 四虎影视国产精品免费久久 | 激情偷乱人伦小说视频在线观看 | 五月婷综合 | 亚洲精品xxx | 久久久国产一区二区三区 | 狠狠色丁香久久婷婷综合五月 | 一区二区三区视频网站 | av电影不卡 | 婷婷久操 | 久久精品电影网 | 日本狠狠干 | 日韩小视频| av不卡网站 | 狠狠干我| 丁香九月婷婷 | 精品一区二区av | 黄色免费国产 | 爱情影院aqdy鲁丝片二区 | 亚洲永久国产精品 | 国产高清第一页 | a√资源在线 | 日韩网站在线 | 国产日产欧美在线观看 | 亚洲精品乱码久久久久久蜜桃欧美 | 午夜av不卡 | 国偷自产中文字幕亚洲手机在线 | 免费视频 你懂的 | 99超碰在线观看 | 国产一区在线精品 | 在线看片中文字幕 | 国产午夜精品在线 | 片网站 | av中文字幕在线播放 | 在线观看一级视频 | 91在线免费播放 | 亚洲天天草 | 久久久不卡影院 | 精品人人人人 | 69视频国产| 精品久久91 | 九九99| 黄色视屏av | 国产高清免费在线观看 | 久久久天天操 | 国产黄色片免费观看 | 极品美女被弄高潮视频网站 | 亚洲精品视频播放 | 久久99精品久久久久久 | 日韩色中色 | www.香蕉视频| 中文字幕日韩免费视频 | 99精品在线观看视频 | 天天夜操 | 波多野结衣在线中文字幕 | 免费欧美高清视频 | 亚洲热久久 | www.亚洲精品 | 狠狠干天天色 | 国产精品视频不卡 | 97精品国自产拍在线观看 | 久久久久国产精品视频 | 五月天久久久 | av大片免费在线观看 | 骄小bbw搡bbbb揉bbbb |