mailのheaderでメールサーバーがメールを受け取る際の相手のサーバーのIPアドレスは偽装するのが難しいということを聞きましたが、本当でしょうか。それを偽装することは、どのくらい難しいのでしょうか。例えばそのようなソフトを使う・組めばウインドウズ上で非常に簡単にできたりするのでしょうか。よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:2008/02/07 20:04:58
  • 終了:2008/02/14 20:05:02

回答(5件)

id:gday No.1

gday回答回数383ベストアンサー獲得回数712008/02/07 20:18:06

ポイント20pt

「メールヘッダのうち一番最後に自分が受信するメールサーバーに届いた時の相手のIPアドレスだけは信頼していい情報だ」というような話はありますね。

自分が受信するメールサーバーが関与していないメールヘッダの部分は単にその文字列のヘッダを付けて送信すればいくらでも偽装が可能だからです。

しかし、自分が受信するメールサーバーにメールが届くときには相手とIPでコネクションしますので必ずIPアドレスが取り交わされます。ここでIPアドレスを偽装しても偽装先のIPアドレスにアクセスすることになってコネクションを継続することができずうまくメールを配送することができないからです。

したがって容易にできる訳ではありません。

id:filofax

なるほど。そうすると、偽造先のIPアドレスのサーバーにもアクセスできるようにしていないといけないということで正しいですか?

2008/02/07 20:39:07
id:gday No.2

gday回答回数383ベストアンサー獲得回数712008/02/07 21:09:21

ポイント20pt

>偽造先のIPアドレスのサーバーにもアクセスできるようにしていないといけない

『IPアドレスの偽装をするには「偽造先のIPアドレスのサーバーにもアクセスできるようにしていないといけない」』

という意味ですね。

違います。

メールをAからBに送る時にBに対してAのIPアドレスを使ってBと通信を始めます。

ところがAがAのIPアドレスではなくCのIPアドレスを騙ってBにメールを送ろうとするとBは通信の相手がCだと思うので結局Aからメールを受け取ることができません。

ですので容易には偽装できないということです。

id:filofax

なるほど、では実際には不可能に近いのですね。

2008/02/07 21:15:32
id:KUROX No.3

KUROX回答回数3542ベストアンサー獲得回数1402008/02/07 21:39:15

ポイント20pt

http://memorva.jp/internet/spam_virus/mail_header.php

ここの文章をよく読んで考えてみてください。

たぶん、Received のあたりの話ですよね。

id:tera-p No.4

tera-p回答回数92ベストアンサー獲得回数212008/02/08 01:46:05

ポイント20pt

難しいですが,不可能ではありません.

gday さんが書かれている,

ところがAがAのIPアドレスではなくCのIPアドレスを騙ってBにメールを送ろうとするとBは通信の相手がCだと思うので

までは正しいのですが,

結局Aからメールを受け取ることができません。

は,ちょっとだけ言いすぎかな,と思います(必ずしも成り立ちません).

AがCのIPアドレスを騙ってBにメールを送ろうとすると,BはCに返事をします.当然これはAには届きませんが(注:source IP routing という機能を使うとAに届いたりもしますが,とりあえず置いておきます),AはBからの返事を待つことなく適当にタイミングを見計らった後に,Cのふりをして続きのデータを送ることができます.すると,Bは(Aではなく)Cと会話が成立していると思い込んでしまいます.

このとき,AはBがどのような返事をしたかを知ることはできませんが,「Cのふりをしてメイルを送る」ことには成功してしまいます.

これが「Cのふりをしてメイルを送ることに成功してしまう」原理で,TCP spoofing と呼ばれています(より正確には,上記のように「Bが送る情報を全く見ずに」行うものは blind TCP spoofing と呼ばれます).

ただ,実際のTCPの実装では,Aが上記の攻撃を成功させるためには,Bの返事に含まれる「ISN」と呼ばれる数値を予測する必要があります.BがISNを十分ランダムに生成していれば予測が「当たる」確率はかなり小さくなりますが(完全にランダムなら 2^-32 の確率になるので,不可能とは言えないまでもあまり実際的ではない),いくつかのOSでは容易に予測可能なアルゴリズムが使われたりします(WindowsNT4.0がそうでした).

というわけで,上記の攻撃を実施できる程度にTCPの知識がある攻撃者であれば,送信元IPアドレスを偽装することは,特にISNの生成アルゴリズムがしょぼかったり,ルータで source IP routing が無効化されていなかったりする場合には,それほど難しくありません.ただし,十分に対策されているシステムであれば,「不可能ではないまでもあまり現実的ではない」とは言えると思います.

id:filofax

spoofingを防ぐためにサーバーがするべきことをあげてください。

2008/02/08 07:37:12
id:tera-p No.5

tera-p回答回数92ベストアンサー獲得回数212008/02/08 23:48:13

ポイント20pt

spoofingを防ぐためにサーバーがするべきことをあげてください。

前述のように,TCP/IP のレイヤでは完全には防げません(IPsec を使えば別ですが).

ただし,実効的には,

  • ルータで source IP routing を切る(大抵切ってあると思います).
  • ISNの予測が容易なOSを使わない(最近のOSはたいてい大丈夫だと思います).
  • LAN 内のマシンがワームに感染しないようにする(LANの中からは容易に攻撃できてしまいます).

という対策をしておけば,spoofing が成功する確率を著しく下げることができます.

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません