どうすれば実際にスワップパーティションから機密情報を取得できますか?


8

この質問をググるとき、機密データを保護する方法、スワップを暗号化する方法、およびLinuxシステムで「通常の」スワップを維持することが「危険」である可能性について、あらゆる種類の情報のみを取得します。

しかし、実際にスワップパーティションからデータを取得(読み取り)するためのソフトウェア、メソッド、または「ハウツー」を見つけることができませんでした。

だから私の質問は、西ヨーロッパに住んでいる「普通の」市民であることですが、私のコンピュータのスワップをワイプまたは暗号化することは本当に必要ですか?そして、誰かが「はい」と答える前に、私がどのようにテストでき、自分のスワップをリークして、暗号化された家にかかわらず、どの種類のデータが保護されていないかを実際に確認できるように、私に手本を与えることができますか?


1
1つの方法はこの質問
Nattgew 2014

1
役に立つかもしれません、security.stackexchange.com
questions / 29350 /…

回答:


10

西ヨーロッパに住んでいる「普通の」市民である場合、私のコンピュータのスワップをワイプまたは暗号化することが本当に必要ですか?

これは個人的な判断であり、データのプライバシーをどの程度重視するか、および攻撃者の手に渡った場合にデータが公開されないようにどの程度保護するかによって異なります。あなたがラップトップを持っていて、ある日それが盗まれたとしましょう-泥棒がパスワードまたは暗号化キーまたはその他の方法で個人データを抽出しようとする可能性はどのくらいありますか?多くの人が気にしませんが、気にする人もいます。確かに、ほとんどの泥棒はラップトップを売ってすぐに金銭的な利益を得ますが、攻撃者がデータ自体にアクセスしようとしてさらに先へと動機を与えられる場合があります。

そして、誰かが「はい」と答える前に、私がどのようにテストでき、自分のスワップをリークして、暗号化された家にかかわらず、どの種類のデータが保護されていないかを実際に確認できるように、私に手本を与えることができますか?

プロセスのメモリがスワップスペースにスワップアウトされる可能性があります。メモリの漏洩は危険な場合があります-明らかな例はHeartbleedです-Heartbleed を使用してサイトの秘密暗号キーを盗んだ方法を参照してください。Heartbleedによって公開されるメモリは1つのプロセスにのみ属しますが、スワップスペースによって潜在的に公開されるメモリはすべてのプロセスに属します。プライベートキーまたはパスワードリスト(Webブラウザなど)がスワップアウトされるプロセスを想像してください。これらのアイテムはプレーンテキストでスワップスペースに表示されます。それらを抽出することは、特定のパターンのデータについてメモリをふるいにかけることの問題です-それは、stringsまたは、Heartbleed(テストでは連続するいくつかのバイトが公開暗号鍵の除数であることがテストされている)のように、より複雑になる可能性があります。暗号化された/ homeパーティションがある場合、ユーザーのデータのロックを解除する暗号化キーを形成するデータのブロックを探すことは明らかです。

実際の例:

  • やるbash -c 'echo SECRET=PASSWORD > /dev/null; sleep 1000'そのスタック上のいくつかの秘密データをbashのプロセスを作成します

  • sysctl vm.swappiness=100(必要ありませんが、もっと簡単な例を行うことができる)swappinessをを高めるために

  • run top -c、fを押し、SWAP列を有効にし、qを押してトッププロセスビューに戻り、プロセスが表示されるまで下にスクロールしbash -cます。

  • 別のターミナルで、LinuxからChimnay Kanchiのプログラムを保存します。システムメモリに負荷をかける方法は?to usemem.c、それをコンパイルし、ターミナルで繰り返しgcc -o usemem usemem.c実行しusemem &ます。これは一度に最大512MBのメモリブロックを使用します。(メモリがスワップアウトされる原因は問題ではなく、通常のシステム使用、暴走プロセス、または意図的な攻撃である可能性があり、最終結果は同じです)

  • ウォッチトップ、bash -cスワップされるのを待つ(SWAP列の値> 0)

  • strings /dev/sdaX | grep SECRETXがスワップパーティションである場合に実行します

  • おめでとうございます-スワップパーティションから「秘密の」データを抽出しました。SECRETテキストの複数のコピーに続いて「パスワード」が表示されます。コピーには、親bashプロセス、トッププロセス、および「bash -c」プロセスからリークされた完全なコマンドラインが含まれます。完全なコマンドラインを含まない行は、「bash -c」プロセスからリークしました。

  • コマンドラインだけでなく、シークレットがプロセスメモリからリークすることを証明するには、unsigned char secret[] = "SECRET=XXXX";usemem.cに行を追加します(unsigned long mem;行のすぐ下)。再コンパイルしてusemem &繰り返し実行strings /dev/sdaX | grep SECRETします。今回は 'XXXX'シークレットが漏洩しているのがわかります。


+1はかなり良い説明と素晴らしい例です。
ジョビン

-1

この質問は、ソフトウェアが機密データをメモリに保持し、データを暗号化するなど、ソフトウェア開発間の問題についての議論につながります。

したがって、最初に、実用的なソフトウェア開発とデータ暗号化のいくつかの記事を読む必要があります。

この記事を読み始めてください:http : //www.ibm.com/developerworks/library/s-data.html?ns-311

それが役に立てば幸い。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.