から:http : //seclists.org/fulldisclosure/2009/Jul/0388.html
http://news.ycombinator.com/item?id=723798の投稿から私がそれを最もよく理解している場合、Matasanoの連中はsshdをインターネットからアクセスできるようにしました-これに対する提案された解決策(プログラミングの観点から)?
から:http : //seclists.org/fulldisclosure/2009/Jul/0388.html
http://news.ycombinator.com/item?id=723798の投稿から私がそれを最もよく理解している場合、Matasanoの連中はsshdをインターネットからアクセスできるようにしました-これに対する提案された解決策(プログラミングの観点から)?
回答:
Matasanoはどのようにハッキングされましたか?
投稿の情報から完全開示への回答は不可能です。しかし、彼らは少しの情報を与えるので、推測することは常に興味深いです-
#./th3_f1n4l_s0lut10n www.matasano.com [-] 69.61.87.163:22に接続しています。 [/]有効な非rootユーザーを探しています.. adam ******** R3D4CT3D h4h4h4h4 ********
彼らは、th3_f1n41_s01ut10n
sashポートに接続するMatasanoのサーバーに対してバイナリ「」を実行します。何らかの未知の方法で有効な非rootユーザーを見つけ、残りの出力は編集されます。
#./th3_f1n4l_s0lut10n -u adam -t 3 www.matasano.com [*] 209.112.118.10:3338上のコネクトバックリスナー。 [!] SSH2_MSG_SERVICE_ACCEPT [OpenSSH_4.5p1、OpenSSL 0.9.8g 2007年10月19日]
見つかったユーザー名を使用してバイナリが再度実行されます。このユーザー名は、ログインしてサーバーにポート3338で接続します(名前が登録されていないことを願っています...)。
adam_at_www:〜$ uname -a Linux www 2.6.20.1-1-686#1 SMP Sun Mar 4 12:44:55 UTC 2007 i686 GNU / Linux **** h4h4h4hh4h4h4 l3tz us3 m0r3!0D4Y!H4H4H4H4H4H4H4 ****
彼らは、このカーネルに対してゼロデイがあることを示唆している可能性があります。これは、この会社の在庫を考えるとかなり古いものです。
adam_at_www:〜$ cd / tmp *********** B0R1NG *********** root_at_www:〜#cat / etc / shadow
おっと-突然、ユーザーがrootになりました。/ tmpにローカル特権エスカレーションエクスプロイトがあり、参照されている0日である可能性があります。
したがって、ここでは少なくとも2つのエクスプロイトが行われています。システムで有効な非rootユーザーを取得するOpenSSHエクスプロイトと、そのユーザーとしてログインしてから、ローカル権限の昇格です。
OpenSSHには、バージョン4.5以降、いくつかの既知のセキュリティ問題があることを考慮してください。
以下からのOpenSSHのセキュリティページ:
~/.ssh/rc
、sshd_config(5)ForceCommandディレクティブでコマンドがオーバーライドされたセッションでは実行されません。これは文書化されていますが、安全ではない動作です(OpenSSH 4.9リリースノートで説明)。私はこの古いLinuxカーネルと古いSSHデーモンがそれらのためにしたと思います。また、インターネットで利用できるwwwサーバー上で実行されていました。これは私の意見ではかなり自信のあることです。侵入した人々は明らかに彼らを当惑させたがっていました。
これらの攻撃を防ぐ方法は?
これは予防的な管理によって防止できた可能性があります。インターネットに直接接続するサービスにパッチを適用し、どこからでも接続できるようにするのではなく、接続できる人の数を制限します。このエピソードは、セキュリティで保護されたシステム管理が困難であり、ITがパッチを適用するための時間を提供するためにビジネスからの献身を必要とするという教訓をさらに複雑にします。
完全なアプローチを使用するのが最適です。公開鍵認証、sshデーモンでのホワイトリスト、2要素認証、IP制限、および/またはすべてをVPNの背後に置くことは、それをロックダウンするための可能なルートです。
明日仕事で何をするかわかってると思います。:)
人々はその上でFUDを作成するのが好きですが、ユーザーadamがすでにそこにいることを知っていて、パスワードも知っていたようです(ブルートフォースまたはその他の方法で)。しかし、彼らはかっこよく見え、この大騒ぎをいたるところに作りたがっています。
もう1つ興味深いのは、ユーザーadamが1年以上そのボックスにログインしていないことです。
(lastlogの出力)
adam pts/1 ool-4350ab48.dyn Sat Jul 26 20:45:18 -0400 2008
そのため、彼はおそらくそのパスワード(おそらく不正なパスワード)をしばらく保持していました。
* SSH経由でユーザー名を見つけるツールが本当にあれば、他のすべてのユーザーを使用してリモートアクセスを取得できた可能性がありますが、そのボックスでは最も一般的なユーザー名を使用しました(簡単に推測できます)。
プログラミングの観点からなぜこれを試して解決するのですか?
代わりに、スマートサーバー管理者の観点から解決する必要があります。ホワイトリストの使用など、投稿したリンクのコメントにはいくつかの素晴らしい提案があります。
ここでも追加したいと思います。あなたがここで質問しているので、あなたはおそらくセキュリティの専門家ではないでしょう。これは本当にプログラミングの問題ではありません。
ソフトウェアをゼロデイ攻撃から保護します...これは不可能です。
多分1つの良いアプローチは、あなたのソフトウェアがハッキングできないと主張することです。Oracle 10にはこの主張があり、翌日には9つの新しい穴が発見されました。現在は非常に安全です。
おそらく、ハッカーは完全に優れたソフトウェアの設定を悪用しました
そのマシンでシェルを使用しているユーザーが非常に多かったように思えます。それは彼らが確かに所有された方法です、他のすべては気を散らすことを意図した赤いニシンです。そのうちの1人は、おそらく他のシェルマシンでsshクライアントをバックドアしてしまい、ゲームオーバーとなりました。すべての人にシェルアカウントを与え、sshdの世界にアクセスできるようにするのは、怠惰で愚かです。