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
※合規就代表安全了嗎?那可以不一定
※2019年五大網路威脅走勢預測
TAG:FreeBuf |