您好,登錄后才能下訂單哦!
這篇文章主要介紹Batea是一款什么工具,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
Batea是一款基于機器學習算法異常檢測分支的上下文驅動的網絡設備排序框架,而Batea的主要目標是允許并幫助安全團隊使用nmap掃描報告自動過濾大型網絡中感興趣的網絡資產。
Batea的工作原理是從nmap報告(XML)中構造所有設備的數字表示(numpy),然后應用異常檢測方法來發現感興趣或有價值的網絡資產。我們還可以通過向網絡資產元素的數字表示中添加特定的字符來擴展其功能。
網絡資產元素的數字表示是使用特征構建的,這些特征受到安全社區專業知識的啟發,而無人管理的異常檢測方法將允許工具將網絡資產上下文或網絡的整體描述用作排序算法的核心構建塊。這里所使用的準確算法為Isolation Forest算法。
機器學習模型是Batea的核心。模型是在整個數據集上訓練的算法,用于預測相同(和其他)數據點(網絡設備)的得分。除此之外,Batea還允許模型持久化。也就是說,我們可以重用預先訓練的模型,并導出在大型數據集上訓練的模型以供進一步使用。
$ git clone git@github.com:delvelabs/batea.git $ cd batea $ python3 setup.py sdist $ pip3 install -r requirements.txt $ pip3 install -e .
$ git clone git@github.com:delvelabs/batea.git $ cd batea $ python3 -m venv batea/ $ source batea/bin/activate $ python3 setup.py sdist $ pip3 install -r requirements-dev.txt $ pip3 install -e . $ pytest
# 完整信息 $ sudo nmap -A 192.168.0.0/16 -oX output.xml # 部分信息 $ sudo nmap -O -sV 192.168.0.0/16 -oX output.xml $ batea -v output.xml 工具使用樣例 # 簡單使用(以默認格式輸出排名前五的資產) $ batea nmap_report.xml # 輸出前三 $ batea -n 3 nmap_report.xml # 輸出所有資產 $ batea -A nmap_report.xml # 使用多個輸入文件 $ batea -A nmap_report1.xml nmap_report2.xml # 使用通配符 $ batea ./nmap*.xml $ batea -f csv ./assets*.csv # 你可以在預訓練模型和導出訓練模型上使用batea。 # 持久性的訓練、輸出和轉儲模型 $ batea -D mymodel.batea nmap_report.xml # 使用預訓練模型 $ batea -L mymodel.batea nmap_report.xml # 使用預格式化CSV和XML文件 $ batea -x nmap_report.xml -c portscan_data.csv # Verbose模式 $ batea -vv nmap_report.xml
Batea的工作原理是將數字特征分配給報告(或一系列報告)中的每一臺主機。這里的主機指的是從nmap報告派生的python對象,它們由以下屬性列表組成:[ipv4, hostname, os_info, ports],其中的ports是端口對象的列表。每一個端口都有以下屬性:[port, protocol, state, service, software, version, cpe, scripts],所有屬性值默認為None。
Features是從FeatureBase類繼承的對象,它實例化了一個特定的_transform方法。這個方法始終將所有主機的列表作為輸入,并返回一個lambda函數,該函數將每個主機映射到數值的numpy列(主機順序是守恒的),然后將該列附加到掃描報告的矩陣表示形式中。Features必須輸出正確的數值(浮點或整數),而不能輸出其他值。
大多數特征轉換都是使用簡單的lambda函數實現的,只需確保為每個主機默認一個數值,以實現模型兼容性。
具體樣例如下:
class CustomInterestingPorts(FeatureBase): def __init__(self): super().__init__(name="some_custom_interesting_ports") def _transform(self, hosts): """This method takes a list of hosts and returns a function that counts the number of host ports member from a predefined list of "interesting" ports, defaulting to 0. Parameters ---------- hosts : list The list of all hosts Returns ------- f : lambda function Counts the number of ports in the defined list. """ member_ports = [21, 22, 25, 8080, 8081, 1234] f = lambda host: len([port for port in host.ports if port.port in member_ports]) return f
接下來,我們可以使用batea/__init__.py中的NmapReport.add_feature方法來向報告中添加新的特性:
from .features.basic_features import CustomInterestingPorts def build_report(): report = NmapReport() #[...] report.add_feature(CustomInterestingPorts()) return report
我們還可以使用預處理的數據來訓練模型或進行預測。數據必須按(ipv4,port)索引,每行有一個唯一的組合。列必須使用以下名稱之一,但不必全部使用。如果缺少列,則解析器默認為空值。
'ipv4', 'hostname', 'os_name', 'port', 'state', 'protocol', 'service', 'software_banner', 'version', 'cpe', 'other_info'
樣例:
ipv4,hostname,os_name,port,state,protocol,service,software_banner 10.251.53.100,internal.delvesecurity.com,Linux,110,open,tcp,rpcbind,"program version port/proto service100000 2,3,4 111/tcp rpcbind100000 2,3,4 " 10.251.53.100,internal.delvesecurity.com,Linux,111,open,tcp,rpcbind, 10.251.53.188,serious.delvesecurity.com,Linux,6000,open,tcp,X11,"X11Probe: CentOS"
我們還可以輸出數值矩陣和分數列,而不是常規輸出,這對于進一步的數據分析和調試非常有用。
$ batea -oM network_matrix nmap_report.xml
以上是“Batea是一款什么工具”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。