mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['', 'src/generic-methodologies-and-resources/basic-forensic-
This commit is contained in:
parent
7e0c926fa9
commit
1e8e6b8997
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
## タイムスタンプ
|
## タイムスタンプ
|
||||||
|
|
||||||
攻撃者は**ファイルのタイムスタンプを変更すること**に興味を持つかもしれません。\
|
攻撃者は、**ファイルのタイムスタンプを変更すること**に興味を持つかもしれません。\
|
||||||
タイムスタンプは、MFT内の属性`$STANDARD_INFORMATION` \_\_ と \_\_ `$FILE_NAME`に見つけることができます。
|
タイムスタンプは、MFT内の属性`$STANDARD_INFORMATION` \_\_ と \_\_ `$FILE_NAME`に見つけることができます。
|
||||||
|
|
||||||
両方の属性には4つのタイムスタンプがあります: **変更**, **アクセス**, **作成**, および **MFTレジストリ変更** (MACEまたはMACB)。
|
両方の属性には4つのタイムスタンプがあります: **変更**, **アクセス**, **作成**, および **MFTレジストリ変更** (MACEまたはMACB)。
|
||||||
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
### TimeStomp - アンチフォレンジックツール
|
### TimeStomp - アンチフォレンジックツール
|
||||||
|
|
||||||
このツールは**`$STANDARD_INFORMATION`**内のタイムスタンプ情報を**変更**しますが、**`$FILE_NAME`**内の情報は**変更しません**。したがって、**疑わしい** **活動を特定することが可能です**。
|
このツールは、**`$STANDARD_INFORMATION`**内のタイムスタンプ情報を**変更**しますが、**`$FILE_NAME`**内の情報は**変更しません**。したがって、**疑わしい** **活動を特定することが可能です**。
|
||||||
|
|
||||||
### Usnjrnl
|
### Usnjrnl
|
||||||
|
|
||||||
@ -25,13 +25,13 @@
|
|||||||
|
|
||||||
### $LogFile
|
### $LogFile
|
||||||
|
|
||||||
**ファイルシステムへのすべてのメタデータ変更は**、[書き込み先行ログ](https://en.wikipedia.org/wiki/Write-ahead_logging)として知られるプロセスで記録されます。記録されたメタデータは、NTFSファイルシステムのルートディレクトリにある`**$LogFile**`という名前のファイルに保持されます。[LogFileParser](https://github.com/jschicht/LogFileParser)のようなツールを使用して、このファイルを解析し、変更を特定できます。
|
**ファイルシステムへのすべてのメタデータ変更は、**[write-ahead logging](https://en.wikipedia.org/wiki/Write-ahead_logging)として知られるプロセスでログに記録されます。ログに記録されたメタデータは、NTFSファイルシステムのルートディレクトリにある`**$LogFile**`という名前のファイルに保持されます。[LogFileParser](https://github.com/jschicht/LogFileParser)のようなツールを使用して、このファイルを解析し、変更を特定できます。
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
再び、ツールの出力では、**いくつかの変更が行われた**ことが確認できます。
|
再び、ツールの出力では、**いくつかの変更が行われた**ことが確認できます。
|
||||||
|
|
||||||
同じツールを使用して、**タイムスタンプが変更された時刻を特定する**ことも可能です:
|
同じツールを使用して、**タイムスタンプが変更された時刻を特定することが可能です**:
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
@ -64,12 +64,12 @@ slackerのようなツールを使用すると、この「隠された」スペ
|
|||||||
|
|
||||||
## UsbKill
|
## UsbKill
|
||||||
|
|
||||||
これは、USBポートに変更が検出された場合に**コンピュータをオフにする**ツールです。\
|
これは、**USB**ポートに変更が検出された場合にコンピュータを**シャットダウンする**ツールです。\
|
||||||
これを発見する方法は、実行中のプロセスを検査し、**実行中の各Pythonスクリプトをレビューする**ことです。
|
これを発見する方法は、実行中のプロセスを検査し、**実行中の各Pythonスクリプトをレビューする**ことです。
|
||||||
|
|
||||||
## ライブLinuxディストリビューション
|
## ライブLinuxディストリビューション
|
||||||
|
|
||||||
これらのディストロは**RAMメモリ内で実行されます**。検出する唯一の方法は、**NTFSファイルシステムが書き込み権限でマウントされている場合**です。読み取り権限のみでマウントされている場合、侵入を検出することはできません。
|
これらのディストリビューションは**RAM**メモリ内で**実行されます**。検出する唯一の方法は、**NTFSファイルシステムが書き込み権限でマウントされている場合**です。読み取り権限のみでマウントされている場合、侵入を検出することはできません。
|
||||||
|
|
||||||
## セキュア削除
|
## セキュア削除
|
||||||
|
|
||||||
@ -98,9 +98,9 @@ UserAssistを無効にするには、2つのステップが必要です:
|
|||||||
- 各々の値を1(または3)から0に変更するために修正を選択
|
- 各々の値を1(または3)から0に変更するために修正を選択
|
||||||
- 再起動
|
- 再起動
|
||||||
|
|
||||||
### タイムスタンプの無効化 - 最終アクセス時刻
|
### タイムスタンプの無効化 - 最終アクセス時間
|
||||||
|
|
||||||
NTFSボリュームからフォルダーが開かれるたびに、システムは**各リストされたフォルダーのタイムスタンプフィールドを更新するための時間を取ります**。これは、NTFSボリュームが頻繁に使用される場合、パフォーマンスに影響を与える可能性があります。
|
NTFSボリュームからフォルダーが開かれるたびに、システムは各リストされたフォルダーの**タイムスタンプフィールドを更新するための時間を取ります**。これは、最終アクセス時間と呼ばれます。NTFSボリュームが頻繁に使用される場合、これがパフォーマンスに影響を与える可能性があります。
|
||||||
|
|
||||||
1. レジストリエディタを開く (Regedit.exe)。
|
1. レジストリエディタを開く (Regedit.exe)。
|
||||||
2. `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`に移動します。
|
2. `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem`に移動します。
|
||||||
@ -109,7 +109,7 @@ NTFSボリュームからフォルダーが開かれるたびに、システム
|
|||||||
|
|
||||||
### USB履歴の削除
|
### USB履歴の削除
|
||||||
|
|
||||||
すべての**USBデバイスエントリ**は、USBデバイスをPCまたはノートパソコンに接続するたびに作成されるサブキーを含む**USBSTOR**レジストリキーの下にWindowsレジストリに保存されます。このキーはここにあります`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`。**これを削除することで**、USB履歴を削除します。\
|
すべての**USBデバイスエントリ**は、PCまたはラップトップにUSBデバイスを接続するたびに作成されるサブキーを含む**USBSTOR**レジストリキーの下にWindowsレジストリに保存されます。このキーはここにあります`HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR`。**これを削除することで**USB履歴を削除します。\
|
||||||
また、[**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html)ツールを使用して、削除したことを確認することもできます(および削除するために)。
|
また、[**USBDeview**](https://www.nirsoft.net/utils/usb_devices_view.html)ツールを使用して、削除したことを確認することもできます(および削除するために)。
|
||||||
|
|
||||||
USBに関する情報を保存する別のファイルは、`C:\Windows\INF`内の`setupapi.dev.log`ファイルです。これも削除する必要があります。
|
USBに関する情報を保存する別のファイルは、`C:\Windows\INF`内の`setupapi.dev.log`ファイルです。これも削除する必要があります。
|
||||||
@ -127,7 +127,7 @@ GUIを介して削除することも可能で、[https://www.ubackup.com/windows
|
|||||||
2. リストから「Volume Shadow Copy」を見つけて選択し、右クリックしてプロパティにアクセスします。
|
2. リストから「Volume Shadow Copy」を見つけて選択し、右クリックしてプロパティにアクセスします。
|
||||||
3. 「スタートアップの種類」ドロップダウンメニューから「無効」を選択し、変更を適用してOKをクリックして確認します。
|
3. 「スタートアップの種類」ドロップダウンメニューから「無効」を選択し、変更を適用してOKをクリックして確認します。
|
||||||
|
|
||||||
シャドウコピーでコピーされるファイルの構成を変更することも可能で、レジストリ`HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`で設定できます。
|
シャドウコピーでコピーされるファイルの構成を変更することも可能で、レジストリ`HKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshot`で行います。
|
||||||
|
|
||||||
### 削除されたファイルの上書き
|
### 削除されたファイルの上書き
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ GUIを介して削除することも可能で、[https://www.ubackup.com/windows
|
|||||||
|
|
||||||
### PowerShell ScriptBlock/Module Logging
|
### PowerShell ScriptBlock/Module Logging
|
||||||
|
|
||||||
最近のWindows 10/11およびWindows Serverのバージョンは、`Microsoft-Windows-PowerShell/Operational` (イベント4104/4105/4106)の下に**リッチなPowerShellフォレンジックアーティファクト**を保持します。攻撃者は、これらをオンザフライで無効にしたり消去したりすることができます:
|
最近のWindows 10/11およびWindows Serverのバージョンは、`Microsoft-Windows-PowerShell/Operational` (イベント4104/4105/4106)の下に**豊富なPowerShellフォレンジックアーティファクト**を保持します。攻撃者は、これらをオンザフライで無効にしたり消去したりすることができます:
|
||||||
```powershell
|
```powershell
|
||||||
# Turn OFF ScriptBlock & Module logging (registry persistence)
|
# Turn OFF ScriptBlock & Module logging (registry persistence)
|
||||||
New-ItemProperty -Path "HKLM:\\SOFTWARE\\Microsoft\\PowerShell\\3\\PowerShellEngine" \
|
New-ItemProperty -Path "HKLM:\\SOFTWARE\\Microsoft\\PowerShell\\3\\PowerShellEngine" \
|
||||||
@ -180,7 +180,7 @@ WriteProcessMemory(GetCurrentProcess(),
|
|||||||
GetProcAddress(GetModuleHandleA("ntdll.dll"), "EtwEventWrite"),
|
GetProcAddress(GetModuleHandleA("ntdll.dll"), "EtwEventWrite"),
|
||||||
patch, sizeof(patch), NULL);
|
patch, sizeof(patch), NULL);
|
||||||
```
|
```
|
||||||
Public PoCs (e.g. `EtwTiSwallow`) は PowerShell または C++ で同じプリミティブを実装しています。
|
Public PoCs (e.g. `EtwTiSwallow`) は、PowerShell または C++ で同じプリミティブを実装しています。
|
||||||
パッチが **プロセスローカル** であるため、他のプロセス内で実行されている EDR はこれを見逃す可能性があります。
|
パッチが **プロセスローカル** であるため、他のプロセス内で実行されている EDR はこれを見逃す可能性があります。
|
||||||
検出: メモリ内の `ntdll` とディスク上の `ntdll` を比較するか、ユーザーモードの前にフックします。
|
検出: メモリ内の `ntdll` とディスク上の `ntdll` を比較するか、ユーザーモードの前にフックします。
|
||||||
|
|
||||||
@ -193,11 +193,11 @@ type cobalt.bin > report.pdf:win32res.dll
|
|||||||
rem Execute directly
|
rem Execute directly
|
||||||
wmic process call create "cmd /c report.pdf:win32res.dll"
|
wmic process call create "cmd /c report.pdf:win32res.dll"
|
||||||
```
|
```
|
||||||
ストリームを列挙するには、`dir /R`、`Get-Item -Stream *`、またはSysinternalsの`streams64.exe`を使用します。ホストファイルをFAT/exFATにコピーするか、SMB経由でコピーすると、隠しストリームが削除され、調査者がペイロードを回復するのに使用できます。
|
ストリームを列挙するには、`dir /R`、`Get-Item -Stream *`、またはSysinternalsの`streams64.exe`を使用します。ホストファイルをFAT/exFATにコピーするか、SMB経由でコピーすると、隠しストリームが削除され、調査者がペイロードを回復するために使用できます。
|
||||||
|
|
||||||
### BYOVD & “AuKill” (2023)
|
### BYOVD & “AuKill” (2023)
|
||||||
|
|
||||||
Bring-Your-Own-Vulnerable-Driverは、ランサムウェア侵入における**アンチフォレンジック**に現在一般的に使用されています。オープンソースツール**AuKill**は、署名されたが脆弱なドライバー(`procexp152.sys`)をロードして、暗号化およびログ破壊**の前に**EDRおよびフォレンジックセンサーを一時停止または終了させます。
|
Bring-Your-Own-Vulnerable-Driverは、ランサムウェア侵入における**アンチフォレンジック**に日常的に使用されています。オープンソースツール**AuKill**は、署名されたが脆弱なドライバー(`procexp152.sys`)をロードして、暗号化およびログ破壊**の前に**EDRおよびフォレンジックセンサーを一時停止または終了させます。
|
||||||
```cmd
|
```cmd
|
||||||
AuKill.exe -e "C:\\Program Files\\Windows Defender\\MsMpEng.exe"
|
AuKill.exe -e "C:\\Program Files\\Windows Defender\\MsMpEng.exe"
|
||||||
AuKill.exe -k CrowdStrike
|
AuKill.exe -k CrowdStrike
|
||||||
@ -207,11 +207,88 @@ AuKill.exe -k CrowdStrike
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## 参考文献
|
## Linuxアンチフォレンジックス:自己パッチとクラウドC2(2023–2025)
|
||||||
|
|
||||||
- Sophos X-Ops – “AuKill: A Weaponized Vulnerable Driver for Disabling EDR” (2023年3月)
|
### 検出を減らすために妥協されたサービスを自己パッチする(Linux)
|
||||||
|
敵対者は、再利用を防ぎ、脆弱性に基づく検出を抑制するために、サービスを悪用した直後に「自己パッチ」を行うことが増えています。アイデアは、脆弱なコンポーネントを最新の正当なアップストリームバイナリ/JARに置き換えることで、スキャナーがホストをパッチ済みとして報告し、持続性とC2を維持することです。
|
||||||
|
|
||||||
|
例:Apache ActiveMQ OpenWire RCE(CVE‑2023‑46604)
|
||||||
|
- ポストエクスプロイト後、攻撃者はMaven Central(repo1.maven.org)から正当なJARを取得し、ActiveMQインストール内の脆弱なJARを削除し、ブローカーを再起動しました。
|
||||||
|
- これにより、初期のRCEは閉じられましたが、他の足場(cron、SSH設定の変更、別のC2インプラント)は維持されました。
|
||||||
|
|
||||||
|
運用例(例示的)
|
||||||
|
```bash
|
||||||
|
# ActiveMQ install root (adjust as needed)
|
||||||
|
AMQ_DIR=/opt/activemq
|
||||||
|
cd "$AMQ_DIR"/lib
|
||||||
|
|
||||||
|
# Fetch patched JARs from Maven Central (versions as appropriate)
|
||||||
|
curl -fsSL -O https://repo1.maven.org/maven2/org/apache/activemq/activemq-client/5.18.3/activemq-client-5.18.3.jar
|
||||||
|
curl -fsSL -O https://repo1.maven.org/maven2/org/apache/activemq/activemq-openwire-legacy/5.18.3/activemq-openwire-legacy-5.18.3.jar
|
||||||
|
|
||||||
|
# Remove vulnerable files and ensure the service uses the patched ones
|
||||||
|
rm -f activemq-client-5.18.2.jar activemq-openwire-legacy-5.18.2.jar || true
|
||||||
|
ln -sf activemq-client-5.18.3.jar activemq-client.jar
|
||||||
|
ln -sf activemq-openwire-legacy-5.18.3.jar activemq-openwire-legacy.jar
|
||||||
|
|
||||||
|
# Apply changes without removing persistence
|
||||||
|
systemctl restart activemq || service activemq restart
|
||||||
|
```
|
||||||
|
Forensic/hunting tips
|
||||||
|
- サービスディレクトリを確認して、スケジュールされていないバイナリ/JARの置き換えを探します:
|
||||||
|
- Debian/Ubuntu: `dpkg -V activemq` を実行し、ファイルのハッシュ/パスをリポジトリミラーと比較します。
|
||||||
|
- RHEL/CentOS: `rpm -Va 'activemq*'`
|
||||||
|
- パッケージマネージャーに所有されていないディスク上のJARバージョンや、バンド外で更新されたシンボリックリンクを探します。
|
||||||
|
- タイムライン: `find "$AMQ_DIR" -type f -printf '%TY-%Tm-%Td %TH:%TM %p\n' | sort` を使用して、ctime/mtimeを侵害ウィンドウと相関させます。
|
||||||
|
- シェル履歴/プロセステレメトリ: 初期の悪用直後に `curl`/`wget` が `repo1.maven.org` や他のアーティファクトCDNに対しての証拠。
|
||||||
|
- 変更管理: “パッチ”を適用したのは誰で、なぜ適用されたのかを検証し、パッチ版が存在するだけでは不十分です。
|
||||||
|
|
||||||
|
### Cloud‑service C2 with bearer tokens and anti‑analysis stagers
|
||||||
|
観察されたトレードクラフトは、複数の長距離C2パスとアンチ分析パッケージングを組み合わせていました:
|
||||||
|
- サンドボックス化や静的分析を妨げるためのパスワード保護されたPyInstaller ELFローダー(例:暗号化されたPYZ、`/_MEI*`の下での一時的な抽出)。
|
||||||
|
- インジケーター: `strings` ヒットの例として `PyInstaller`, `pyi-archive`, `PYZ-00.pyz`, `MEIPASS`。
|
||||||
|
- ランタイムアーティファクト: `/tmp/_MEI*` への抽出またはカスタム `--runtime-tmpdir` パス。
|
||||||
|
- ハードコーディングされたOAuthベアラートークンを使用したDropboxバックアップC2
|
||||||
|
- ネットワークマーカー: `api.dropboxapi.com` / `content.dropboxapi.com` で `Authorization: Bearer <token>`。
|
||||||
|
- 通常ファイルを同期しないサーバーワークロードからDropboxドメインへのアウトバウンドHTTPSを探すために、プロキシ/NetFlow/Zeek/Suricataでハントします。
|
||||||
|
- トンネリングを介した並行/バックアップC2(例:Cloudflare Tunnel `cloudflared`)、1つのチャネルがブロックされた場合でも制御を保持します。
|
||||||
|
- ホストIOC: `cloudflared` プロセス/ユニット、`~/.cloudflared/*.json` の設定、Cloudflareエッジへのアウトバウンド443。
|
||||||
|
|
||||||
|
### Persistence and “hardening rollback” to maintain access (Linux examples)
|
||||||
|
攻撃者は自己パッチと耐久性のあるアクセスパスを頻繁に組み合わせます:
|
||||||
|
- Cron/Anacron: 各 `/etc/cron.*/` ディレクトリ内の `0anacron` スタブの編集による定期的な実行。
|
||||||
|
- ハント:
|
||||||
|
```bash
|
||||||
|
for d in /etc/cron.*; do [ -f "$d/0anacron" ] && stat -c '%n %y %s' "$d/0anacron"; done
|
||||||
|
grep -R --line-number -E 'curl|wget|python|/bin/sh' /etc/cron.*/* 2>/dev/null
|
||||||
|
```
|
||||||
|
- SSH設定のハードニングロールバック: ルートログインを有効にし、低特権アカウントのデフォルトシェルを変更します。
|
||||||
|
- ルートログインの有効化をハント:
|
||||||
|
```bash
|
||||||
|
grep -E '^\s*PermitRootLogin' /etc/ssh/sshd_config
|
||||||
|
# "yes" や過度に許可された設定のようなフラグ値
|
||||||
|
```
|
||||||
|
- システムアカウント(例:`games`)での疑わしいインタラクティブシェルをハント:
|
||||||
|
```bash
|
||||||
|
awk -F: '($7 ~ /bin\/(sh|bash|zsh)/ && $1 ~ /^(games|lp|sync|shutdown|halt|mail|operator)$/) {print}' /etc/passwd
|
||||||
|
```
|
||||||
|
- クラウドC2にも接続するランダムで短い名前のビーコンアーティファクト(8文字のアルファベット)をディスクにドロップ:
|
||||||
|
- ハント:
|
||||||
|
```bash
|
||||||
|
find / -maxdepth 3 -type f -regextype posix-extended -regex '.*/[A-Za-z]{8}$' \
|
||||||
|
-exec stat -c '%n %s %y' {} \; 2>/dev/null | sort
|
||||||
|
```
|
||||||
|
|
||||||
|
防御者は、これらのアーティファクトを外部露出およびサービスパッチイベントと相関させて、初期の悪用を隠すために使用されたアンチフォレンジック自己修復を明らかにする必要があります。
|
||||||
|
|
||||||
|
## References
|
||||||
|
|
||||||
|
- Sophos X-Ops – “AuKill: A Weaponized Vulnerable Driver for Disabling EDR” (March 2023)
|
||||||
https://news.sophos.com/en-us/2023/03/07/aukill-a-weaponized-vulnerable-driver-for-disabling-edr
|
https://news.sophos.com/en-us/2023/03/07/aukill-a-weaponized-vulnerable-driver-for-disabling-edr
|
||||||
- Red Canary – “Patching EtwEventWrite for Stealth: Detection & Hunting” (2024年6月)
|
- Red Canary – “Patching EtwEventWrite for Stealth: Detection & Hunting” (June 2024)
|
||||||
https://redcanary.com/blog/etw-patching-detection
|
https://redcanary.com/blog/etw-patching-detection
|
||||||
|
|
||||||
|
- [Red Canary – Patching for persistence: How DripDropper Linux malware moves through the cloud](https://redcanary.com/blog/threat-intelligence/dripdropper-linux-malware/)
|
||||||
|
- [CVE‑2023‑46604 – Apache ActiveMQ OpenWire RCE (NVD)](https://nvd.nist.gov/vuln/detail/CVE-2023-46604)
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
@ -31,22 +31,22 @@ find /directory -type f -mtime -1 -print #Find modified files during the last mi
|
|||||||
```
|
```
|
||||||
#### 疑わしい情報
|
#### 疑わしい情報
|
||||||
|
|
||||||
基本情報を取得する際には、以下のような奇妙な事柄を確認する必要があります:
|
基本情報を取得する際には、以下のような奇妙な事柄をチェックする必要があります:
|
||||||
|
|
||||||
- **ルートプロセス**は通常低いPIDで実行されるため、大きなPIDを持つルートプロセスを見つけた場合は疑うべきです
|
- **ルートプロセス**は通常低いPIDで実行されるため、大きなPIDを持つルートプロセスを見つけた場合は疑うべきです
|
||||||
- `/etc/passwd`内のシェルを持たないユーザーの**登録されたログイン**を確認します
|
- `/etc/passwd`内のシェルを持たないユーザーの**登録されたログイン**を確認します
|
||||||
- シェルを持たないユーザーのために`/etc/shadow`内の**パスワードハッシュ**を確認します
|
- シェルを持たないユーザーのために、`/etc/shadow`内の**パスワードハッシュ**を確認します
|
||||||
|
|
||||||
### メモリダンプ
|
### メモリダンプ
|
||||||
|
|
||||||
実行中のシステムのメモリを取得するには、[**LiME**](https://github.com/504ensicsLabs/LiME)を使用することをお勧めします。\
|
実行中のシステムのメモリを取得するには、[**LiME**](https://github.com/504ensicsLabs/LiME)を使用することをお勧めします。\
|
||||||
**コンパイル**するには、被害者のマシンが使用している**同じカーネル**を使用する必要があります。
|
**コンパイル**するには、被害者のマシンが使用している**同じカーネル**を使用する必要があります。
|
||||||
|
|
||||||
> [!NOTE]
|
> [!TIP]
|
||||||
> 被害者のマシンに**LiMEやその他のものをインストールすることはできない**ことを覚えておいてください。そうすると、いくつかの変更が加わります。
|
> 被害者のマシンに**LiMEやその他のものをインストールすることはできない**ことを覚えておいてください。そうすると、いくつかの変更が加わります。
|
||||||
|
|
||||||
したがって、同一のUbuntuバージョンがある場合は、`apt-get install lime-forensics-dkms`を使用できます。\
|
したがって、同一のUbuntuバージョンがある場合は、`apt-get install lime-forensics-dkms`を使用できます。\
|
||||||
他の場合は、githubから[**LiME**](https://github.com/504ensicsLabs/LiME)をダウンロードし、正しいカーネルヘッダーでコンパイルする必要があります。被害者のマシンの**正確なカーネルヘッダー**を取得するには、単に`/lib/modules/<kernel version>`ディレクトリを自分のマシンに**コピー**し、それを使用してLiMEを**コンパイル**します:
|
他の場合は、githubから[**LiME**](https://github.com/504ensicsLabs/LiME)をダウンロードし、正しいカーネルヘッダーでコンパイルする必要があります。被害者のマシンの**正確なカーネルヘッダー**を取得するには、単に`/lib/modules/<kernel version>`ディレクトリをあなたのマシンに**コピー**し、それを使用してLiMEを**コンパイル**します:
|
||||||
```bash
|
```bash
|
||||||
make -C /lib/modules/<kernel version>/build M=$PWD
|
make -C /lib/modules/<kernel version>/build M=$PWD
|
||||||
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
|
sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
|
||||||
@ -54,21 +54,21 @@ sudo insmod lime.ko "path=/home/sansforensics/Desktop/mem_dump.bin format=lime"
|
|||||||
LiMEは3つの**フォーマット**をサポートしています:
|
LiMEは3つの**フォーマット**をサポートしています:
|
||||||
|
|
||||||
- Raw(すべてのセグメントが連結されたもの)
|
- Raw(すべてのセグメントが連結されたもの)
|
||||||
- Padded(Rawと同じですが、右側のビットにゼロが追加されています)
|
- Padded(rawと同じですが、右側のビットにゼロが追加されています)
|
||||||
- Lime(メタデータ付きの推奨フォーマット)
|
- Lime(メタデータ付きの推奨フォーマット)
|
||||||
|
|
||||||
LiMEは、`path=tcp:4444`のようなもので、システムに保存する代わりに**ネットワーク経由でダンプを送信する**こともできます。
|
LiMEは、システムに保存する代わりに**ネットワーク経由でダンプを送信する**ためにも使用できます。例えば:`path=tcp:4444`
|
||||||
|
|
||||||
### ディスクイメージング
|
### ディスクイメージング
|
||||||
|
|
||||||
#### シャットダウン
|
#### シャットダウン
|
||||||
|
|
||||||
まず最初に、**システムをシャットダウンする**必要があります。これは常に選択肢ではなく、時にはシステムが会社がシャットダウンできないプロダクションサーバーであることがあります。\
|
まず最初に、**システムをシャットダウンする**必要があります。これは常に選択肢ではなく、時にはシステムが会社がシャットダウンできないプロダクションサーバーであることがあります。\
|
||||||
システムをシャットダウンする方法は**2つ**あり、**通常のシャットダウン**と**「プラグを抜く」シャットダウン**です。最初の方法では、**プロセスが通常通り終了し**、**ファイルシステム**が**同期される**ことを許可しますが、同時に**マルウェア**が**証拠を破壊する**可能性もあります。「プラグを抜く」アプローチは**情報の損失**を伴う可能性があります(メモリのイメージをすでに取得しているため、失われる情報はあまりありません)し、**マルウェアは何もできる機会がありません**。したがって、**マルウェアの存在を疑う**場合は、システムで**`sync`** **コマンド**を実行し、プラグを抜いてください。
|
システムをシャットダウンする方法は**2つ**あり、**通常のシャットダウン**と**「プラグを抜く」シャットダウン**です。最初の方法では、**プロセスが通常通り終了する**ことを許可し、**ファイルシステム**が**同期される**ことを可能にしますが、同時に**マルウェア**が**証拠を破壊する**可能性もあります。「プラグを抜く」アプローチは**情報の損失**を伴う可能性があります(メモリのイメージをすでに取得しているため、失われる情報はあまり多くありません)し、**マルウェアは何もできる機会がありません**。したがって、**マルウェアの可能性がある**と**疑う**場合は、システムで**`sync`** **コマンド**を実行し、プラグを抜いてください。
|
||||||
|
|
||||||
#### ディスクのイメージを取得する
|
#### ディスクのイメージを取得する
|
||||||
|
|
||||||
**ケースに関連する何かにコンピュータを接続する前に**、情報を変更しないように**読み取り専用としてマウントされる**ことを確認することが重要です。
|
**ケースに関連する何かにコンピュータを接続する前に**、それが**読み取り専用としてマウントされる**ことを確認することが重要です。情報を変更しないようにするためです。
|
||||||
```bash
|
```bash
|
||||||
#Create a raw copy of the disk
|
#Create a raw copy of the disk
|
||||||
dd if=<subject device> of=<image file> bs=512
|
dd if=<subject device> of=<image file> bs=512
|
||||||
@ -143,7 +143,7 @@ Linuxは、システムコンポーネントの整合性を確保するための
|
|||||||
|
|
||||||
### マルウェア/ルートキット検出ツール
|
### マルウェア/ルートキット検出ツール
|
||||||
|
|
||||||
マルウェアを見つけるのに役立つツールについて学ぶには、以下のページをお読みください:
|
マルウェアを見つけるのに役立つツールについて学ぶには、以下のページを参照してください:
|
||||||
|
|
||||||
{{#ref}}
|
{{#ref}}
|
||||||
malware-analysis.md
|
malware-analysis.md
|
||||||
@ -156,7 +156,7 @@ DebianおよびRedHatシステムでインストールされたプログラム
|
|||||||
- Debianの場合、_**`/var/lib/dpkg/status`**_および_**`/var/log/dpkg.log`**_を確認してパッケージインストールに関する詳細を取得し、`grep`を使用して特定の情報をフィルタリングします。
|
- Debianの場合、_**`/var/lib/dpkg/status`**_および_**`/var/log/dpkg.log`**_を確認してパッケージインストールに関する詳細を取得し、`grep`を使用して特定の情報をフィルタリングします。
|
||||||
- RedHatユーザーは、`rpm -qa --root=/mntpath/var/lib/rpm`を使用してインストールされたパッケージのリストを取得できます。
|
- RedHatユーザーは、`rpm -qa --root=/mntpath/var/lib/rpm`を使用してインストールされたパッケージのリストを取得できます。
|
||||||
|
|
||||||
これらのパッケージマネージャーの外部で手動でインストールされたソフトウェアを明らかにするために、_**`/usr/local`**_、_**`/opt`**_、_**`/usr/sbin`**_、_**`/usr/bin`**_、_**`/bin`**_、および_**`/sbin`**_のようなディレクトリを探索してください。ディレクトリリストとシステム固有のコマンドを組み合わせて、既知のパッケージに関連付けられていない実行可能ファイルを特定し、インストールされたすべてのプログラムの検索を強化します。
|
これらのパッケージマネージャーの外部で手動でインストールされたソフトウェアを明らかにするために、_**`/usr/local`**_、_**`/opt`**_、_**`/usr/sbin`**_、_**`/usr/bin`**_、_**`/bin`**_、および_**`/sbin`**_のようなディレクトリを探索します。ディレクトリリストとシステム固有のコマンドを組み合わせて、既知のパッケージに関連付けられていない実行可能ファイルを特定し、インストールされたすべてのプログラムの検索を強化します。
|
||||||
```bash
|
```bash
|
||||||
# Debian package and log details
|
# Debian package and log details
|
||||||
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
|
cat /var/lib/dpkg/status | grep -E "Package:|Status:"
|
||||||
@ -196,6 +196,32 @@ cat /var/spool/cron/crontabs/* \
|
|||||||
#MacOS
|
#MacOS
|
||||||
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
|
ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Library/LaunchAgents/
|
||||||
```
|
```
|
||||||
|
#### Hunt: Cron/Anacronの悪用と0anacronおよび疑わしいスタブ
|
||||||
|
攻撃者は、定期的な実行を確実にするために、各/etc/cron.*/ディレクトリに存在する0anacronスタブを編集することがよくあります。
|
||||||
|
```bash
|
||||||
|
# List 0anacron files and their timestamps/sizes
|
||||||
|
for d in /etc/cron.*; do [ -f "$d/0anacron" ] && stat -c '%n %y %s' "$d/0anacron"; done
|
||||||
|
|
||||||
|
# Look for obvious execution of shells or downloaders embedded in cron stubs
|
||||||
|
grep -R --line-number -E 'curl|wget|/bin/sh|python|bash -c' /etc/cron.*/* 2>/dev/null
|
||||||
|
```
|
||||||
|
#### Hunt: SSHハードニングのロールバックとバックドアシェル
|
||||||
|
sshd_configやシステムアカウントシェルの変更は、アクセスを保持するための一般的なポストエクスプロイトです。
|
||||||
|
```bash
|
||||||
|
# Root login enablement (flag "yes" or lax values)
|
||||||
|
grep -E '^\s*PermitRootLogin' /etc/ssh/sshd_config
|
||||||
|
|
||||||
|
# System accounts with interactive shells (e.g., games → /bin/sh)
|
||||||
|
awk -F: '($7 ~ /bin\/(sh|bash|zsh)/ && $1 ~ /^(games|lp|sync|shutdown|halt|mail|operator)$/) {print}' /etc/passwd
|
||||||
|
```
|
||||||
|
#### Hunt: Cloud C2 markers (Dropbox/Cloudflare Tunnel)
|
||||||
|
- Dropbox APIビーコンは通常、HTTPS経由でapi.dropboxapi.comまたはcontent.dropboxapi.comを使用し、Authorization: Bearerトークンを使用します。
|
||||||
|
- サーバーからの予期しないDropboxの出口を探すために、proxy/Zeek/NetFlowでハントします。
|
||||||
|
- Cloudflare Tunnel (`cloudflared`)は、アウトバウンド443経由でバックアップC2を提供します。
|
||||||
|
```bash
|
||||||
|
ps aux | grep -E '[c]loudflared|trycloudflare'
|
||||||
|
systemctl list-units | grep -i cloudflared
|
||||||
|
```
|
||||||
### サービス
|
### サービス
|
||||||
|
|
||||||
マルウェアがサービスとしてインストールされる可能性のあるパス:
|
マルウェアがサービスとしてインストールされる可能性のあるパス:
|
||||||
@ -203,7 +229,7 @@ ls -l /usr/lib/cron/tabs/ /Library/LaunchAgents/ /Library/LaunchDaemons/ ~/Libra
|
|||||||
- **/etc/inittab**: rc.sysinitのような初期化スクリプトを呼び出し、さらにスタートアップスクリプトに指示します。
|
- **/etc/inittab**: rc.sysinitのような初期化スクリプトを呼び出し、さらにスタートアップスクリプトに指示します。
|
||||||
- **/etc/rc.d/** と **/etc/rc.boot/**: サービスのスタートアップ用スクリプトを含み、後者は古いLinuxバージョンで見られます。
|
- **/etc/rc.d/** と **/etc/rc.boot/**: サービスのスタートアップ用スクリプトを含み、後者は古いLinuxバージョンで見られます。
|
||||||
- **/etc/init.d/**: Debianのような特定のLinuxバージョンでスタートアップスクリプトを保存するために使用されます。
|
- **/etc/init.d/**: Debianのような特定のLinuxバージョンでスタートアップスクリプトを保存するために使用されます。
|
||||||
- サービスは、Linuxのバリアントに応じて **/etc/inetd.conf** または **/etc/xinetd/** を介してもアクティブ化されることがあります。
|
- サービスは、Linuxのバリアントに応じて **/etc/inetd.conf** または **/etc/xinetd/** を介しても有効化されることがあります。
|
||||||
- **/etc/systemd/system**: システムおよびサービスマネージャースクリプト用のディレクトリ。
|
- **/etc/systemd/system**: システムおよびサービスマネージャースクリプト用のディレクトリ。
|
||||||
- **/etc/systemd/system/multi-user.target.wants/**: マルチユーザーランレベルで起動すべきサービスへのリンクを含みます。
|
- **/etc/systemd/system/multi-user.target.wants/**: マルチユーザーランレベルで起動すべきサービスへのリンクを含みます。
|
||||||
- **/usr/local/etc/rc.d/**: カスタムまたはサードパーティのサービス用。
|
- **/usr/local/etc/rc.d/**: カスタムまたはサードパーティのサービス用。
|
||||||
@ -218,7 +244,7 @@ Linuxカーネルモジュールは、マルウェアがルートキットコン
|
|||||||
- **/etc/modprobe.d**: モジュールのロードを制御するための設定ファイルを含みます。
|
- **/etc/modprobe.d**: モジュールのロードを制御するための設定ファイルを含みます。
|
||||||
- **/etc/modprobe** と **/etc/modprobe.conf**: グローバルモジュール設定用のファイル。
|
- **/etc/modprobe** と **/etc/modprobe.conf**: グローバルモジュール設定用のファイル。
|
||||||
|
|
||||||
### その他の自動スタート場所
|
### その他の自動起動場所
|
||||||
|
|
||||||
Linuxは、ユーザーログイン時にプログラムを自動的に実行するためのさまざまなファイルを使用し、マルウェアを隠す可能性があります:
|
Linuxは、ユーザーログイン時にプログラムを自動的に実行するためのさまざまなファイルを使用し、マルウェアを隠す可能性があります:
|
||||||
|
|
||||||
@ -228,11 +254,11 @@ Linuxは、ユーザーログイン時にプログラムを自動的に実行す
|
|||||||
|
|
||||||
## ログの調査
|
## ログの調査
|
||||||
|
|
||||||
Linuxシステムは、さまざまなログファイルを通じてユーザーの活動やシステムイベントを追跡します。これらのログは、不正アクセス、マルウェア感染、その他のセキュリティインシデントを特定するために重要です。主要なログファイルには以下が含まれます:
|
Linuxシステムは、ユーザーの活動やシステムイベントをさまざまなログファイルを通じて追跡します。これらのログは、不正アクセス、マルウェア感染、その他のセキュリティインシデントを特定するために重要です。主なログファイルは以下の通りです:
|
||||||
|
|
||||||
- **/var/log/syslog** (Debian) または **/var/log/messages** (RedHat): システム全体のメッセージと活動をキャプチャします。
|
- **/var/log/syslog** (Debian) または **/var/log/messages** (RedHat): システム全体のメッセージや活動をキャプチャします。
|
||||||
- **/var/log/auth.log** (Debian) または **/var/log/secure** (RedHat): 認証試行、成功したログインと失敗したログインを記録します。
|
- **/var/log/auth.log** (Debian) または **/var/log/secure** (RedHat): 認証試行、成功したログインおよび失敗したログインを記録します。
|
||||||
- `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` を使用して関連する認証イベントをフィルタリングします。
|
- `grep -iE "session opened for|accepted password|new session|not in sudoers" /var/log/auth.log` を使用して、関連する認証イベントをフィルタリングします。
|
||||||
- **/var/log/boot.log**: システム起動メッセージを含みます。
|
- **/var/log/boot.log**: システム起動メッセージを含みます。
|
||||||
- **/var/log/maillog** または **/var/log/mail.log**: メールサーバーの活動をログに記録し、メール関連サービスの追跡に役立ちます。
|
- **/var/log/maillog** または **/var/log/mail.log**: メールサーバーの活動をログに記録し、メール関連サービスの追跡に役立ちます。
|
||||||
- **/var/log/kern.log**: カーネルメッセージを保存し、エラーや警告を含みます。
|
- **/var/log/kern.log**: カーネルメッセージを保存し、エラーや警告を含みます。
|
||||||
@ -246,8 +272,8 @@ Linuxシステムは、さまざまなログファイルを通じてユーザー
|
|||||||
- **/var/log/xferlog**: FTPファイル転送を記録します。
|
- **/var/log/xferlog**: FTPファイル転送を記録します。
|
||||||
- **/var/log/**: ここで予期しないログを常に確認してください。
|
- **/var/log/**: ここで予期しないログを常に確認してください。
|
||||||
|
|
||||||
> [!NOTE]
|
> [!TIP]
|
||||||
> Linuxシステムのログと監査サブシステムは、侵入やマルウェアのインシデントで無効化または削除される可能性があります。Linuxシステムのログは、悪意のある活動に関する最も有用な情報を含むことが一般的であるため、侵入者は定期的にそれらを削除します。したがって、利用可能なログファイルを調査する際には、削除や改ざんの兆候である可能性のあるギャップや順序が乱れたエントリを探すことが重要です。
|
> Linuxシステムのログと監査サブシステムは、侵入やマルウェアのインシデントで無効化または削除される可能性があります。Linuxシステムのログは、悪意のある活動に関する最も有用な情報を含むことが一般的であるため、侵入者はそれらを定期的に削除します。したがって、利用可能なログファイルを調査する際には、削除や改ざんの兆候を示すギャップや順序が乱れたエントリを探すことが重要です。
|
||||||
|
|
||||||
**Linuxは各ユーザーのコマンド履歴を保持します**。これは以下に保存されます:
|
**Linuxは各ユーザーのコマンド履歴を保持します**。これは以下に保存されます:
|
||||||
|
|
||||||
@ -261,28 +287,28 @@ Linuxシステムは、さまざまなログファイルを通じてユーザー
|
|||||||
|
|
||||||
追加の権限を付与できるファイルを確認してください:
|
追加の権限を付与できるファイルを確認してください:
|
||||||
|
|
||||||
- 予期しないユーザー権限が付与されている可能性があるため、`/etc/sudoers` を確認します。
|
- `/etc/sudoers` を確認して、予期しないユーザー権限が付与されていないか確認します。
|
||||||
- 予期しないユーザー権限が付与されている可能性があるため、`/etc/sudoers.d/` を確認します。
|
- `/etc/sudoers.d/` を確認して、予期しないユーザー権限が付与されていないか確認します。
|
||||||
- 異常なグループメンバーシップや権限を特定するために、`/etc/groups` を調査します。
|
- `/etc/groups` を調べて、異常なグループメンバーシップや権限を特定します。
|
||||||
- 異常なグループメンバーシップや権限を特定するために、`/etc/passwd` を調査します。
|
- `/etc/passwd` を調べて、異常なグループメンバーシップや権限を特定します。
|
||||||
|
|
||||||
一部のアプリも独自のログを生成します:
|
一部のアプリも独自のログを生成します:
|
||||||
|
|
||||||
- **SSH**: 不正なリモート接続のために _\~/.ssh/authorized_keys_ と _\~/.ssh/known_hosts_ を調査します。
|
- **SSH**: _\~/.ssh/authorized_keys_ と _\~/.ssh/known_hosts_ を調べて、不正なリモート接続を確認します。
|
||||||
- **Gnome Desktop**: Gnomeアプリケーションを介して最近アクセスされたファイルのために _\~/.recently-used.xbel_ を確認します。
|
- **Gnomeデスクトップ**: Gnomeアプリケーションを介して最近アクセスされたファイルのために _\~/.recently-used.xbel_ を確認します。
|
||||||
- **Firefox/Chrome**: 疑わしい活動のために _\~/.mozilla/firefox_ または _\~/.config/google-chrome_ でブラウザの履歴とダウンロードを確認します。
|
- **Firefox/Chrome**: _\~/.mozilla/firefox_ または _\~/.config/google-chrome_ でブラウザの履歴とダウンロードを確認し、疑わしい活動を探します。
|
||||||
- **VIM**: アクセスされたファイルパスや検索履歴などの使用詳細のために _\~/.viminfo_ を確認します。
|
- **VIM**: アクセスされたファイルパスや検索履歴などの使用詳細のために _\~/.viminfo_ を確認します。
|
||||||
- **Open Office**: 侵害されたファイルを示す可能性のある最近の文書アクセスを確認します。
|
- **Open Office**: 侵害されたファイルを示す可能性のある最近のドキュメントアクセスを確認します。
|
||||||
- **FTP/SFTP**: 不正なファイル転送の可能性があるため、_ \~/.ftp_history_ または _\~/.sftp_history_ のログを確認します。
|
- **FTP/SFTP**: 不正なファイル転送がないか _\~/.ftp_history_ または _\~/.sftp_history_ のログを確認します。
|
||||||
- **MySQL**: 不正なデータベース活動を明らかにする可能性のある実行されたMySQLクエリのために _\~/.mysql_history_ を調査します。
|
- **MySQL**: 実行されたMySQLクエリを調査するために _\~/.mysql_history_ を調べ、不正なデータベース活動を明らかにします。
|
||||||
- **Less**: 表示されたファイルや実行されたコマンドを含む使用履歴のために _\~/.lesshst_ を分析します。
|
- **Less**: 使用履歴を分析するために _\~/.lesshst_ を確認し、表示されたファイルや実行されたコマンドを含みます。
|
||||||
- **Git**: リポジトリの変更のために _\~/.gitconfig_ とプロジェクトの _.git/logs_ を確認します。
|
- **Git**: リポジトリの変更を確認するために _\~/.gitconfig_ とプロジェクトの _.git/logs_ を調べます。
|
||||||
|
|
||||||
### USBログ
|
### USBログ
|
||||||
|
|
||||||
[**usbrip**](https://github.com/snovvcrash/usbrip) は、Linuxのログファイル(ディストリビューションに応じて `/var/log/syslog*` または `/var/log/messages*`)を解析してUSBイベント履歴テーブルを構築するために純粋なPython 3で書かれた小さなソフトウェアです。
|
[**usbrip**](https://github.com/snovvcrash/usbrip) は、Linuxのログファイル(ディストリビューションに応じて `/var/log/syslog*` または `/var/log/messages*`)を解析してUSBイベント履歴テーブルを構築するために書かれた小さなソフトウェアです。
|
||||||
|
|
||||||
使用されたすべてのUSBを知ることは興味深く、許可されたUSBのリストがあれば「違反イベント」(そのリストに含まれていないUSBの使用)を見つけるのにより役立ちます。
|
使用されたすべてのUSBを**知ることは興味深い**ことであり、"違反イベント"(そのリストに含まれていないUSBの使用)を見つけるために、承認されたUSBのリストがあるとさらに有用です。
|
||||||
|
|
||||||
### インストール
|
### インストール
|
||||||
```bash
|
```bash
|
||||||
@ -309,18 +335,18 @@ _**/etc/passwd**_、_**/etc/shadow**_、および**セキュリティログ**を
|
|||||||
|
|
||||||
### マルウェア調査におけるファイルシステム構造の分析
|
### マルウェア調査におけるファイルシステム構造の分析
|
||||||
|
|
||||||
マルウェアインシデントを調査する際、ファイルシステムの構造は重要な情報源であり、イベントの順序やマルウェアの内容を明らかにします。しかし、マルウェアの著者は、ファイルのタイムスタンプを変更したり、データストレージのためにファイルシステムを避けたりするなど、この分析を妨げる技術を開発しています。
|
マルウェアインシデントを調査する際、ファイルシステムの構造は重要な情報源であり、イベントの順序やマルウェアの内容を明らかにします。しかし、マルウェアの作者は、ファイルのタイムスタンプを変更したり、データストレージのためにファイルシステムを避けたりするなど、この分析を妨げる技術を開発しています。
|
||||||
|
|
||||||
これらのアンチフォレンジック手法に対抗するためには、以下が重要です:
|
これらのアンチフォレンジック手法に対抗するためには、以下が重要です:
|
||||||
|
|
||||||
- **Autopsy**のようなツールを使用してイベントのタイムラインを視覚化する**徹底的なタイムライン分析を行う**か、詳細なタイムラインデータのために**Sleuth Kitの`mactime`**を使用します。
|
- **Autopsy**のようなツールを使用してイベントのタイムラインを視覚化するために、徹底的なタイムライン分析を行うこと、または**Sleuth Kit**の`mactime`を使用して詳細なタイムラインデータを取得します。
|
||||||
- 攻撃者によって使用されるシェルやPHPスクリプトを含む可能性のある、システムの$PATH内の**予期しないスクリプトを調査する**。
|
- 攻撃者によって使用されるシェルやPHPスクリプトを含む可能性のある、システムの$PATH内の予期しないスクリプトを調査します。
|
||||||
- **/dev**内の異常なファイルを**調査する**。通常は特別なファイルが含まれていますが、マルウェア関連のファイルが存在する可能性があります。
|
- **/dev**内の異常なファイルを調べます。通常は特別なファイルが含まれていますが、マルウェア関連のファイルが存在する可能性があります。
|
||||||
- **隠しファイルやディレクトリを検索する**。名前が「.. 」(ドットドットスペース)や「..^G」(ドットドットコントロール-G)のようなものは、悪意のあるコンテンツを隠している可能性があります。
|
- **.. **(ドットドットスペース)や**..^G**(ドットドットコントロール-G)などの名前を持つ隠しファイルやディレクトリを検索し、悪意のあるコンテンツが隠されている可能性があります。
|
||||||
- 攻撃者によって悪用される可能性のある、特権が昇格されたファイルを見つけるために、次のコマンドを使用して**setuid rootファイルを特定する**:`find / -user root -perm -04000 -print`
|
- コマンドを使用してsetuid rootファイルを特定します:`find / -user root -perm -04000 -print` これは、攻撃者によって悪用される可能性のある昇格された権限を持つファイルを見つけます。
|
||||||
- ルートキットやトロイの木馬の存在を示す可能性がある、大量のファイル削除を示すために、inodeテーブル内の**削除タイムスタンプをレビューする**。
|
- inodeテーブル内の削除タイムスタンプをレビューして、大量のファイル削除を特定し、ルートキットやトロイの木馬の存在を示す可能性があります。
|
||||||
- 1つの悪意のあるファイルを特定した後、近くにある悪意のあるファイルのために**連続したinodeを検査する**。これらは一緒に配置されている可能性があります。
|
- 1つの悪意のあるファイルを特定した後、近くの悪意のあるファイルのために連続したinodeを検査します。これらは一緒に配置されている可能性があります。
|
||||||
- マルウェアによって変更される可能性があるため、最近変更されたファイルのために**一般的なバイナリディレクトリ**(_/bin_、_/sbin_)をチェックします。
|
- 最近変更されたファイルがマルウェアによって変更される可能性があるため、一般的なバイナリディレクトリ(_/bin_、_/sbin_)を確認します。
|
||||||
````bash
|
````bash
|
||||||
# List recent files in a directory:
|
# List recent files in a directory:
|
||||||
ls -laR --sort=time /bin```
|
ls -laR --sort=time /bin```
|
||||||
@ -328,8 +354,8 @@ ls -laR --sort=time /bin```
|
|||||||
# Sort files in a directory by inode:
|
# Sort files in a directory by inode:
|
||||||
ls -lai /bin | sort -n```
|
ls -lai /bin | sort -n```
|
||||||
````
|
````
|
||||||
> [!NOTE]
|
> [!TIP]
|
||||||
> 攻撃者は**ファイルを正当なものに見せるために** **時間**を**変更**することができますが、**inode**を**変更**することはできません。もし**ファイル**が同じフォルダ内の他のファイルと**同時に**作成および変更されたことを示しているが、**inode**が**予期せず大きい**場合、その**ファイルのタイムスタンプが変更された**ことになります。
|
> 注意してください、**攻撃者**は**時間**を**変更**して**ファイルを正当なものに見せる**ことができますが、**inode**を**変更**することはできません。同じフォルダー内の他のファイルと**同時に**作成および変更されたことを示す**ファイル**があり、しかし**inode**が**予期せず大きい**場合、その**ファイルのタイムスタンプが変更された**ことになります。
|
||||||
|
|
||||||
## 異なるファイルシステムバージョンの比較
|
## 異なるファイルシステムバージョンの比較
|
||||||
|
|
||||||
@ -355,7 +381,7 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
|||||||
- `D`: 削除されたファイル
|
- `D`: 削除されたファイル
|
||||||
- `M`: 変更されたファイル
|
- `M`: 変更されたファイル
|
||||||
- `R`: 名前が変更されたファイル
|
- `R`: 名前が変更されたファイル
|
||||||
- `T`: タイプの変更 (例: ファイルからシンボリックリンク)
|
- `T`: タイプの変更(例:ファイルからシンボリックリンクへ)
|
||||||
- `U`: マージされていないファイル
|
- `U`: マージされていないファイル
|
||||||
- `X`: 不明なファイル
|
- `X`: 不明なファイル
|
||||||
- `B`: 壊れたファイル
|
- `B`: 壊れたファイル
|
||||||
@ -367,4 +393,6 @@ git diff --no-index --diff-filter=D path/to/old_version/ path/to/new_version/
|
|||||||
- [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
|
- [https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203](https://git-scm.com/docs/git-diff#Documentation/git-diff.txt---diff-filterACDMRTUXB82308203)
|
||||||
- **書籍: Linuxシステムのマルウェアフォレンジックフィールドガイド: デジタルフォレンジックフィールドガイド**
|
- **書籍: Linuxシステムのマルウェアフォレンジックフィールドガイド: デジタルフォレンジックフィールドガイド**
|
||||||
|
|
||||||
|
- [Red Canary – 永続性のためのパッチ: DripDropper Linuxマルウェアがクラウドを通じて移動する方法](https://redcanary.com/blog/threat-intelligence/dripdropper-linux-malware/)
|
||||||
|
|
||||||
{{#include ../../banners/hacktricks-training.md}}
|
{{#include ../../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user