Python脚本在txt文件中查找Compromise指标并将结果写入文本文件

时间:2015-08-27 07:06:02

标签: python

这是我发布堆栈溢出的第一篇文章。所以我是一个超级菜鸟。我正在编写一个脚本来读取文件(与maiware分析相关的电子邮件),然后使用正则表达式来识别IP地址,MD5哈希值和域名。

到目前为止,这是我的脚本:

import re # import the regex library

fobj = open('email_with_IOCs.txt', 'r') # open the file to search for IOCs

text = fobj.read() # read the IOC file

ip_address = re.findall('\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}', text) # find all the IPs
md5hash = re.findall('[a-fA-F0-9]{32}', text) # find all the MD5
domain = re.findall('[a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}', text) # find all the domains

iocs = open('iocs.txt', 'w') # open a file to write to
iocs.write(str(ip_address) + str(md5hash) + str(domain) + '\n' ) # write all the IOCs to a file

fobj.close() # close the input file
iocs.close() # close the output file

以下是我要解决的问题:

  1. 我希望输出在输出文件中每行有一个IP地址,MD5或域。

  2. 一些妥协指标因括号内的安全性而被混淆。防爆1。 [http:] // www.mcafeea [。] cf / tools.zip,Ex-2.118.99.37 [。] 190。我需要删除括号,所以我不会错过IP。

  3. 我的域名正则表达式匹配文件名和域。防爆1。 stuff.dll,Ex-2。 SETUP.EXE 我想将所有TLD(顶级域名)作为列表阅读,并使用TLD列表将域与文件名分开。

1 个答案:

答案 0 :(得分:0)

我知道这有点晚了,但我可以回答你的问题。

问题1和3:有一个python包可以解析文本中的IOC(妥协指标):https://github.com/fhightower/ioc-finder。此程序包中主机名的正则表达式包含有效TLD列表。

问题2:要删除对妥协指标的混淆(称为" fanging"或"重新布线"的过程),有一个包要以健全和系统的方式做到这一点:https://github.com/ioc-fang/ioc_fanger(完全披露,我是这个包的工作人员)。该软件包是一项正在进行的工作,如果您有任何想法,可随意提出问题。