日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

zeek系列之:流量数据采集流量探针zeek-脚本入门

發布時間:2024/3/12 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 zeek系列之:流量数据采集流量探针zeek-脚本入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

zeek解析pcap流量文件

解析pcap文件

zeek -C -r /home/1.pcap

json格式解析pcap文件到當前目錄下

zeek -C -r /home/1.pcap LogAscii::use_json=T

注意:需要zeek運行狀態下

zeek腳本

概述

概述擴展名為.zeek

默認目錄:share/zeek

放在share/zeek/site的不會在升級時被覆蓋或者修改

zeek生成的事件可以參考:base/bif/event.bif.zeek

*.bif是zeek的內建函數文件,也是生成在線文檔的基礎。

zeek腳本語法參考:Script Reference — Book of Zeek (v4.1.1)

框架參考:Frameworks — Book of Zeek (v4.1.1)

默認腳本保存位置

/opt/zeek/share/zeek/base/protocols目錄下,保存各個協議的具體解析腳本,

腳本示例

@load

定義腳本使用的庫

例如:/opt/zeek/share/zeek/test-all-policy.zeek 中

使用了如下的這些庫

module

定義命名空間

module TeamCymruMalwareHashRegistry;

例如:example.zeek文件中

export

解釋自定義變量,作為腳本命令空間的一部分

重新定義了一個可枚舉的常量,描述了將使用通知框架生成的通知類型。
定義一些常量用作閾值等

function

函數

event

針對特定事件執行的內容

file_hash事件處理程序,傳遞file,哈希算法的種類,哈希值
zeek執行異步操作不影響性能時使用when語句塊

事件隊列和事件處理器:zeek的腳本語言是事件驅動的,zeek的核心功能是把事件放入有序的事件隊列中,允許事件處理程序在先到先服務的基礎上處理事件。

當zeek檢測到發起的dns請求時,觸發dns_request事件,并傳遞數據

數據類型和數據結構

范圍(scope)

聲明變量的兩種形式:

scope name: type

scope name = expression

expression的計算結果和type一樣,例如:

local a:int

local a=10

全局變量

當腳本使用module關鍵字提供了命名空間時,必須更加注意全局聲明以確保預期的效果。

在帶有命名空間的腳本中聲明全局變量時,兩種可能的結果:

僅在命名空間的上下文可用

如果在export塊中聲明了全局變量,可以通過<module name>::<variable name>來對其他腳本生效

常量

const關鍵字,使用&redef的話,只能在解析時設置或者更改常量,以后(運行時)不可更改。redef常量不能在事件處理程序中更改。

舉例:

base/protocols/http/main.zeek文件中:

module HTTP;

export {

## This setting changes if passwords used in Basic-Auth are captured or

## not.

const default_capture_password = F &redef;

}

如果想打開這個default_capture_password設置,需要在啟動zeek之前在site/local.zeek添加如下行:

@load base/protocols/http

redef HTTP::default_capture_password = T;

局部變量

函數function內定義的local的局部變量,在函數結束后會被銷毀。同理事件event中的變量在事件結束后會被銷毀

數據結構原子類型

Data Type Description zh-cn

int 64 bit signed integer 64位有符號整數

count 64 bit unsigned integer 64位無符號整數

double double precision floating precision 雙精度浮點

bool boolean (T/F) 布爾類型

addr IP address, IPv4 and IPv6 IP地址

port transport layer port 傳輸層端口

subnet CIDR subnet mask CIDR格式子網掩碼

time absolute epoch time 絕對時間

interval a time interval 時間間隔

pattern regular expression 正則表達式

集合

儲存相同數據類型的唯一元素。

可用的方法:add,delete,for ( i in ssl_ports )

for循環無法保證集合遍歷的順序

類似python字典,鍵-值映射,值不唯一,鍵唯一

local ssl_services: table[string] of port;

ssl_services = table(["SSH"] = 22/tcp, ["HTTPS"] = 443/tcp);

向量

類似python列表,有序

local v1: vector of count;

local v2 = vector(1, 2, 3, 4);

原子類型

addr:主機名定義的話zeek會發送dns查詢,得到一個set[addr]

port:無符號整數/協議名(tcp,udp,icmp,unknown),協議大小順序unknown < tcp < udp < icmp,例如65535/tcp<0/udp

subnet:cidr表示法

time:current_time系統時間, network_time來自實時流或者pcap最后處理數據包的時間戳

interval:usec, msec, sec, min, hr, or day

pattern:正則匹配

復合類型

記錄數據類型:結合type關鍵詞和record可以生成復合類型

type Service: record {

name: string;

ports: set[port];

rfc: count;

};

簡單的使用更具描述性的名稱定義數據結構:type string_array: table[count] of string;

自定義日志

Introduction to Scripting — Book of Zeek (v4.1.1)

拋出通知

Introduction to Scripting — Book of Zeek (v4.1.1)

總結

以上是生活随笔為你收集整理的zeek系列之:流量数据采集流量探针zeek-脚本入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。