【网络法医】恶意软件分析

【网络法医】恶意软件分析

1.yara离线分析

安装yara:

bash 复制代码
sudo apt-get install -y yara

可以使用此脚本从 github 下载并合并所有 yara 恶意软件规则(脚本地址):

python 复制代码
#!/usr/bin/env python
# encoding: utf-8

import os
import shutil

def get_rules_from_git():
	shutil.rmtree("./rules")
	os.system("git clone https://github.com/Yara-Rules/rules.git")

def list_yara_files():
	all_yara_files = []
	for root, directories, filenames in os.walk("./rules/malware"):
		print ("Processing " + root)
		filenames.sort()
		for file_name in filenames:
			rule_filename, rule_file_extension = os.path.splitext(file_name)
			if rule_file_extension == ".yar" or rule_file_extension == ".yara":
				all_yara_files.append(os.path.join(root, file_name))
	return all_yara_files

def remove_incompatible_imports(files):
	filtered_files = []
	for yara_file in files:
		with open(yara_file, 'r') as fd:
			yara_in_file = fd.read()
			if not (("import \"math\"" in yara_in_file) or ("import \"cuckoo\"" in yara_in_file) or ("import \"hash\"" in yara_in_file) or ("imphash" in yara_in_file)):
				filtered_files.append(yara_file)
	return filtered_files

def fix_duplicated_rules(files):
	filtered_files = []
	first_elf = True
	to_delete = False
	for yara_file in files:
		print ("Processing " + yara_file)
		with open(yara_file, 'r') as fd:
			yara_in_file = fd.readlines()
			for line in yara_in_file:
				if line.strip() == "private rule is__elf {":
					if first_elf:
						first_elf = False
					else:
						to_delete = True
				if not to_delete:
					filtered_files.append(line)
				if (not first_elf) and line.strip() == "}":
					to_delete = False
			filtered_files.append("\n")
	return filtered_files

def merge_rules(all_rules):
	with open("malware_rules.yar", 'w') as fd:
		fd.write(''.join(all_rules))

def main():
	get_rules_from_git()
	all_yara_files = list_yara_files()
	all_yara_filtered_1 = remove_incompatible_imports(all_yara_files)
	all_yara_filtered_2 = fix_duplicated_rules(all_yara_filtered_1)
	merge_rules(all_yara_filtered_2)

# Main body
if __name__ == '__main__':
	main()

之后,执行命令,将创建一个名为malware_rules.yar的文件,其中包含所有恶意软件的 yara 规则:

bash 复制代码
mkdir rules
python malware_yara_rules.py

最后,使用yara工具进行离线恶意软件分析:

bash 复制代码
yara -w malware_rules.yar image  # Scan 1 file
yara -w malware_rules.yar folder # Scan the whole folder

2.ClamAV离线分析

1、安装:

bash 复制代码
sudo apt-get install -y clamav

2、识别:

bash 复制代码
sudo freshclam      # Update rules
clamscan filepath   # Scan 1 file
clamscan folderpath # Scan the whole folder

3.YaraGen离线分析

1、下载YaraGen:

bash 复制代码
https://github.com/Neo23x0/yarGen

2、识别风险:

bash 复制代码
python3 yarGen.py --update
python3 yarGen.py --excludegood -m  ../../mals/

4.Loki离线分析

1、下载Loki

bash 复制代码
https://github.com/Neo23x0/Loki

2、检测基于四种检测方法:

bash 复制代码
1. File Name IOC
   完整文件路径/名称的正则表达式匹配

2. Yara Rule Check
   Yara 规则与文件数据和进程内存匹配

3. Hash Check
   将已知的恶意哈希值(MD5、SHA1、SHA256)与扫描的文件进行比较

4. C2 Back Connect Check
   将流程连接端点与 C2 IOC 进行比较

5.rkhunter rootkit离线分析

可以使用rkhunter工具来检查文件系统中是否存在可能的rootkit和恶意软件

官方网站:https://rkhunter.sourceforge.net/


6.PEstudio Windows恶意软件分析

可以获取 Windows 可执行文件的信息,并进行恶意软件的识别

下载地址:https://www.winitor.com/download

运行效果如图:


7.DiE恶意文件分析

Detect It Easy (DiE)是一款功能强大的文件类型识别工具,深受全球恶意软件分析师、网络安全专家和逆向工程师的喜爱。DiE 支持基于签名和启发式分析,可在包括Windows、Linux 和 MacOS在内的各种平台上高效地检查文件

下载地址:https://github.com/horsicq/Detect-It-Easy/

运行效果如图:


8.FLOSS混淆字符串识别

FLARE 混淆字符串求解器使用高级静态分析技术自动从恶意软件二进制文件中提取和反混淆所有字符串

flare-floss

使用示例:

1、从恶意软件二进制文件中提取混淆的字符串

bash 复制代码
floss malware.exe

2、仅提取堆栈和紧密字符串

bash 复制代码
floss --only stack tight -- suspicious.exe

3、不提取静态字符串

bash 复制代码
floss --no static -- backdoor.exe
相关推荐
nixiaoge1 小时前
RCE漏洞
网络安全
禾木KG1 小时前
网络安全-等级保护(等保) 1-0 等级保护制度公安部前期发文总结
网络安全
网络抓包与爬虫2 小时前
Wireshark——抓包分析
websocket·网络协议·tcp/ip·http·网络安全·https·udp
zhu12893035563 小时前
网络安全的重要性与防护措施
网络·安全·web安全
仙女很美哦3 小时前
Flutter视频播放、Flutter VideoPlayer 视频播放组件精要
websocket·网络协议·tcp/ip·http·网络安全·https·udp
渗透测试老鸟-九青3 小时前
面试经验分享 | 成都渗透测试工程师二面面经分享
服务器·经验分享·安全·web安全·面试·职场和发展·区块链
网络研究院3 小时前
ChatGPT 的新图像生成器非常擅长伪造收据
网络·人工智能·安全·chatgpt·风险·技术·欺诈
CYRUS STUDIO4 小时前
Unidbg Trace 反 OLLVM 控制流平坦化(fla)
android·汇编·算法·网络安全·逆向·ollvm
写代码的小王吧4 小时前
【Java可执行命令】(十)JAR文件签名工具 jarsigner:通过数字签名及验证保证代码信任与安全,深入解析 Java的 jarsigner命令~
java·开发语言·网络·安全·web安全·网络安全·jar