Misc notes

~セキュリティに関する雑記~

メールハニーポットの構築(Mailoney on T-Pot)

f:id:fatsheep:20171227121757j:plain:w630

前々からやろうやろうと思ってなかなかできなかったメールハニーポットですが、T-Potに搭載されているMailoneyでできることを知り、早速設定してみました。実際はMailoneyの設定は行っておらず(T-Pot導入時のまま)、ドメインを取得したり、動的IPの対応を行ったりと、周りの調整のみです。

(知る前は、メールサーバ(Postfixか何か)を1から構築して、監視・運用しないといけないなぁ、、と思っておりなかなか腰が上がりませんでした。)

前提

すでにT-Potの構築が完了し、かつSMTPポート(25/tcp)の監視を行っている環境があることを前提とします。

ドメイン取得

MyDNSのユーザ登録

試しに設定してみるということで、無料でサブドメインを取得できるMyDNSを利用しました。本格運用では独自ドメインを取って行おうと思っています。

www.mydns.jp

登録は、上部の「JOIN US」から行い、必要項目を入力して登録を行います。登録が完了すると、アカウント情報がメールで送られてくるので、その情報でログインします。

ドメイン設定

サブドメインを取得します。左のメニューの中の「DOMAIN INFO」より行います。MyDNSでは以下のドメインサブドメインが無料で取得可能なので、適宜好きなものを選択します。

f:id:fatsheep:20180720131217p:plain

設定する箇所は2箇所で、「Domain」と「MX」です。以下のような形で入力して設定します。

f:id:fatsheep:20180720192301p:plain

登録後はそのドメインに正常にアクセスできることを確認します。(HTTP接続することで、T-PotのGlastopfの画面が表示されるはずです。)

動的IP対応

グローバルIPが動的に変化するので、変化してもドメインを紐づけるため、T-Potに以下の設定を行います。(T-Potを静的なグローバルIP下で運用している場合は不要です。MyDNSのWEBページにて直接IPアドレスを指定します。)

rootユーザにて「crontab -e」を実行し、cronを設定します。以下の1行を追加します。

*/5 * * * * curl -s -u mydns999999:aAbBcCdDeE https://ipv4.mydns.jp/login.html > /dev/null

「mydns999999:aAbBcCdDeE」の部分はMyDNSのアカウント情報になります。この設定で5分毎にMyDNSに対してグローバルIPを通知します。これでグローバルIPが変化しても最大5分でドメインに紐づくIPアドレスを更新できます。

動作確認

以上で準備は完了です。試しにメールを送り、受信できることを確認します。Gmailなどでメールを送信してみます。なお@の前の部分は何でもOKです。

f:id:fatsheep:20180720193902p:plain

送信後、T-Potに届いたか確認します。KibanaのMailoney Dashboardを開きます。右下のMailoney Handshakeを見ると、MAIL FROM、RCPT TOが記録されており、メールを受け取ったことを確認できます。

f:id:fatsheep:20180720194144p:plain

例によってKibana上で見れる情報は限られているので、Mailoneyのログを直接見てみます。「/data/mailoney/log/mail.log」を見ると、以下のように受信したメッセージを確認できます。

**************************************************
Mail from: <*******@gmail.com> SIZE=2429
Mail to: test-mail-address@*******.0t0.jp
Data:
Received: by mail-pg1-f180.google.com with SMTP (snip)

またReceived: 以降の部分を抜き出し、改行など整形、.emlの拡張子で保存後、メーラなどで開くと、以下のようにメール本体を確認できます。(Windows10に標準搭載のメールアプリで開いています。)

f:id:fatsheep:20180720201015p:plain


7月23日追記~~~~~~~~~~~~~~
上記、「Received: 以降」ではなく「Data:」の次の1行のほうが正しいですね。失礼しました。
~~~~~~~~~~~~~~~~~~~~


7月31日追記~~~~~~~~~~~~~~
eml化についてもう少し詳しく書きたいと思います。

まずDATA部を抜き出します。mail.logには以下のように記録されていますが、以下の画像の例では「Received:」からその行末までを抜き出します。(青でハイライトしている箇所です。)

f:id:fatsheep:20180731190528p:plain

続いて抜き出した部分を整形します。私はサクラエディタを使用しましたが、ツールは何でもいいと思います。

抜き出した部分は改行を含んでいるので、まずはこれを削除し1行にします。(正規表現を有効にし、「\r\n」を「」に置き換えするイメージです。)

改行を削除する前後です。サクラエディタの改行文字が消え、行数表示も1(行)のみになったのがわかると思います。 f:id:fatsheep:20180731191015p:plain f:id:fatsheep:20180731191313p:plain

次にテキスト中に含まれている改行文字「\n」を実際の改行に置き換えます。(正規表現を有効にし、「\\n」を「\r\n」に置き換えるイメージです。)

置き換え後は以下のようなフォーマットになると思います。 f:id:fatsheep:20180731192112p:plain

最後にこのテキストを.emlの拡張子で保存します。
~~~~~~~~~~~~~~~~~~~~

最後に

これで一通りの構築は完了しました。あとは適当なアカウント名のメールアドレスをばらまいて、メールを待つだけです。

メール本体の確認については、(ほかのハニポも同様ですが・・)もう少し監視しやすいように工夫する必要があるかもしれませんね。