質問
基本的なランサムウェアがどのようにファイルをターゲットにして暗号化するかについて読んだ後。そのような活動を試みて検出するために独自のスクリプトを書くことが妥当であるかどうか疑問に思っていましたか?
初期の研究努力
私は人々がこのサイトで以前に持っていたさまざまなアイデアを見てきました:
書き込みアクセスの拒否: 書き込みアクセスを拒否することはランサムウェアを停止する効果的な方法ですか?
ランサムウェアの有効性を回避する方法の提案: ランサムウェアを回避する方法
このようなことを宣伝しているツールが1つあることは知っていますが、攻撃者はそのツールに既に注意を払っており、それを回避しようとするでしょう。多分彼らはまた、平均的なユーザーが実際にこの種のものをインストールすることはなく、インストールした10%未満は攻撃者とは無関係であると想定しているだけかもしれません。
前提条件
どちらの場合でも、私の理解から(そして私が間違っている場合は修正してください)、最も広く普及している暗号化-ランサムウェアは実際に:
より具体的な質問に戻る
これらの考慮事項の下で、私の最も重要なファイルと場所を監視できるスクリプトを作成することは、私にとって完全にもっともらしいことです。そして私の質問をより具体的にするために:
多くの広く普及している暗号化ランサムウェア(TeslaCryptなど)がこれらの想定(上記)の下で動作することは本当ですか実際、よりとらえどころのない手法が採用されていますが、自分の監視スクリプトが標準のファイルアクセス監視に依存している場合、検出を簡単に回避できますか?
アンチクリプトツールが何をしていると私が想定するかに関するサイドノート:
このツールをハニーポットアプローチと組み合わせて、通常の個人ドキュメントのように見える特定のファイルセット内の何かを変更しようとするアラートを即座に取得してプロセスを強制終了することもできます。
独自の暗号化ソフトウェアを作成することは推奨されていないことは承知していますが、ランサムウェア対策ソフトウェアを作成して、少なくとも別のセキュリティ層を作成するように人々に勧めたい場合は、アドバイスを探しています。
この場合、バックアップがより重要であることも認識しています。バックアップを自分で作成したスクリプトで置き換えることは考えていません。また、テストが困難になることも認識しています。
基本的なファイル監視で実際にそれらのアプローチが検出される可能性があることを考えると、問題は、より多くの暗号解読ランサムウェアツールが存在しない理由に向けられています。多分私の仮定はこれで間違っています、そして私はそれがなぜであるかについてあなたから聞いてみたいです。
質問はどんどん広がっていくので、タイトルの質問に答えるようにしましょう。また、Windowsでソリューションを作成するという観点から回答していることに注意してください。同じ概念を* nixに引き継ぐこともできます。
独自の暗号化ランサムウェアツールを作成することは妥当でしょうか?
もちろん、.NET TraceEvent ライブラリのように非常に使いやすく、コンピュータで発生しているすべてのことをリアルタイムで完全に監視できます。 Vista以降、Windowsカーネルは、コンピューター上で発生するすべてのことに関する絶対的な情報を大量に生成します。
これには、プログラムがDLLをロードしたり、システム関数を呼び出したり、メモリを割り当てたり、ファイルへのアクセスを開始したり、ファイルの変更を完了したり、ネットワークに関連するあらゆることを試みたりする場合などが含まれます。カーネルによって生成されるデータは非常に多いため、リアルタイムですべてをユーザー空間に読み取ろうとすると、コンピューターを強制終了する可能性があります。
この情報だけから、このソフトウェアを作成するこれらのドープがどれほど巧妙であるかに関係なく、ファイルに変更を加えることができるプロセスのホワイトリストを介して、データを安全に保つことができます。たとえば、カーネルが、特定のパスにあるファイルにアクセスするホワイトリストにないプロセスに関するイベントを発生させた瞬間に、冷血でプロセスを殺害します。概念は単純で、500 LOC未満で実装できます(TraceEventの経験からわかっています)。
明らかにこれを実際に試してみて対処する必要のある予期しないことがたくさんありますが、理論的には簡単です。これは完璧ではありません。何かが起こった実際の時間とカーネルがあなたに警告する時間との間の可変遅延のために、あなたがそれを殺す前にあなたのファイルの1つまたは2つを台無しにすることでうまくいくかもしれませんが、これは確かな始まりでしょう、あなたの唯一の懸念があなたが失うことができないデータを暗号化するランサムウェアの完全な影響を防ぐことである場合。
コメントから:
オープンソースの自家製のソリューションがこれ以上ないのはなぜですか
オープンソースのものを公開している人として-これには時間がかかります。良い開発は難しく、時間は限られています。このようなことに興味を持つように動機づけるcookieやドルさえありません。人々がオープンソースを公開することを計画している何かに取り組むときはいつでも、それは彼らが興味を持つ何かになるでしょう。
そのようなマゾヒストであるプログラマーのうち何人が、「自由な時間を費やして、たゆまぬ努力でそれを回避しようとする怪しげな人々からの終わりのない猛攻撃を引き起こすソフトウェアに取り組んでいきたいですか?ああ、そして無料で」と考えています。多くはありません。
について
「とにかく、私が推奨するのは自分の暗号化ソフトウェアを書くことではないことを知っています」
snowman がコメントで指摘しているように、それは人々が警告する既存の暗号を使用する独自のソフトウェアを作成するのではなく、人々が警告する独自の暗号化ソフトウェア/方法を導入しようとしています。とにかく、これは暗号をまったく必要としません、それは単にクラブと近くに来てVIPリスト。欠点は、彼が撃った誰かがあなたが本当に気にかけていて、単にリストに追加するのを忘れたということかもしれません。:)
編集
ちょうど楽しみのために、私はこれを試しました。関連するコードはGithubの here です。保護されたディレクトリを参照しただけでは、Explorer.exeに関連付けられた多くのWindowsプロセスがすぐに殺され、スタートメニューなどが機能しなくなったため、ログアウトする必要がありました。しかし、ちょっと、ファイルのハッシュをいくつか投入して、Windowsプロセスのホワイトリストを作成すれば、準備は完了です。 :)
2つ目のプログラムを追加してそれをKingpinと呼んで、保護されたディレクトリ内のすべてのファイルを意図的に暗号化するようにしたかったのですが、画面を2日間見つめていたので、後でこのプログラムに戻る必要があります。残り。名前から想像できると思いますが、私はあえてデアデビルを見てきました。
編集、もう一度
Windowsでこれについていくつかの調査を行いました。 8以降、WindowsはOSを完全に再構築するために必要なすべてのバイナリなどのディレクトリを保持していることがわかります。これはWinSXSフォルダーです。これが関連する理由は、ここでのホワイトリストの概念と、ユーザーがフォルダーを参照しようとしたときにOSを強制終了しないという問題によるものです。 SFC
とDISM
を使用してこのキャッシュの整合性を検証し、このフォルダーをスキャンして、検出したすべてのバイナリごとにハッシュを生成できます。 Viola、OSはホワイトリストに登録されています。
なぜ暗号解読ランサムウェアツールがまだないのですか?
あるので。これらはウイルススキャナーと呼ばれ、この動作を検出するためのヒューリスティックアルゴリズムが必要です。残念ながら、ランサムウェア開発者は、よく使用されるすべてのウイルススキャナーに対して自分の作成物をテストし、何らかの方法でヒューリスティックスを回避できることを確認するのに十分賢いです。
そして、この種のマルウェアが使用するすべての回避策で何らかの形でカバーされないことを期待して独自のソリューションを書き始める前に、バックアップソリューションの設定は通常はるかに簡単であり、単なるランサムウェアよりもはるかに多くの問題から保護されます。
少なくともWindowsでは、その必要はありません。 Windowsには、アプリケーション制御ポリシーと呼ばれるプロセスホワイトリスト機能が含まれています。実行を許可する場所、デジタル署名、またはファイルハッシュを定義すると、他のすべてのプロセスがブロックされます。ユーザーがホワイトリストに登録されているパスへの書き込み権限を持っていない場合(これはアプリケーション制御ポリシーを実装するときのベストプラクティスです)、ユーザーは独自のプロセスを起動する暗号化ソフトウェアの影響を受けません。
しかし、ユーザーが管理者であるか、ホワイトリストに登録された場所への書き込みアクセス権を持っている場合、あなたはすでに 気密ハッチウェイの反対側 にいます。