www.morihi-soc.net

誰もが安心して使える、安全なインターネットを目指して

ハニーポット観察記録(25)

どうも.ハニーポッターの森久です.

今回は SSH ハニーポットの Kippo について再度紹介したいと思います.

 

参考動画:SSHハニーポット(Kippo)で採取した不正ログイン後の形跡2

以前の記事と同様に,インストールから起動までの流れを紹介します.

また私が作成した Kippo 向け環境作成スクリプトも公開したので,併せて紹介します.

環境構成

インストール環境は下記を想定しています.ただその他の環境でもおそらく動作すると考えられます.

  • Ubuntu 14.04 LTS(64bit)
  • Python 2.7.6

 

利用するポートは全部で3つあります.

  • 22/tcp
    • ufw で 2222/tcp へポートフォワードします.
  • 2222/tcp
    • Kippo が待ち受けするポートです.
  • 10022/tcp
    • ホスト OS の管理用として使います.環境に合わせて適宜読み替えてください.
Kippo のポート構成図

Kippo のポート構成図

なぜこのような構成にするのかというと,Kippo は一般ユーザ権限で動作させることを推奨しており,well-known port での待ち受けができません.そのためハイポートで待ち受けし,ufw のポートフォワーディング機能を利用して,22/tcp へのアクセスを 2222/tcp へリダイレクトさせます.

 

ファイアウォールの設定変更

Kippo インストールの前にファイアウォールの設定を環境に合わせて変更します.Ubuntu ではファイアウォールを ufw で管理しているため,ufw コマンドで設定変更します.

※下記ではデフォルトですべてのポートに対する接続を拒否し,特定のポートに対する接続を許可する方針です.ホスト OS のりよう環境に応じて,接続を許可するポートは追加してください.

次に,ポートフォワードの設定をします.

ファイルの変更が終わったら ufw を再起動します.祈ってください.

以上でファイアウォールの設定は終わりです.念のため管理用のポート(上記の場合は,10022/tcp)で SSH 接続可能であることを確認してください.

 

Kippo インストール

Kippo は現在 GitHub で管理されています.そのため git コマンドを使って,最新版をダウンロードするようにします.

それでは依存関係のあるものも含め,apt でインストールします.

Kippo そのものは /opt ディレクトリ以下に作成します.

インストールは以上でおしまいです.

 

Kippo 動作確認

ここで Kippo の起動確認をします.

初回は秘密鍵・公開鍵の生成が行われます.それが完了すると Kippo が動き始めます.

ターミナルを開いて Kippo が動作しているホストに 22/tcp で SSH 接続してみましょう!

デフォルトのアカウントは下記の通りです.

アカウント名:root
パスワード:123456

適当にコマンド(w/whoami/ls など)をいくつか入力したら,Kippo がログをきちんと保存しているか確認しましょう.Kippo を動かしている OS でファイルの存在有無を確認します.

Kippo はログイン成功ごとに侵入者の動作を記録します.おそらくあなたが最初にログインしたはずなので,ログファイルが1つあると思います.

ログファイルを再生してみます.

どうでしょうか.本記事冒頭の Youtube 動画のように,あなたが入力したコマンドの履歴が再生されたでしょうか? お前のやったことは,全部エブリシングお見通しだ!

閑話休題

ログファイルが再生できたら問題なく Kippo のインストールは完了しています.動作確認は以上で終了なので,次の設定変更の前に一旦 Kippo を終了させます.

 

Kippo 設定変更

Kippo はより”本物”の脆弱なサーバのように見せかけるために,いくつか設定を変えることが可能です.もし攻撃者にハニーポットであることがバレてしまうと,有用な情報を得ることが難しくなります.そのため可能な限り,本物っぽく見せましょう.女子力ならぬ,ハニーポット力(?)を発揮する場所はココです.

設定ファイルとともに,Kippo のディレクトリ構成を紹介します.

  • data
    • Kippo のデータディレクトリです.秘密鍵や公開鍵,ログイン情報を管理するファイル(userdb.txt),last コマンド用のログ(lastlog.txt)などが保存されます.
  • dl
    • 攻撃者がログイン後に外部から取得したファイルのコピーが保存されます.マルウェアの可能性が高いため,直接実行してはいけません.
  • doc
    • Copyright や README などのマニュアルとデータベース管理用の SQL が置かれています.
  • fs.pickle
    • 疑似ファイルシステム構造の情報を管理するファイルです.
  • honeyfs
    • 偽のファイルです./etc と /proc に関するファイル群です.
  • kippo
    • Kippo のコアです.Python のソースコードが置いてあります.
  • kippo.cfg
    • Kippo のコンフィグファイルです.このファイルを書き換えて設定変更します.
  • kippo.cfg.dist
    • Kippo のコンフィグファイルのオリジナルです.
  • kippo.tac
    • twisted 用のファイルです.
  • log
    • ログディレクトリです.ログイン認証情報や中にある tty ディレクトリには,ログイン後の行動履歴がログファイルとして保存されます.
  • README.md
    • りーどみーです.
  • start.sh
    • Kippo を開始するシェルスクリプトです.
  • stop.sh
    • Kippo を停止するシェルスクリプトです.
  • txtcmds
    • 攻撃者が特定のコマンドを実行した際に表示する中身です./bin  と /sbin と  /usr が標準で用意されています.
  • utils
    • お役立ちスクリプトが置いてあります.ログファイルを再生する「playlog.py」を最もよく使います.

上記のファイルの中で,設定変更すべきファイルは次のとおりです.

  1. kippo.cfg
  2. data/userdb.txt
  3. honeyfs ディレクトリ以下のファイル
  4. txtcmds ディレクトリ以下のファイル

kippo.cfg

Kippo のコンフィグファイルです.変更すべき項目は次のとおりです.

  • ssh_port
    • Kippo が待ち受けるポート番号.デフォルトは 2222 で,変更した場合はファイアウォールの設定も合わせて変更する必要があります.デフォルトのままでも問題ありませんが,気になる人は変えましょう.
  • hostname
    • ホスト名です.デフォルトは「svr03」で,適当なものに変更しましょう.
  • {rsa/dsat}_{public/private}_key
    • 秘密鍵・公開鍵のペアです.もし自分で用意したファイルを使いたい場合はここを書き換えます.
  • ssh_version_string
    • SSH のバナーです.デフォルトは「SSH-2.0-OpenSSH_5.1p1 Debian-5」です.ちょっとバージョンが古いので,適当に新しいものに変えましょう.
  • データベース関連は必要であれば設定変更します.

data/userdb.txt

このファイルは1行に1アカウントずつ列挙します.フォーマットは:で3つのフィールド(ユーザ名:id:パスワード)をしています.


test:1001:pass

ユーザ名は「test」
uid は「1001」
パスワードは「pass」

※同じユーザ名でも複数行に別ければ,異なるパスワードを登録可能です.

honeyfs ディレクトリ以下のファイル

/etc と /proc に関する偽のファイルが置かれています.攻撃者が cat コマンド等で表示させるときに,このファイルの中身が使われます.

ファイル例(/proc/cpuinfo )

Kippo のデフォルトの /proc/cpuinfo

Kippo のデフォルトの /proc/cpuinfo

イマドキ,Core 2 Duo の E8200 でサーバ運営している人がどれだけいるのか・・・.これはより現実的なものに変えたほうがいいですね.

/etc/passwd のようなファイルも,userdb.txt と連携しているわけでないので richard というユーザがいたりします.誰だよリチャードって(;´∀`)

上記のように変更すべきファイルがたくさんあるので,一括でファイルを変更するシェルスクリプトを作成しました.

/etc/shadow の中身を参照するため,管理者権限が必要です.もし管理者権限が無い状態で実行した場合は honeyfs/etc/shadow ファイルは変更されません.

このシェルスクリプトはホスト OS の情報を基に,honeyfs 以下のファイルを変更します.利用する場合は,セキュリティリスクを考慮した上で,ご自身の責任にてご利用ください.

スクリプト実行後は,変更されたファイルの内容を確認してください.

txtcmds ディレクトリ以下のファイル

/bin  と /sbin と  /usr の実行結果として表示させる,偽のファイルが置かれています.攻撃者がこのディレクトリ以下のコマンドを実行した場合に,そのまま内容がターミナル上に表示されます.

ファイル例(/sbin/ifconfig )

Kippo のデフォルトの /sbin/ifconfig コマンド

Kippo のデフォルトの /sbin/ifconfig コマンド

00:4c:a8 なんて NIC のベンダー ID は無いですし,IP アドレスもローカル IP アドレスですね.

ということで honeyfs と同じように,一括でファイルを変更するシェルスクリプトを作成しました.

このシェルスクリプトはホスト OS の情報を基に,txtcmds 以下のファイルを変更します.利用する場合は,セキュリティリスクを考慮した上で,ご自身の責任にてご利用ください.

スクリプト実行後は,変更されたファイルの内容を確認してください.

 

最後に

ひと通り設定変更作業が終わったら,再度 Kippo を実行しましょう.

あとはひたすら攻撃者がやってくるのを待つだけです.

Kippo にはまだまだ設定可能なところが残っています.たとえばファイルシステムに関するものは,今回説明していません.気になる人は utils ディレクトリの中の createfs.py や fsctl.py を紐解いてみてはいかがでしょうか.

以上です.

 

参考情報

Kippo – SSH Honeypot (GitHub)
https://github.com/desaster/kippo

Kippo-utilities (GitHub)
https://github.com/morihisa/Kippo-utilities

 

Written by 森久

5月 22nd, 2015 at 11:30 pm