# PDFヘッダー分析

{% hint style="info" %}
PDFファイルセキュリティ分析における主要検査要素

情報セキュリティフォレンジックの観点からPDFファイルを分析する際に注意すべき主要な要素は以下の通りです。これらの要素は、悪意のあるPDFファイルを特定し分析するための重要な手がかりを提供します。
{% endhint %}

### 主要要素 <a href="#id-1" id="id-1"></a>

1. JavaScript関連キーワード:
   * `/JS`, `/JavaScript`, `/AA`, `/OpenAction`
   * PDFファイル内のJavaScriptは、自動的に実行される可能性のある悪意のあるスクリプトを含む場合があります。&#x20;
   * 悪意のあるPDFは主にJavaScriptを使用して脆弱性を攻撃します。
2. 埋め込みファイル:
   * `/EmbeddedFile`, `/Launch`
   * PDFに埋め込まれたファイルは、実行可能な悪意のあるファイルである可能性があります。
   * `/Launch` キーワードは、PDFファイルが特定のプログラムを実行するよう指示する可能性を示します。
3. 暗号化:
   * `/Encrypt`
   * PDFが暗号化されている場合、ファイル内部の内容を分析することが難しくなります。これは正当な理由がある場合もありますが、悪意を持って内容を隠そうとする意図である可能性もあります。
4. フォームおよびマルチメディア:
   * `/AcroForm`, `/RichMedia`, `/JBIG2Decode`, `/XFA`
   * フォームおよびマルチメディア要素は、悪意のあるコードや活動を隠す手段として使用される場合があります。特に`/XFA`はPDFの動的フォームを定義するために使用され、複雑なインタラクションを含む可能性があります。
5. ストリームおよびオブジェクト:
   * `obj`, `endobj`, `stream`, `endstream`
   * ストリームとオブジェクトの数が異常に多い場合、PDFファイル内に隠されたデータやコードが多く含まれていることを示唆します。
6. ページ数:
   * `/Page`
   * ページ数はPDFの大きさや内容を大まかに把握する手助けとなります。異常に多いページ数には注意が必要です。
7. その他の構造的要素:
   * `xref`, `trailer`, `startxref`
   * これらの要素はPDFファイル構造の整合性を確認する上で重要です。破損や異常な構造は悪意のあるPDFの兆候である可能性があります。

### 主要キーワードの説明および分析 <a href="#id-2" id="id-2"></a>

```
/JS               : 0
/JavaScript       : 0
/AA               : 0
/OpenAction       : 0
```

* JavaScriptコードが自動実行される可能性があるため注意が必要です。この例では値は0です。

```
/EmbeddedFile     : 0
/Launch           : 1
```

* このPDFが特定のプログラムを実行しようとしている可能性があります。

```
/Encrypt          : 0
```

* 暗号化されている場合、内容の確認が困難になります。

```
/AcroForm         : 0
/RichMedia        : 0
/JBIG2Decode      : 0
/XFA              : 0
```

* フォームの有無を確認します。マルチメディアの有無を確認します。

```
obj            1536
endobj          767
stream          672
endstream       336
/Page            14
xref              2
trailer           1
startxref         1
```

* オブジェクトの数が非常に多い場合、注意が必要です。\
  ストリームとオブジェクトの不一致は異常を示す可能性があります。\
  ページ数が異常に多い場合、分析が必要です。\
  ファイル構造の整合性を確認します。

### 要約 <a href="#id-3" id="id-3"></a>

フォレンジック分析の際、以下の手順を実行できます:

1. **JavaScriptコードの分析**: `/JS`, `/JavaScript`関連のコードを確認し、存在する場合は内容を解析します。
2. **埋め込みファイルおよび実行の分析**: `/EmbeddedFile`, `/Launch`キーワードを確認し、実行されるプログラムを特定します。
3. **暗号化の確認**: `/Encrypt`キーワードを確認し、暗号化されている場合は解除して内容を確認します。
4. **フォームおよびマルチメディアの分析**: `/AcroForm`, `/RichMedia`, `/JBIG2Decode`, `/XFA`キーワードを確認し、それらの内容を詳しく分析します。
5. **オブジェクトおよびストリームの分析**: ストリームやオブジェクトの数を確認し、隠されたデータやコードを検出します。
6. **構造的整合性の確認**: `xref`, `trailer`, `startxref`キーワードを確認し、PDFファイル構造の整合性を確保します。

これらの手順を通じて、悪意のあるPDFファイルを識別し、必要に応じてさらなる分析を通じて悪意のある活動を検出できます。

### 参考資料 <a href="#id-4" id="id-4"></a>

* [ ] Github :  Didier Stevens : [pdfid.py](https://github.com/DidierStevens/DidierStevensSuite/blob/master/pdfid.py)<br>
