用好OnionScan,自己動手制作暗網(wǎng)爬蟲
喜大普奔!OnionScan0.2終于發(fā)布啦!在新版OnionScan中,最引人注目的一個新功能就是“custom crawls”(自定義爬取)。我們將會通過這篇文章來教會大家如何去使用這個強大的功能?!?OnionScan 0.2下載地址 】
可能對暗網(wǎng)比較了解的同學都知道OnionScan是個什么東西吧?OnionScan是一款非常棒的工具,你可以用它來掃描暗網(wǎng)中的隱藏服務(wù),并收集一些潛在的泄漏數(shù)據(jù)。除此之外,OnionScan也可以幫助你搜索出各種匿名服務(wù)的標識,例如比特幣錢包地址、PGP密鑰、以及電子郵件地址等等。
但是,暗網(wǎng)中的很多服務(wù)數(shù)據(jù)都是以非標準的數(shù)據(jù)格式發(fā)布的,不同的服務(wù)很可能使用的是不同的數(shù)據(jù)格式,這也就使得我們很難用軟件工具來對這些數(shù)據(jù)進行自動化處理。
不過別擔心,OnionScan可以幫助我們解決這個難題。OnionScan允許我們自定義各個網(wǎng)站之間的關(guān)系,然后我們可以將這些關(guān)系導入至OnionScan的關(guān)聯(lián)引擎(Correlation Engine)之中。接下來,系統(tǒng)會像處理其他標識符那樣來幫助我們對這些關(guān)系進行關(guān)聯(lián)和分類。
接下來,我們以暗網(wǎng)市場Hansa來作為講解實例。當我們在收集該市場中的數(shù)據(jù)時,我們首先要收集的往往是市場中處于在售狀態(tài)的商品名稱和商品類別,有時我們可能還需要收集這些商品的供應(yīng)商信息。實際上,我們可以直接訪問產(chǎn)品的/listing頁面來獲取所有的這些信息。
但是,我們現(xiàn)在要自己動手制作一個暗網(wǎng)爬蟲。我們將使用這個爬蟲來爬取并導出我們所需的數(shù)據(jù),然后再對這些數(shù)據(jù)進行處理,***再將其轉(zhuǎn)換成我們可以進行自動化分析的數(shù)據(jù)格式。在OnionScan0.2的幫助下,我們只需要定義一個簡單的配置文件就可以輕松實現(xiàn)這些操作了。相關(guān)代碼如下所示:
- {
- "onion":"hansamkt2rr6nfg3.onion",
- "base":"/",
- "exclude":["/forums","/support","/login","/register","?showFilters=true","/img","/inc", "/css", "/link", "/dashboard","/feedback", "/terms", "/message"],
- "relationships":[{"name":"Listing",
- "triggeridentifierregex":"/listing/([0-9]*)/",
- "extrarelationships":[
- {
- "name":"Title",
- "type":"listing-title",
- "regex":"
- (.*)
- " }, { "name":"Vendor", "type":"username", "regex":" " }, { "name":"Price", "type":"price", "regex":" (USD[^<]*) " }, { "name":"Category", "type":"category", "regex":"
- ([^<]*)
- ", "rollup": true } ] } ] }
上面這段代碼可能看起來非常的復雜,不過別擔心,接下來我們會給大家一一進行講解。
代碼開頭的“onion”參數(shù)定義的是我們所要掃描的暗網(wǎng)服務(wù)(”onion”:”hansamkt2rr6nfg3.onion”)。“base”參數(shù)定義的是我們要從網(wǎng)站的哪個路徑開始執(zhí)行掃描,在這里我們準備從網(wǎng)站的根目錄開始掃描(”base”:”/”)。與普通網(wǎng)站一樣,大多數(shù)暗網(wǎng)服務(wù)同樣只在網(wǎng)站子目錄中才會保存有效數(shù)據(jù),例如剛才的“listing”目錄。在這種情況下,我們就可以使用“base”參數(shù)來告訴OnionScan從網(wǎng)站的哪一部分開始執(zhí)行掃描,這樣可以為我們節(jié)省大量的時間。
“exclude”參數(shù)可以讓OnionScan排除某些類型的掃描對象,例如“/forums”、“/support”、“/login”、以及“/register”。通常情況下,這些鏈接我們***不要去碰,因為它們有可能會進行某些我們不希望發(fā)生的行為。
接下來就是“relationships”參數(shù)了,這個參數(shù)中定義的邏輯才是這個爬蟲最核心的部分。
我們的邏輯關(guān)系主要是由“name”和“triggeridentifierregex”這兩個參數(shù)定義的。其中的正則表達式主要應(yīng)用于目標網(wǎng)站的URL地址,當正則表達式匹配到關(guān)系中的剩余規(guī)則時,就會觸發(fā)相應(yīng)的操作。在這個例子中,我們在OnionScan中定義了正則表達式“/listing/([0-9]*)/”,它將會觸發(fā)URL地址中的Listing關(guān)系。需要注意的是,OnionScan還會根據(jù)URL地址中的“([0-9]*)”來識別資源之間的關(guān)系。
每一個關(guān)系都有一個“extrarelationships”參數(shù),這個參數(shù)中定義的關(guān)系是OnionScan在進行搜索操作時需要用到的。
比如說,在我們的配置文件中,我們定義了四個額外的關(guān)系,即“Title”、“Vendor”、 “Price”和“Category”。每一個額外定義的關(guān)系都需要定義“name”和“type”參數(shù),OnionScan的關(guān)聯(lián)引擎將需要使用到這部分數(shù)據(jù)。除此之外,我們還要在關(guān)系中定義一個正則表達式,即“regex”參數(shù),我們可以通過這個正則表達式來提取目標頁面中的數(shù)據(jù)關(guān)系。
在Hansa市場這個例子中可以看到,我們可以通過正則表達式“”來從產(chǎn)品的/listing頁面中提取出廠商信息。類似地,我們也可以通過這種方法提取出產(chǎn)品的標題、價格、以及分類目錄。
“rollup”參數(shù)是OnionScan中的一個指令,這個指令可以讓OnionScan對我們所搜索到的產(chǎn)品分類數(shù)量進行數(shù)據(jù)統(tǒng)計,并以可視化的形式輸出統(tǒng)計結(jié)果。
現(xiàn)在,我們已經(jīng)通過配置文件來告訴OnionScan應(yīng)該從Hansa市場中提取哪些數(shù)據(jù)了,但是OnionScan應(yīng)該如何使用這個配置文件呢?
接下來,先將我們剛才定義好的配置文件放到“service-configs”文件夾中,然后通過下列命令來讓OnionScan對市場執(zhí)行掃描操作:
- ./onionscan -scans web --depth 1 --crawlconfigdir./service-configs/ --webport 8080 --verbose hansamkt2rr6nfg3.onion
搜索結(jié)果如下圖所示:
從上面這張圖片中可以看到,我們只需要定義一個簡單的配置文件,OnionScan就可以幫我們完成剩下的操作。我們之所以可以獲取到這張統(tǒng)計表格,是因為我們之前將“rollup”參數(shù)設(shè)為了“true”,所以O(shè)nionScan才會給我們提供這樣一份可視化的統(tǒng)計數(shù)據(jù)。































