web-dev-qa-db-ja.com

計算エラーを強制することによって隠されたキーロガーを見つける

物理的なキーストロークの実行と画面上でのキャラクターの最終的な発生との間のタイミングを綿密に調査することにより、キーロギングを検出することが可能でなければなりません。

友人にカメラで見せてもらいました。カメラは1秒あたり16,000フレームで記録できます。彼は自分でプログラム1に文字「a」を入力したことを記録しました。その後、スローモーション再生では、キャラクターの発生から画面までの経過時間はプログラム2またはプログラム3などで異なりました。

これは私に考えさせられました。おそらく、これらの種類のデータが分析された場合に検出されたときに検出できるインテリジェントなキーロガーの悪意のある設計に対処する必要なく、キーロガーをすばやく検出できます。予想を知っていて、この種のスケールで他のプロセスが実行されていないときにわずかな時間差がある場合、そのようなデータから何かを収集することができます。

この質問が明確かどうかはわかりませんが、デバイス外の分析を通じてキーロガーを検出できるメリットがあるかどうか知りたいのですが。つまり、この口径の洗練されたカメラが登場人物の時間を計るために使用されているようなものです。

おそらく、物理デバイスは、分析可能なエラーを生成するために人間の手が実行できるよりも速くキーボードのキーを押すように作成できます。おそらく、このエラーは役立つ可能性があります。

あなたがおそらくこのようなカメラに接触したことがなく、私のように結果を見たことがあるので、私があなたに与えることを判断するのは難しいです。とにかく、多分誰かが何かを提供することがあります。

2
Aard-Wolf

キーを押す待ち時間を分析してキーロガーを見つけようとする場合に遭遇する大きな問題は、モニターのリフレッシュレートです。ほとんどのモニターは1秒あたり60回しか更新しません。優れたキーロガーは数マイクロ秒のレイテンシを追加するだけなので、他のノイズ源(スケジューラーのランダム性など)を考慮する前であっても、本質的に1:10000の信号対ノイズ比に障害があります。 。はい、ノイズフロアをはるかに下回る信号を見つけることは可能ですが( Shannon limit を参照)、簡単ではありません。

7
Mark

実際には、これは機能しません。他にもコンピュータで起こっていることが多すぎます。キーを押すと、OSはキープレスを解釈し、キープレスに注意を払っているアプリケーションに通知を送信します。問題は、いつでもコンピューターがさまざまなバックグラウンドアクティビティを実行していることです。 OSが無関係なことに取り組んでいるため、OSがキープレスのイベントを処理してイベントを送信するのに異なる時間がかかる場合があるため、キープレスの登録にかかる時間を特定する方法はありません。

同様に、キーロガーに通知されてイベントを記録するのにかかる労力は非常に少なく、OSとは別のスレッドで実行できます。より効果的な戦術は、キーイベントについて通知されているサービスの数を監視し、予想される数と実際に発生する数の不一致を探すことですが、これでは単純にタイミングから判断することはできません。タイミングは本質的に変動しすぎて、ロガーによる遅延がほとんどありません。キーロガーによって引き起こされる遅延は、プロセスが待機状態にある間、OS側にあるため、関心のあるプロセスのCPU時間を単に測定するプログラムを使用することもできません。

(別の回答でも述べたように、モニターの更新が遅すぎるため、視覚的に実行しても問題はありません。)

5
AJ Henderson

たぶんこれは、このサイトのほとんどの人がバックグラウンドが弱いために答えることができるものより少し高いものです...

これは行く場所です...

物理的なキーストロークの実行と画面上でのキャラクターの最終的な発生との間のタイミングを綿密に調査することにより、キーロギングを検出することが可能でなければなりません。

いいえ、そのアサーションは無効です。キーロガーは遅延を導入する必要はありません。遅延を導入する場合でも、遅延は非常に小さいため、システムの他の部分の多くの導入された遅延の範囲内であり、分離することは不可能です。

だから、違います。このタイプのデバイスは、すべて(すべて?)のキーロガーを検出できません。バックグラウンドでは、物理的なキーロガーを作成して、遅延を発生させることなく、キーボードからコンピューターに直接送信される信号を寄生的に読み取ることができます。このシナリオでは、デバイスに何を期待していますか?

いずれにせよ、インラインデバイスの導入された遅延は、とにかく確実にピックアップするのが非常に困難になります-16k fpsカメラは問題ではなく、goproがリフレッシュレートに追いつくのに十分高速であることを考えると、比較的冗長です画面の。

最近のOSの一部として開始された非常に多くのプロセスがタイミング遅延を引き起こす可能性があるため、ソフトウェアキーロガーを試して測定することも同様に不可能です。ソフトウェアキーロガーの疑いを特定して非難することは不可能です。 キーロガーとパフォーマンスベンチマーク

4
pacifist

キーロガー技術に応じて、はい、タイミング情報が変更されたものを生成できる特定の状況があります。複合デバイスまたはハブとして実装されたUSBキーロガーは、キーロガーのない同じシステムと比較すると、遅延を追加します。ただし、ホストコンピュータでタイミングを測定する必要があります。キーを押してから画面までの時間は非常に信頼できないため、意味がありません。

別の答えが言ったように、タイミング情報を使用して寄生キーロガーを検出することはできません。また、ソフトウェアキーロガーは、システムスキャンとスタックトレースによってより適切に公開されます。

最良の答えは、「確実ではない」と言うことです。

3
John Deters

理論的には、あなたは正しいです。ヒット時間と出現時間を比較して、合法かどうかを判断できます。

ただし、実際には、このタイミングが変動する理由は非常に多く、適切な検出率を達成することは不可能です。

2
ack__

おそらく、物理デバイスは、分析可能なエラーを生成するために人間の手が実行できるよりも速くキーボードのキーを押すように作成できます。おそらく、このエラーは役立つ可能性があります。

いいえ。実際には、can約2ドルでこのようなデバイスを作成できます。 ATTiny45 といくつかのパッシブをUSBポートに接続するだけで、GPIOピンを介してUSBをビットバンギングできます。そこから、HIDキーボードを実装するのはかなり簡単です。コードが存在します。

Now I can destroy the world!

しかし、そこから意味のあるものを得ることはできません。キーストロークがマシンの処理速度よりも速く入力された場合に発生するエラーは、コンピューターがビジー状態のときに多分見られますが、キーストロークごとに1回のビープ音です。これは、Windowsイベントループで、keypressイベントを破棄して次に進みます。

おそらく、キーロガーが検出される可能性があります。期待を知っていて、他のプロセスが実行されていないこの種のスケールでわずかな時間差がある場合、そのようなデータから何かを収集することができます。

これは興味深いアイデアであり、慎重に管理された実験室の設定で、おそらく1回限りの設定で実行できる可能性があります。しかし、それは基本的に信号対雑音の問題です。 キーが押されてから文字が表示されるまでの間にはlot発生する があり、そのプロセスの速度はあらゆる種類の要因に依存します。マシン間で、または1台のマシンで分単位で一貫性が保たれることはありません。

キーロガーによる遅延の検出は、遅延のrestを一定に保つことができれば可能かもしれませんが、実際のコンピューターではできません。また、可能であれば、キーロガーを簡単に変更して、キーストロークイベントをバッファにキューイングし、バッチで処理することで、キーストロークごとの遅延を効果的に排除できます。私が15年前に書いたものは、まさにそれをしました。

1
tylerl

「うまくいかない」という合唱に追加するもう1つの答え:

別のデーモンとして機能するシステムユーザーとして実行されるキーロガーを作成することは可能です:すべてのキープレスをリッスンする別のプログラム。 OSは表面的にはキープレスを「聞く」最初のアクターであり、そのシグナルを任意のリスニングプログラムに転送するため、自分自身を配置しないキーロガーin-betweenOSとプロセスは、パフォーマンスへの影響を適切に回避します。

更新しました

マルウェアをGPUに永続化する方法を検討し始めたところ、「キーロガーをGPUメモリ空間にインストールしたらどうなるか」というアイデアを得ました。GPUはハードウェアドライバーを使用しているため、カーネル空間で実行されます。 。いいルートキットツールのようですね。

それから私はやって来た this 紙。くそー。誰かが一年前にそれを考えました!

プログラムの仕組みは次のとおりです。プロセスは、USBキーボードドライバーコードが配置されている場所のメモリをスキャンし、そのアドレスをGPUで呼び出されたマルウェアに渡し、ダイレクトメモリアクセス(DMA)を使用して単純にinspectキーボードドライバーがキーを押すためのバッファーを格納するメモリ...私はこれを伝えたくありませんが、マルチスレッド化のため、カーネルプロセスが監視できないことを確認することはできませんキーストロークが入ってくるメモリバッファ。キーストロークを監視する標準のOS APIを完全にバイパスします。この攻撃は、あらゆる種類のタイミング検出から効果的に自分自身を削除します。また、コンピューティングが2ステートマシンに限定されていることが悪い考えである理由についても直接主張しますが、それは別の日の別の不満です...

1
avgvstvs

キーストロークの遅延を調べることは、キーロガーを識別する正しい方法ではありません。

プロセスエクスプローラーを使用して、既存のプロセスを確認します。

http://technet.Microsoft.com/en-us/sysinternals/bb896653.aspx

列を選択-タイムラインを処理する

不正である可能性のあるコンピューターで開始されているプロセスを特定します。彼らはしばしば容疑者のさまざまな色のプロセスで強調表示されます。

ウイルストータルで確認することもできます。

列を選択します-自動開始場所-これが正常でない場合、これは洞察を与える可能性があります。

このタイプのマルウェア分析を使用して、バックグラウンドで実行され、さらにSvchostにフックされたlikleyキーロガープロセスを探すことができます。

これがスキルレベルを超えている場合は、マルウェアバイトやその他の同様のスキャナーを実行して、インストールされ、PCをバックドアしたこのタイプのソフトウェアを特定することができます。