當前位置:
首頁 > 新聞 > Scannerl:模塊化分散式指紋識別引擎工具

Scannerl:模塊化分散式指紋識別引擎工具

Scannerl是由Kudelski Securit開發的模塊化分散式指紋識別引擎,它可以在單個主機上識別數以千計的目標指紋,也可以在多個主機上分布執行分散式的指紋識別。Scannerl會識別zmap到埠掃描的指紋內容。當前的Scannerl版本適用於Debian/Ubuntu/Arch(包括其他的一些發行版本),使用主/從(master/slave)架構,主節點會將工作(主機指紋)分配給其從節點(本地或遠程),且整個部署對用戶都是透明的。



Scannerl 的優勢

傳統的指紋識別工具在進行大規模分析時,安全研究人員通常會遇到兩個限制:首先,這些工具通常都是為一次掃描相對較少的主機而構建的,且不適用於大範圍的IP地址。其次,如果對IPS設備保護的大範圍IP地址進行指紋識別,則很有可能被列入黑名單導致信息集的不完整和缺失。Scannerl則可以很好的解決這些限制,你不僅可以在單個主機執行指紋識別任務,還可以將任務分散式到多個主機執行。Scannerl還使這些任務的分發完全透明,這使得大型指紋項目的設置和維護更加容易,讓安全研究人員有更多的時間專註於分析,而無需手工操作重複繁雜的工作。此外,scannerl還允許你通過幾行代碼輕鬆設置特定的指紋分析。創建指紋識別群集不僅易於設置,而且還可以通過在指紋識別活動中添加fine-tuned掃描來進行調整。可以說scannerl是執行大規模指紋識別任務速度最快的工具。


安裝


不同安裝選項請參閱wiki安裝頁面。


要從源碼安裝,首先請確保你已安裝Erlang(且版本不低於v.18)以及選擇對應於你平台的安裝包:Erlang downloads


安裝所需的包:

# on debian
$ sudo apt install erlang erlang-src rebar

# on arch
$ sudo pacman -S erlang-nox rebar

然後構建scannerl:

$ git clone https://github.com/kudelskisecurity/scannerl.git
$ cd scannerl
$ ./build.sh

查看幫助選項:

$ ./scannerl -h

對於arch linux用戶可在aur中獲取scannerl。


scannerlscannerl-git

DEB(Ubuntu,Debian)可在發行版中找到。


RPM(Opensuse,Centos,Redhat)可在https://build.opensuse.org/package/show/home:chapeaurouge/scannerl下找到。

分散式設置


執行分散式掃描需要兩種類型的節點:



主節點:scannerl二進位文件運行的地方


從節點:scannerl將連接以分發其所有工作的位置


主節點需要安裝和編譯scannerl,而從節點只需安裝Erlang。整個設置是透明的,由主節點自動完成。


分散式掃描的要求



所有主機都需要安裝相同版本的Erlang

所有主機都可以使用SSH公鑰相互連接


所有主機的名稱解析(如未設置正確的DNS,請使用/etc/hosts)


所有主機都具有相同的Erlang security cookie


所有主機必須允許連接到Erlang EPMD埠(TCP/4369)


所有主機都打開了以下埠範圍:TCP/11100到TCP/11100+從節點數


使用


單獨使用


Scannerl可以在本地主機上單獨使用。但它仍將在運行它的同一主機上創建一個從節點。因此,你同樣需要滿足上述分散式設置要求。

一個快速的方法是確保你的主機能夠自我解析,命令如下:

grep -q "127.0.1.1s*`hostname`" /etc/hosts || echo "127.0.1.1 `hostname`" | sudo tee -a /etc/hosts

並創建一個SSH key將其添加到authorized_keys:

cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys

以下示例從本地主機運行了一個針對google.com的HTTP  banner抓取。

./scannerl -m httpbg -d google.com

分散式使用


執行分散式掃描之前,需要預先設置scannerl將使用的主機以分發工作。有關更多信息,請參閱分散式設置部分。


Scannerl需要使用的從節點列表可以通過

-s

-S

選項添加。

./scannerl -m httpbg -d google.com -s host1,host2,host3

列出可用模塊


使用-l選項列出可用模塊:



模塊參數


可以使用冒號向模塊提供參數。例如,文件輸出模塊:

./scannerl -m httpbg -d google.com -o file:/tmp/result

結果格式


scannerl返回到輸出模塊的結果將以以下形式顯示:

{module, target, port, result}


module:使用的模塊(Erlang atom)

target:IP或主機名(字元串或IPv4地址)


port:埠(整數)


result:見下文


結果部分的形式為:

{{status, type},Value}

其中{status, type}是以下元組之一:


{ok,result}:指紋識別目標成功


{error,up}:指紋識別未成功,但目標有響應


{error,unknown}:指紋識別失敗


Value為返回值 - atom原子或元素列表

Scannerl 擴展


Scannerl的設計和實現考慮了模塊化,因此向它添加新模塊相當的容易:



Fingerprinting module:

查詢特定協議或服務。例如,fp_httpbg.erl模塊允許檢索HTTP響應中的伺服器條目。


Output module:

輸出到特定資料庫/文件系統或以特定格式輸出結果。例如,out_file.erl和out_stdout.erl模塊分別允許輸出到文件或stdout。


創建新模塊,可以參照fp_module.erl和out_behavior.erl源文件形式。


新模塊既可以在編譯時添加,也可以作為外部文件動態添加。


*參考來源:kitploit,FB小編secist編譯,轉載請註明來自FreeBuf.COM

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

合規就代表安全了嗎?那可以不一定
2019年五大網路威脅走勢預測

TAG:FreeBuf |