hacktricks/forensics/basic-forensic-methodology/malware-analysis.md
2023-08-03 19:12:22 +00:00

16 KiB
Raw Blame History

恶意软件分析

☁️ HackTricks 云 ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

取证备忘单

https://www.jaiminton.com/cheatsheet/DFIR/#

在线服务

离线杀毒和检测工具

Yara

安装

sudo apt-get install -y yara

准备规则

使用此脚本从 GitHub 下载并合并所有的 YARA 恶意软件规则:https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9
创建名为 rules 的目录并执行该脚本。这将创建一个名为 malware_rules.yar 的文件,其中包含所有的恶意软件 YARA 规则。

wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py
mkdir rules
python malware_yara_rules.py

扫描

Performing a thorough scan of the system is an essential step in malware analysis. The purpose of the scan is to identify any suspicious files, processes, or network connections that may indicate the presence of malware.

执行系统的彻底扫描是恶意软件分析中的一个重要步骤。扫描的目的是识别可能表明恶意软件存在的任何可疑文件、进程或网络连接。

There are several tools and techniques that can be used for scanning, including antivirus software, network monitoring tools, and file analysis tools. These tools can help identify known malware signatures, detect abnormal behavior, and analyze the structure and content of suspicious files.

有几种工具和技术可用于扫描,包括防病毒软件、网络监控工具和文件分析工具。这些工具可以帮助识别已知的恶意软件签名,检测异常行为,并分析可疑文件的结构和内容。

During the scan, it is important to collect as much information as possible about the suspicious files or processes. This includes file hashes, process IDs, network connections, and any other relevant details. This information will be useful for further analysis and investigation.

在扫描过程中收集有关可疑文件或进程的尽可能多的信息非常重要。这包括文件哈希、进程ID、网络连接和其他相关细节。这些信息将有助于进一步的分析和调查。

Once the scan is complete, the results should be carefully reviewed and analyzed. Any identified malware or suspicious activity should be further investigated to determine its nature, impact, and potential mitigation strategies.

扫描完成后,应仔细审查和分析结果。任何已识别的恶意软件或可疑活动都应进一步调查,以确定其性质、影响和潜在的缓解策略。

yara -w malware_rules.yar image  #Scan 1 file
yara -w malware_rules.yar folder #Scan the whole folder

YaraGen: 检查恶意软件并创建规则

您可以使用工具YaraGen从二进制文件生成yara规则。查看这些教程第1部分第2部分第3部分

python3 yarGen.py --update
python3.exe yarGen.py --excludegood -m  ../../mals/

ClamAV

安装

To install ClamAV, you can use the following command:

sudo apt-get install clamav

After the installation is complete, you can update the virus database by running the following command:

sudo freshclam

Scanning Files

To scan a specific file or directory, use the following command:

clamscan [file/directory]

For example, to scan a file named malware.exe, you would run:

clamscan malware.exe

Scanning the Entire System

To scan the entire system, use the following command:

clamscan -r /

This will recursively scan all files and directories starting from the root directory (/).

Quarantine Infected Files

If ClamAV detects any infected files, you can quarantine them using the following command:

clamscan --remove [file/directory]

For example, to quarantine a file named malware.exe, you would run:

clamscan --remove malware.exe

Updating ClamAV

To update ClamAV to the latest version, use the following command:

sudo apt-get update && sudo apt-get upgrade clamav

Conclusion

ClamAV is a powerful antivirus tool that can help you detect and remove malware from your system. By following the steps outlined in this guide, you can install ClamAV, scan files and directories, quarantine infected files, and keep ClamAV up to date.

sudo apt-get install -y clamav

扫描

Performing a scan is an essential step in malware analysis. It helps to identify and gather information about the malware sample. There are various scanning techniques that can be used, such as static analysis and dynamic analysis.

进行扫描是恶意软件分析的重要步骤。它有助于识别和收集有关恶意软件样本的信息。可以使用各种扫描技术,如静态分析和动态分析。

Static Analysis

静态分析

Static analysis involves examining the malware sample without executing it. This can be done by analyzing the file's structure, metadata, and code. Some common static analysis techniques include:

静态分析是在不执行恶意软件样本的情况下对其进行检查。这可以通过分析文件的结构、元数据和代码来完成。一些常见的静态分析技术包括:

  • File signature analysis: Checking the file signature against known malware signatures.

  • 文件签名分析:将文件签名与已知的恶意软件签名进行比对。

  • String analysis: Searching for specific strings or keywords within the file.

  • 字符串分析:在文件中搜索特定的字符串或关键字。

  • Code analysis: Analyzing the code structure and logic to understand its functionality.

  • 代码分析:分析代码结构和逻辑以了解其功能。

  • Metadata analysis: Examining the file's metadata, such as file size, creation date, and author information.

  • 元数据分析:检查文件的元数据,如文件大小、创建日期和作者信息。

Dynamic Analysis

动态分析

Dynamic analysis involves executing the malware sample in a controlled environment to observe its behavior. This can be done using techniques such as:

动态分析涉及在受控环境中执行恶意软件样本以观察其行为。可以使用以下技术来完成:

  • Sandbox analysis: Running the malware in a virtualized environment to monitor its actions and interactions with the system.

  • 沙盒分析:在虚拟化环境中运行恶意软件,以监视其与系统的操作和交互。

  • Debugging: Analyzing the malware's execution using a debugger to trace its behavior and identify any malicious activities.

  • 调试:使用调试器分析恶意软件的执行,以跟踪其行为并识别任何恶意活动。

  • Network analysis: Monitoring the network traffic generated by the malware to understand its communication patterns and potential command and control (C2) servers.

  • 网络分析监视恶意软件生成的网络流量以了解其通信模式和潜在的命令和控制C2服务器。

  • Behavior analysis: Observing the malware's actions, such as file modifications, registry changes, and process creation, to determine its impact on the system.

  • 行为分析:观察恶意软件的行为,如文件修改、注册表更改和进程创建,以确定其对系统的影响。

By combining static and dynamic analysis techniques, analysts can gain a comprehensive understanding of the malware's characteristics and behavior. This information is crucial for further analysis and developing effective countermeasures.

通过结合静态和动态分析技术,分析人员可以全面了解恶意软件的特征和行为。这些信息对进一步的分析和制定有效的对策至关重要。

sudo freshclam      #Update rules
clamscan filepath   #Scan 1 file
clamscan folderpath #Scan the whole folder

Capa

Capa检测可执行文件PE、ELF、.NET中的潜在恶意功能。因此它可以发现诸如Att&ck战术或可疑功能的事物例如

  • 检查OutputDebugString错误
  • 作为服务运行
  • 创建进程

Github仓库中获取它。

IOC指标泄露

IOC代表指标泄露。IOC是一组条件用于识别一些潜在的不受欢迎的软件或已确认的恶意软件。蓝队使用这种定义来在其系统和网络中搜索此类恶意文件。
共享这些定义非常有用因为当在计算机中识别出恶意软件并创建了该恶意软件的IOC时其他蓝队可以使用它来更快地识别出该恶意软件。

创建或修改IOC的工具是IOC Editor
您可以使用诸如Redline的工具在设备中搜索定义的IOC。

Loki

Loki是一个用于简单指标泄露的扫描器。
检测基于四种检测方法:

1. File Name IOC
Regex match on full file path/name

2. Yara Rule Check
Yara signature matches on file data and process memory

3. Hash Check
Compares known malicious hashes (MD5, SHA1, SHA256) with scanned files

4. C2 Back Connect Check
Compares process connection endpoints with C2 IOCs (new since version v.10)

Linux 恶意软件检测

Linux 恶意软件检测 (LMD) 是一个针对 Linux 的恶意软件扫描器,采用 GNU GPLv2 许可证发布,旨在解决共享托管环境中面临的威胁。它利用网络边缘入侵检测系统的威胁数据来提取正在攻击中使用的恶意软件,并生成用于检测的签名。此外,威胁数据还来自用户提交的 LMD 检查功能和恶意软件社区资源。

rkhunter

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

sudo ./rkhunter --check -r / -l /tmp/rkhunter.log [--report-warnings-only] [--skip-keypress]

FLOSS

FLOSS是一种工具,它将尝试使用不同的技术在可执行文件中查找混淆的字符串。

PEpper

PEpper检查可执行文件中的一些基本内容二进制数据、熵、URL和IP地址一些yara规则

PEstudio

PEstudio是一种工具可以获取Windows可执行文件的信息如导入、导出、头部还会检查病毒总和并找到潜在的Att&ck技术。

Detect It Easy(DiE)

DiE是一种工具,用于检测文件是否被加密,并找到打包程序。

NeoPI

NeoPI是一个使用各种统计方法来检测文本/脚本文件中的混淆和加密内容的Python脚本。NeoPI的预期目的是帮助检测隐藏的Web Shell代码。

php-malware-finder

PHP-malware-finder尽其所能检测混淆/可疑代码,以及使用在恶意软件/ Web Shell中经常使用的PHP函数的文件。

Apple二进制签名

在检查一些恶意软件样本时,您应该始终检查二进制文件的签名,因为签名它的开发者可能已经与恶意软件有关。

#Get signer
codesign -vv -d /bin/ls 2>&1 | grep -E "Authority|TeamIdentifier"

#Check if the apps contents have been modified
codesign --verify --verbose /Applications/Safari.app

#Check if the signature is valid
spctl --assess --verbose /Applications/Safari.app

检测技术

文件堆叠

如果你知道一个包含网页服务器文件的文件夹在某个日期之后最后更新过。检查网页服务器上所有文件的创建和修改日期,如果有任何可疑日期,检查该文件。

基准线

如果一个文件夹的文件不应该被修改,你可以计算文件夹中原始文件哈希值,并与当前文件进行比较。任何被修改的文件都是可疑的。

统计分析

当信息保存在日志中时,你可以检查统计数据,比如一个网页服务器的每个文件被访问的次数,因为其中可能有一个Web shell

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥