リアリティはないけど、脅威は確かにいるよセキュリティ・ダークナイト(5)(1/5 ページ)

ちょっと遅れてやってきた夏休みの宿題は、ハニーポットを用いた侵入手法の観察日記。狙われやすいパスワードが明らかに!(編集部)

» 2010年10月12日 00時00分 公開

 厳しい残暑が続く日々から一転、涼しい風が吹くようになったこの頃、いかがお過ごしだろうか。涼しくなる前にしっかり夏休みは取れただろうか?

 約2年前の夏には、前の連載「セキュリティ対策の『ある視点』」の第11回「ハニーポットによるウイルス捕獲から見えてくるもの」という記事で、「nepenthes」というハニーポットを用いてワームの捕獲を行う、いわば「ネットワークセキュリティ版昆虫採集」について紹介した。

 「ハニーポットとは何か?」については前回の記事を参照していただくとして、ここでは割愛する。今回紹介するのは、ロー・インタラクション(低対話型)ハニーポットの「Kojoney」だ。

SSHアタックに飽き飽きして作られたハニーポット

 今回題材とするのは「Kojoney」という、Pythonで書かれた、SSH(Secure SHell)サーバをエミュレートするハニーポットである。

 Kojoneyという名前の由来は、「cojon」というスペイン語と「honey」を掛け合わせた造語であるらしい。「estar hasta los cojones」(うんざりする、飽き飽きする)といった言い回しにも用いられるようで、作者は、自身のSSHサーバへのアタックに飽き飽きしてこのハニーポットを作成、公開したようである。

 Kojoneyは、ユーザー名とパスワードをペアで管理しており、そのペアに合致したSSHアクセスに対してログインが成功したように見せかける。

 だが、単にログインが成功したように見せかけるだけでは、あまり意味はない。Kojoneyはログインの際に使用されたユーザー名、パスワード、アクセス元のアドレスなどのログをすべて保存するよう設計されている。ログイン後も、ユーザーが実行したコマンドをログに保存する機能まで有している。

 侵入に成功したユーザーは、さらなる情報収集や踏み台行為を行うため、さまざまなツールをインターネットからダウンロードし、侵入したシステムに仕込んだりすることが多い。こうしてインターネットからダウンロードされたファイルを、侵入したユーザーが利用(悪用)できない形で保存する機能も備えている。

 これらの機能により、以下を分析するための情報を得ることができる。

  1. SSHでの侵入時に狙われやすいユーザー名
  2. SSHでの侵入に利用されるパスワード
  3. 侵入後の侵入者の活動
  4. 侵入者が利用する攻撃ツール、ダウンロード先アドレス

ハニーポットから見えてくるSSH攻撃の実態

 最近、ニュースや公的機関、セキュリティ企業が発する注意喚起情報の中に「SSHを狙うアクセスが急増」という内容を見掛けることが増えた。しかし実際のところ、本当にそういった動きが起こっているのだろうか。また「SSHを狙うアクセス」とは、いったいどういう状況を指すのだろうか。注意喚起情報自体には触れていても、そこまで踏み込んで知る機会は少ないと思われる。

 一方で、残念なことだが、セキュリティ業界のサービスやソリューションの宣伝文句の中には、発生する可能性が極めて低いような事象まで「今、そこにある危機」のようにあおっているものもある。

 セキュリティを生業にしている筆者がいうのもおかしな話かもしれないが、セキュリティに関しては過小評価も過大評価もすべきではない。重要なことは、サービスやソリューション、そして自身の周りにある「本当の危機」を正しく見極める目を持つことだ。それには、報じられている事柄を自ら体験し、自分で確かめることが非常に有効なのである。今回紹介するKojoneyは、それを体験するのに有用なツールだ。

 それでは、Kojoneyのインストール方法を簡単に紹介し、さらに筆者が実際に設置したKojoneyから得られた情報も見ていただこう。

インストール手順

 ここではKojoneyをDebian GNU/Linux 5.05にインストールする。まず、任意のダウンロードフォルダに最新版の0.0.4.2をダウンロードする。このバージョン未満のKojoneyには、侵入後、特定の操作をすることでDoSを発生される脆弱性が存在しているため、必ず最新版をインストールしてほしい。

 また、KojoneyはSSHハニーポットであるため、デフォルトではtcp/22ポートで待ち受けることとなる。インストールする環境ですでにsshdが稼働している場合は、/etc/sshd/sshd_configなどの設定ファイルを編集し、本物のsshdが稼働するポートを変更し、sshdサービスの再起動をしておいてほしい。

# What ports, IPs and protocols we listen for 
Port 2222
リスト1 sshd_configの編集例。sshd待ち受けポートをtcp/2222に変更する場合

 ダウンロードからインストール開始までの手順は以下の通りだ。

wget http://downloads.sourceforge.net/project/kojoney/kojoney-0.0.4.2.tar.gz 
tar zxvf kojoney-0.0.4.2.tar.gz 
sudo sh INSTALL.sh 
Kojoney Honeypot installer. 
Press enter to view the license agreement(s) ... 
〜 ライセンス承諾省略 〜
anyone to deny you these rights or to ask you to surrender the rights. 
Do you accept the ZPL, MIT and GPL license terms (yes/no) ? 
yes

 INSTALL.shを実行した後、ライセンスに同意するために「yes」とタイプする。同意するとインストールが開始されるが、「python-dev」がインストールされていない環境ではエラーが発生してインストールが失敗するので、別途インストールしていただきたい。debian系OSの場合はsudo apt-get install python-dev、Redhat系OSであればyum install python-develでいいだろう。

【注】
Kojoneyのインストールに失敗し、python-devのインストールを行った後、再度Kojoneyのインストールを行うと、失敗したときの残骸が残っているためインストールできない。その場合は、一度UNINSTALL.shを実行してから再度INSTALL.shを実行し、インストールし直してほしい。

 ライセンスに同意した後は、5つのステップでインストールが行われる。一部対話的な部分があるため、その部分について解説したい。

Step 3 - Installing documentation 
[+] Installing man pages 
Man path does not found in /usr/local/man/man1. Type the full man path:

 ここでは、マニュアルをどこにインストールするかを聞かれている。ファイルが存在しなかったといわれているパス、/usr/local/man/man1を入力し、

[+] Creating directory for url archives 
Step 5 - Final questions and fun 
Do you want to run it automatically at boot time (yes/no)? 
yes 
***No run levels were assigned. You need to do this manually.*** 
Do you want to run it now (yes/no)? 
yes 
Starting daemon

 と入力する。

 ここでは、Kojoneyを起動時に自動実行するかどうかと、いますぐKojoneyを起動するかどうかが聞かれている。適宜「yes」か「no」で答えればいいが、ここでは「yes」とした。

 インストール中にいくつかのwarnningが表示されるが、最後に「Kojoney installation finished.」と表示されればインストールは問題なくできているだろう。インストールが完了したら、netstatコマンドでtcp/22ポートがLISTENしていることを確認してほしい。

pentest@pebian:~/kojoney$ netstat -an 
稼働中のインターネット接続 (サーバと確立) 
Proto 受信-Q 送信-Q 内部アドレス            外部アドレス            状態 
tcp            0           0   0.0.0.0:2222            0.0.0.0:*               LISTEN 
tcp            0           0   0.0.0.0:111             0.0.0.0:*               LISTEN 
tcp            0           0   0.0.0.0:22               0.0.0.0:*               LISTEN 
tcp            0           0   127.0.0.1:631          0.0.0.0:*               LISTEN 
tcp            0           0   0.0.0.0:1241            0.0.0.0:*              LISTEN 〜 省略 〜
リスト2 netstatによるポートLISTENの確認結果
       1|2|3|4|5 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。