メールヘッダーをよく見る。

友人のおすすめで、買っちゃいました。

標的型攻撃セキュリティガイド

参加していたとあるコンテストでの題材がスパムメールに関してだったのと、この本でちょうどメールヘッダー偽装に関して、書かれていたので、自分宛のメールヘッダーを勉強がてら見てみました。

 

自分に届いているメールのなかから、いくつか見てみたんですが、WEBメールとかだと、サービスが独自のヘッダつけたりしていて、ものすごく読みにくかった・・・。

とりあえず代表的なものはこちらを参考にしました。

メールヘッダ情報一覧

メールヘッダ情報・意味・見方・調べ方

あと色々調べる過程で、GoogleAppToolboxのMessageheaderというサービスを知りました。

ヘッダーをコピペしてあげると、そこから情報をまとめて見やすく表示してくれるサービスです。

 

ネットで拾った適当なメールヘッダを分析してみます。ただ、これと僕が受信した本物のメールのヘッダーを比較すると、かなり違っていたりすることもあるので、丸覚えというよりは、流れを読めるようになることが大切だと思います。要するにヘッダーを付加するソフトウェアによって、順番だったり項目だったりは変わる、ということだと思います。

非常にわかりやすいサンプルがこちら

上から順番に読んでいきます

1.Return-Path(送信者側メールサーバが付加)

メールを送信したんだけど、送信先が存在しない場合、メールを受信したサーバが送信者へメールが送れなかったことを通知するためのアドレス。通常はFromと同じ(めーるだえもんとかは、ここを見てメールしてる、っぽい)

メールの送信先がいなかったらxxxxx@testtest.comにメールしてね、ってことですね。

 

2.X-Original-To(受信者側メールサーバが付加)

受信したメールサーバで別のメールアドレスに転送している場合などに付加される。

メールの送信者は00000@example.comにメールを送ってきました。ということ

 

3.Delivered-To(受信者側メールサーバが付加)

2で転送された場合に付加され、転送されたメールアドレスが記載される

00000@example.comから11111@example.comへメールを転送しました。ということ

 

4.Received(受け取った中継サーバがそれぞれ付加)

メールを転送したメールサーバの情報を示す。メールサーバが付加する。

フォーマットは以下のようになっている

Receivedは下から順番に一番下が送信元で、一番上が自分のメールサーバになる。

下から順番に追っていけば、どのような経路でメールが届いたのかが確認できる、ということ。

上記のサンプルだと

送信者: unknown (HELO PC NAME というPC名)[IPアドレス 219.110.000.00]が

SMTPでsmtp16.mail.bbt.yahoo.co.jpに2005年6:6:43メールを送った

送信者:smtp16.mail.bbt.yahoo.co.jp(IPアドレス 202.93.83.109)が

SMTPでsample.jpに2005年15:06:59にメールを送信した。宛先のメールアドレスは0000@sample.jp

というようになっているようです。

 

5.Message-ID(受信側サーバで付加)

メールサーバで付けられるメールのID。これは全世界で唯一のものにならなくてはらない。

 

6.From(送信者が付加)

送信者のアドレス

 

7.To(送信者が付加)

メールの宛先

 

8.Reply-To(送信者が付加)

メールの返信先のアドレス。Fromと別に指定したい場合に利用

 

9.Subject(送信者が付加)

メールのタイトル

 

10。Date(受信者側サーバが付加)

メールの受信日

 

11.MIME-Version

メールのMIMEのバージョン

 

12.Content-Type(送信者が付加)

メールの内容のタイプ。テキストやHTMLが指定される

 

13.Content-Transfer-Encoding

メールのエンコード方式

 

14.X-Mailer(送信者が付加)

送信者が使用したメールソフト

 

上記は貼ったリンクの焼きまわしなので、リンク先のほうが詳しくのってます。

今度はぐぐれば出てくるようなWEBサービスを使って自分宛に偽装メール送って、ヘッダー解析してみます。

1.名前なし (from monemail2host@localhost)からsg2nlhg005.shr.prod.sin2.secureserver.netへESMTPで送信

宛先はMY-ADDRESS@gmail.com(これは僕のアドレスです)

日時はThu, 25 Apr 2013 17:09:48 -0700

 

2.sg2nlhg005.shr.prod.sin2.secureserver.netからsg2nlhg005.shr.prod.sin2.secureserver.netへSMTPで送信

宛先はMY-ADDRESS@gmail.com

日時はThu, 25 Apr 2013 17:09:48 -0700

 

3.g2nlhg005.shr.prod.sin2.secureserver.net ([IPアドレス:182.50.130.5])からsg2nlshrout01.shr.prod.sin2.secureserver.netへbizsmtpを利用して送信

ここでようやくlocalhostから出た?bizsmtpの仕組みとかは今よくわからないけど、宛先が僕のアドレスではなく、idに置き換わってしまってますね

 

4.ここも今は詳しくはわかりませんが、おそらくGoogleのメールサーバのSPF認証みたいです。passとなっているところから、とりあえず認証は通ってるみたいです。ここは一旦スルーで。とりあえず認証してる、とだけ。

 

5.sg2nlshrout01.shr.prod.sin2.secureserver.net(IPアドレス[182.50.132.193])からmx.google.comへESMTPで送信

宛先はMY-ADDRESS@gmail.com

日時はThu, 25 Apr 2013 17:09:50 -0700

ここでようやくgoogleのメールサーバまで届きました。

 

これより上のX-ReceivedとReceivedはGoogleのメールサーバが転送を繰り返し、つけたヘッダです。Google内にあるたくさんのメールサーバを経由して目的のサーバまで転送している、ということだと思います。

 

これで僕のアドレスにメールが届いています。さてそれはわかりました。

他ののヘッダも見てみます。

 

・Delivered-To: kaede06152000@gmail.com

これもGoogle内で転送された際に付加されたと思います。実際にこのアドレスに送信しますよ、ということ

 

 

・To: MY-ADDRESS@gmail.com

・From: FAKE <fake@mail.com>

この辺は僕が設定した部分です。Fromにあるメールアドレスを僕はもちろん持っていませんし、誰かが使ってるアドレスでもありません。ここには任意の文字を指定できます。メーラーでも、宛先はここが参照されます。

 

・Reply-to: FAKE <FAKE.Y5iTotuWI918718-10787-EN@5ymail.com>

このメールに返信した場合は、このアドレスに届きます。

 

・X-Mailer: PHPMailer [version 1.73]

これは詳しく調べたわけではないですが、おそらくPHPのmail関数で送られたもの、ということじゃないかな、と思います。

 

重要な部分はこんな感じですかね。

この場合、受信者の立場から、ある程度信憑性がある情報はgoogleのメールサーバ内で付加されたReceivedの情報だけで、他は偽装が可能らしいです。(送信者個人が全て偽装可能、ということではないです)

今回は外部サービスを使ったFromの偽装と、それによる送信元の隠蔽ですが、普通はわざわざヘッダーを見ることもないので、騙されてしまうかもしれませんね・・・。

 

僕がこのブログを書くために、試しで送ったこのメールもGoogleのフィルターを通過し、受信者に届いているわけですから、やっぱりセキュリティ機能を強化・整備も大切ですが、関わる個人が注意する、ということが一番重要ですね。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です