首页 > 其他分享 >splunk 自定义SPL命令关联威胁情报数据

splunk 自定义SPL命令关联威胁情报数据

时间:2023-04-17 15:04:35浏览次数:45  
标签:自定义 get ip format SPL result splunk dict data

通过自定义SPL命令关联微步情报数据,效果如下:

splunk 自定义SPL命令关联威胁情报数据_自定义

 

 

1、安装splunk-sdk

cd /data/splunk/etc/apps/search/bin
pip3 install -t . splunk-sdk

2、自定义脚本开发

[root@SIEM-P-VC-A001 bin]# more threatquery.py 
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
from splunklib.searchcommands import dispatch, StreamingCommand, Configuration, Option, validators
from splunklib import six
import requests
import urllib3
urllib3.disable_warnings()

proxies={
    "http":"xxxx:808",
    "https":"xxxxx:808"
}
 
url = "https://api.threatbook.cn/v3/scene/ip_reputation"
apikey="xxxxxxxxx"

def get_ip_info(ip): 
    query = {
        "apikey":apikey,
        "resource":ip
    }
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0'}
    response = requests.post(url,headers=headers,params=query,verify=False,proxies=proxies)
    get_result = response.json()
    if str(get_result).count("data")!=0:
        dict = {}
        dict['severity'] = get_result['data']['{}'.format(ip)]['severity']
        dict['judgments'] = str(get_result['data']['{}'.format(ip)]['judgments'] )
        dict['tags_classes']=str(get_result['data']['{}'.format(ip)]['tags_classes'] )
        dict['country']= get_result['data']['{}'.format(ip)]['basic']['location']['country']
        dict['province'] = get_result['data']['{}'.format(ip)]['basic']['location']['province']
        dict['city'] = get_result['data']['{}'.format(ip)]['basic']['location']['city']
        dict['scene'] = get_result['data']['{}'.format(ip)]['scene']
        dict['confidence_level'] = get_result['data']['{}'.format(ip)]['confidence_level']
        dict['is_malicious'] = get_result['data']['{}'.format(ip)]['is_malicious']
        dict['update_time']=get_result['data']['{}'.format(ip)]['update_time']
        return dict

 
@Configuration()
class TestCMD(StreamingCommand):
    ip=Option(require=True, validate=validators.Fieldname())
    def stream(self, records):
        for record in records:
            get_result=get_ip_info(record[self.ip])
            if get_result!=None:
                record["result"]=get_result
            yield record
dispatch(TestCMD, sys.argv, sys.stdin, sys.stdout, __name__)

3、自定义脚本配置

在/data/splunk/etc/apps/search/local 中,新建commands.conf

[root@test]# vi commands.conf 
[threatquery] 
filename = threatquery.py 
python.version = python3
chunked = true

注意:修改完成之后,在浏览器中访问https://splunk服务器地址/debug/refresh,能看到一个Refresh按钮,点击之后平台配置会重新载入,自定义命令就能使用了。不需要执行重启操作。

 

 


微信公众号:Bypass--


标签:自定义,get,ip,format,SPL,result,splunk,dict,data
From: https://blog.51cto.com/bypass/6195188

相关文章

  • Splunk DB Connect 连接MySQL报错CLIENT_PLUGIN_AUTH is required
    01、问题描述使用SplunkDBConnect连接MySQL数据库读库时,报错CLIENT_PLUGIN_AUTHisrequired,如下图:02、原因分析根据报错信息,查阅相关资料,了解到报错原因:目标数据库为MySQL5.7,使用的mysql-connector-java-8.0.28.jar,mysql的jar包版本过高。JDBC数据库驱动程序:mysql-connector-......
  • Dockerfile自定义镜像
    常见的镜像在DockerHub就能找到,但是我们自己写的项目就必须自己构建镜像了。镜像结构镜像是将应用程序及其需要的系统函数库、环境、配置、依赖打包而成。我们以MySQL为例,来看看镜像的组成结构:简单来说,镜像就是在系统函数库、运行环境基础上,添加应用程序文件、配置文件、......
  • 在.NET 6.0中自定义接口路由
    大家好,我是张飞洪,感谢您的阅读,我会不定期和你分享学习心得,希望我的文章能成为你成长路上的垫脚石,让我们一起精进。在本文中,我们将讨论ASP.NETCore中的新路由。我们将了解什么是接口(endpoints)路由,它是如何工作的,它在哪里使用,以及如何创建自己的路由。本文主题:探索接口路由......
  • Java中线程的常用操作-后台线程、自定义线程工厂ThreadFactpry、join加入一个线程、线
    场景Java中Thread类的常用API以及使用示例:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126596884上面讲了Thread的常用API,下面记录下线程的一些常用操作。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现后台线程后台线程,是指运行时在后台提供的一......
  • 网络安全工程师教你:Kali Linux之Metasploit渗透测试基础(四)
    本分享仅做学习交流,请自觉遵守法律法规!搜索:Kali与编程,学习更多网络攻防干货!下篇文章将在明天下午五点发布,敬请关注!Metasploit渗透测试框架基础(四)一、背景介绍Metasploit就是一个漏洞框架。它的全称叫做TheMetasploitFramework,简称叫做MSF。Metasploit作为全球最受欢迎的工具,不......
  • 自定义数据类型
    内置类型---intshortchardoubleflaot---C语言自己的类型复杂类型---结构体,枚举,联合体---自己创造的类型结构体结构体类型引用声明结构体是一些值的集合,这些值可以是不同类型。structStu//如果不屑Stu就是匿名结构体类型{ member-list;//--成员列表}Variable-list;//变量列表......
  • docker 构建自定义镜像
    1、docker构建自定义镜像copy与add的区别copy指令和add指令的唯一区别在于:是否支持从远程URL获取资源。COPY指令只能从执行dockerbuild所在的主机上读取资源并复制到镜像中。而ADD指令还支持通过URL从远程服务器读取资源并复制到镜像中。相同需求时,推荐使用COPY指令。ADD指令更......
  • Qt5.9 UI设计(四)——布局设计及自定义界面
    前言前面我们已经创建了mainwindowControlTabWidgetControlTreeWidgetmaintitlebar4个UI几面,我们需要将其他三个UI放置到mainwindow显示,同时需要它们可以自适应的界面的大小缩放。这里会使用到水平布局和垂直布局方法。(一)主界面布局设计放置一个空的widget将mainwi......
  • nginx自定义负载均衡及根据cpu运行自定义负载均衡
    转载请注明出处:1.nginx如何自定义负载均衡在Nginx中,可以通过配置文件自定义负载均衡策略。具体步骤如下:首先,在Nginx配置文件中定义一个upstream模块,并设置负载均衡策略和后端服务器列表,例如:upstreammyapp{serverbackend1.example.comweight=3;server......
  • MybatisPlusGenrator 代码生成器官方文档 运行不了?
    有dataSourceConfig就报错直接删掉......