TSALVIA技術メモ

CTFのWriteupや気になったツールについて書いていきます。また、このサイトはGoogle Analyticsを利用しています。

Ghidra インストールガイド

Ghidraについて

2019年3月5日にNSAOSSリバースエンジニアリングツール「Ghidra(ギドラ)」を公開しました。 有料の「IDA Pro」と違い無料でデコンパイルまでしてくれるので、非常に魅力的なツールです。

news.mynavi.jp

今回は、Ghidra の公式サイトを参考にインストール手順を紹介します。 特に下記の2つが参考になりました。

他にも、Ghidraの使い方やプロジェクト共有機能などについてまとめていますので、こちらの記事も参考にしてください。

tsalvia.hatenablog.com

tsalvia.hatenablog.com

最小要件

  • ハードウェア

    • 4 GBのRAM
    • 1 GBの空き容量(Ghidraのインストール用)
    • (デュアルモニター推奨)
  • ソフトウェア

Ghidraのインストール

OpenJDK 11のインストール

  • Windows10の場合OpenJDK11のインストール方法メモ - Qiitaを参考)
    1. JDK Builds from Oracle にアクセスする。
    2. Windows/x64と書いてあるzipファイルをダウンロードする。
    3. ダウンロードしたzipファイルを展開する。
    4. C:\ProgramFiles\Java\ に展開したファイルを移動する。
    5. 環境変数を設定する。
      1. 下記の手順で設定画面を開く。
        「コントロールパネル」→「システムとセキュリティ」→「システム」→「システムの詳細設定」→「環境変数(N)...」
      2. ユーザ環境変数の「Path」を選択し、「編集」をクリックする。
      3. 「新規(N)」をクリックし、「C:\ProgramFiles\Java\jdk-11.0.2\bin」を指定する。
        ※ 環境に合わせてパスを変更してください。
      4. 「OK」を3回押して閉じる。


  • LinuxDebian 9)の場合
$ wget https://download.java.net/java/GA/jdk11/9/GPL/openjdk-11.0.2_linux-x64_bin.tar.gz
$ tar xvf openjdk-11.0.2_linux-x64_bin.tar.gz
$ sudo mkdir /opt/java/
$ sudo mv jdk-11.0.2 /opt/java/
$ echo 'JAVA_HOME=/opt/java/jdk-11.0.2' >> ~/.bashrc
$ echo 'PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
$ source ~/.bashrc

Ghidraのインストール

  1. Ghidra公式サイトにアクセスし、「Download Ghidra」からダウンロードする。

  2. ダウンロードしたzipファイルを展開する(7-Zipやunzipなど)。

※ Ghidraにインストーラはありません。好きな場所に保存してください。

Ghidraの起動

  1. Ghidraの起動用スクリプトを実行します。

    • Windowsの場合、ghidraRun.batを実行する。
    • Linuxの場合、ghidraRunを実行する。
  2. 利用規約が表示されるので、「I Agree」ボタンを押す。 f:id:tsalvia:20190313015242p:plain

  3. 「Ghidra: NO ACTIVE PROJECT」、「Ghidra Help」、「Tip of the Day」の3つのウインドウが表示される。 「Ghidra Help」と「Tip of the Day」は使わないので、閉じてください。 f:id:tsalvia:20190313015431p:plain

  4. 新しいプロジェクトを作成します。「File」→「New Project..」から作成できます。 f:id:tsalvia:20190313015524p:plain

  5. プロジェクトを共有するかどうかを選択します。今回は共有しないので、「Non-Shared Project」を選択して「Next >>」をクリックします。 f:id:tsalvia:20190313015630p:plain

  6. プロジェクトを管理するディレクトリとプロジェクト名を設定します。今回は、下記の通りに設定しました。

    • Project Directory →「/home/test/GhidraProjects」
      ※ この画面でディレクトリを新しく作成することができないので、あらかじめ作成しておいてください。
    • Project Name →「myProject」 f:id:tsalvia:20190313020309p:plain
  7. 「Finish」をクリックすると、プロジェクトが作成されます。 f:id:tsalvia:20190313022712p:plain

  8. f:id:tsalvia:20190313022758p:plainをクリックすると、「CodeBrowser」が起動します。ここで解析作業が行えます。 f:id:tsalvia:20190313020744p:plain

  9. 解析したいファイルをインポートします。「File」→「Import File...」からインポートできます。 f:id:tsalvia:20190313020824p:plain

  10. 解析したいファイルを選択します。今回は、サンプルとして下記のファイルをコンパイルしたものを指定しました。 gist.github.com f:id:tsalvia:20190313020859p:plain

  11. 「Format」や「Language」などを確認し、「OK」をクリックする。 f:id:tsalvia:20190313020924p:plain

  12. 解析するかどうかを聞かれるので、「Yes」をクリックします。 f:id:tsalvia:20190313020959p:plain

  13. 「Analyze」をクリックすると、解析が開始されます。 f:id:tsalvia:20190313021024p:plain

  14. 指定したファイルのサマリも表示されています。「OK」をクリックすると、閉じることができます。 f:id:tsalvia:20190313021047p:plain

  15. このように逆アセンブルデコンパイルできています。 f:id:tsalvia:20190313021146p:plain

Ghidraデバッグモードにおける注意点

※ こちらの内容は、Ghidra v9.0.1で修正されました。
Ghidra: Release Notes より

Basic Infrastructure. Running Ghidra in debug mode no longer opens remotely accessible ports by default. (Issue #6)


Ghidraをデバッグモードで起動すると、JDWP用のデバッグポート(18001番)が開かれます。 ただし、デフォルトでローカルだけでなく、インターネットにも公開状態となってしまいます。 通常、インターネットに公開する必要はないので、閉じておきましょう。 既にJDWPのデバッグポートを利用したPoCも公開されています。

修正方法

ghidra_9.0\support\launch.bat 140行目

set VMARG_LIST=!VMARG_LIST! -Xrunjdwp:transport=dt_socket,server=y,suspend=!SUSPEND!,address=*:!DEBUG_PORT!

↓ 下記のように書き換える

set VMARG_LIST=!VMARG_LIST! -Xrunjdwp:transport=dt_socket,server=y,suspend=!SUSPEND!,address=127.0.0.1:!DEBUG_PORT!

ghidra_9.0\support\launch.sh 150行目

VMARG_LIST+=" -Xrunjdwp:transport=dt_socket,server=y,suspend=${SUSPEND},address=*:${DEBUG_PORT}"

↓ 下記のように書き換える

VMARG_LIST+=" -Xrunjdwp:transport=dt_socket,server=y,suspend=${SUSPEND},address=127.0.0.1:${DEBUG_PORT}"

参考になるサイト

NTFSFileExtractor - NTFSボリュームから特定のファイルを抽出する

NTFSFileExtractor について

github.com

このツールを使用すると、NTFSボリュームを解析してファイルを抽出することができます。 例えば、下記のようなファイルを抽出することができます。

  • 削除されたファイル
  • 今使用されているファイル
  • 指定したMFT IDのファイル

今回は、特定のファイルを抽出する方法について紹介します。

MFT IDを指定してファイルを抽出する

今回は、通常の操作で抽出することができない$UsnJrnlファイルの抽出を行ってみます。 ちなみに、このファイルをNTFS Log Trackerに解析させると、ファイルの操作履歴が確認できます。

事前準備(MFT IDを特定する)

NTFSFileExtractorは、特定のファイルを抽出したい場合、MFT IDを指定する必要があります。 fteで$MFTを解析することで、MFT IDを特定できます。

www.kazamiya.net

  1. 「Run」ボタンを押すと、解析が始まります。
  2. 「File」→「Export」で解析結果をテキスト形式で出力することができます。

ファイル名が分かっている場合は、PowerShellなどで検索すると便利です。 今回の場合、3つ目のエントリ(78509)が$UsnJrnlのMFT IDになります。

> type .\fte_result.txt | Select-String "UsnJrnl"
$UsnJrnl|2137|78509|11|Unknown|POSIX|1|FILETIME|2019/01/10 21:54:07.9138068|2019/01/10 21:54:07.9138068|2019/01/10 21:54:07.9138068|2019/01/10 21:54:07.9138068|2019/01/10 21:54:07.9138068|2019/01/10 21:54:07.9138068|2019/01/10 21:54:07.9138068|2019/01/10 21:54:07.913806
8| cr  =  m  =  c  =  a  =  fcr  =  fm  =  fc  =  fa

特定のファイルを抽出する

  1. 「User Selec」を選択して、「Start Extraction」を実行する。
    f:id:tsalvia:20190303130728p:plain
  2. 「User Selected File Set」のウインドウが表示されたら、78509($UsnJrnlのMFT ID)を指定して「OK」を押す。
    f:id:tsalvia:20190303134743p:plain
  3. NTFSFileExtractorを実行した場所に「C」というディレクトリが作成されています。余計なファイルも出力されていますが、「$Extend」以下に目的のファイルが抽出されています。
    f:id:tsalvia:20190303135552p:plain

参考情報

PECmd - Windows Prefetchの解析

Windows Prefetch について

Windows Prefetchは、アプリケーションの起動の高速化のために導入された機能です。 Prefetchファイルには、下記のような情報が含まれています。

  • 実行ファイル名(最大29文字)
  • アプリケーションの実行回数
  • ボリュームパスやボリュームシリアル番号などのボリューム関連情報
  • アプリケーションの起動に使用されたファイルとディレクト
  • アプリケーションが最後に実行された時刻

Prefetchファイルには、上記の情報が含まれているので、 解析することでプログラムの実行痕跡などが得られる可能性があります。

なお、Prefetchファイルは、下記のディレクトリに「~.pf」という拡張子で格納されています。

C:\Windows\Prefetch

PECmd(Prefetchファイルの解析ツール)

Prefetchファイルの解析ツールは、色々とありますが、今回はPECmdというコマンドラインのツールを紹介します。 PECmdは、Prefetchファイルをパースすることで、下記の項目を抽出することができます。

PECmdは、こちら(Eric Zimmerman's tools)のページでダウンロードできます。

※ ただし、Windows 8以下のバージョンでは、Windows 10のPrefetchファイルを解析できないので、注意してください。

使い方

基本

  • Prefetchファイルを直接指定する(-f オプション)
PECmd.exe -f "NOTEPAD.EXE-B28CC291.pf"
  • Prefetchファイルが格納されているディレクトリを指定する(-d オプション)
    指定したディレクトリ内に存在するPrefetchファイルを再帰的に読み込みます。
PECmd.exe -d "C:\Windows\Prefetch"

実行例(Prefetchファイルを直接指定する)

今回は、例として C:\Users\TEST\Desktop\test.txtnotepad.exe で開いたときに生成されたPrefetchファイルを解析してみます。下記が解析結果より、実行時間や参照したファイルなどが確認できます。

C:\Windows\Prefetch>PECmd.exe -f NOTEPAD.EXE-B28CC291.pf
PECmd version 1.3.0.0

Author: Eric Zimmerman (saericzimmerman@gmail.com)
https://github.com/EricZimmerman/PECmd

Command line: -f NOTEPAD.EXE-B28CC291.pf

Keywords: temp, tmp

Processing 'NOTEPAD.EXE-B28CC291.pf'

Created on: 2019-02-24 04:55:17
Modified on: 2019-02-24 04:54:06
Last accessed on: 2019-02-24 05:02:51

Executable name: NOTEPAD.EXE
Hash: B28CC291
File size (bytes): 50,472
Version: Windows 10

Run count: 2
Last run: 2019-02-24 04:54:03
Other run times: 2019-02-24 04:11:39

Volume information:

#0: Name: \VOLUME{01d4cbf353a8246d-f25451a4} Serial: F25451A4 Created: 2019-02-24 03:45:04 Directories: 17 File references: 103

Directories referenced: 17

00: \VOLUME{01d4cbf353a8246d-f25451a4}\PROGRAMDATA
01: \VOLUME{01d4cbf353a8246d-f25451a4}\PROGRAMDATA\MICROSOFT
02: \VOLUME{01d4cbf353a8246d-f25451a4}\PROGRAMDATA\MICROSOFT\WINDOWS
03: \VOLUME{01d4cbf353a8246d-f25451a4}\PROGRAMDATA\MICROSOFT\WINDOWS\CACHES
04: \VOLUME{01d4cbf353a8246d-f25451a4}\USERS
05: \VOLUME{01d4cbf353a8246d-f25451a4}\USERS\TEST
06: \VOLUME{01d4cbf353a8246d-f25451a4}\USERS\TEST\DESKTOP
07: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS
08: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\FONTS
09: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\GLOBALIZATION
10: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\GLOBALIZATION\SORTING
11: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32
12: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IME
13: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IME\IMEJP
14: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IME\SHARED
15: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\JA-JP
16: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\WINSXS\AMD64_MICROSOFT.WINDOWS.COMMON-CONTROLS_6595B64144CCF1DF_6.0.17763.107_NONE_05B63884071E656E

Files referenced: 81

00: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\NTDLL.DLL
01: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\NOTEPAD.EXE
02: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\KERNEL32.DLL
03: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\KERNELBASE.DLL
04: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\LOCALE.NLS
05: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\ADVAPI32.DLL
06: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\MSVCRT.DLL
07: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\SECHOST.DLL
08: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\RPCRT4.DLL
09: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\GDI32.DLL
10: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\GDI32FULL.DLL
11: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\MSVCP_WIN.DLL
12: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\UCRTBASE.DLL
13: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\USER32.DLL
14: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\WIN32U.DLL
15: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\COMBASE.DLL
16: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\BCRYPTPRIMITIVES.DLL
17: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\COMDLG32.DLL
18: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\SHCORE.DLL
19: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\SHLWAPI.DLL
20: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\SHELL32.DLL
21: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\CFGMGR32.DLL
22: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\WINDOWS.STORAGE.DLL
23: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\PROFAPI.DLL
24: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\POWRPROF.DLL
25: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\KERNEL.APPCORE.DLL
26: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\CRYPTSP.DLL
27: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\WINSXS\AMD64_MICROSOFT.WINDOWS.COMMON-CONTROLS_6595B64144CCF1DF_6.0.17763.107_NONE_05B63884071E656E\COMCTL32.DLL
28: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\PROPSYS.DLL
29: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\OLEAUT32.DLL
30: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\WINSPOOL.DRV
31: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\BCRYPT.DLL
32: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\URLMON.DLL
33: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IPHLPAPI.DLL
34: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IERTUTIL.DLL
35: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\CRYPTBASE.DLL
36: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IMM32.DLL
37: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\JA-JP\NOTEPAD.EXE.MUI
38: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\WINDOWSSHELL.MANIFEST
39: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\OLE32.DLL
40: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\RPCSS.DLL
41: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\UXTHEME.DLL
42: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\CLBCATQ.DLL
43: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\MRMCORER.DLL
44: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\MSCTF.DLL
45: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\DWMAPI.DLL
46: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\CRYPT32.DLL
47: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\MSASN1.DLL
48: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\FONTS\STATICCACHE.DAT
49: \VOLUME{01d4cbf353a8246d-f25451a4}\$MFT
50: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\EFSWRT.DLL
51: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\MPR.DLL
52: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\WINTYPES.DLL
53: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\TWINAPI.APPCORE.DLL
54: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\RMCLIENT.DLL
55: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\GLOBALIZATION\SORTING\SORTDEFAULT.NLS
56: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\OLEACC.DLL
57: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\OLEACCRC.DLL
58: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\C_1252.NLS
59: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\TEXTINPUTFRAMEWORK.DLL
60: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\COREUICOMPONENTS.DLL
61: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\COREMESSAGING.DLL
62: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\NTMARTA.DLL
63: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IME\IMEJP\IMJPTIP.DLL
64: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\VERSION.DLL
65: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IME\IMEJP\IMJPAPI.DLL
66: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IME\SHARED\IMJKAPI.DLL
67: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\POLICYMANAGER.DLL
68: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\MSVCP110_WIN.DLL
69: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IME\IMEJP\IMJPPRED.DLL
70: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IME\SHARED\IMETIP.DLL
71: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\DUI70.DLL
72: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IME\SHARED\IMECFM.DLL
73: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\WER.DLL
74: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\JA-JP\MSCTF.DLL.MUI
75: \VOLUME{01d4cbf353a8246d-f25451a4}\USERS\TEST\DESKTOP\TEST.TXT
76: \VOLUME{01d4cbf353a8246d-f25451a4}\PROGRAMDATA\MICROSOFT\WINDOWS\CACHES\CVERSIONS.2.DB
77: \VOLUME{01d4cbf353a8246d-f25451a4}\PROGRAMDATA\MICROSOFT\WINDOWS\CACHES\{6AF0698E-D558-4F6E-9B3C-3716689AF493}.2.VER0X0000000000000001.DB
78: \VOLUME{01d4cbf353a8246d-f25451a4}\PROGRAMDATA\MICROSOFT\WINDOWS\CACHES\{DDF571F2-BE98-426D-8288-1A9A39C3FDA2}.2.VER0X0000000000000001.DB
79: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\JA-JP\PROPSYS.DLL.MUI
80: \VOLUME{01d4cbf353a8246d-f25451a4}\WINDOWS\SYSTEM32\IME\SHARED\IMESEARCHDLL.DLL

---------- Processed 'NOTEPAD.EXE-B28CC291.pf' in 0.02787400 seconds ----------

追加オプション

出力先指定

  • json形式で出力する(--json オプション)
    • --json オプションには、出力先のディレクトリ名を指定します。
    • --pretty オプションを付けると、Human Readableな形式で出力されます。
PECmd.exe -f NOTEPAD.EXE-B28CC291.pf --json "jsonOutput"
PECmd.exe -f NOTEPAD.EXE-B28CC291.pf --json "jsonOutput" --pretty
  • csv形式で出力する(--csv オプション)
    • --csv オプションには、出力先のディレクトリ名を指定します。
    • 出力先のディレクトリに下記の2つのファイルが生成されます。
      • Prefetchファイルのパース結果
      • 実行ファイルのタイムライン
PECmd.exe -d "C:\Windows\Prefetch" --csv "csvOutput"
PECmd.exe -d "C:\Windows\Prefetch" --html "C:\Users\TEST\Desktop\htmlOutput"

日時表示形式の指定

  • 時刻表示を現地時刻にする(--local オプション)
PECmd.exe -f NOTEPAD.EXE-B28CC291.pf --local
  • 日時表示形式を変更する(--dt オプション)
PECmd.exe -f NOTEPAD.EXE-B28CC291.pf --dt "yyyy/MM/dd HH:mm:ss"
  • 時刻表示の精度を上げる(--mp オプション)
    • 0.1マイクロ秒まで表示する。
      (例:2019-02-24 04:54:03 → 2019-02-24 04:54:03.3462456)
PECmd.exe -f NOTEPAD.EXE-B28CC291.pf --mp

その他

  • 特定のキーワードをハイライトする(-k オプション)
    • 指定したキーワードに該当する行が赤字でハイライトされます。
    • デフォルトのキーワードとして、tempとtmpが設定されています。
PECmd.exe -f NOTEPAD.EXE-B28CC291.pf -k "USERS"
  • 出力を抑制モードにする(-q オプション)
    • jsoncsvなどの形式で出力する場合に使用する。
    • ディスプレイ表示を抑制して、処理を高速化させる。
PECmd.exe -f NOTEPAD.EXE-B28CC291.pf --json "jsonOutput" -q

参考情報

Windows Prefetchについて

PECmd関連

CyberChefの使い方

CyberChefとは

Base64、URLエンコード、AES復号など200以上の変換が行える万能ツールです。
また、変換処理はすべてクライアントサイドで行われるので、入力したデータがどこかに送信される心配もありません。
※ ダウンロード版もあるので、心配な人はオフラインで実行してみてください。

CTFとかにも使えるので、かなり重宝してます。
ただ、ドメインgchqと書かれているのが少し気になりますね

gchq.github.io

使い方

基本操作

  1. 「Input」に変換したいものを入力する。
  2. 「Operations」から操作方法を選択し、「Recipe」にドラッグアンドドロップする。

Base64デコード例

  1. 「Input」に変換したいBase64文字列を入力する。
  2. 「Operations」から「From Base64」を選択し、「Recipe」にドラッグアンドドロップする。

20190221235006

応用 - 多重変換

AESで復号→Base64デコード→画像変換

  1. 「Open file as input」で変換したいファイルを選択する。
  2. 「Operations」から「AES Decrypt」を「Recipe」にドラッグアンドドロップする。
    • 「Key」にAES Keyを指定する。今回は、UTF-8で「aaaaaaaaaaaaaaaa」にしています。
    • 「IV」に IVを指定する。今回は、UTF-8で「bbbbbbbbbbbbbbbb」にしています。
    • 「Mode」にAESアルゴリズムを指定する。今回は、「CBCモード」にしています。
  3. 「Operations」から「From Base64」を「Recipe」にドラッグアンドドロップする。
  4. 「Output」の「Render Image ~」アイコンをクリックする。

20190222011657