通过订阅网上公开的恶意ip库(威胁情报),与SIEM平台中网络流量日志进行匹配,获得安全事件告警。

比如,这里有一个malware urls数据下载的网站,每天更新一次:

https://urlhaus.abuse.ch/browse/

下载urlhaus里恶意url数据,https://urlhaus.abuse.ch/downloads/text/, 稍微整理一下,做成一个csv格式的文件,方便导入splunk:

添加nslookup file:

Settings >> Lookups » Lookup table files » Add new

用rest command查看lookup file 添加是否正确:

| inputlookup myiptest.csv

假设现在有ids日志,此日志包含经过ids的内外网连接,其中src_ip为内网ip,dest_ip为外网目的ip:

sourcetype=ids_log_1 |table src_ip,dest_ip

现在对ids的dest_ip字段和myiptest.csv的threatdomain 字段进行匹配:

sourcetype=ids_log_1 [| inputlookup myiptest.csv | rename threatdomain as dest_ip | table dest_ip]

命中两条记录:

现在完成一次搜索,然后继续将这个流程自动化,这里涉及到Splunk Summary Index的概念:

Summary index的工作机制其实很简单,它本质上和其他索引没有区别,只不过里面存储的数据是定期运行的saved search的统计结果。通过定期运行的saved search,SPLUNK可以将一个较短时间间隔特定事件的统计结果存储到summary index中,通过合理的统计时段和搜索运行计划配置,所有时间段的事件统计结果都将无一疏漏地纪录下来。这样在需要统计过去一年这样长时段的事件时,通过summary index就可以很快速的把所有统计结果汇总,从而得到最终的结果。这正所谓积硅步以致千里,聚细流以成江海。

From http://splunk.10data.com/如何使用summary-index-加速搜索和生成报表/

创建一个summary index:

添加一个saved search, 可以60分钟执行一次,每次执行60分钟到now的数据:

Settings>>Searches, reports, and alerts » Add new

http://localhost:8000/en-US/manager/search/data/indexes/_new

选择使用summary indexing, 写入刚才创建的security_event_hub index里面:

保存完成,坐等安全告警:

index="security_event_hub"

最后可以将安全告警推送到工单系统,新的告警在工单系统中解决掉,这就完成一整个Use Case流程。

附代码举例:

Splunk Rest api 添加Lookup file :

#!/usr/bin/python -u

import urllib
import httplib2
from xml.dom import minidom
import time
import json # The same python implementation for curl function
'''
import requests
from xml.dom import minidom
userName = 'admin'
password = 'xiaoxiaoleo'
baseurl = '127.0.0.1:8089' session = requests.Session()
session.auth = (userName, password) #auth = session.post('https://' + baseurl, verify=False)
data = {'username':userName, 'password':password}
req = session.post('https://' + baseurl + '/services/auth/login', data=data, verify=False)
session_key = minidom.parseString(req.text).getElementsByTagName('sessionKey')[0].childNodes[0].nodeValue print(session_key)
headers = {"Content-Type": "application/xml", 'Authorization': 'Splunk %s' % session_key} def addlookup():
data = {'name': 'haha.csv','eai:data' : 'C:\\Program Files\\Splunk\\var\\run\\splunk\\lookup_tmp\\abuse_20190215T1418.csv'}
req = requests.post('https://127.0.0.1:8089/servicesNS/nobody/search/data/lookup-table-files/geo_attr_us_states.csv', headers=headers, data=data, verify=False)
print(req.text) if __name__ == '__main__':
addlookup()

获取urlhaus.abuse.ch的ip地址列表并写入csv:

import json
import requests
from datetime import datetime, timedelta search_command = '' def get_abusechrul():
domain_list = []
url_list = []
req = requests.get('https://urlhaus.abuse.ch/downloads/text/') body = req.text
for i in body.split('\r\n'):
if i.startswith('#'):
continue
domain = i.split("//")[-1].split("/")[0].split(':')[0]
url = i.replace("http://", "")
url = url.replace("https://", "")
url_list.append(url)
domain_list.append(domain)
return domain_list, url_list def generate_csv(source_name, domain_list, url_list):
now = datetime.utcnow() + timedelta(hours=8)
timestamp = now.strftime('%Y%m%dT%H%M.csv')
filename = '%s_%s' % (source_name, timestamp)
with open(filename, "wb") as csv_file:
csv_file.write('threatdomain' + '\n')
csv_file.writelines('91.189.91.26' + '\n')
for line in domain_list:
csv_file.write(line + '\n') if __name__ == '__main__':
domain_list, url_list = get_abusechrul()
generate_csv('abuse', domain_list,url_list)
#print cmd1

使用SPLUNK进行简单Threat Hunting的更多相关文章

  1. splunk 索引过程

    术语: Event :Events are records of activity in log files, stored in Splunk indexes. 简单说,处理的日志或话单中中一行记录 ...

  2. 构建基于Suricata+Splunk的IDS入侵检测系统

    一.什么是IDS和IPS? IDS(Intrusion Detection Systems):入侵检测系统,是一种网络安全设备或应用软件,可以依照一定的安全策略,对网络.系统的运行状况进行监视,尽可能 ...

  3. Magic Quadrant for Security Information and Event Management

    https://www.gartner.com/doc/reprints?id=1-4LC8PAW&ct=171130&st=sb Summary Security and risk ...

  4. NET Core微服务之路:简单谈谈对ELK,Splunk,Exceptionless统一日志收集中心的心得体会

    前言 日志,一直以来都是开发人员和运维人员最关心的问题.开发人员可通过日志记录来协助问题定位,运维人员可通过日志发现系统隐患,故障等定位问题.如果你的系统中没有日志,就像一个断了线的风筝,你永远不知道 ...

  5. Splunk及splunkforward简单部署配置

    部署环境 操作系统 服务器操作系统版本:CentOS release 6.5 (Final) 2.6.32-431.el6.x86_64 软件 软件版本:splunk-6.4.0 tar: splun ...

  6. Splunk 简单笔记

    Splunk Notes source="c:\logs\abc.log" | rex field=url "(?<=\/)(?<ApiId>\w+?) ...

  7. bing的简单英文字典工具

    今天看到园友心白水撰写的<简单翻译工具--必应字典第三方API使用方法>,感觉很不错,所以用Python也写了一个.源码如下: import urllib.request import j ...

  8. logstash VS splunk

    web 系统是典型的分布式部署,由此对其运行状况,硬件运转情况监控也显得尤为重要,这些监控数据表面上对业务运行没有多大的用处(属于基础数据),但正是这些基础数据形成了业务“流”.比如,用户搜索爱好,浏 ...

  9. Threat Risk Modeling Learning

    相关学习资料 http://msdn.microsoft.com/en-us/library/aa302419(d=printer).aspx http://msdn.microsoft.com/li ...

随机推荐

  1. Oracle schema 的含义

    方案(Schema)为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,sc ...

  2. ADB抓取日志和日志过滤

    建议抓取日志之前先清除缓存的log数据:adb logcat -c 网上有人介绍可以这样写:adb logcat -c && adb logcat 1.使用V.D.I.W.E.F.S优 ...

  3. day06 小数据池和编码

    一. 上次课内容回顾字典:由{}括起来. 每个元素用逗号隔开, key:value的形式存储数据key: 不可变的. 可哈希的.增删改查:1. 增加: 直接用新key来赋值. dict[key] = ...

  4. React安装React Devtools调试工具

    在运行一个React项目的时候浏览器控制台会提醒你去安装react devtools调试工具. Download the React DevTools for a better development ...

  5. 洛谷P3938 斐波那契

    题目戳 题目描述 小 C 养了一些很可爱的兔子. 有一天,小 C 突然发现兔子们都是严格按照伟大的数学家斐波那契提出的模型来进行 繁衍:一对兔子从出生后第二个月起,每个月刚开始的时候都会产下一对小兔子 ...

  6. 9个基于Java的搜索引擎

    1.Java 全文搜索引擎框架 Lucene 毫无疑问,Lucene是目前最受欢迎的Java全文搜索框架,准确地说,它是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎.Luc ...

  7. 洛谷 P1013 进制位 【搜索 + 进制运算】

    题目描述 著名科学家卢斯为了检查学生对进位制的理解,他给出了如下的一张加法表,表中的字母代表数字. 例如: + L K V E L L K V E K K V E KL V V E KL KK E E ...

  8. 【OpenCV】特征检测器 FeatureDetector

    <SIFT原理与源码分析>系列文章索引:http://www.cnblogs.com/tianyalu/p/5467813.html OpenCV提供FeatureDetector实现特征 ...

  9. 【转】虚拟机克隆之后,网卡名称从eth0变成eth1之后的解决办法

    使用VMware安装了CentOS虚拟机,克隆之后使用service network restart指令来重新启动网络服务时,会看到有eth0网卡不存在的提示.   出现这种现象的原因是,很多Linu ...

  10. ios 虚拟机中文件下载路径

    每个人mac上的路径会有不同,你可以打印出你文件下载存放的路径,然后拷贝一下,再单击桌面空白处,最上面的导航栏上有个“前往”,然后找到“前往文件夹”,粘贴一下,就可以找到了.