一、什么是病毒情报
病毒情报(Virus Intelligence)指的是关于计算机病毒和恶意软件的信息和情报数据。它是针对恶意软件的研究、分析和监测的结果,用于了解和对抗不断变化和演化的威胁。
二、病毒情报对企业有什么用
病毒情报对企业来说是关键的安全资源,它提供了关于当前和新兴威胁的信息,帮助企业了解各种恶意软件、攻击向量和攻击手法。这使企业能够更好地了解威胁环境,并根据最新的威胁情报来改进其安全防御策略。
三、背景需求
正常情况下,企业的病毒情报依赖于安全厂家设备自带的 ioc,然后通过月度或者季度,或者牛一点的就每天对 ioc 库进行更新。那遇到新发现的病毒情报,厂家肯定无法实时更新然后同步到企业。所以我决定自己动手。
然后我的思路是这样的, 通过以下四个步骤来完成我的自动化闭环运营。
四、实践
开始动手起来。首先肯定是获取情报源,然后进行评估,再确认。
1、获取情报源。
目前我使用的源是 MalwareBazaar 跟 Abuseipdb ,当然后续有新的或者更好的还会不断添加。
2、为什么使用他们?
- MalwareBazaar:
它是一个公开的恶意软件样本库和情报平台,我们可以访问大量的恶意软件样本,并与其他专业人士共享他们的分析结果和发现,这种协作和知识共享的方式有助于更好地了解恶意软件的行为。它不仅提供了恶意软件样本的下载,还包含了样本的元数据、文件哈希值、IOC 等信息。最重要的是,支持 API。
- 抽样评估:
从 MalwareBazaar 抽取其中一个 ioc,时间:2023-02-07 01:45:50
某步云在线结果:没有新样本更新
某60沙箱:时间:2023-02-07 09:48:52。稍微慢了 8 h 左右
某信沙箱:时间:2023-02-08 07:41:41。稍微慢了 30 h 左右
vt 沙箱:时间:2023-02-08 13:40:23 。稍微慢了 36 h 左右
很明显,这些的时间都慢 MalwareBazaar
-
Abuseipdb
它是一个专注于帮助打击网络上的黑客、垃圾邮件和滥用行为的项目。它提供了一个中央黑名单,供网站管理员、系统管理员和其他感兴趣的人员报告和查询涉嫌恶意活动的 IP 地址。同样 AbuseIPDB 也支持API。 -
对新报告恶意 IP 地址进行抽样评估
某步:
某60
某信
2、提取 ioc
这一步的操作路线是这样的
提取 ioc,我这里用的是通过 python 调用 API 来实现的,这里的存储需要好好想一下。因为想要做到全自动化,我们必须把 ioc 存储到其他提取 ioc 的设备能够访问到的地方,再加上要考虑度量,每个月每个季度能获取多少 ioc,然后这里选择用了 jira。
MalwareBazaar 部分代码如下
response = requests.post('https://mb-api.abuse.ch/api/v1/', data=data, timeout=30, headers=headers,proxies=proxies)
json_response = response.json()
if(args.field):
query = ".data[]." + args.field
json_response = jq(query).transform(text=json_response, text_output=True)
today = datetime.today()
yesterday_9 = (today - timedelta(days=1)).replace(hour=9, minute=0, second=0, microsecond=0)
today_9 = today.replace(hour=9, minute=0, second=0, microsecond=0)
results = []
for i in range(len(json_response['data'])):
data_time = datetime.strptime(json_response['data'][i]['first_seen'], '%Y-%m-%d %H:%M:%S')
if yesterday_9 <= data_time < today_9:
first_seen = "first_seen: " + json_response['data'][i]['first_seen']
sha256_hash = "sha256_hash: " + json_response['data'][i]['sha256_hash']
sha1_hash = "sha1_hash: " + json_response['data'][i]['sha1_hash']
md5_hash = "md5_hash: " + json_response['data'][i]['md5_hash']
file_type = "file_type: " + json_response['data'][i]['file_type']
testttt = first_seen + "\n" + sha256_hash + "\n" + sha1_hash + "\n" + md5_hash + "\n" + file_type + "\n"
results.extend(testttt.splitlines())
取了每天 9 点到第二天 9 点的,因为默认设置 9 点自动化运行,然后再将获取到的 ioc 贴到 jira 就完事了,大致效果如下。
Abuseipdb 部分代码如下
url = "https://www.abuseipdb.com/statistics"
re= requests.get(url)
re.encoding="utf-8"#改为utf-8格式,不然可能读取到的是乱码
selector=etree.HTML(re.text)#解析网站,变成HTML格式
xPath1 = "/html/body/div[3]/div/div/div/div/div[4]//text()"
xPath2 = "/html/body/div[3]/div/div/div/div/div[5]//text()"
xPath3 = "/html/body/div[3]/div/div/div/div/div[6]//text()"
xPath4 = "/html/body/div[3]/div/div/div/div/div[7]//text()"
xPath5 = "/html/body/div[3]/div/div/div/div/div[8]//text()"
widelyIP=selector.xpath("/html/body/div[3]/div/div/div/div/aside[1]//text()")
recentlyIP=selector.xpath(xPath1)+selector.xpath(xPath2)+selector.xpath(xPath3)+selector.xpath(xPath4)+selector.xpath(xPath5)
效果如下
接下来就交给 SOAR 了,让它提取工单 ioc 对设备进行赋能,然后抽验检验 ioc 对 jira 工单进行闭环,soar 的流程图如下
五、自动化运营
通过上面的自动化操作,我完成了病毒情报的自动化闭环运营。
1、每天定时自动化获取 IOC
2、存储 jira 工单便于度量
3、SOAR 自动化提取赋能安全设备
4、SOAR 自动化验证闭环 JIRA 工单。
最终效果流程如下: