| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> 流量数据采集流量探针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脚本语法参考:https://docs.zeek.org/en/current/script-reference/index.html 框架参考:https://docs.zeek.org/en/current/frameworks/index.html 默认脚本保存位置 /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的脚本语言是事件驱动的,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; 自定义日志 https://docs.zeek.org/en/current/examples/scripting/index.html#custom-logging 抛出通知 https://docs.zeek.org/en/current/examples/scripting/index.html#raising-notices |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/28 5:07:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |