キーロギングからgnome-terminalを保護するための設定


15

同じユーザーのすべてのプロセスのキーストロークを簡単に記録できるようです。基本的なキーロガーは「xinput」です。

xinput test-xi2

このコマンドは、すべてのキー押下のログを生成します。残念ながら、これにはgnome-terminalのパスワードが含まれます。グーグルは、キーボードをつかむと他のウィンドウがキーストロークをキャプチャできなくなることを示唆しました。

gnome-terminalでXI2のロギングを防ぐ方法はありますか?または、この機能を備えたX端末はありますか?


回答:


13

それはようことはできません任意のキーストロークはXサーバに渡され、XINPUT /任意のプログラムのために利用できるようになります。(実際、これは設計の一部です)。ウェイランドとミールのような新しいディスプレイ・サーバはXに、このようなセキュリティ上の問題を修正している唯一の真の解決策ではなく、XのウェイランドまたはmiRを用いることであろうこのブログの記事は、この問題の詳細について説明します。


それで、パスワードのためのgksuへの入力はxinputにも行きますか?
yanychar

1
@yanycharうん、実際にこのブログ投稿を通じてキーロギングのこの方法について知りました:theinvisiblethings.blogspot.in/2011/04/…(ブログ投稿を初めて読んだときも驚いた)
Ramchandra Apte

2
- X11は実際にあなたが「悪い」の拡張機能にアクセスするプログラムを防ぐために使用することができ、信頼できないモードがあるx.org/wiki/Development/Documentation/Security
のMichałZieliński

-1

あんまり。どうにかしてX内でキーボードをつかむことができたとしても(これが可能かどうかはわかりませんが、疑わしいです)、rootとして実行しているキーロガーユーティリティは常にキーボードにアクセスできます。


4
上記のコマンドは、ルート権限なしでX内のキーボードを取得します。そのため、キーロガーをubuntuデスクトップにインストールするのは簡単です。問題は、これを回避する方法です。
yanychar

-3

他の人がここで言ったように、標準ユーザーにキーロガーの実行を制限するか、キーロガープロセスを停止/一時停止する場合にのみ、gnome-terminalなどのプログラムのみをキーロギングから保護することはできません。

次に、xinputコマンドの場合にこれらを実行する方法を示しますが、他のキーロガーにも同じ方法を使用できます。キーロガーがxinputコマンドを使用する場合、メソッドを適用する限りメソッドを適用する必要はありませんxinput

1. xinputコマンドの使用を標準ユーザーに制限する

次のコマンドを使用して、コマンドの使用を標準ユーザーに制限xinputできます。

sudo chmod go-x /usr/bin/xinput

2. 引数xinputtest-xi2指定してコマンドを使用するように標準ユーザーを制限する

このコマンドのラッパーを記述することで、標準ユーザーxinputtest-xi2引数付きのコマンドを使用するように制限できます。これを行うには、ターミナルに移動し、以下の手順に従います。

  • ルート権限を取得します。

    sudo -i
    
  • xinputユーザーのPATHにない別のディレクトリにファイルを移動します(例:)/opt

    mv /usr/bin/xinput /new/path/to/xinput
    
  • xinput次のコマンドのラッパーを作成します/usr/bin

    gedit /usr/bin/xinput
    

    内部に次のスクリプトを追加します。

    #!/bin/bash
    if [ "$@" != "${@/test-xi2/}" -a "$(whoami)" != "root" ]; then
        echo "`basename $0` $@: Permission denied"
    else
        /new/path/to/xinput $@
    fi
    

    ファイルを保存して閉じます。

  • 新しいラッパーを実行可能にします。

    chmod +x /usr/bin/xinput
    

第1の方法は第二の方法を使用して、安全性ですが、ユーザーはまだ元を呼び出すことによって、それを回避することがありxinput、彼はその新しい場所を知っていれば、直接。

3. xinputプロセスの停止/一時停止

xinputパスワードなど、ログに記録したくないものを入力する前に、プロセスを停止または一時停止できます。これを行うには、~/.bashrcファイルの最後に次のbash関数を追加します。

processof () {
    xinput_pids=" $(pidof $1) "
    if [ "$xinput_pids" = "  " ]; then
        echo "Nothing to stop/pause/continue. $1: no such process!"
        return
    fi
    for pid in $xinput_pids; do
        case $2 in
        "stop") 
            kill $pid
            echo "$1: stopped"
            ;;
        "pause")
            kill -stop $pid
            echo "$1: paused"   
            ;;
        "continue")
            kill -cont $pid
            echo "$1: continue"
            ;;
        *)
            echo "$1 is runnig"
            ;;
        esac
    done
}

これで、ターミナルを再度開いた後、いつでもこの機能を使用して次のことができます。

  • すべてのxinputプロセスを停止/強制終了します。

    processof xinput stop
    
  • すべてのxinputプロセスを一時停止します。

    processof xinput pause
    
  • すべてのxinputプロセスを再開します。

    processof xinput continue
    

実際、この機能を使用すると、何かを行う前に(パスワードを入力するなど)、任意のプロセスを停止/一時停止できます。

processof [process_name] [stop|pause|continue]

システムでアクティブなキーロガーを検出する方法を検出する方法がわからない場合は、以下を参照してください。

これらの方法はおそらく最善の解決策ではありませんが、何ができるかについてのアイデアをお伝えしたいと思います...


5
xinputはキーロガーの一例です。問題は、可能なすべてのキーロガーからの入力を保護することです。
yanychar

5
すべてのプログラムは、ソケットとキーログを介してXサーバーに接続できます。キーロガーが外部プログラムを使用する必要はありません。
Ramchandra Apte

3
@RaduRădeanuあなたのソリューションは効果がなく、役に立たない。xinputSUIDでもない(-rwxr-xr-x 1ルートルート48504 2012年8月15日/ usr / bin / xinput)
Ramchandra

1
@RaduRădeanuキーログにxinputが必要ないため。(外部コマンドも悪意のあるプログラムもSUIDである必要はありません)あなたのソリューションは単にxinputの実行を制御することを許可します
Ramchandra

3
無効であることを証明する最も基本的な例:USBスティックから(ubuntu)xinputのストックバージョンをコピーし、Webからダウンロードするか、自分宛に電子メールで送信して、ホームフォルダーで実行します。無制限の/ usr / bin / xinputを使用するのと同じ効果。
アロ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.