# Forensics [Forensics入門(CTF)](https://qiita.com/knqyf263/items/6ebf06e27be7c48aab2e) [zsteg](https://github.com/zed-0xff/zsteg) ## stegano ### exiftool ``` $ sudo apt-get install exiftool ``` ### binwalk 中に埋め込まれているファイルがあれば取り出す。 ``` $ sudo apt-get install binwalk $ binwalk -e stego_50.jpg ``` ### foremost これはファイルのヘッダやフッタ、内部データ構造に基づいてファイルを復元してくれるツールらしい. ``` $ sudo apt-get install foremost $ foremost stego_50.jpg ``` ### zsteg detect stegano-hidden data in PNG & BMP ``` $ sudo apt isntall ruby $ sudo gem install zsteg # zsteg flower_rgb3.png ``` ## ディスクイメージが渡された場合 ### mount とりあえずそのままマウントできるかもしれないのでマウントしてみます(root権限が必要) ``` mount [オプション] デバイス [マウントポイント] mount [オプション] マウントポイント mount -l ※[ ]は省略可能な引数を示しています。 # mount out.img /mnt/test/ # ls /mnt/test dance.mp4 umount [オプション] [デバイスまたはマウントポイント] ``` ### fdisk 特定のパーティションをマウントしたい場合 fdiskで調べてからoffsetをmountコマンドで指定 マウントしたいパーティションのstartとなっている数値にセクタサイズ(通常512)をかけた数がoffset ``` # fdisk -lu out.img # mount -o loop,offset=[start*512] out.img /mnt/test ``` ### fsck ファイルシステムを検査、修復する ``` fsck [オプション] [-t ファイルシステムの種類] [場所] [--] [ファイルシステム固有のオプション] ``` ### foremost バイナリやディスクから中のデータを抽出することができる ``` foremost -t jpg -i binary_hacks_smpl.pdf ``` ### ***The Sleuth Kit*** [SleuthKitWiki](http://wiki.sleuthkit.org/index.php?title=Main_Page) ### fls ディスクイメージ内のファイルとディレクトリの名前を列挙 ``` $ fls out.img r/r 3: USB (Volume Label Entry) r/r 5: ._.Trashes d/d 7: .Trashes d/d 10: .Spotlight-V100 d/d 12: .fseventsd r/r * 14: clam.pptx r/r 16: dance.mp4 v/v 3270243: $MBR v/v 3270244: $FAT1 v/v 3270245: $FAT2 d/d 3270246: $OrphanFiles ``` ### icat inode番号を指定するとそのファイルを出力してくれるようです。 上のflsで14がclam.pptxと分かったので抜き出してみます。 ``` $ icat out.img 14 > clam.pptx ``` ## volatility winpmemでファイル形式を変換します。winpmemはcdi-collectorに付属しています。 [cdir collecotor](https://www.cyberdefense.jp/products/cdir.html) [my_arthenal link](https://drive.google.com/drive/folders/1oTTjqNSMb541_GAhShWzNrRqibcWdPGi?usp=sharing) ``` C:tmp> winpmem-2.1.post4.exe ./RAM_SOME-PC.aff4 --export PhysicalMemory -o ./RAM_SOME-PC.img ``` ### install(kali) ``` git clone https://github.com/volatilityfoundation/volatility.git cd volatility python setup.py build install git clone https://github.com/gdabah/distorm.git cd distorm3 python setup.py build sudo python setup.py build install sudo apt-get install yara -y wget https://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.1.tar.gz tar -xvzf pycrypto-2.6.1.tar.gz cd pycrypto-2.6.1 python setup.py build sudo python setup.py build install ``` ### 基本的な使い方 [ceatsheet](https://sansorg.egnyte.com/dl/LVvF5jRNLK) [plugin](https://hackmd.io/G9W806dcQoSRsW5qgh5D-Q?edit) ``` python vol.py -f [image] --profile=[profile] [plugin] ``` ### imageinfo ``` python ~/volatility/vol.py -f Challenge.raw imageinfo ``` ### psList, psTree アクティブまたは実行中のプロセスをリストアップする ``` python ~/volatility/vol.py -f Challenge.raw --profile=Win7SP1x86 pslist ``` ### cmdScan, cmdline シェル/ターミナルで実行されたコマンドがあるかどうかを確認 ``` python ~/volatility/vol.py -f Challenge.raw --profile=Win7SP1x86 cmdscan ``` ### consoles コマンドが標準出力に何かを送っているかどうかをチェック ``` python ~/volatility/vol.py -f Challenge.raw --profile=Win7SP1x86 consoles ``` ### envars システム内の環境変数を見る ``` python ~/volatility/vol.py -f Challenge.raw --profile=Win7SP1x86 envars ``` ### hashump NTLMパスワードのハッシュを抽出 ``` python ~/volatility/vol.py -f Challenge.raw --profile=Win7SP1x86 hashdump ``` ### 特定ファイルの抽出 filescanプラグインでメモリアドレスを取得⇒dumpfilesプラグインでこのアドレスを指定してファイルを抽出 ``` python ~/volatility/vol.py -f MemoryDump_Lab1.raw --profile=Win7SP1x64 filescan python ~/volatility/vol.py -f MemoryDump_Lab1.raw --profile=Win7SP1x64 dumpfiles -D . -Q 0x000000003fa3ebc0 --name ``` ### memdump プロセスのメモリダンプを取得 ``` python ~/volatility/vol.py -f MemoryDump_Lab1.raw --profile=Win7SP1x64 memdump -D . -p 2424 ``` ### 削除済みデータの痕跡抽出 小さいファイルが削除されてもNTFS partitionに残っている場合がある。Grepのオプションは検索文字列の前後20行を表示。 ``` python ~/volatility/vol.py -f MemoryDump_Lab4.raw --profile=Win7SP1x64 mftparser | grep -C 20 'Users\\SlimShady\\Desktop\\Important.txt' ``` ### アプリがユーザによって実行された時間等 ``` volatility -f RAM_SOME-PC.img --profile=Win10x64_10586 userassist ``` ## chrome chromeにログインしていないユーザの各種設定。履歴、パスワードとかもある。 ``` C:¥Users¥ユーザ名¥AppData¥Local¥Google¥Chrome¥User Data¥Default ``` ## registry ◉レジストリ解析 [KaniReg](https://github.com/4n6ist/KaniReg) ◉自動実行 NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\Run NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\RunOnce NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\RunServices NTUSER.DAT\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce ## データの実行痕跡 プリフェッチ、USNジャーナル 〇 プリフェッチ [WinPrefetchView v1.37 Copyright (c) 2010 - 2021 Nir Sofer 40](http://www.nirsoft.net/utils/win_prefetch_view.html) プリフェッチの場所 C\Windows\Prefech\ 〇 USNジャーナル [USN Analytics](http://www.kazamiya.net/usn_analytics) [USNジャーナル解析の追及](https://www.jpcert.or.jp/present/2018/JSAC2018_03_yamazaki.pdf) USNジャーナルの場所 C: $Extend $UsnJrnl $J メイン $Max 管理情報 ○ USBからのファイル削除日時 (1)AutopsyとかFTKとかでファイルを確認 (2)$LogFileをエクスポート (3)$LogFileをパース[NTFS Log Tracker](https://sites.google.com/site/forensicnote/ntfs-log-tracker) ``` C:\temp> NTFS_Log_Tracker_CMD_V1.6.exe -l $LogFile -c -o c:\temp ``` ## 代替データストリーム [代替データストリーム(ADS)について色々調べてみた](https://qiita.com/minr/items/c2393f532b2df35f7a9d) NTFSファイルシステムのファイル/ディレクトリに保存できる、隠しファイル ◉検索要領 ``` c:>cd test (目的フォルダ) c:\test>dir /r ``` ◉内容確認 ``` C:\test>more < foo:hoge.txt(代替データストリーム) ```