可能對暗網比較了解的同學都知道onionscan是個什麼東西吧?onionscan是一款非常棒的工具,你可以用它來掃描暗網中的隐藏服務,并收集一些潛在的洩漏資料。除此之外,onionscan也可以幫助你搜尋出各種匿名服務的辨別,例如比特币錢包位址、pgp密鑰、以及電子郵件位址等等。
但是,暗網中的很多服務資料都是以非标準的資料格式釋出的,不同的服務很可能使用的是不同的資料格式,這也就使得我們很難用軟體工具來對這些資料進行自動化處理。
不過别擔心,onionscan可以幫助我們解決這個難題。onionscan允許我們自定義各個網站之間的關系,然後我們可以将這些關系導入至onionscan的關聯引擎(correlation
engine)之中。接下來,系統會像處理其他辨別符那樣來幫助我們對這些關系進行關聯和分類。
接下來,我們以暗網市場hansa來作為講解執行個體。當我們在收集該市場中的資料時,我們首先要收集的往往是市場中處于在售狀态的商品名稱和商品類别,有時我們可能還需要收集這些商品的供應商資訊。實際上,我們可以直接通路産品的/listing頁面來擷取所有的這些資訊。
但是,我們現在要自己動手制作一個暗網爬蟲。我們将使用這個爬蟲來爬取并導出我們所需的資料,然後再對這些資料進行處理,最後再将其轉換成我們可以進行自動化分析的資料格式。在onionscan0.2的幫助下,我們隻需要定義一個簡單的配置檔案就可以輕松實作這些操作了。相關代碼如下所示:
{
"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”參數定義的是我們所要掃描的暗網服務(”onion”:”hansamkt2rr6nfg3.onion”)。“base”參數定義的是我們要從網站的哪個路徑開始執行掃描,在這裡我們準備從網站的根目錄開始掃描(”base”:”/”)。與普通網站一樣,大多數暗網服務同樣隻在網站子目錄中才會儲存有效資料,例如剛才的“listing”目錄。在這種情況下,我們就可以使用“base”參數來告訴onionscan從網站的哪一部分開始執行掃描,這樣可以為我們節省大量的時間。
“exclude”參數可以讓onionscan排除某些類型的掃描對象,例如“/forums”、“/support”、“/login”、以及“/register”。通常情況下,這些連結我們最好不要去碰,因為它們有可能會進行某些我們不希望發生的行為。
接下來就是“relationships”參數了,這個參數中定義的邏輯才是這個爬蟲最核心的部分。
我們的邏輯關系主要是由“name”和“triggeridentifierregex”這兩個參數定義的。其中的正規表達式主要應用于目标網站的url位址,當正規表達式比對到關系中的剩餘規則時,就會觸發相應的操作。在這個例子中,我們在onionscan中定義了正規表達式“/listing/([0-9]*)/”,它将會觸發url位址中的listing關系。需要注意的是,onionscan還會根據url位址中的“([0-9]*)”來識别資源之間的關系。
每一個關系都有一個“extrarelationships”參數,這個參數中定義的關系是onionscan在進行搜尋操作時需要用到的。
比如說,在我們的配置檔案中,我們定義了四個額外的關系,即“title”、“vendor”、
“price”和“category”。每一個額外定義的關系都需要定義“name”和“type”參數,onionscan的關聯引擎将需要使用到這部分資料。除此之外,我們還要在關系中定義一個正規表達式,即“regex”參數,我們可以通過這個正規表達式來提取目标頁面中的資料關系。
在hansa市場這個例子中可以看到,我們可以通過正規表達式“”來從産品的/listing頁面中提取出廠商資訊。類似地,我們也可以通過這種方法提取出産品的标題、價格、以及分類目錄。
“rollup”參數是onionscan中的一個指令,這個指令可以讓onionscan對我們所搜尋到的産品分類數量進行資料統計,并以可視化的形式輸出統計結果。
現在,我們已經通過配置檔案來告訴onionscan應該從hansa市場中提取哪些資料了,但是onionscan應該如何使用這個配置檔案呢?
接下來,先将我們剛才定義好的配置檔案放到“service-configs”檔案夾中,然後通過下列指令來讓onionscan對市場執行掃描操作:
./onionscan -scans web --depth 1 --crawlconfigdir./service-configs/ --webport 8080 --verbose hansamkt2rr6nfg3.onion
搜尋結果如下圖所示:
從上面這張圖檔中可以看到,我們隻需要定義一個簡單的配置檔案,onionscan就可以幫我們完成剩下的操作。我們之是以可以擷取到這張統計表格,是因為我們之前将“rollup”參數設為了“true”,是以onionscan才會給我們提供這樣一份可視化的統計資料。
作者:佚名
來源:51cto