人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

●質問者: filofax
●カテゴリ:コンピュータ インターネット
✍キーワード:IPアドレス ウインドウズ サーバー ソフト メール
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● gday
●20ポイント

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

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

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

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

◎質問者からの返答

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


2 ● gday
●20ポイント

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

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

という意味ですね。

違います。

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

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

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

◎質問者からの返答

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


3 ● KUROX
●20ポイント

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

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

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


4 ● tera-p
●20ポイント

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

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 が無効化されていなかったりする場合には,それほど難しくありません.ただし,十分に対策されているシステムであれば,「不可能ではないまでもあまり現実的ではない」とは言えると思います.

◎質問者からの返答

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


5 ● tera-p
●20ポイント

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

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

ただし,実効的には,

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ