web-dev-qa-db-ja.com

大量の着信PDF=ファイルを処理するための最も安全な方法は何ですか。その一部は悪意のある可能性がありますか?

私は調査ジャーナリストとして毎日数十のメッセージを受け取ります。その多くにはPDFドキュメントが含まれています。しかし、盲目的にそれらを開いてコンピューターを危険にさらすことの潜在的に悪意のある結果のいくつかについて心配しています。以前は、調査ジャーナリズムに従事する前は、virustotal.com受信トレイに届くすべてのファイル(PDFを含む)を分析しますが、リリース前に機密であることが意図されている場合にファイルが送信されるため、この場合は不可能です。また、ウイルス対策ソリューションは100%万能ではないということを聞きました。

大量の着信PDF=ファイルを処理するための最も安全な方法は何ですか。その一部は悪意のある可能性がありますか?

161

あなたにとって最も安全なオプションは、組み込み DisposableVMQubes OS を使用することだと思いますs機能とその「信頼できるPDFに変換」ツール。

Qubes OSとは何ですか?

Qubesは、すべて仮想マシンに基づいたオペレーティングシステムです。自分の中に別の「コンピュータ」が分離されているかのように考えることができます。これにより、デジタルライフをさまざまなドメインに区分できるため、関連する作業のみを実行する「コンピューター」、オフラインであり、パスワードデータベースとPGPキーを保存する「コンピューター」を利用できます。信頼できないブラウジングに特化した別の「コンピュータ」...可能性は無数にあり、唯一の制限はあなたのRAMであり、基本的に一度にロードできるさまざまな「コンピュータ」の量です。これらすべての「コンピュータ」が互いに適切に分離されていること、およびホスト(ドメイン0の場合は「dom」と呼ばれる)に侵入して、すべてのマシンを制御できないことを保証する、Qubesは Xenハイパーバイザー[1] これは、同じソフトウェアです 多くの主要なホスティングプロバイダーによって信頼されています Amazon EC2、IBM、LinodeなどのWebサイトとサービスを互いに分離する...もう1つの優れた点は、あなたの「コンピュータ」は窓の境界に反映される特別な色を持っています。したがって、信頼されていない「コンピュータ」には赤を、仕事の「コンピュータ」には青を選択できます(下の例の画像を参照)。したがって、実際には、どのドメインで作業しているかを簡単に確認できます。したがって、信頼できない仮想マシンに悪質なマルウェアが侵入し、Xenの脆弱性を利用して侵入できるエクスプロイトがない限り、機密情報が含まれている可能性のある他の仮想マシンに侵入して感染させることはできませんdom(これは非常にまれです)、セキュリティのレベルを大幅に引き上げるもの(すべてを制御する前にマルウェアをマシンに展開する必要があるだけです)。もの。

DisposableVMとは何ですか?

もう1つの回答は、バーナーラップトップを使用できることです。使い捨て仮想マシンも同様ですが、物理的な制約に縛られない点が異なります。使い捨てVMは無限にあります。 1つを作成するために必要なのはクリック1つだけです。完了すると、仮想マシンは破棄されます。かっこいいですよね? Qubesには、DisposableVMで添付ファイルを開くことができるThunderbird拡張機能が付属しているため、ニーズに非常に役立ちます。[2]

enter image description here

(クレジット:Micah Lee

あなたが話していた「信頼できるPDFに変換する」とは何ですか?

興味深いドキュメントを見つけたとしましょう。また、ドキュメントの保存と開く専用のオフライン仮想マシンを持っているとしましょう。もちろん、そのドキュメントをそのVMに直接送信できますが、このドキュメントが悪意のある可能性があり、たとえば、すべてのファイルを削除しようとする可能性があります(短期間では気付かない動作DisposableVM)。ただし、「信頼できるPDF」と呼ばれる形式に変換することもできます。別のVMにファイルを送信し、ファイルマネージャーを開いて、ファイルのディレクトリに移動し、右クリックして[信頼できるPDFに変換]を選択して、VMドキュメントを収集する場所ですが、正確には何をしますか?「Convert to Trusted PDF」ツールは、新しいDisposableVMを作成し、そこにファイルを配置してから、(DisposableVMで実行される)パーサーを介して変換します。基本的には、各ピクセルのRGB値を取り、それ以外のものを残します。これは、分離された環境でPDFを開いてから、スクリーンショットを撮るようなものです。ファイルは明らかに大きくなり、 10Mbをテストしたときに変換されたことを思い出すと、PDF 400Mbに変換されます。詳細については、この blogpost セキュリティ研究者とQubes OS作成者が確認できます。 Joanna Rutkowska。


[1]:Qubes OSチームは、他のハイパーバイザー(KVMなど)をサポートできるように取り組んでいるため、VMで実行する異なるシステムだけでなく、これらの仮想マシンを実行するハイパーバイザーも選択できます。
[2]:また、「DispVMで開く」をクリックすると生成されるDisposableVMがオフラインになるようにオプションを構成して、IPアドレスを取得できないようにする必要もあります。これを行うには、「デフォルトでは、DisposableVMが作成された場合(Open in DispVMまたはRun in DispVM)VM内から)、新しいDisposableVMはそのトラフィックをclearnet経由でルーティングする場合があります。これは、DisposableVMが呼び出し元のVM(または呼び出し元のVMのdispvm_netvm異なる場合は設定)。 dispvm_netvm設定は、VMによって構成できます:dom0 → Qubes VM Manager → VM Settings → Advanced → NetVM for DispVM。 "noneに設定して、どのネットワークにも接続されないようにする必要がありますVMおよびインターネットにアクセスできないようにします。
[3]:編集:この answer はサブグラフOSについて言及していますが、サブグラフ template VMがQubes用に作成された場合 Qubesは、このようにエクスプロイトをはるかに困難にします。統合されたサンドボックスのおかげで、マシン全体を危険にさらすには、別のサンドボックスエスケープエクスプロイトとXenエクスプロイトが必要になります。

165
user139336

最も安全なのはおそらくバーナーデバイスでしょう。安価なラップトップとモバイルインターネットドングルを手に取り、それを使用してドキュメントをダウンロードし、すべてのコンテンツをメインコンピューターに手動でコピーします(特に心配している場合は、文字どおり再入力するのが最も安全です)。それはあなたのネットワーク上にないので、たとえそれが感染したとしても、それは問題を引き起こすことができないはずであり、あなたがそれをワイプしたり、あなたに特別に悪意のあるマルウェアが送られた場合、それを単にビニングすることができます。

ファイル(埋め込み画像など)から実際のコンテンツが必要な場合、1つのオプションは、バーナーデバイスにPDFプリンタードライバーをインストールし、それを使用して受信PDFファイルを印刷することです。 -これはPDF出力を生成しますが、理論的には、視覚的なコンポーネントのみを生成します。プリンターはスクリプト要素を必要としない傾向があるため、安全にドロップできます。一部のPDFプリンタードライバーは、PDFを提供するときに特定し、そのまま変更せずに通過させることを忘れないでください-依存する前にテストしてください!きれいなPDFを入手したら、それを自分宛に電子メールで送信し、開く前にメインマシンのウイルススキャナで確認します。これにより、マルウェアが侵入する可能性が完全に排除されるわけではありませんが、可能性を最小限に抑える必要があります。

18
Matthew

したがって、私はこれらの懸念を「合理的な国」で固執するように努めます。すべてのセキュリティ問題で、安全な対のバランスがあります。安全。たとえば、ラップトップを購入し、1つを読むPDFメールプロバイダーのWebメール側から読み込まれ、「メインコンピューター」に必要なコンテンツを再入力して、ラップトップをすべて破棄します。新しいラップトップで何度も繰り返します。これはかなり安全です。

したがって、「合理的な」アプローチに戻ります。

まず、Linuxと最新のリーダーを使用しますPDFリーダー。そうすることで、あなたの露出を本当に減らすことができます。Linux用に書かれたウイルスは、Windowsほど多くありません。それだけで保護されますLinuxで機能するウイルスは、実装するのがより複雑です。

次に、スナップショットをサポートする仮想マシンを使用します。アイデアは、仮想マシンホスト(VirtualBoxなど)内でLinux OSをセットアップし、すべてをセットアップして、状態を「スナップショット」することです。

その後、仮想マシン内ですべての「危険な」作業を行うことができます。分離オプションを使用すると、仮想マシンを「エスケープ」してホストマシンに到達するウイルスを知りません(それらがそこに存在しないことを意味するのではなく、それがよりまれで、攻撃者にとってより複雑であることを意味します) )。

1日の終わり、またはウイルスに感染したと思われる日のいつでも、マシンを以前のスナップショットに「復帰」します。作業、ウイルスなど、スナップショットの後に「起こった」すべての変更とデータが取り消されます。

日中は、PDFを開いてClamAV(または同等のもの)でスキャンし、必要なものをコピーして貼り付けるか、PDFファイルを使用して、必要なことを何でもできる仮想マシンは分離して存在するため、つまり、仮想マシンにホストマシンへのアクセス権を付与しないことになります。ファイルの転送には、電子メールなどを使用します。ホストと仮想マシン間でFTPを使用している可能性があります。統合。ドロップボックスでもありません。ファイルを転送する場合、安全であることを確認してから、その1つのファイルのみを転送します。LinuxホストとLinuxゲストを使用している場合その場合、scpが最適です。

これにより、ワークフローに大きな変更を加えることなく、発生する可能性のある損傷を「取り消す」機能を使用して、疑わしいPDFをチェックアウトする「かなり安全な」使い捨て環境が得られます。

仮想マシンのホストとゲストは、Windowsを含むほぼすべてのOSにすることができます。 LinuxゲストとWindowsホストがある場合、Linuxバーチャルマシンは、PDF Windowsマシンが感染する可能性があるウイルスに感染する可能性さえない可能性があります。使用中のOSコンボに関係なく、アンチウイルススキャナーを使用することが重要です。

12
coteyr

CubeOSと使い捨てVMを使用することは良いアプローチです。

その他のオプション(CubeOS/DisVMオプションと組み合わせることができます):

PDFの武装解除

あなたはそのためにghostscriptを使うことができます:

gs -dNOPAUSE -dBATCH -sDEVICE=tiffg4 \
  -dDownsampleMonoImages=false \
  -dDownsampleGrayImages=false \
  -dDownsampleColorImages=false \
  -r200 \
  -sOutputFile="$OUTFILE" -c .setpdfwrite -f "$FILE"
tiff2pdf -o "${OUTFILE%.*}.pdf" "$OUTFILE"

このコマンドのペアは、PDFを画像としてレンダリングし、この画像をPDFに埋め込みます。

不審なPDFを検出する

ベルギーのInfoSec研究員であるDidier Stevensは、悪意のあるファイルを検出するための優れたツールを作成しましたPDF=と呼ばれるファイルを探しますpdfid.py

このツールは、PDF=の内容を分析して、潜在的に悪意のあるものを検出します。

基本的に、JavaScriptや自動オープンURLを含むPDFは疑わしいと見なされるべきです。

ツールを保護する

どちらのオプションを選択しても、ツールが脅威エージェントのターゲットになる可能性があります。それらに頻繁にパッチを適用し、使い捨て/隔離された環境で実行します。

5
jfs

すべてのPDFをより「パッシブ」な形式(おそらくTIFFまたはポストスクリプト)に変換することは、ローカルマシンまたは一部のLinuxボックス/ VMの制限されたアカウントで、バッチで実行できます。別のファイル形式に持ち込まれるエクスプロイト/マルウェアはほとんどありません。

純粋に悪意のあるファイルは、そのようにはレンダリングされません。人気のあるPDF=視聴者を狙ったエクスプロイトは、おそらくスクリプト化された変換ツール(ほとんどがghostscriptエンジンに基づいている)で動作しないでしょう。また、制限されたアカウントは、エクスプロイトの成功による大きなダメージを防ぎます。

最新のLinuxマシンの通常のユーザーアカウントは、「脱出」が非常に困難です。ただし、ネットワークアクセスの制御が最も難しいため、このマシンが無秩序なインターネットアクセスを持たないようにしてください。

有効なPDFの内容の開示が悲惨な結果をもたらす場合、一度に1つだけPDFがインタプリタを実行しているアカウントにアクセスできることを確認してください(たとえば、ファイルをさらに別のユーザーアカウントからのステージング場所、su/Sudo(Sudoではなくルート)経由でインタープリターを実行し、結果ファイルを削除します。すすぎ、繰り返します。

ああ、そして:エクスプローラー、電子メールクライアント、または同様のフロントエンドでファイルのプレビューを実行するように設定されているすべての(特にWindows)PCから元のファイルを遠ざけてください。

4
rackandboneman

脅威モデルによっては、「バーナーデバイス」または仮想マシンのアプローチでさえ不十分な場合があります。攻撃者があなたの場所を特定しようとしている場合、またはスパマーがあなたの電子メールアドレスがアクティブであることを検証したい場合でも、PDF phone homeを開いた後、巧妙なPDFには、他のマシンに感染するワームさえ含まれている可能性がありますが、実際に目にしたことはありません。

したがって、PDFをダウンロードした後、開く前にデバイスをネットワークから切断するが必要になる場合があります。

2
dotancohen

Qubes OSは素晴らしいオプションだと思いますが、 Subgraph OS も確認する必要があります(注:これは、まだ2017年のアルファ版であり、安定するまで待つ必要があります)強力なセキュリティのためにそれに依存するバージョンが出てきます)。デフォルトで Grsecurity/PaX で強化されたLinuxカーネルとともに出荷され、デフォルトでPDFリーダーなどのリスクのあるアプリケーションの周りにサンドボックスがあります( Evince )カーネルの強化により、PDFリーダーに対するほとんどのエクスプロイトは軽減されます。ただし、成功した場合でも、攻撃者はサンドボックス(- Oz )ここでPDFが実行され、

サンドボックスにより、Evinceは暗号化キー、電子メール、個人ドキュメントなどのコンピューター上の機密ファイルにアクセスできなくなります。Evinceは、読み取っているPDFと、正常に動作するために必要なその他のファイルへのアクセスのみを必要とします。

サンドボックスは、アプリケーション(ser-spaceで実行)がカーネルに問い合わせる(で実行)ことができるシステムコールを制限するなど、攻撃者が実行できるアクションのタイプも制限します。 kernel-spaceseccompと呼ばれるLinux機能を使用して、ファイルの読み取りや書き込み、ネットワーク経由の通信などを実行します。したがって、たとえば、サンドボックスは、PDFリーダー(Evince)がインターネットに接続することも防止します。これにより、IPアドレスを取得して場所を発見しようとする攻撃者からユーザーを保護します。

PDF Subgraph OSのファイル こちら )の開き方に関する完全なドキュメントを入手できます。

1
user140466

PDFをダウンロードして開く場合にのみ、「分離」デバイスをお勧めします。つまり。残りのネットワークには接続されていません。

それを印刷します(紙はマルウェアを送信できません)。

その後、スキャンして、画像形式のコピーを作成できます。この場合、プリンターは隔離し、汚染されたデバイスにのみ接続する必要があります。スキャナーはネットワークの他の部分に接続できます。

より高速なワークフローが必要な場合は、画像に変換し、別の場所で表示する必要がある場合は自分に送信することができますが、メールが何らかの方法で感染していないことを保証する必要があります。リンク/画像/ javascriptが挿入されておらず、ファイル形式が実行可能でもPDFでもありません。

つまり、受信側はHTMLやJavaScriptを使用せずにテキストのみを表示する必要があります。

0

これは firejailxpdfを使用した弱い(ユーザーレベルの)回答であり、多分 cpulimit です。

firejail [...options...] xpdf suspicious.pdf

疑わしいPDFファイルの場合、最適なオプションが何であるかは、私にはわかりません。これらは機能するようで、おそらくほとんどのわいせつを無効にします。

firejail  --caps.drop=all  --machine-id  --net=none  --nonewprivs  \
          --memory-deny-write-execute --overlay-tmpfs  --seccomp \
          xpdf suspicious.pdf

容疑者PDFもCPUホグであることが心配である場合は、最初の行の前に次を付けます:

cpulimit -c 1 -l 10 -m -- \

これにより、firejailとその子プロセスは、1つの10%の使用にさらに制限されます[〜# 〜] cpu [〜#〜]

0
agc