suricata匹配从入门到精通(四)----编译lua

news2025/1/9 15:08:57

年前有粉丝私信我,想让我做一期lua脚本。作为一个宠粉的博主,那必须给予回应。

suricata结合lua可以达到提升工作效率的作用。

0x00 编译

开启luna 支持:

yum install luarocks (不确定是否有用)

手动下载安装:
(https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Installation_from_GIT_with_luajit

wget http://luajit.org/download/LuaJIT-2.0.5.tar.gztar -zxf LuaJIT-2.0.5.tar.gzcd LuaJIT-2.0.3
make && make install

编译成功的回显:

cd src && install -m 0644 lua.h lualib.h lauxlib.h luaconf.h lua.hpp luajit.h /usr/local/include/luajit-2.0
cd src/jit && install -m 0644 bc.lua v.lua dump.lua dis_x86.lua dis_x64.lua dis_arm.lua dis_ppc.lua dis_mips.lua dis_mipsel.lua bcsave.lua vmdef.lua /usr/local/share/luajit-2.0.5/jit
ln -sf luajit-2.0.5 /usr/local/bin/luajit
==== Successfully installed LuaJIT 2.0.5 to /usr/local ====

cd /home/leeezp/suricata

编译

./configure --prefix=/usr/ --sysconfdir=/etc/ --localstatedir=/var/ --enable-luajit \ --with-libluajit-includes=/usr/local/include/luajit-2.0/ --with-libluajit-libraries=/usr/lib/

make & make install

运行suricata 报错:

./suricata: error while loading shared libraries: libhtp.so.2: cannot open shared object file: No such file or directory

cat /etc/ld.so.conf

echo "/usr/local/lib" >> /etc/ld.so.conf

ldconfig

参考资料:

https://developer.aliyun.com/article/604301

cd /home/leeezp/suricata-6.0.2/src

./suricata --build-info

运行又报错:

/home/leeezp/suricata/rules/test
[root@leezp test]# ../../src/./suricata -r ../ssss.pcap -vvv -k none -c /etc/suricata/suricata.yaml 
30/4/2021 -- 18:08:36 - <Notice> - This is Suricata version 6.0.2 RELEASE running in USER mode
30/4/2021 -- 18:08:36 - <Info> - CPUs/cores online: 1
30/4/2021 -- 18:08:36 - <Config> - luajit states preallocated: 128
/home/leeezp/suricata/src/.libs/lt-suricata: symbol lookup error: /home/leeezp/suricata/src/.libs/lt-suricata: undefined symbol: htp_config_set_lzma_layers

可能是libhtp 库 与suricata不匹配;

直接从官网克隆;
git clone https://github.com/OISF/suricata.git
cd suricata
git checkout remotes/origin/master-6.0.x
git clone https://github.com/OISF/libhtp.git
./autogen.sh
cargo install --force cbindgen                  // 开启 rust 支持 (有些协议解析rust写的)
export PATH=$PATH:/root/.cargo/bin/             // 添加 cargo 路径
./configure --prefix=/usr/ --sysconfdir=/etc/ --localstatedir=/var/ --enable-luajit \ --with-libluajit-includes=/usr/local/include/luajit-2.0/ --with-libluajit-libraries=/usr/lib/ 
make
make install

7/5/2021 -- 11:37:51 - <Warning> - [ERRCODE: SC_WARN_PCRE_JITSTACK(326)] - Unable to allocate PCRE JIT stack; will continue without JIT stack

7/5/2021 -- 11:37:51 - <Error> - [ERRCODE: SC_ERR_DETECT_PREPARE(173)] - setting up thread local detect ctx for keyword "pcre" failed

报错可能是因为我之前自己编译过pcre,它使用了我之前自己编译的pcre;

LD_PRELOAD=/lib64/libpcre.so.1 ../../src/./suricata -r ./test.pcap -v -k none -c /etc/suricata/suricata.yaml

suricata]# vim .github/workflows/builds.yml
找到centos7,将里面的 yum -y install 内容复制,依赖库全部更新一遍,应该就好了。

--prefix=/usr/   : 将Suricata二进制文件安装到/usr/bin/中,默认/usr/local/

只有 /usr/bin 下的suricata 是编译正确的:
LD_PRELOAD=/lib64/libpcre.so.1 /usr/bin/suricata -r /home/leeezp/suricata/rules/test/test.pcap -v -k none  -c /etc/suricata/suricata.yaml

切换版本编译:

git tag -l

git checkout suricata-6.0.1

git checkout .

git status

查看suricata依赖库:

ldd /home/leeezp/suricata

0x01 使用

修改 suricata.yaml 文件 ,我是在 "outputs:" 节点最下方添加的(注意空格):

  - lua:
      enabled: yes
      scripts-dir: /home/leeezp/suricata/rules/test
      scripts:
        - script1.lua
        - http.lua
        - test2.lua
        - dns.lua

script1.lua 示例:

function init()
    local needs     = {}
    needs["type"]   = "packet"
    needs["filter"] = "alerts"
    return needs
end

function setup()
    alert_count = 0
end

function log()
    timestring      = SCPacketTimeString()
    sid, rev, gid   = SCRuleIds()
    msg             = SCRuleMsg()
    class, priority = SCRuleClass()

    ip_version, src_ip, dst_ip, protocol, src_port, dst_port = SCPacketTuple()

    if class == nil then
        class = "unknown"
    end

    print (timestring .. "  [**] [" .. gid .. ":" .. sid .. ":" .. rev .. "] " ..
           msg .. " [**] [Classification: " .. class .. "] [Priority: " ..
           priority .. "] {" .. protocol .. "} " ..
           src_ip .. ":" .. src_port .. " -> " .. dst_ip .. ":" .. dst_port)

    alert_count = alert_count + 1;
end

function deinit()
    print ("Alerted " .. alert_count .. " times");
end

运行下试试效果:

是不是一目了然 :)

0x02 后记

本文仅为抛砖引玉,更多玩法欢迎DIY或私信交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/189691.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubantu 16.04更新python版本(3.5 -> 3.9)【附:win10安装pypcap库解决办法】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、下载安装二、软连接三、下载pypcap库前言 不知道Pycharm抽什么风下不来pypcap库 百度上有回答说windows不兼容 还说的有理有据 于是只能重新捡起来ubantu了…

【手写 Promise 源码】第十二篇 - Promise.race 的实现

一&#xff0c;前言 上一篇&#xff0c;主要实现 Promise 的核心静态 API&#xff08;类方法&#xff09;&#xff1a;Promise.all&#xff0c;主要涉及以下几个点&#xff1a; 测试原生 Promise.all 的使用&#xff1b;Promise.all 的功能与特性分析&#xff1b;Promise.all…

什么是3D点云数据?该如何标注它?| 数据标注

自动驾驶汽车严重依赖输入数据来做出驾驶决策。一般来讲&#xff0c;数据越详细&#xff0c;车辆做出的决策就越好车辆行驶的也就更安全。虽然现代相机可以捕获非常详细的数据表示&#xff0c;但输出仍然是2D的&#xff0c;它限制了我们可以提供给操作车辆的神经网络的信息。相…

Java 技术知识点汇总

背景 面向百度编程&#xff0c;基本能解决大部分的问题。然而&#xff0c;技术用的熟练&#xff0c;时间久了却容易遗忘背后的技术思想&#xff0c;倒成了妥妥的搬运工了。 所以&#xff0c;偶尔针对用的技术&#xff0c;发几个灵魂拷问&#xff0c;也是很有必要的&#xff0…

Linux 软件管理 YUM管理工具 配置本地YUM源

概念引入 &#xff1a; # 首先提出一个问题&#xff0c;我们在 Linux 操作系统中是如何 安装软件的 &#xff1f;&#xff1f; >>> 在 Linux 系统中&#xff0c;安装软件是有三种方式 >>> 第一种 &#xff1a; RPM 管理工具 第二种 &#xff1a; YUM 管理工…

11、矩阵的分解

目录 一、对称正定矩阵的Cholesky分解 二、一般方阵的高斯消去法分解 三、矩形矩阵的正交分解 四、舒尔分解 矩阵分解是把一个矩阵分解成几个“较简单”的矩阵连乘的形式。在MATLAB中矩阵分解的相关函数有&#xff1a; 在MATLAB中&#xff0c;线性方程组的求解主要基于4种基…

剑指 Offer 第15天 搜索与回溯算法(中等)

目录 剑指 Offer 34. 二叉树中和为某一值的路径 剑指 Offer 36. 二叉搜索树与双向链表 剑指 Offer 54. 二叉搜索树的第k大节点 剑指 Offer 34. 二叉树中和为某一值的路径 给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径…

【懒狗福音】设置Bios电源自启实现远程办公

目录前言正文需求分析开始实现需求1需求2总结前言 今年寒假升级了下家里台式机的配置&#xff0c;已经很能满足我的生产力需求。 尽管我是按着MATX主机的方向配的&#xff0c;选择的机箱也是净重较轻的铝合金材质&#xff0c;机身自带提手也还算便捷。 但是装配完毕后它的整…

前端开发:JS中数组常用方法汇总

前言 在前端开发中关于数组的使用想必前端开发者并不陌生&#xff0c;尤其是在处理业务逻辑的时候&#xff0c;从后端获取的数据类型中数组类型基本占到70%的比例&#xff0c;所以与其说是处理数据&#xff0c;不如说是处理数组&#xff0c;虽然说的有点夸张&#xff0c;前端实…

vue文件导出/下载

const blob new Blob([res.data]);const elink document.createElement(a);elink.download 导出数据.xlsx;elink.style.display none;elink.href URL.createObjectURL(blob);document.body.appendChild(elink);elink.click();URL.revokeObjectURL(elink.href);document.bo…

使用Coding管理项目代码记录

直接开门见山 一、创建项目 进入coding登录后&#xff0c;找到项目菜单&#xff0c;然后点击创建项目 二、创建代码仓库 进入项目中&#xff0c;针对不同需要创建代码仓库。大项目或者前后端分离分开开发的可以创建不同的代码仓库。 三、创建代码仓库与本地关联 项目管…

Java岗面试题--Java基础(日积月累,每日三题)

目录面试题一&#xff1a;JDK、JRE、JVM之间的区别面试题二&#xff1a;hashCode()与equals()之间的关系追问&#xff1a;为什么重写 equals() 就一定要重写 hashCode() 方法&#xff1f;面试题三&#xff1a;String、StringBuffer、StringBuilder的区别追问一&#xff1a;Stri…

vulfocus靶场通关(目录遍历)

uWSGI 目录穿越&#xff08;CVE-2018-7490&#xff09; uWSGI是一款Web应用程序服务器&#xff0c;它实现了WSGI、uwsgi和http等协议&#xff0c;并支持通过插件来运行各种语言,uWSGI 2.0.17之前的PHP插件&#xff0c;没有正确的处理DOCUMENT_ROOT检测&#xff0c;导致用户可以…

【运维】通过gotty实现网页代理访问服务器及K8S容器操作实践

Gotty 是Golang编写的可以方便的共享系统终端为web应用&#xff0c;是一个灵活强大的通过web访问终端的工具。本文将主要通过搭建Gotty实现对K8S容器的访问操作&#xff0c;开发如果想要正常的进行容器访问以及测试环境代码调试&#xff0c;最好是搭建一套与运维环境隔离的应用…

Gadget驱动程序框架

Gadget驱动程序框架 文章目录Gadget驱动程序框架参考资料&#xff1a;一、 怎样理解Gadget框架二、从硬件软件角度理解Gadget框架2.1 底层硬件操作_UDC驱动2.2 上层软件操作三、 从构造描述符的角度理解Gadget框架致谢参考资料&#xff1a; Linux下USB gadget设备详解Linux us…

Linux常用命令——quotaon命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) quotaon 激活Linux内核中指定文件系统的磁盘配额功能 补充说明 quotaon命令用于激活Linux内核中指定文件系统的磁盘配额功能。执行quotaon指令可开启用户和群组的才磅秒年空间限制&#xff0c;各分区的文件系统…

STM32——I2C外设总线

文章目录一、I2C外设简介二、I2C框图三、I2C基本结构四、主机发送五、主机接收六、I2C的中断请求七、软件/硬件波形对比八、硬件I2C读写MPU6050电路设计关键代码状态监控函数一、I2C外设简介 STM32内部集成了硬件I2C收发电路&#xff0c;可以由硬件自动执行时钟生成、起始终止条…

Go语言jwt无感刷新以及解决SSO单点登录限制

前言 为什么使用JWT&#xff1f; Jwt提供了生成token以及token验证的方法&#xff0c;而token是一种不用存储在服务端&#xff0c;只需要由用户携带即可实现认证的一种方式。在介绍JWT之前&#xff0c;我们也应该先了解cookie和session。 Cookie和Session 为每一位用户设定…

PLSQL Developer 代码助手卡顿优化

支持付费优化 原因分析 代码助手卡顿来源于&#xff08;不考虑网络和软件版本等影响&#xff09; A.从已连接的数据库的数据字典中&#xff0c;读取该表的列信息B.将读取到的列信息返回到plsql编辑器&#xff0c;并进行字符处理&#xff0c;然后显示如何优化B 这个勾勾是维…

【GPLT 二阶题目集】L2-034 口罩发放

为了抗击来势汹汹的 COVID19 新型冠状病毒&#xff0c;全国各地均启动了各项措施控制疫情发展&#xff0c;其中一个重要的环节是口罩的发放。 某市出于给市民发放口罩的需要&#xff0c;推出了一款小程序让市民填写信息&#xff0c;方便工作的开展。小程序收集了各种信息&#…