web-dev-qa-db-ja.com

「Sudo」および「Sudo -s」を介してルートアクセスを取得するマルウェア

実は、3つ質問したいと思います。しかし、それらは非常に関連しているので、ここでそれらすべてを尋ねます。私はUbuntu 12.04.4を使用しています。

状況1:端末の1つでSudo iotopを起動します(ルートアクセスがないと機能しないため)。質問は、マルウェアはSudoを使用して実行されるプロセスを介してroot権限を取得できるか、そしてその方法は?

状況2: tty1(Ctrl + Alt + F1)を開いてSudo -sと入力し、root権限を取得します。このSudoシェルを終了せずに、グラフィカルインターフェイス(Ctrl + Alt + F7)に戻って、非特権ユーザーとして作業する場合があります。質問は、マルウェアがtty1コンソールでこのSudoルートシェルを悪用してルート権限を取得できるかどうかです。

状況3: GnomeターミナルでSudo -sを実行します。このシェルはマルウェアに悪用され、ルートアクセスを取得できますか?ここでは、ターミナルのウィンドウをアクティブにしてターミナルにコマンドを入力するためにいくつかの入力機能を悪用する可能性があると思いますが、確信はありません。

2
Highstaker

それはマルウェアがどこに存在するかによります。あなたが意味しているとしましょう:あなたのユーザーとして実行されていて、特権を取得したいプログラム。

本当に短いXセキュリティプライマー

まず、Xはアクセス制御を実行しますが、接続されたクライアント間を分離しないことに注意してください。デスクトップに接続されているすべてのクライアントは、サーバーにクエリを送信して、他のXクライアントに関する情報を取得し、それと対話できます。

たとえば、デスクトップ上でSkype(またはオープンソースかどうかに関係なく任意のプログラム)を実行すると、アクティビティをスパイすることができます:ウィンドウ、タイトル、スクリーンショットを撮る、キープレスをログに記録する(いくつかのグラフィカルツールキットを使用する場合でも)現在表示されているものの。したがって、理論的には、ルートシェルが開かれている端末があるかどうかを特定し、そこにキー入力イベントを送信して何かを入力できます(ただし、すべての端末エミュレータがこれらに従うわけではありません)。

実際には、キープレスのシミュレーションはあなたに気付かれるかもしれません(何かが起こった、またはプログラムがウィンドウを閉じてジョブを非表示にしただけかもしれません)一方で、プログラムが通信を許可されている場合は、特にキーロギングは見えません暗号化された接続(Skype、Googleトーク、フラッシュ、その他のプラグインを含むインスタントメッセージング、オーディオ、ビデオプログラムなど)を介して外部の世界。

参照: The Invisible Things Labのブログ:The Linux Security Circus:On GUI isolation

あなたの質問への回答。

シチュエーション1では、基本的にiotopを信頼しますが、それはあなたのポイントではないと思います。デスクトップに接続されている、またはユーザーとして実行されているマルウェアを想像してみましょう。 iotopをだまして(キープレスのシミュレーションなどによって)厄介なことをしようとする可能性がありますが、おそらく効果がありません。

状況2では、シェルはXから分離されているため、セキュリティ面で優れています。ユーザーアカウントで実行している1つのプログラムが、ログインしているLinux仮想コンソールに書き込むことができることを知っておく必要がありますが、これは画面に文字を挿入するだけで、プロセスアクティビティではありません。私の知る限り、プログラムをだまして実際に何かを別のLinux仮想コンソールに入力することはできません。

状況3は上記で説明したものです。プログラムはそれに気づき、いくつかのコマンドを入力して事実を隠そうとするでしょう。

あなたが本当に心配しているのであれば、おそらく分離と Qubes によるセキュリティに興味があるでしょう。

5

別のサイトでいくつかの回答を見て、rootアカウントを使用しないとセキュリティが向上すると考えているので、これを投稿します。

デフォルトのタイムアウト設定では、.bashrcに次の行を追加することで、ルート権限を取得する簡単な方法があります。

trap 'Sudo -S touch /hacked </dev/null 2>/dev/null' debug

ユーザーがhackedを使用すると、ルートディレクトリにファイルSudoが作成されます。

完全なハックでは、trapコマンドを変更してユーザーがこれを知らないようにし、setdeclarecommandtypeなど。別のオプションは、Sudo自体を変更することです。

理論的には、プログラムはパネルとデスクトップを強制終了し、Sudogksuなどへのすべてのエントリ、または監視プログラムが別のものに置き換えられた変更バージョンに置き換えることができます。上記のコードはそれをより簡単にしました。いくつかの方法でSudoを変更することで回避策が存在する可能性がありますが、少なくとも現在のバージョンでは、セキュリティ目的でSudoパスワードを使用できるとは思いません。

1
user23013

Sudoとして実行されているアプリケーションは特権メモリで実行され、Sudoとしてまだ実行されていないアプリケーションはコードにアクセスできなくなります。

アプリケーションが適切にコーディングされておらず、他の何らかのメカニズムを使用して特権空間の外に自身を公開している場合、アプリケーションに対してある種のインジェクション攻撃を行うことができる可能性がありますが、そうすることは容易ではなく、特定のものでなければなりません。そのアプリケーション。

0
AJ Henderson