強大的開源網絡偵查工具: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 查看網絡流量動畫。

Clipboard Image.png

主動偵查

主動偵查部分是重點介紹的內容,通常環境下,企業內網環境的網絡流量不可能完全經過安全測試服務器,需要了解內網全部服務器的端口、服務情況,需要使用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 WEB界面

IVRE提供了WEB界面方便直觀的展示主動掃描(Nmap)結果,通過關鍵字過濾搜索你需要的內容。

網頁菜單欄點擊HTLP,可以查看搜索過濾的幫助信息,其它菜單項則是在過濾器中快速添加過濾條件。左側顯示RESULTSFILTEREXPLORE三部分內容、

  • RESULTS:當前過濾規則的結果總數、顯示頁面控制

  • FILTER:過濾規則,可以填寫服務過濾、結果排序、頁面展示內容三類規則,可以多個規則組合使用

    • 一些常用的過濾示例:
    • country:CN       //過濾國家為中國
    • city:Chengdu    //過濾城市為成都
    • openport           //列出至少開放1個端口的IP
    • otheropenport:22     //開放22端口
    • service:telnet           //開放Telnet服務
    • !host:218.205.252.70       //不顯示218.205.252.70,部分參數前面加!表示否定
    • display:screenshot           //結果中顯示截圖
  • EXPLORE:將當前的過濾結果生成圖形化展示

Clipboard Image.png

Compare Graphs

菜單欄Share→Compare Graphs,圖形比較頁面,可以設定兩個不同的過濾規則,統計過濾后的數據,指定需統計的內容如服務(service)、端口(port)或產品(product)等,生成兩組作比較的條形圖。

Clipboard Image.png

Report

菜單欄Share→Report,進入Report頁面,對開發端口、服務、IP地區等進行Top 10統計,生成條形圖,需要寫統計報告的同學,這個功能比較實用。

Clipboard Image.png

結語

在復雜的企業內網,定期使用IVRE對內網的端口掃描探測並保存結果,便於安全工作人員及時掌握內網的服務開放、是否存在弱口令等情況。

日常的滲透測試工作中,小規模的IP掃描,建議使用另一款工具——斯巴達(SPARTA,Kali自帶,Github鏈接),輸入IP,自動進行Nmap掃描,根據服務探測結果調用相關工具(如Hydra、Dibuster等)進行下一步的測試。

Clipboard Image.png


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM