簡介
IVRE(又名DRUNK)是一款開源的網絡偵查框架工具蒲列,IVRE使用Nmap娄柳、Zmap進行主動網絡探測、使用Bro粮坞、P0f等進行網絡流量被動分析蚊荣,探測結果存入數據庫中,方便數據的查詢莫杈、分類匯總統(tǒng)計互例。
IVRE官方網站:https://ivre.rocks
GitHub:https://github.com/cea-sec/ivre
安裝
使用pip安裝
pip3 install ivre
這里開始使用python3來安裝
安裝mongodb
數據庫是必須要安裝的,在ubunt上安裝mongodb的方式可以參考如下鏈接:
https://docs.mongodb.com/manual/tutorial/install-mongodb-on-ubuntu/
大概的過程如下:
Import the public key used by the package management system.?
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
Create a list file for MongoDB.
echo "deb [ arch=amd64,arm64 ] http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.4.list
操作系統(tǒng)是ubuntu 16.04LTS
Reload local package database
sudo apt-get update
Install the MongoDB packages.
sudo apt-get install -y mongodb-org
start mongodb
sudo service mongod start
configure
具體的配置方法可以參考如下鏈接:
https://github.com/cea-sec/ivre/blob/master/doc/INSTALL.md
可以只修改/etc/ivre.conf,增加如下內容:
GEOIP_PATH = "/usr/local/share/ivre/geoip/"
DB Creation
按照下面的步驟操作即可:
$ ivre scancli --init
This will remove any scan result in your database. Process ? [y/N] y
$ ivre ipinfo --init
This will remove any passive information in your database. Process ? [y/N] y
$ ivre ipdata --init
This will remove any country/AS information in your database. Process ? [y/N] y
# ivre runscansagentdb --init
This will remove any agent and/or scan in your database and files. Process ? [y/N] y
注意要配置上面的GEOIP_PATH,否則后兩條命令執(zhí)行失敗
Get IP Data
# ivre ipdata --download
$ ivre ipdata --import-all --no-update-passive-db
到此理論上已經可用了筝闹,為了獲得可視化的效果媳叨,下面配置web server
web server
docker版本的ivre已經配置好了web server腥光, 拿來直接用就可以了。因為這里使用ubuntu配置的糊秆,需要自己修改配置文件武福。本地用的nginx作為web服務器。
修改配置文件
將如下連接的配置文件復制到/etc/nginx/sites-enabled里面重新啟動nginx即可痘番,注意不能和其他的server端口重復了捉片。
https://github.com/cea-sec/ivre/blob/master/docker/web/nginx-default-site
這樣配好之后可以打開頁面了,但是看不到動態(tài)的數據汞舱。
配置fastcgi
安裝fastcig
aptitude install fcgiwrap
config fastcgi
cp /usr/share/doc/fcgiwrap/examples/nginx.conf /etc/nginx/fcgiwrap.conf
至此基本上可以使用ivre的主動掃描功能了界睁。按照如下兩個步驟,就可以通過本地頁面看到掃描結果了兵拢。
$ sudo ivre runscans --routable --limit 1000
完成之后執(zhí)行如下命令:
$ ivre scan2db -c ROUTABLE,ROUTABLE-CAMPAIGN-001 -s MySource -r \
> scans/ROUTABLE/up
在頁面上看到的結果如下:
安裝過程中碰到的問題翻斟。
MacOS上的安裝
MacOS和ubuntu的安裝有一些差別。
mongodb和nginx可以通過brew來安裝说铃,nginx的配置文件安裝好之后是放在/usr/local/share/etc/nginx目錄下面的访惜。這個熟悉MacOS系統(tǒng)的都知道。
這里重點說一下fcgiwrap的安裝
MacOS下使用fcgiwrap
首先需要先安裝fastcgi和fcgiwrap,這個通過brew就可以安裝了腻扇,
brew install fcgiwrap.
安裝好之后并不能直接用债热,需要做一些配置,可以參考如下的頁面:
https://www.nginx.com/resources/wiki/start/topics/examples/fcgiwrap/
這里大概說一下步驟:
先創(chuàng)建一個perl腳本幼苛,內容如下:
#!/usr/bin/perl
use strict;
use warnings FATAL => qw( all );
use IO::Socket::UNIX;
my $bin_path = '/usr/local/bin/fcgiwrap';
my $socket_path = $ARGV[0] || '/tmp/cgi.sock';
my $num_children = $ARGV[1] || 1;
close STDIN;
unlink $socket_path;
my $socket = IO::Socket::UNIX->new(
Local => $socket_path,
Listen => 100,
);
die "Cannot create socket at $socket_path: $!\n" unless $socket;
for (1 .. $num_children) {
my $pid = fork;
die "Cannot fork: $!" unless defined $pid;
next if $pid;
exec $bin_path;
die "Failed to exec $bin_path: $!\n";
}
注意: 這里的my $bin_path = '/usr/local/bin/fcgiwrap';
要替換成實際的fcgiwrap程序的位置窒篱。另外my $socket_path = $ARGV[0] || '/tmp/cgi.sock';
中的/tm/cgi.sock要和前面配置的fastcgi的socket保持一致。
這樣執(zhí)行完上面的腳本之后會發(fā)現在/tmp目錄下多了一個cgi.sock文件舶沿。這個就是一個unixsocket墙杯。
這個時候可能還是不能訪問,打開nginx的日志會發(fā)現括荡,cgi.sock沒有權限高镐,簡單的方法就是將cgi.sock的權限修改成777.然后就OK了。
python版本號的問題
ivre中的geoiputils.py用了strip(b'/n')這樣的字符畸冲,導致在python3中運行出錯嫉髓。使用python2.7運行是OK的。
使用nginx的問題
需要安裝fastcgi, 不然不能獲取到存儲在數據庫中的掃描結果邑闲。
后續(xù)打算
ivre其實就是一個掃描的框架算行,將一些掃描的消息進行可視化展示。因為沒有安裝neo4j苫耸,flow方面的可視化展示目前也做不了州邢。后續(xù)還有一些簡答的實驗要做:
- 1 裝上neo4j和bro,通過被動模式監(jiān)控本機的流量鲸阔。
- 2 實驗更多ivre的主動掃描功能偷霉。