web-dev-qa-db-ja.com

悪意のあるPDFを安全に表示する方法は?

PDFにマルウェアを含む可能性のある重要な情報が含まれています。それを表示する最良の方法は何ですか?

43
user11101

ドキュメントベースのエクスプロイトは、ドキュメント自体ではなく、ビューアの脆弱性に向けられています。脆弱性のないプログラム(または脆弱性を抑制する構成)でドキュメントを表示すると、悪用されることはありません。

実際の問題は、視聴者が脆弱かどうかを知ることです。これは通常、エクスプロイトが何であるかを具体的に知ることを意味します。ただし、PDF foxitやGoogle chromeの組み込みビューアなど、Adobeの公式ビューアと同じ脆弱性を必ずしも持たないビューアもあります。これは必ずしもall脆弱性なので、事前に何を取得しているのかを理解することが重要です。

[〜#〜]編集[〜#〜]
悪意のある可能性のある素材に頻繁に対処している場合は、強化された仮想環境をセットアップすることをお勧めします。 Linuxシステムを起動して、Virtualboxまたは同様の環境でターゲットOS(通常はWindows)を実行することをお勧めします。仮想OSのスナップショットを保存し、悪意のあるコンテンツとのやり取りが終わったら、そのスナップショットに戻します。また、ホストLinux環境を読み取り専用インストール(つまり、Live-CD)から実行することも悪くありません。

31
tylerl

PDF脆弱性のないビューアを介してそれを通過させます。それが他の誰かのビューアであれば、それはより安全です。それを解析する Google Docs を試してください。 HTMLとして表示するので、悪意のあるペイロードが害を及ぼすことはありません(PDFパーサーは非常に安全であるため、感染する可能性を気にしないでください。 )

18
B-Con

ネットワークアクセスのない仮想マシンでサンドボックスブラウザー(Chromiumなど)で pdf.js を使用します。

マルウェアがこれから抜け出すには、かなり注意が必要です。

7
ysdx

この状況では、Unix/Linux/OSXシェルコマンド「strings」を常に使用してきました。 * nixシステムでは、次のようにします。

strings ScaryFile.pdf | less

また、以下の多項式で言及されているように、Windowsの「文字列」を取得することもできます。あなたはそれをダウンロードすることができます ここ 。 XP以上で実行します。Windowsでの使用例を次に示します:

strings ScaryFile | findstr /i TextToSearchFor

しかし、ここでの私の答えの残りの部分では、あなたが* nixを使用していると仮定します。探しているのはテキストコンテンツ(ビットマップやベクターグラフィックではない)だけであると仮定して、下にスクロールしたり、必要なテキストの一部を検索して見つけることができます。残念ながら、それを見つけるには、ほとんどがXMLにある大量のメタデータ、および他のマークアップのフォーマット設定に加えて、いくつかのバイナリ(ASCIIとして、生のバイトではない)を調べなければなりません。したがって、「less」コマンドの検索機能を使用したい場合があります。文書で大文字と小文字を区別する文字列「thingyouwant」を検索するには、スラッシュキー+文字列+リターンを使用します。

/thingyouwant

次に、「n」キーを押して、「thingyouwant」の次のインスタンスを繰り返し、必要なものを見つけます。 「?」を使用できます上向きに同じことをするためのキー。より多くの魔法については、less manページ(タイプ "man less")を参照してください。

また、ドキュメントがリンクしているURLなどを分析することもできます。

strings ScaryFile.pdf| grep -i "http" | sort | uniq | less

ただし、上記のように、「文字列」の出力から表示されるものの99%はメタデータとフォーマット設定です。

6
Luke Sheppard

テスト後に元の状態に戻すことができる仮想マシンを使用します。 PDFリーダーが脆弱である場合、実際のワークステーションが影響を受ける可能性ははるかに低くなります。

6
user65388

悪意のある可能性のあるPDFをWindowsコンピューターで開く簡単で簡単な方法は、 Sumatra PDFビューアを使用することです。スマトラは小さくて軽量のPDFビューアであり、インタラクティブな入力可能なフォームやPDFファイルのJavaScriptをまったくサポートしていません。

スマトラには、ファイルシステムやインターネットアクセスの防止など、さらにロックダウンする 構成オプション もあります。

PDFファイル形式には、形式をより便利にするための多くのインタラクティブ機能がありますが、次のような重大なセキュリティリスクが生じます。- JavaScriptを使用してインタラクティブコンテンツを提供する 、ユーザーインターフェイスの自動化を可能にします-ローカルと対話する 機能ファイルシステム -リモートサーバーにHTTPリクエストを発行する機能-マルウェアを含む任意の添付ファイル のペイロードを運ぶ機能 - 入力可能なフォーム をユーザーに提示し、入力された情報を取得して操作する機能攻撃者のための強力なツールキットを作成します。多くのいわゆる「ドライブバイダウンロード」攻撃は、PDFファイルの使用に依存しています。

一般的なPDFビューアは、サンドボックス環境を作成するか、ユーザーにプロンプ​​トを表示することにより、これらの機能の安全性を提供しようとしますが、これらのソリューションはどちらもより複雑で(したがって、独自の脆弱性の影響を受けやすく)、他の当事者の製品との互換性が低くなりますその機能を完全に除外するという単純なソリューションよりも。

スマトラはPDFビューアーの1つの例であり、PDFエクスプロイトで最も一般的に使用される機能の多くを提供していません。潜在的な攻撃のカテゴリ全体を完全に排除することにより、このようなプログラムは未知のPDFファイルを表示するリスクを大幅に低減します。

人気の低いビューアを使用するもう1つの利点は、あまり一般的でなく、あまり強力ではないため、あまり面白くないターゲットになることです。

スマトラビューアは、たとえば、いくつかの未知のバグを利用してバッファオーバーフローを引き起こす特別に細工されたPDFによって悪用される可能性があります。ただし、このようなケースはまれであり、スマトラ島では近年、重大なセキュリティ攻撃はありません。

4
barbecue

Adobe Readerの最新バージョン(バージョン10.1以降)は、信頼できないファイルを表示するために使用できる "保護モード" またはサンドボックスをサポートしますPDF PDF file to %appdata%\Adobe\Acrobatおよびユーザーが明示的に開いたその他のPDFを表示するプロセス.

保護モードは、[編集]-> [設定]メニューに移動し、バージョンに応じて[一般]タブまたは[セキュリティ]タブを選択してアクティブにする必要があります。

enter image description here

明らかに、信頼できないPDFを開く前に、銀行取引明細書のような機密PDFをすべて閉じる必要があります。

2

別の簡単で時間のかからないオプションは、それをSandboxieアプリで開くことです。

1
Lee

悪意のあるPDFファイルを使用した実際の攻撃または標的型攻撃はすべて、分析または検出プロセスを強化するための難読化技術で覆われています。

難読化手法のほとんどは、eval()、String.fromCharCode()、arguments.callee()、base64のようなJavaScript難読化を主に使用しており、さらにPDF/Author、/などのキー値)キーワード、/ CreationDateなど.

悪意のあるPDFファイル(PDFオブジェクトストリーム内のもの))のコンテンツは、FlateDecodeで一般的に圧縮される可能性があるため、表示できない場合があります。 PDFオブジェクトストリーム内のコンテンツを膨らませるのに利用できるツール。pdf-parser(http://blog.didierstevens.com/programs/pdf-tools/)やFileInsight( http://www.McAfee.com/us/downloads/free-tools/fileinsight.aspx)。難読化されたJavaScriptコードのほとんどは、膨張したPDFストリーム内にあります。

PDFファイルを開くJavaScript機能がオフになっているリーダーの最新のパッチバージョンを入手することをお勧めしますが、削除または元に戻すことができる仮想マシンを入手することをお勧めしますファイルを開いた後のスナップショット.

1
d3t0n4t0r

コンテナでPDFを開くことができます。使用できるDockerイメージは次のとおりです。 https://hub.docker.com/r/chrisdaish/acroread/

MY_PDF_DIR='/tmp/foobar'
docker pull chrisdaish/acroread
docker run  -v $MY_PDF_DIR:/home/acroread/Documents:rw \
        -v /tmp/.X11-unix:/tmp/.X11-unix \
        -e uid=$(id -u) \
        -e gid=$(id -g) \
        -e DISPLAY=unix$DISPLAY \
        --name acroread \
        chrisdaish/acroread

これにより、ローカルのXサーバーを介して表示されるAcrobat Readerが開きます。

このアプローチにより、攻撃対象領域が減少しますが、Xサーバーにアクセスできるため、100%安全ではありません。

1
Valer

あまり人気のないビューアとOSの組み合わせを使用できます。 FreeBSDで実行されているOkularをターゲットにしている人はいないと思います(まだ脆弱である可能性はあります)。したがって、VM.

悪意のあるペイロードを害するためには、もちろんビューアのバージョンとOSおよびCPUアーキテクチャを一致させる必要があります。それは本当に低レベルのアセンブリとメモリに関するものです(ペイロードは特定のメモリアドレスに配置されることを期待し、いくつかの標準システム機能が利用可能であることを期待します)。これらのいずれかを変更すると、ペイロードが正しく実行されない可能性があります(またはビューアが害を及ぼすことなく単にクラッシュする可能性があります)。

0
filo