14 KiB
Raw Blame History

アンチフォレンジック技術

{{#include ../../banners/hacktricks-training.md}}

タイムスタンプ

攻撃者はファイルのタイムスタンプを変更することに興味を持つかもしれません。
タイムスタンプは、MFT内の属性$STANDARD_INFORMATION __ と __ $FILE_NAMEに見つけることができます。

両方の属性には4つのタイムスタンプがあります: 変更, アクセス, 作成, および MFTレジストリ変更 (MACEまたはMACB)。

Windowsエクスプローラーや他のツールは、**$STANDARD_INFORMATION**からの情報を表示します。

TimeStomp - アンチフォレンジックツール

このツールは**$STANDARD_INFORMATION内のタイムスタンプ情報を変更しますが、$FILE_NAME内の情報は変更しません**。したがって、疑わしい 活動を特定することが可能です

Usnjrnl

USNジャーナル (Update Sequence Number Journal)は、NTFS (Windows NTファイルシステム)の機能で、ボリュームの変更を追跡します。UsnJrnl2Csvツールを使用すると、これらの変更を調査できます。

前の画像は、ツールによって表示された出力で、ファイルに対していくつかの変更が行われたことが観察できます。

$LogFile

ファイルシステムへのすべてのメタデータ変更は書き込み先行ログとして知られるプロセスで記録されます。記録されたメタデータは、NTFSファイルシステムのルートディレクトリにある**$LogFile**という名前のファイルに保持されます。LogFileParserのようなツールを使用して、このファイルを解析し、変更を特定できます。

再び、ツールの出力では、いくつかの変更が行われたことが確認できます。

同じツールを使用して、タイムスタンプが変更された時刻を特定することも可能です:

  • CTIME: ファイルの作成時刻
  • ATIME: ファイルの変更時刻
  • MTIME: ファイルのMFTレジストリ変更
  • RTIME: ファイルのアクセス時刻

$STANDARD_INFORMATION$FILE_NAME の比較

疑わしい変更されたファイルを特定する別の方法は、両方の属性の時間を比較して不一致を探すことです。

ナノ秒

NTFSのタイムスタンプは100ナ精度を持っています。したがって、2010-10-10 10:10:00.000:0000のようなタイムスタンプを持つファイルを見つけることは非常に疑わしい**です。

SetMace - アンチフォレンジックツール

このツールは、両方の属性$STARNDAR_INFORMATION$FILE_NAMEを変更できます。ただし、Windows Vista以降は、ライブOSでこの情報を変更する必要があります。

データ隠蔽

NFTSはクラスターと最小情報サイズを使用します。つまり、ファイルがクラスターと半分を占有している場合、残りの半分はファイルが削除されるまで使用されません。したがって、このスラックスペースにデータを隠すことが可能です

slackerのようなツールを使用すると、この「隠された」スペースにデータを隠すことができます。ただし、$logfile$usnjrnlの分析により、いくつかのデータが追加されたことが示される可能性があります:

その後、FTK Imagerのようなツールを使用してスラックスペースを取得することが可能です。この種のツールは、内容を難読化または暗号化して保存することができます。

UsbKill

これは、USBポートに変更が検出された場合にコンピュータをオフにするツールです。
これを発見する方法は、実行中のプロセスを検査し、実行中の各Pythonスクリプトをレビューすることです。

ライブLinuxディストリビューション

これらのディストロはRAMメモリ内で実行されます。検出する唯一の方法は、NTFSファイルシステムが書き込み権限でマウントされている場合です。読み取り権限のみでマウントされている場合、侵入を検出することはできません。

セキュア削除

https://github.com/Claudio-C/awesome-data-sanitization

Windows設定

フォレンジック調査をはるかに困難にするために、いくつかのWindowsログ記録方法を無効にすることが可能です。

タイムスタンプの無効化 - UserAssist

これは、ユーザーによって各実行可能ファイルが実行された日時を保持するレジストリキーです。

UserAssistを無効にするには、2つのステップが必要です

  1. 2つのレジストリキー、HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackProgsHKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Start_TrackEnabledをゼロに設定して、UserAssistを無効にしたいことを示します。
  2. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\<hash>のようなレジストリサブツリーをクリアします。

タイムスタンプの無効化 - Prefetch

これは、Windowsシステムのパフォーマンスを向上させる目的で実行されたアプリケーションに関する情報を保存します。ただし、これはフォレンジック実践にも役立ちます。

  • regeditを実行
  • ファイルパスHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\PrefetchParametersを選択
  • EnablePrefetcherEnableSuperfetchの両方を右クリック
  • 各々の値を1または3から0に変更するために修正を選択
  • 再起動

タイムスタンプの無効化 - 最終アクセス時刻

NTFSボリュームからフォルダーが開かれるたびに、システムは各リストされたフォルダーのタイムスタンプフィールドを更新するための時間を取ります。これは、NTFSボリュームが頻繁に使用される場合、パフォーマンスに影響を与える可能性があります。

  1. レジストリエディタを開く (Regedit.exe)。
  2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystemに移動します。
  3. NtfsDisableLastAccessUpdateを探します。存在しない場合は、このDWORDを追加し、その値を1に設定してプロセスを無効にします。
  4. レジストリエディタを閉じ、サーバーを再起動します。

USB履歴の削除

すべてのUSBデバイスエントリは、USBデバイスをPCまたはートパソコンに接続するたびに作成されるサブキーを含むUSBSTORレジストリキーの下にWindowsレジストリに保存されます。このキーはここにありますHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTORこれを削除することで、USB履歴を削除します。
また、USBDeviewツールを使用して、削除したことを確認することもできます(および削除するために)。

USBに関する情報を保存する別のファイルは、C:\Windows\INF内のsetupapi.dev.logファイルです。これも削除する必要があります。

シャドウコピーの無効化

シャドウコピーをリストするにはvssadmin list shadowstorage
削除するにはvssadmin delete shadowを実行します。

GUIを介して削除することも可能で、https://www.ubackup.com/windows-10/how-to-delete-shadow-copies-windows-10-5740.htmlで提案された手順に従います。

シャドウコピーを無効にするには、こちらの手順を参照してください:

  1. Windowsスタートボタンをクリックした後、テキスト検索ボックスに「services」と入力してサービスプログラムを開きます。
  2. リストから「Volume Shadow Copy」を見つけて選択し、右クリックしてプロパティにアクセスします。
  3. 「スタートアップの種類」ドロップダウンメニューから「無効」を選択し、変更を適用してOKをクリックして確認します。

シャドウコピーでコピーされるファイルの構成を変更することも可能で、レジストリHKLM\SYSTEM\CurrentControlSet\Control\BackupRestore\FilesNotToSnapshotで設定できます。

削除されたファイルの上書き

  • Windowsツールを使用できます:cipher /w:C これは、Cドライブ内の未使用のディスクスペースからデータを削除するようにcipherに指示します。
  • Eraserのようなツールを使用することもできます。

Windowsイベントログの削除

  • Windows + R --> eventvwr.msc --> "Windows Logs"を展開 --> 各カテゴリを右クリックして「ログのクリア」を選択
  • for /F "tokens=*" %1 in ('wevtutil.exe el') DO wevtutil.exe cl "%1"
  • Get-EventLog -LogName * | ForEach { Clear-EventLog $_.Log }

Windowsイベントログの無効化

  • reg add 'HKLM\\SYSTEM\\CurrentControlSet\\Services\\eventlog' /v Start /t REG_DWORD /d 4 /f
  • サービスセクション内で「Windows Event Log」サービスを無効にします。
  • WEvtUtil.exec clear-logまたはWEvtUtil.exe cl

$UsnJrnlの無効化

  • fsutil usn deletejournal /d c:

高度なログ記録とトレース改ざん (2023-2025)

PowerShell ScriptBlock/Module Logging

最近のWindows 10/11およびWindows Serverのバージョンは、Microsoft-Windows-PowerShell/Operational (イベント4104/4105/4106)の下にリッチなPowerShellフォレンジックアーティファクトを保持します。攻撃者は、これらをオンザフライで無効にしたり消去したりすることができます:

# Turn OFF ScriptBlock & Module logging (registry persistence)
New-ItemProperty -Path "HKLM:\\SOFTWARE\\Microsoft\\PowerShell\\3\\PowerShellEngine" \
-Name EnableScriptBlockLogging -Value 0 -PropertyType DWord -Force
New-ItemProperty -Path "HKLM:\\SOFTWARE\\Policies\\Microsoft\\Windows\\PowerShell\\ModuleLogging" \
-Name EnableModuleLogging -Value 0 -PropertyType DWord -Force

# In-memory wipe of recent PowerShell logs
Get-WinEvent -LogName 'Microsoft-Windows-PowerShell/Operational' |
Remove-WinEvent               # requires admin & Win11 23H2+

防御者は、これらのレジストリキーの変更と大量のPowerShellイベントの削除を監視するべきです。

ETW (Event Tracing for Windows) パッチ

エンドポイントセキュリティ製品はETWに大きく依存しています。2024年の人気の回避方法は、メモリ内でntdll!EtwEventWrite/EtwEventWriteFullをパッチして、すべてのETW呼び出しがイベントを発生させることなくSTATUS_SUCCESSを返すようにすることです。

// 0xC3 = RET on x64
unsigned char patch[1] = { 0xC3 };
WriteProcessMemory(GetCurrentProcess(),
GetProcAddress(GetModuleHandleA("ntdll.dll"), "EtwEventWrite"),
patch, sizeof(patch), NULL);

Public PoCs (e.g. EtwTiSwallow) は PowerShell または C++ で同じプリミティブを実装しています。
パッチが プロセスローカル であるため、他のプロセス内で実行されている EDR はこれを見逃す可能性があります。
検出: メモリ内の ntdll とディスク上の ntdll を比較するか、ユーザーモードの前にフックします。

Alternate Data Streams (ADS) 復活

2023年のマルウェアキャンペーン例: FIN12 ローダーでは、従来のスキャナーの視界から外れるために、ADS 内に第二段階のバイナリをステージングしているのが確認されています:

rem Hide cobalt.bin inside an ADS of a PDF
type cobalt.bin > report.pdf:win32res.dll
rem Execute directly
wmic process call create "cmd /c report.pdf:win32res.dll"

ストリームを列挙するには、dir /RGet-Item -Stream *、またはSysinternalsのstreams64.exeを使用します。ホストファイルをFAT/exFATにコピーするか、SMB経由でコピーすると、隠しストリームが削除され、調査者がペイロードを回復するのに使用できます。

BYOVD & “AuKill” (2023)

Bring-Your-Own-Vulnerable-Driverは、ランサムウェア侵入におけるアンチフォレンジックに現在一般的に使用されています。オープンソースツールAuKillは、署名されたが脆弱なドライバー(procexp152.sys)をロードして、暗号化およびログ破壊の前にEDRおよびフォレンジックセンサーを一時停止または終了させます。

AuKill.exe -e "C:\\Program Files\\Windows Defender\\MsMpEng.exe"
AuKill.exe -k CrowdStrike

ドライバーはその後削除され、最小限のアーティファクトが残ります。
緩和策Microsoftの脆弱なドライバーブロックリストHVCI/SACを有効にし、ユーザーが書き込み可能なパスからのカーネルサービスの作成に警告します。


参考文献

{{#include ../../banners/hacktricks-training.md}}