【网络法医】恶意软件分析
【网络法医】恶意软件分析
- 1.yara离线分析
- 2.ClamAV离线分析
- 3.YaraGen离线分析
- 4.Loki离线分析
- 5.rkhunter rootkit离线分析
- 6.PEstudio Windows恶意软件分析
- 7.DiE恶意文件分析
- 8.FLOSS混淆字符串识别
1.yara离线分析
安装yara:
sudo apt-get install -y yara
可以使用此脚本从 github 下载并合并所有 yara 恶意软件规则(脚本地址):
#!/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 规则:
mkdir rules
python malware_yara_rules.py
最后,使用yara工具进行离线恶意软件分析:
yara -w malware_rules.yar image # Scan 1 file
yara -w malware_rules.yar folder # Scan the whole folder
2.ClamAV离线分析
1、安装:
sudo apt-get install -y clamav
2、识别:
sudo freshclam # Update rules
clamscan filepath # Scan 1 file
clamscan folderpath # Scan the whole folder
3.YaraGen离线分析
1、下载YaraGen:
https://github.com/Neo23x0/yarGen
2、识别风险:
python3 yarGen.py --update
python3 yarGen.py --excludegood -m ../../mals/
4.Loki离线分析
1、下载Loki
https://github.com/Neo23x0/Loki
2、检测基于四种检测方法:
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、从恶意软件二进制文件中提取混淆的字符串
floss malware.exe
2、仅提取堆栈和紧密字符串
floss --only stack tight -- suspicious.exe
3、不提取静态字符串
floss --no static -- backdoor.exe