成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python工具分析風(fēng)險(xiǎn)數(shù)據(jù)

Berwin / 991人閱讀

摘要:小安分析的數(shù)據(jù)主要是用戶使用代理訪問(wèn)日志記錄信息,要分析的原始數(shù)據(jù)以的形式存儲(chǔ)。下面小安帶小伙伴們一起來(lái)管窺管窺這些數(shù)據(jù)。在此小安一定一定要告訴你,小安每次做數(shù)據(jù)分析時(shí)必定使用的方法方法。

隨著網(wǎng)絡(luò)安全信息數(shù)據(jù)大規(guī)模的增長(zhǎng),應(yīng)用數(shù)據(jù)分析技術(shù)進(jìn)行網(wǎng)絡(luò)安全分析成為業(yè)界研究熱點(diǎn),小安在這次小講堂中帶大家用Python工具對(duì)風(fēng)險(xiǎn)數(shù)據(jù)作簡(jiǎn)單分析,主要是分析蜜罐日志數(shù)據(jù),來(lái)看看一般大家都使用代理ip干了一些啥事。

大家可能會(huì)問(wèn)啥是蜜罐,網(wǎng)上一些黑客或技術(shù)人員經(jīng)常做一些"事情"的時(shí)候,需要隱藏自己身份,這樣他們會(huì)使用代理IP來(lái)辦事。而蜜罐(Honeypot)是一種新型的主動(dòng)防御的安全技術(shù),它是一個(gè)專門為了被攻擊或入侵而設(shè)置的欺騙系統(tǒng)——既可以用于保護(hù)產(chǎn)品系統(tǒng),又可用于搜集黑客信息,是一種配置靈活、形式多樣的網(wǎng)絡(luò)安全技術(shù)。

說(shuō)得通俗一點(diǎn)就是提供大量代理IP,引誘一些不法分子來(lái)使用代理這些代理ip,從而搜集他們的信息。

數(shù)據(jù)分析工具介紹

工欲善其事,必先利其器,在此小安向大家介紹一些Python數(shù)據(jù)分析的“神兵利器“。

Python中著名的數(shù)據(jù)分析庫(kù)Panda

Pandas庫(kù)是基于NumPy 的一種工具,該工具是為了解決數(shù)據(jù)分析任務(wù)而創(chuàng)建,也是圍繞著 Series 和 DataFrame 兩個(gè)核心數(shù)據(jù)結(jié)構(gòu)展開的,其中Series 和 DataFrame 分別對(duì)應(yīng)于一維的序列和二維的表結(jié)構(gòu)。

Pandas提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。這個(gè)庫(kù)優(yōu)點(diǎn)很多,簡(jiǎn)單易用,接口抽象得非常好,而且文檔支持實(shí)在感人。你很快就會(huì)發(fā)現(xiàn),它是使Python成為強(qiáng)大而高效的數(shù)據(jù)分析環(huán)境的重要因素之一。

數(shù)據(jù)可視化采用Python上最常用的Matplotlib庫(kù)

Matplotlib是一個(gè)Python的圖形框架,也是Python最著名的繪圖庫(kù),它提供了一整套和Matlab相似的命令A(yù)PI,十分適合交互式地進(jìn)行制圖。

我們有了這些“神兵利器“在手,下面將帶大家用Python這些工具對(duì)蜜罐代理數(shù)據(jù)作一個(gè)走馬觀花式的分析介紹。

1.引入工具–加載數(shù)據(jù)分析包

啟動(dòng)IPython notebook,加載運(yùn)行環(huán)境:

%matplotlib inline
import pandas as pd
from datetime import timedelta, datetime
import matplotlib.pyplot as plt
import numpy as np
2.數(shù)據(jù)準(zhǔn)備

俗話說(shuō): 巧婦難為無(wú)米之炊。小安分析的數(shù)據(jù)主要是用戶使用代理IP訪問(wèn)日志記錄信息,要分析的原始數(shù)據(jù)以CSV的形式存儲(chǔ)。這里首先要介紹到pandas.read_csv這個(gè)常用的方法,它將數(shù)據(jù)讀入DataFrame。

analysis_data = pd.read_csv("./honeypot_data.csv") 

對(duì)的, 一行代碼就可以將全部數(shù)據(jù)讀到一個(gè)二維的表結(jié)構(gòu)DataFrame變量,感覺(jué)很簡(jiǎn)單有木有?。。?!當(dāng)然了用Pandas提供的IO工具你也可以將大文件分塊讀取,再此小安測(cè)試了一下性能,完整加載約21530000萬(wàn)條數(shù)據(jù)也大概只需要90秒左右,性能還是相當(dāng)不錯(cuò)。

3.數(shù)據(jù)管窺

一般來(lái)講,分析數(shù)據(jù)之前我們首先要對(duì)數(shù)據(jù)有一個(gè)大體上的了解,比如數(shù)據(jù)總量有多少,數(shù)據(jù)有哪些變量,數(shù)據(jù)變量的分布情況,數(shù)據(jù)重復(fù)情況,數(shù)據(jù)缺失情況,數(shù)據(jù)中異常值初步觀測(cè)等等。下面小安帶小伙伴們一起來(lái)管窺管窺這些數(shù)據(jù)。

使用shape方法查看數(shù)據(jù)行數(shù)及列數(shù)

analysis_data.shape
Out: (21524530, 22) #這是有22個(gè)維度,共計(jì)21524530條數(shù)據(jù)記的DataFrame

使用head()方法默認(rèn)查看前5行數(shù)據(jù),另外還有tail()方法是默認(rèn)查看后5行,當(dāng)然可以輸入?yún)?shù)來(lái)查看自定義行數(shù)

analysis_data.head(10) 

這里可以了解到我們數(shù)據(jù)記錄有用戶使用代理IP日期,代理header信息,代理訪問(wèn)域名,代理方法,源ip以及蜜罐節(jié)點(diǎn)信息等等。在此小安一定一定要告訴你,小安每次做數(shù)據(jù)分析時(shí)必定使用的方法–describe方法。pandas的describe()函數(shù)能對(duì)數(shù)據(jù)進(jìn)行快速統(tǒng)計(jì)匯總:

對(duì)于數(shù)值類型數(shù)據(jù),它會(huì)計(jì)算出每個(gè)變量: 總個(gè)數(shù),平均值,最大值,最小值,標(biāo)準(zhǔn)差,50%分位數(shù)等等;

非數(shù)值類型數(shù)據(jù),該方法會(huì)給出變量的: 非空值數(shù)量、unique數(shù)量(等同于數(shù)據(jù)庫(kù)中distinct方法)、最大頻數(shù)變量和最大頻數(shù)。

由head()方法我們可以發(fā)現(xiàn)數(shù)據(jù)中包含了數(shù)值變量、非數(shù)值變量,我們首先可以利用dtypes方法查看DataFrame中各列的數(shù)據(jù)類型,用select_dtypes方法將數(shù)據(jù)按數(shù)據(jù)類型進(jìn)行分類。然后,利用describe方法返回的統(tǒng)計(jì)值對(duì)數(shù)據(jù)有個(gè)初步的了解:

df.select_dtypes(include=["O"]).describe() 

df.select_dtypes(include=["float64"]).describe()

簡(jiǎn)單的觀察上面變量每一維度統(tǒng)計(jì)結(jié)果,我們可以了解到大家獲取代理數(shù)據(jù)的長(zhǎng)度平均1670個(gè)字節(jié)左右。同時(shí),也能發(fā)現(xiàn)字段scan_os_sub_fp,scan_scan_mode等存在空值等等信息。這樣我們能對(duì)數(shù)據(jù)整體上有了一個(gè)大概了解。

4.數(shù)據(jù)清洗

由于源數(shù)據(jù)通常包含一些空值甚至空列,會(huì)影響數(shù)據(jù)分析的時(shí)間和效率,在預(yù)覽了數(shù)據(jù)摘要后,需要對(duì)這些無(wú)效數(shù)據(jù)進(jìn)行處理。

一般來(lái)說(shuō),移除一些空值數(shù)據(jù)可以使用dropna方法, 當(dāng)你使用該方法后,檢查時(shí)發(fā)現(xiàn) dropna() 之后幾乎移除了所有行的數(shù)據(jù),一查Pandas用戶手冊(cè),原來(lái)不加參數(shù)的情況下, dropna() 會(huì)移除所有包含空值的行。

如果你只想移除全部為空值的列,需要加上 axis 和 how 兩個(gè)參數(shù):

analysis_data.dropna(axis=1, how="all")

另外,也可以通過(guò)dropna的參數(shù)subset移除指定列為空的數(shù)據(jù),和設(shè)置thresh值取移除每非None數(shù)據(jù)個(gè)數(shù)小于thresh的行。

analysis_data.dropna(subset=["proxy_host", "srcip"])
#移除proxy_host字段或srcip字段沒(méi)有值的行
analysis_data.dropna(thresh=10)
#移除所有行字段中有值屬性小于10的行
5.統(tǒng)計(jì)分析

再對(duì)數(shù)據(jù)中的一些信息有了初步了解過(guò)后,原始數(shù)據(jù)有22個(gè)變量。從分析目的出發(fā),我將從原始數(shù)據(jù)中挑選出局部變量進(jìn)行分析。這里就要給大家介紹pandas的數(shù)據(jù)切片方法loc。

loc([start_row_index:end_row_index,[‘timestampe’, ‘proxy_host’, ‘srcip’]])是pandas重要的切片方法,逗號(hào)前面是對(duì)行進(jìn)行切片;逗號(hào)后的為列切片,也就是挑選要分析的變量。

如下,我這里選出日期,host和源IP字段——

analysis_data = analysis_data.loc([:, [‘timestampe’,"proxy_host","srcip"]])

首先讓我們來(lái)看看蜜罐代理每日使用數(shù)據(jù)量,我們將數(shù)據(jù)按日統(tǒng)計(jì),了解每日數(shù)據(jù)量PV,并將結(jié)果畫出趨勢(shì)圖。

daily_proxy_data = analysis_data[analysis_data.module=="proxy"]
daily_proxy_visited_count = daily_proxy_data.timestamp.value_counts().sort_index()
daily_proxy_visited_count.plot()

對(duì)數(shù)據(jù)列的丟棄,除無(wú)效值和需求規(guī)定之外,一些表自身的冗余列也需要在這個(gè)環(huán)節(jié)清理,比如說(shuō)DataFrame中的index號(hào)、類型描述等,通過(guò)對(duì)這些數(shù)據(jù)的丟棄,從而生成新的數(shù)據(jù),能使數(shù)據(jù)容量得到有效的縮減,進(jìn)而提高計(jì)算效率。

由上圖分析可知蜜罐代理使用量在6月5號(hào),19-22號(hào)和25號(hào)這幾天呈爆炸式增長(zhǎng)。那么這幾天數(shù)據(jù)有情況,不正常,具體是神馬情況,不急,后面小安帶大家一起來(lái)慢慢揪出來(lái)到底是那些人(源ip) 干了什么“壞事”。

進(jìn)一步分析, 數(shù)據(jù)有異常后,再讓我們來(lái)看看每天去重IP數(shù)據(jù)后量及其增長(zhǎng)量。可以按天groupby后通過(guò)nunique()方法直接算出來(lái)每日去重IP數(shù)據(jù)量。

daily_proxy_data = analysis_data[analysis_data.module=="proxy"]
daily_proxy_visited_count = daily_proxy_data.groupby(["proxy_host"]).srcip.nunique()
daily_proxy_visited_count.plot()

究竟大部分人(源ip)在干神馬?干神馬?干神馬?讓我們來(lái)看看被訪問(wèn)次數(shù)最多host的哪些,即同一個(gè)host關(guān)聯(lián)的IP個(gè)數(shù),為了方便我們只查看前10名熱門host。

先選出host和ip字段,能過(guò)groupby方法來(lái)group 每個(gè)域名(host),再對(duì)每個(gè)域名的ip訪問(wèn)里unique統(tǒng)計(jì)。

host_associate_ip = proxy_data.loc[:, ["proxy_host", "srcip"]]
grouped_host_ip = host_associate_ip.groupby(["proxy_host"]).srcip.nunique()
print(grouped_host_ip.sort_values(ascending=False).head(10))
代理訪問(wèn)host 源ip
col 3 is right-aligned
col 2 is centered
zebra stripes are neat
www.gan**.com 1113
wap.gan**.com 913
webim.gan**.com 710
cgi.**.qq.com 621
www.baidu.com 615
loc.*.baidu.com 543
www.gan**.com 1113
baidu.com 515
www.google.com 455
www.bing.com 428
12**.ip138.com 405

再細(xì)細(xì)去看大家到底做了啥——查看日志數(shù)據(jù)發(fā)現(xiàn)原來(lái)在收集像二手車價(jià)格,工人招聘等等信息。從熱門host來(lái)看,總得來(lái)說(shuō)大家使用代理主要還是獲取百度,qq,Google,Bing這類婦孺皆知網(wǎng)站的信息。

下面再讓我們來(lái)看看是誰(shuí)用代理IP“干事”最多,也就是看看誰(shuí)的IP訪問(wèn)不同host的個(gè)數(shù)最多。

host_associate_ip = proxy_data.loc[:, ["proxy_host", "srcip"]]
grouped_host_ip = host_associate_ip.groupby(["srcip"_host"]).proxy_host.nunique()
print(grouped_host_ip.sort_values(ascending=False).head(10))

哦,發(fā)現(xiàn)目標(biāo)IP為123..*.155的小伙子有大量訪問(wèn)記錄, 進(jìn)而查看日志,原來(lái)他在大量收集酒店信息。 好了,這樣我們就大概能知道誰(shuí)在干什么了,再讓我們來(lái)看看他們使用proxy持續(xù)時(shí)長(zhǎng),誰(shuí)在長(zhǎng)時(shí)間里使用proxy。 代碼如下——

這里不給大家細(xì)說(shuō)代碼了,只給出如下偽代碼。

date_ip = analysis_data.loc[:,["timestamp","srcip"]]
grouped_date_ip = date_ip.groupby(["timestamp", "srcip"])
#計(jì)算每個(gè)源ip(srcip)的訪問(wèn)日期
all_srcip_duration_times = ...
#算出最長(zhǎng)連續(xù)日期天數(shù)
duration_date_cnt =  count_date(all_srcip_duration_times)

好了,到此我也就初略的知道那些人做什么,誰(shuí)用代理時(shí)長(zhǎng)最長(zhǎng)等等問(wèn)題額。取出ip = 80...38的用戶使用代理ip訪問(wèn)數(shù)據(jù)日志,發(fā)現(xiàn)原來(lái)這個(gè)小伙子在長(zhǎng)時(shí)間獲取搜狐images。

蜜罐在全國(guó)各地部署多個(gè)節(jié)點(diǎn),再讓我們來(lái)看看每個(gè)源ip掃描蜜罐節(jié)點(diǎn)總個(gè)數(shù),了解IP掃描節(jié)點(diǎn)覆蓋率。結(jié)果見如下:

# 每個(gè)IP掃描的IP掃描節(jié)點(diǎn)總個(gè)數(shù)
node = df[df.module=="scan"]
node = node.loc[:,["srcip","origin_details"]]
grouped_node_count = node.groupby(["srcip"]).count()
print grouped_node_count.sort_values(["origin_details"], ascending=False).head(10)

由上述兩表初步可知,一些結(jié)論:如源ip為182...205的用戶長(zhǎng)時(shí)間對(duì)蜜罐節(jié)點(diǎn)進(jìn)行掃描,mark危險(xiǎn)用戶等等。

結(jié)語(yǔ)

給大家簡(jiǎn)單介紹的用python工具,主要是pandas庫(kù)來(lái)分析數(shù)據(jù),當(dāng)然這個(gè)庫(kù)的功能非常強(qiáng)大,更多的還是要大家自己去使用和探索。

反爬蟲

文章來(lái)源:http://bigsec.com/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/38111.html

相關(guān)文章

  • 一份關(guān)于人工智能、機(jī)器學(xué)習(xí)和大數(shù)據(jù)的報(bào)告

    摘要:為了你最好的未來(lái),請(qǐng)不斷的學(xué)習(xí)創(chuàng)始人兼首席執(zhí)行官人工智能和機(jī)器學(xué)習(xí)的時(shí)代已經(jīng)到來(lái)了,這些領(lǐng)域都有可能對(duì)印度的行業(yè)產(chǎn)生重大的影響。在印度努力重振生產(chǎn)力增長(zhǎng)的同時(shí),人工智能和機(jī)器學(xué)習(xí)有望填補(bǔ)這一空白。 showImg(http://upload-images.jianshu.io/upload_images/13825820-702c6873cd07cfc3.jpg?imageMogr2/...

    Carbs 評(píng)論0 收藏0
  • 測(cè)試管理之項(xiàng)目軟件測(cè)試風(fēng)險(xiǎn)管理實(shí)踐

    摘要:在軟件測(cè)試活動(dòng)中,作為一名測(cè)試人員有沒(méi)有遇到過(guò)這樣的場(chǎng)景,在測(cè)試一個(gè)特性或者制定一份測(cè)試方案時(shí),往往會(huì)想著進(jìn)行簡(jiǎn)單測(cè)試做簡(jiǎn)單設(shè)計(jì),認(rèn)為這個(gè)場(chǎng)景出現(xiàn)的概率太低,幾乎不可能會(huì)存在,不測(cè)了實(shí)際應(yīng)用時(shí)不可能會(huì)有這么大的用戶量, ...

    用戶84 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<