Honeypotであるkippo(http://code.google.com/p/kippo/)が紹介されていた。見るということで、今回このkippoを試してSSHハニーポットの構築をしてみる。kippoとは何かsshのハニーポットはあまり数も多くなく、「これ!」という定番は無いのが現状である(たぶん、作るのが面倒くさい割に需要もほとんど無いからだろう)。本当に必要な研究者などが、各自で作っている話は聞いたことがある。そんな中、有名なものにKojoneyがあるが、2010年から更新されていないようだ。Kippoもそんなsshのハニーポットのひとつで、開発はそんなに活発では無いけど一応細々と続いている......ようだ(たぶん)。書かれており、インスパイアはされたけどベースとしてはいないそうである。2.5以上がインストールされている必要がある。以下のPythonモジュールが必要である。Twistedzope.interfacePyCryptopyasn1Pythonのモジュール群は、通常のお作法通りにtar.gzを展開してから中身のsetup.pyを以下のように実行すれば良い。6.4では、pycrypto以外は公式rpmが用意されているのでyumで入れてしまえば良い。python-pyasn1.noarchモジュール類がインストールできたら、最後にkippoをダウンロードする。この記事を書いた時点で最新のkippo-0.8.tar.gzをダウンロードして、適当なディレクトリに設置する。kippo自体はpythonスクリプトなので、設置しただけでインストール完了である。先ほどkippoを展開したディレクトリ内で、start.shを実行すれば良い。twistdにパスが通っていない場合はエラーになるため、パスを通しておく必要がある。セキュリティのためか(?)、rootユーザで起動しようとするとエラーになるため、一般ユーザで起動しよう。./start.shこの状態で、ポート2222にsshアクセスしてみればすぐに動きが確認できる。して登録されているので、別のマシンから以下のようにアクセスしてみよう。ログインできたように見えるはずである。root@192.168.1.1Password:この初期設定ユーザは、data/userdb.txtを書き換えれば自由にユーザ追加・パスワード変更がおこなえる。中身は以下のような単なるテキストファイルなので、とてもお手軽。root:0:123456初期設定kippoの設定ファイルは、kippo.cfgである。初期設定のままでだいたい動くけど、まずは最終行のコメントアウトを外して、テキストログが出るようにした方がいい。kippo-textlog.logこれでssh接続された際にどんなID・パスワードが入力されたか、どんなコマンドが叩かれたか、を見ることができる。このログは設定によってMySQLデータベースに直接保存することもできる。TABLEしてからkippo.cfgの下記設定をいじればよい。3306ポートフォワード前述した通り、kippoはrootユーザで実行しようとするとエラーになり起動できない。portにbindするにはroot権限が必要なため)。解決策として、先のハッカージャパン2013年9月号の極東パッチマネージャー氏の記事では、kippo.tacの以下行をコメントアウトしてuidチェックを回避する手法が書かれていた。sys.exit(1)しかしこの手法は、あんまりオススメできない。root権限で実行して、kippo(あるいはtwistd)に脆弱性があったら、root権限が奪取されてしまうかもしれない。いうわけで、kippo自体は一般ユーザでデフォルトのポート2222で起動しておき、以下のようにiptablesで外部からのポート22/tcp宛て通信を、ポート2222/tcpにNATしてやるのが一番妥当でスマートだと思う。この際は、本来のsshdは別ポートで起動しておく必要がある。2222こうしてやれば、外から普通にsshすればkippoの待つ2222/tcpに繋がるし、もしkippoの脆弱性が突かれても最悪一般ユーザ権限しか手に入らない。これはeth0のPREROUTINGチェインに書いているので、localhost宛だとうまくいかないと思います。設定後に試すときは、localhostにsshログインするんじゃなくて、外からグローバルIPに向けてログインしてみてください。ログ再生(playlog.py)kippoでも特に面白い機能がこれで、侵入者が打ち込んだコマンドを「再生」することができる。キーボードの待ち時間や打ち間違いなども全て再生されるため、とてもリアルで面白い。utils/playlog.pyがこのログ再生スクリプトで、使い方もlog/tty/20131209-052302-8163.logなどkippoのログファイルを指定して実行するだけなので簡単。20131209-052302-8163.logこれで実際に侵入者の様子を再生してみたのが以下です。yumとか、PerlスクリプトをPHPで実行しようとするとか、ツッコミ所満載で笑える。侵入者は往々にしてwgetで悪意のあるプログラムをダウンロードしようとします。kippoでは、ダウンロードされたファイルを[dl]フォルダに自動的に格納してくれます。本物のマルウェアは、後で取りに行ってみると気がついた管理者に既に消されていた......なんてこともありますが、これなら確実に検体が手に入るため便利です。Qiitaの19日目です。関する罪」の情報公開請求をしました月別アーカイブはてなブログをはじめよう!ozumaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。