`
iaiai
  • 浏览: 2203698 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

强大的开源网络侦查工具:IVRE

 
阅读更多
IVRE简介

IVRE(又名DRUNK)是一款开源的网络侦查框架工具,IVRE使用Nmap、Zmap进行主动网络探测、使用Bro、P0f等进行网络流量被动分析,探测结果存入数据库中,方便数据的查询、分类汇总统计。

网上已有部分文章对IVRE的使用做介绍,由于文章时间较早,IVRE的安装、命令执行等均有所改变,本文使用最新版IVRE做讲解,并增加部分其它文章未提及的Nmap模板参数设置、Web界面搜索使用等内容。

IVRE官方网站:https://ivre.rocks

GitHub:https://github.com/cea-sec/ivre

IVRE安装

使用Docker方式安装
$ mkdir ivre
$ cd ivre
//拉取Docker镜像
$ mkdir -m 1777 var_{lib,log}_{mongodb,neo4j} ivre-share
$ wget -q https://ivre.rocks/Vagrantfile
//启动Docker
$ vagrant up --no-parallel
//进入Docker - ivreclient shell
$ docker exec -it ivreclient bash
root@e809cb41cb9a:/#
//查看ivre命令帮助
root@e809cb41cb9a:/#ivre --help

安装脚本会在ivre目录中创建几个新的文件夹,这些文件夹用于挂载到Docker容器中存放数据库等信息。ivre-share会挂载容器ivreclient的根目录下,之后的扫描操作我们也在这个目录下执行,方便主机和容器间的文件交互。

数据库初始化

第一次使用时,对4个数据库进行初始化操作(使用过程中,如需完全重新导入数据,也要对相应数据库做初始化设置):
$ ivre scancli --init
$ ivre ipinfo --init
$ ivre ipdata --init
$ ivre runscansagentdb --init

获取IP位置数据

ipdata数据包含了IP对应的地理位置信息。
$ ivre ipdata --download
$ ivre ipdata --import-all --no-update-passive-db

安装缺失Python模块

执行ivre命令后,提示部分Python模块缺失,下面进行这部分模块的安装:
apt-get update
apt-get install python-pip

//Python module PIL: 4.3.0: missing
pip install Pillow

//Python module krbV: missing
apt-get install libkrb5-dev
pip install python-krbv

//Python module MySQLdb: missing
apt-get install python-mysqldb

//安装VIM,方便编辑文件
apt-get install vim

IVRE使用

被动侦查

IVRE可以使用Bro和p0f对流量分析,并将结果导入到数据库中。

个人感觉网络流量分析这部分,IVRE所能提供的功能并不实用,略过,感兴趣的同学,请参考官方文档。

需对流量实时或回放分析,Windows平台下推荐使用成都本土科技公司科来的科来网络分析系统,技术交流版免费使用。

Flow analysis

网络数据流的图形展示,这个比较炫酷,简单介绍下。先在主机上使用Wireshark抓一段时间包,数据包保存为pcap格式,命名为test.pcap,放入IVRE的共享文件夹ivre-share中,执行命令处理数据包:
$ cd /ivre-share

//使用Bro对数据包进行处理,完成后再当前文件夹生成.log文件
$ bro -r test.cap

//初始化flowcli数据库
$ ivre flowcli --init

//将.log文件导入数据库
$ ivre bro2db *.log

查看导入的流量统计数据
$ ivre flowcli --count
585 clients
1259 servers
3629 flows

打开浏览器,输入http://your-host-ip/flow.html 查看网络流量动画。

主动侦查

主动侦查部分是重点介绍的内容,通常环境下,企业内网环境的网络流量不可能完全经过安全测试服务器,需要了解内网全部服务器的端口、服务情况,需要使用Nmap、Masscan等工具进行主动探测扫描。

使用Nmap扫描

随机扫描1000个IP

进入Docker – ivreclient shell后,执行:
$ cd /ivre-share
$ ivre runscans --routable --limit 1000 --country CN --output=XMLFork

这条命令会执行一个随机扫描,扫描1000个中国地区的IP,默认开启30个Nmap并行进程。使用ivre help runscans查看扫描相关的详细帮助内容。扫描后在/ivre-share目录下生成扫描结果文件,包含端口开放、服务信息、网页截图等。

扫描后清理缓存文件:
rm -fr /ivre-share/scans/COUNTRY-CN/ current/

导**入扫描结果**

扫描完成后,将扫描结果导入数据库:
$ cd /ivre-share
$ ivre scan2db -c ROUTABLE-CN-001 -s Parrot -r /ivre-share/scans/COUNTRY-CN/up/

这里 ROUTABLE-CN-001 是这次扫描结果的分类名称,MySource是扫描来源名称,方便指挥对扫描结果的分类搜索。

除了在本地执行扫描工作外,IVRE还可以设置多个扫描在代理服务器,在主服务器上执行ivre {runscansagent|runscansagentdb}命令进行代理服务器的扫描任务下发和结果导入。

命令执行后提示xxx results imported,则导入成功。

指定扫描IP目标

通过ivre help runscans命令查看IVRE的帮助文档,找到两个指定扫描IP的参数,--range和--network,--range指定扫描IP的起止范围,--network参数可指定一个网段。例:
$ ivre runscans --network 45.32.14.0/24 --output=XMLFork

使用--output=CommandLine 参数来看下当前执行的完整命令:
root@67d2aa11797f:/ivre-share# ivre runscans --network 45.32.14.0/24 --output CommandLine

Command line to run a scan with template default
    nmap -A -PS -PE -sS -vv --host-timeout 15m --script-timeout 2m --script '(default or discovery or auth) and not (broadcast or brute or dos or exploit or external or fuzzer or intrusive)'

使用Nmap模板扫描

--nmap-template参数可指定Nmap扫描模板,在/etc/ivre.conf中添加模板。

Nmap模板参考:
vi /etc/ivre.conf

//创建一个扫描1-65535端口,名称为`full-port`的Nmap扫描模板,在文件中添加以下内容(复制default模板并修改部分参数)
NMAP_SCAN_TEMPLATES["full-ports"] = NMAP_SCAN_TEMPLATES["default"].copy()
NMAP_SCAN_TEMPLATES["full-ports"]["ports"] = "1-65535"
NMAP_SCAN_TEMPLATES["full-ports"]["scripts_categories"] = ['(default or discovery or auth) and not (broadcast or brute or dos or exploit or external or fuzzer or intrusive)']
NMAP_SCAN_TEMPLATES["full-ports"]["scripts_exclude"] = []

添加模板参数后后再看看扫描命令:
root@67d2aa11797f:/ivre-share# ivre runscans --network 45.32.14.0/24 --output CommandLine --nmap-template full-port

Command line to run a scan with template full-port
    nmap -A -PS -PE -sS -vv -p 1-65535 --host-timeout 15m --script-timeout 2m --script '(default or discovery or auth) and not (broadcast or brute or dos or exploit or external or fuzzer or intrusive)'

相比之前的命令,增加了-p 1-65535参数,执行全端口扫描。

模板中可以设置的其它参数,我在网上没找到详细的官方介绍文档,可以在IVRE的python文件中查找:/usr/local/lib/python2.7/dist-packages/ivre/nmapopt.py通过模板,你可以定制你的特定扫描需求。

扫描结果使用

执行扫描并导入数据库后,有三种方式使用这些内容:
  • ivre scancli命令行工具
  • Python模块ivre.db
  • IVRE Web界面

CLI: ivre scancli

例:使用命令行查看所有开放了22端口的主机:
$ ivre scancli --port 22
See the output of .

使用ivre help scancli查看详细的帮助信息。

Python 模块

例:
$ python
>>> from ivre.db import db
>>> db.nmap.get(db.nmap.flt_empty)[0]

在Python shell执行help(db.nmap)查看模块的帮助信息。

Web界面

浏览器输入 http://your-host-ip 访问IVRE Web界面,

结语

在复杂的企业内网,定期使用IVRE对内网的端口扫描探测并保存结果,便于安全工作人员及时掌握内网的服务开放、是否存在弱口令等情况。

日常的渗透测试工作中,小规模的IP扫描,建议使用另一款工具——斯巴达(SPARTA,Kali自带,Github链接),输入IP,自动进行Nmap扫描,根据服务探测结果调用相关工具(如Hydra、Dibuster等)进行下一步的测试。
  • 大小: 419.5 KB
分享到:
评论

相关推荐

    cpp-IVRE又名DRUNK是一款开源的网络侦查框架工具

    IVRE(又名DRUNK)是一款开源的网络侦查框架工具,IVRE使用Nmap、Zmap进行主动网络探测、使用Bro、P0f等进行网络流量被动分析,探测结果存入数据库中,方便数据的查询、分类汇总统计。

    ivre:网络侦察框架

    IVRE(外部仪器)或DRUNK(未知网络的动态侦察)是一个网络侦察框架,包括用于被动侦察的工具(流分析依赖 , , 和主动侦察(IVRE使用来运行)扫描; IVRE也可以从Nmap和导入XML输出,从和导入JSON输出。 广告...

    ivre:网络侦察框架,由@cea-sec & @ANSSI-FR 发布

    IVRE (Instrument de veille sur les réseaux extérieurs) 或 DRUNK (Dynamic Recon of UNKnownnetworks) 是一个网络侦察框架,包括被动侦察工具(流量分析依赖于 、 、 和主动侦察(IVRE 使用Nmap运行)扫描;...

    网络侦察框架。-C/C++开发

    包括用于被动侦察的工具(基于Bro,Argus,Nfdump的流分析工具,手指IVRE IVRE(外部侦查仪器) lesréseauxextérieurs或DRUNK(未知网络的动态侦察)是一个网络侦察框架,包括用于被动侦察的工具(流分析依赖Zeek...

    网络空间工控系统威胁情报.pdf

    网络空间工控系统的威胁情报是指针对工业控制系统(ICS)和工控...这要求安全专家和组织机构不仅要有强大的信息收集和分析能力,更要有对工控系统深刻的理解和针对特定威胁的防护措施,以应对日益严峻的网络安全挑战。

    BrownienMove:基本的布朗尼移动示例

    这是一个用 Java 脚本编写的布朗运动(“Déplacement de l'hommé ivre”)的非常简单的示例。 如何 只需克隆这个 repo,然后使用您最喜欢的网络浏览器(首选 Chrome)打开 index.html。 去做 添加碰撞检测系统 ...

Global site tag (gtag.js) - Google Analytics