初心者がハニーポット開発した話
この記事はHoneypot Advent Calendar25日目の記事です。
遅れすぎて年越しカウントダウンカレンダーになってしまったゾ。
今回は失敗談みたいな感じです。ためになりはしませんが、笑い話になるかなー?
あと、面倒で画像とかつける気になれなかったのでポエムっぽいですが、すみません想像してください。
ハニーポットを開発する
今までの私はOSSの低対話型のハニーポットや、運用の簡単そうなものだけ選んだ高対話型のハニーポットを作ることはよくやっていました。
まぁなんというか、ツールを使うだけになっているのは面白くない。自分の成長のためにも何か作りたい!と思って低対話型のハニーポットを作ろうとしていました。
低対話型のハニーポットを作る
勉強のために低対話型のハニーポットを作るのは決めたのですが、どういう系統を作ろうか?
awesome-honeypot
このあたり見るとわかるんですけど、本当にいろいろあります。
開発なんて車輪の再発明感
私は簡単な高対話のハニポ沼にハマっているため、当然サービス特化がいい。
じゃあなんのサービスにする?
個人的にはWeb系ハニポばっかやっているので、Web系にすることにしました。(雑ですがここまで即決)
参考になりそうな既存のハニーポットの調査
基本的に簡単なスクリプトしか書いてこなかった人間なので、awesome-honeypotをみてweb系がどのように作られているか参考にしてみることにします。
- Glastopf
webアプリケーションハニーポットと言えばこれ。sandboxがあり攻撃を受けた時成功しているかのように見せかけることができる。
pythonで書かれており、前にソースをある程度読んだことがある。でも量が多いので(簡単にぱぱぱっと作りたい私には)あまり参考にはならなかった。
- Snare/Tanner
Glastopfの後継。使ったことがないがdockerを中で立ち上げるっぽい。あんまりリソース使うのはしんどいし、参考先としては見送り。
でも今使ってみたいHoneypot No.1です。(お正月にでも立てたいな)
- phpmyadmin_honeypot
phpで書かれたシンプルなハニーポット。(使ったことはない)
こういうのを目指したいが、phpを書いたことがないので断念。
- wordpot
pythonで書かれている。webアプリケーションフレームワークであるflaskを利用している。
これだ!
簡単にwebサーバ的な感じに使えそうなので、wordpotのようにフレームワークを使うことにしました。
開発してみる
そのあとテキトーに、webアプリケーションを作るように作りました。(このあたりは端折ります)
まず試作として、webサーバを立てた直後みたいな"it world"画面を真似ることにしました。
フレームワークはflask。
しかし…
なんや、htmlソースが思ったようにならへん…どういうことや…
具体的に言うと静的ファイル(画像とかjsとか)の置き場所が./static
以外にできなかった。
つまり本物と違う部分ができてしまうということ。
どうせ試作だし気にしなければいいではないか、と思うけど神経質なので気になってしまうのでした。
次に行き着いたのはbottle。(ちなみにdjangoはflaskと同じような問題が発生してやめました)
こっちは静的ファイルを./static
以外に置けたので満足しました。
そして…
出来上がったものはこのスライド。でした。
これでそこそこの雛形にはなっただろうか、ということで、しばらくこれを雛形に別のアプリケーションハニポ作ったりしてました。
しかしそんな中また重大な欠点に気づく。
Headerがうまいこと設定できへんやん…。
いや、Headerは設定できるけど、Headerの順番がうまいこといかん…気になる…。
神経質な私はさらに悩むのでした。
そろそろ突っ込まれそうですがまだまだ。
次はtornadoを使い始めました。
これはソースが読みやすかったので、処理を書き換えたりしてなんとかしました。 (雑)
で、ここまでしてやっと我にかえる。そこまでする労力あるならフレームワークに頼るなよ…とw
おしまい
感想
作ってて我に返って悲しかったことなのですが、
そもそも高対話型ができるのに、最近だと中対話型もできるのに、今更自分用に低対話型作っても仕方がなかったかもしれません。でも成長のタネにはなりました。だから失敗した話って書いてるけど個人的には失敗じゃないよ。低対話型は教育用にはめちゃめちゃいいんだけど、そういうのはコードバリバリ書ける先人たちの作ったハニポを使おう。最近出たWOWHoneypotも初心者にはとても良さそうで気になっています。
世の中コード書ける人が正義だと感じることも多いけど、ハニポそのものに関してはそうとも限らん気がしました。そういうのは採れたデータに対するアプローチとかが良さそうですよね。