hacktricks/forensics/basic-forensic-methodology/malware-analysis.md

165 lines
9.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# マルウェア分析
{% hint style="success" %}
AWSハッキングの学習と練習:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングの学習と練習: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksのサポート</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)をチェックしてください!
* 💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)に参加するか、[**telegramグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォロー**してください。
* ハッキングトリックを共有するために、[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のGitHubリポジトリにPRを提出してください。
</details>
{% endhint %}
## フォレンジックチートシート
[https://www.jaiminton.com/cheatsheet/DFIR/#](https://www.jaiminton.com/cheatsheet/DFIR/)
## オンラインサービス
* [VirusTotal](https://www.virustotal.com/gui/home/upload)
* [HybridAnalysis](https://www.hybrid-analysis.com)
* [Koodous](https://koodous.com)
* [Intezer](https://analyze.intezer.com)
* [Any.Run](https://any.run/)
## オフラインアンチウイルスおよび検出ツール
### Yara
#### インストール
```bash
sudo apt-get install -y yara
```
#### ルールの準備
このスクリプトを使用して、github からすべての yara マルウェアルールをダウンロードしてマージします: [https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9](https://gist.github.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9)\
_**rules**_ ディレクトリを作成して、それを実行します。これにより、マルウェアのすべての yara ルールが含まれる _**malware\_rules.yar**_ というファイルが作成されます。
```bash
wget https://gist.githubusercontent.com/andreafortuna/29c6ea48adf3d45a979a78763cdc7ce9/raw/4ec711d37f1b428b63bed1f786b26a0654aa2f31/malware_yara_rules.py
mkdir rules
python malware_yara_rules.py
```
#### スキャン
```bash
yara -w malware_rules.yar image #Scan 1 file
yara -w malware_rules.yar folder #Scan the whole folder
```
#### YaraGen: マルウェアのチェックとルールの作成
バイナリからyaraルールを生成するためにツール[YaraGen](https://github.com/Neo23x0/yarGen)を使用できます。これらのチュートリアルをチェックしてください: [Part 1](https://www.nextron-systems.com/2015/02/16/write-simple-sound-yara-rules/), [Part 2](https://www.nextron-systems.com/2015/10/17/how-to-write-simple-but-sound-yara-rules-part-2/), [Part 3](https://www.nextron-systems.com/2016/04/15/how-to-write-simple-but-sound-yara-rules-part-3/)
```bash
python3 yarGen.py --update
python3.exe yarGen.py --excludegood -m ../../mals/
```
### ClamAV
#### インストール
```
sudo apt-get install -y clamav
```
#### スキャン
```bash
sudo freshclam #Update rules
clamscan filepath #Scan 1 file
clamscan folderpath #Scan the whole folder
```
### [Capa](https://github.com/mandiant/capa)
**Capa**は、実行可能ファイルPE、ELF、.NET内の潜在的に悪意のある**機能**を検出します。そのため、Att\&ckの戦術や以下のような疑わしい機能を見つけることができます:
- OutputDebugStringエラーのチェック
- サービスとして実行
- プロセスの作成
[**Githubリポジトリ**](https://github.com/mandiant/capa)から入手できます。
### IOCs
IOCはCompromiseのインジケーターを意味します。IOCは、潜在的に望ましくないソフトウェアまたは確認された**マルウェア**を識別する一連の**条件**です。ブルーチームは、これらの定義を使用して、自分たちの**システム**や**ネットワーク**内のこの種の悪意のあるファイルを**検索**します。\
これらの定義を共有することは非常に役立ちます。なぜなら、コンピューターでマルウェアが特定され、そのマルウェアのIOCが作成されると、他のブルーチームがそれを使用してマルウェアをより速く特定できるからです。
IOCを作成または変更するためのツールは[**IOC Editor**](https://www.fireeye.com/services/freeware/ioc-editor.html)**です。**\
[**Redline**](https://www.fireeye.com/services/freeware/redline.html)などのツールを使用して、デバイス内で定義されたIOCを**検索**することができます。
### Loki
[**Loki**](https://github.com/Neo23x0/Loki)は、シンプルなCompromiseのインジケーターのスキャナーです。\
検出は、4つの検出方法に基づいています:
```
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 Malware Detect
[**Linux Malware Detect (LMD)**](https://www.rfxn.com/projects/linux-malware-detect/)は、GNU GPLv2ライセンスの下でリリースされたLinux用のマルウェアスキャナーであり、共有ホスト環境で直面する脅威を中心に設計されています。ネットワークエッジ侵入検知システムからの脅威データを使用して、攻撃で実際に使用されているマルウェアを抽出し、検出用のシグネチャを生成します。さらに、脅威データは、LMDチェックアウト機能とマルウェアコミュニティリソースからも派生しています。
### rkhunter
[**rkhunter**](http://rkhunter.sourceforge.net)のようなツールは、**rootkit**やマルウェアの可能性をチェックするために使用できます。
```bash
sudo ./rkhunter --check -r / -l /tmp/rkhunter.log [--report-warnings-only] [--skip-keypress]
```
### FLOSS
[**FLOSS**](https://github.com/mandiant/flare-floss)は、さまざまな技術を使用して、実行可能ファイル内の難読化された文字列を見つけようとするツールです。
### PEpper
[PEpper](https://github.com/Th3Hurrican3/PEpper)は、実行可能ファイル内の基本的な情報バイナリデータ、エントロピー、URLやIP、一部のyaraルールをチェックします。
### PEstudio
[PEstudio](https://www.winitor.com/download)は、Windowsの実行可能ファイルのインポート、エクスポート、ヘッダなどの情報を取得できるツールであり、また、ウイルストータルをチェックし、潜在的なAtt\&ck技術を見つけることもできます。
### Detect It Easy(DiE)
[**DiE**](https://github.com/horsicq/Detect-It-Easy/)は、ファイルが**暗号化**されているかどうかを検出し、**パッカー**を見つけるツールです。
### NeoPI
[**NeoPI**](https://github.com/CiscoCXSecurity/NeoPI)は、Pythonスクリプトであり、さまざまな**統計的手法**を使用して、テキスト/スクリプトファイル内の**難読化**および**暗号化**されたコンテンツを検出します。 NeoPIの目的は、**隠されたWebシェルコード**の検出を支援することです。
### **php-malware-finder**
[**PHP-malware-finder**](https://github.com/nbs-system/php-malware-finder)は、**難読化**/**怪しいコード**や、**マルウェア**/Webシェルでよく使用される**PHP**関数を使用しているファイルを検出するために最善を尽くします。
### Apple Binary Signatures
**マルウェアサンプル**をチェックする際には、バイナリの**署名**を常にチェックする必要があります。署名を行った**開発者**がすでに**マルウェア**と関連している可能性があるためです。
```bash
#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サーバーの**ファイル**が含まれるフォルダが**ある日付に最後に更新された**ことを知っている場合は、**Webサーバーのすべてのファイルが作成および変更された日付**を**チェック**し、**疑わしい**日付があればそのファイルをチェックします。
### ベースライン
フォルダのファイルが**変更されていないはず**の場合、フォルダの**元のファイル**の**ハッシュ**を計算し、**現在の**ファイルと**比較**します。変更されたものは**疑わしい**です。
### 統計分析
情報がログに保存されている場合、Webサーバーの各ファイルがアクセスされた回数などの統計情報を**チェック**できます。Webシェルが最も多い可能性があります。