这是我发布堆栈溢出的第一篇文章。所以我是一个超级菜鸟。我正在编写一个脚本来读取文件(与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
以下是我要解决的问题:
我希望输出在输出文件中每行有一个IP地址,MD5或域。
一些妥协指标因括号内的安全性而被混淆。防爆1。 [http:] // www.mcafeea [。] cf / tools.zip,Ex-2.118.99.37 [。] 190。我需要删除括号,所以我不会错过IP。
我的域名正则表达式匹配文件名和域。防爆1。 stuff.dll,Ex-2。 SETUP.EXE 我想将所有TLD(顶级域名)作为列表阅读,并使用TLD列表将域与文件名分开。
答案 0 :(得分:0)
我知道这有点晚了,但我可以回答你的问题。
问题1和3:有一个python包可以解析文本中的IOC(妥协指标):https://github.com/fhightower/ioc-finder。此程序包中主机名的正则表达式包含有效TLD列表。
问题2:要删除对妥协指标的混淆(称为" fanging"或"重新布线"的过程),有一个包要以健全和系统的方式做到这一点:https://github.com/ioc-fang/ioc_fanger(完全披露,我是这个包的工作人员)。该软件包是一项正在进行的工作,如果您有任何想法,可随意提出问题。