“驱动人生”供应链攻击事件的部分技术补充分析[安全新闻]
本文““驱动人生”供应链攻击事件的部分技术补充分析[安全新闻]”是由安全黑客为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
背景简单介绍
12月末,一个朋友跟我说有个样本,让帮忙分析一下。花了一点儿时间分析了样本,发现这个样本来自一个通过修改永恒之蓝攻击脚本传播挖矿木马的攻击流程。准备投稿之前手贱搜索了一下样本中比较有特征的字符串 “password12” 和 “HSKALWOEDJSLALQEOD”,然后确认这个事件和火绒首先披露的驱动人生供应链攻击事件应该是同一事件。庆幸自己没有脑子一热直接提交之余,内心之中还是有点儿可惜。
拜读了火绒的分析报告,为他们比较迅速的响应速度点赞!同时,在已经对样本做了分析之后觉得:可能是事出仓促,有些技术点火绒以及后续腾讯的报告中没有体现。所以这里把整理的一些技术分析稍作补充。虽说是狗尾续貂,但是绝无蹭热度的想法。公开这部分内容的目的在于把分析所得转化有价值的信息,呈现给对此事关注的安全爱好者和研究人员,仅此而已。
样本分析
从第一个样本说起
拿到的第一个样本名称是svvhost.exe(也就是MS17-010漏洞扫描的样本),样本大小4M多,所以看一下资源。
这样结果就很明了了,这是一个py2exe生成的样本。所以下一步工作是提取样本里的python脚本。
关于脚本提取的方法,可以用python的PEFile库去解析PE文件,提取PYTHONSCRIPT资源,也可以用工具把资源dump出来。提取过后,几行简单的脚本就可以还原出python代码了。下面的这个函数就可以完成PYTHONSCRIPT流的解析工作。
下面一段代码可以检测并提取Py2exe编译程序中的PYTHONSCRIPT对象。
class PythonExecutable_parse(object):
def __init__(self, filename, check_option = False):
self.python_version = 0.0
if os.path.exists(filename):
self.filename = filename
self.check = check_option
self.fptr = open(filename, "rb")
else:
raise Exception("File not found")
sys.exit(1)
def executable_check(self):
try:
pe_file = pefile.PE(self.filename)
except:
#check for PYTHONSCRIPT format
file_data = self.fptr.read()
if b'x12x34x56x78' == file_data[:4]:
return ("PYTHONSCRIPT", file_data)
#can not support for python 3.x currently
else:
return ("NOT_PE", None)
#check for py2exe foamrt file
if hasattr(pe_file, "DIRECTORY_ENTRY_RESOURCE"):
for entry in pe_file.DIRECTORY_ENTRY_RESOURCE.entries:
#get python script version from pythonx.x.dll
if str(entry.name).endswith(".DLL"):
self.python_version = int(str(entry.name)[6:8])
if str(entry.name) == "PYTHONSCRIPT":
script_resourse = entry.directory.entries[0].directory.entries[0]
if script_resourse != None:
pythonscript = pe_file.get_data(script_resourse.data.struct.OffsetToData, script_resourse.data.struct.Size)
以上是““驱动人生”供应链攻击事件的部分技术补充分析[安全新闻]”的内容,如果你对以上该文章内容感兴趣,你可以看看安全黑客为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |