工事中・・・・・

前のページヘ  次のページへ       

(9)なりすましメール対策の確認方法(nslookupコマンド)

自分たちの会社のメールアドレスを詐称したなりすましメールが取引先などに送られるのは回避したい。その場合の対策として、送信先(受取側)のメールサーバに自分たちの会社の正規のメールサーバから送られたものかそうでないかを判定させる仕組みをつかう。

自ドメインのコンテンツサーバ(権威DNSサーバ)のSPFレコードに正規のメールサーバのIPアドレスがわかるように記述するだけで、受信側サーバに送信者ドメイン認証の機能があれば、なりすましメールに一定の判定を行うことができる。

宛先のメールサーバはメールを受信するときに、送信元のサーバのIPアドレスを確認することが可能である。また、送信者のメールアドレスやドメインはエンベロープFROMやヘッダーFROMに記載されているので、それらも知ることができる。

送信者ドメイン(メールアドレスの@以下)がわかれば、当該ドメインを管轄するコンテンツサーバ(権威DNSサーバ)にアクセスし、そのSPFレコード(TXTレコード)にある送信者の正規のメールサーバのIPアドレス(複数ある場合もある)を知ることができる。

実際にメールを送信してきたサーバのアクセス元IPアドレスと送信者ドメイン名からDNSで検索した正規のメールサーバのIPアドレスを比較することで、受信側サーバはメールのヘッダーにReceived-SPFフィールドを使い、比較したデータと判定結果、たとえばpass(問題なし)、fail(問題あり)、softfail(ちょっとおかしい)とかhardfail(かなりおかしい)を追記してくれる。この部分をメールの受信者が確認することで、なりすましメールか判定できる。これを送信者ドメイン認証という。

メールのヘッダを確認した時に、Received-SPFの文字がない場合は、受信側のサーバに送信者ドメイン認証の機能がないと考えられます。また判定結果がnoneの場合は送信者のドメインを管轄する権威DNSサーバに、正当なメールの送信元IPアドレスの記述がないということです。つまり、送信者のほうが自己(自社)ドメインになりすましたメールの対策をしていないことになります。

実際よくあるカード会社をなりすましたメールの一例ですが、ヘッダーのReceived-SPFの部分を見ると、判定はsoftfailであった。client-ip=116.**.**.***(送信元IPアドレス)があり、envelope-from=<pbi@r******-card.co.jp>となっている。実際に、nslookupr******-card.co.jptxtレコード(SPFレコードが記載されている)を調べてみよう。

nslookup -type=txt r******-card.co.jp

以上のコマンド実行結果の中の次の部分に注目してください。

text = "v=spf1 include:spf-***.mpme.jp include:spf01.r******-card.co.jp include:spf02.r******-card.co.jp include:spf03.r******-card.co.jp ~all"

さらにincludeで指定されているドメイン名を4つについて、以下のようにコマンドを打ちます。このようなサブドメインは、IPアドレスを多数記述する場合やDKIM認証の公開鍵を記述する場合にも使われます。

nslookup -type=txt spf-***.mpme.jp

nslookup -type=txt spf01.r******-card.co.jp

nslookup -type=txt spf02.r******-card.co.jp

nslookup -type=txt spf03.r******-card.co.jp 

結果は以下のようになります。

spf-***.mpme.jp text = "v=spf1 " "ip4:106.***.**.0/24 ip4:106.***.**.192/26 ip4:125.**.**.64/26 ip4:106.**.**.0/23 ip4:106.***.**.0/23 ip4:106..**.**/22 ip4:106.**.***.0/23 ip4:18.***.**.0/24 ip4:106.***.**.0/26 ip4:165.***.***.1/32 ip4:52.***.***.***/32 ip4:3.***.**.0/32 " "~all"

spf01.r******-card.co.jp text = "v=spf1 ip4:202.**.**.0/20 ip4:203.***.**.0/21 ip4:133.***.0.0/16 ip4:202.*.***.**/27 -all"

spf02.r******-card.co.jp text = "v=spf1 ip4:61.**.***.**/28 ip4:***.***.***.***/28 ip4:210.***.***.96/27 ip4:211.*.***.***/27 ip4:210.***.***.0/26 ip4:210.***.**.64/26 ip4:203.***.***.0/25 ip4:180.***.163.128/25 ip4:210.***.**.224/27 ip4:210.***.***.64/27 ip4:133.***.**.0/28 -all"

spf03.r******-card.co.jp text = "v=spf1 ip4:218.**.**.142 ip4:218.**.**.*** ip4:218.**.**.144 ip4:218.**.**.145 ip4:218.**.**.146 ip4:124.***.***.8 ip4:124.***.***.9 -all"

以上のIPv4アドレスが r******-card.co.jpの権威DNSサーバに記載のある許容された送信元IPアドレスであり、実際のメールの送信元IPアドレス(116.**.**.***)は該当しないことがわかります。

上記内容で*で内容をマスクしているのは、情報を見せるのが目的ではないからです。

以上のような検証をメールを受信したサーバが行っています。

上記内容は、実際にあるカード会社になりすまして送られてきたメールのヘッダー情報元に、検証方法を説明しているに過ぎません。

ご自身で、検証される場合は、念のためPCをネットから切断した状態(オフライン)でメールのヘッダーを表示させ(本文のリンクや添付ファイルは開かないように)、その内容をテキストエディタなどにコピペし、メールを迷惑メールとして処理した後、オンラインに戻して検証してください。

WEBメールの場合はオンラインのままソース表示にすれば見れるので、おすすめです。

送信者の正当性判定やメールの改ざん検知のシステムに、DKIMという方式もありますが(ここでは詳しくは解説しません)、その検証に必要となる送信側サーバの署名を復号する公開鍵もnslookupコマンドで確認します。署名が含まれるのが、メールヘッダのDKIM-Signatureです。

次のサンプルはyahooのフリーメールからGMailのアドレスにテストメールを送ってもらった時のものです。*で内容をマスクしているのは、情報を見せるのが目的ではないからです。 

DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1627742907; s=yj2011****; d=yahoo.co.jp; h=Date:From:Reply-To:To:Message-ID:Subject:MIME-Version:Content-Type:References; bh=+xq*W/3*****6VT****eK/2*****ZJW******f87XtU=; b=****CRMC/********lE3v****gqe****Ox2vK****uRnhINbJ****QyDNi7**** I2Sgfsd22****vNIzyZ****sNU****48DDN****Z1UF****at*Rfc****qAHw+vlpot****dOYG****TDge0P****nOAEaB0Op****=

署名の検証に必要な公開鍵を取得する。上記の中の s=yj2011****,d=yahoo.co.jpという値から、コマンドを組み立てる。

nslookup -type=txt yj2011****._domainkey.yahoo.co.jp

コマンドの結果は、以下のようになります。p=の後がDNSサーバに登録された公開鍵で、秘密鍵を持つyahooの送信側のメールサーバによって付加されたDKIM-Signatureb=の後の部分を受信側サーバが復号するのに利用されます。



yj2011****._domainkey.yahoo.co.jp text = "v=DKIM1; g=*; k=rsa; p=****MA0GCSqGSIb3D****QUAA4GNADCBiQKBgQC/YNUcGXl****eYVQ1O/I0/****cG3FsjYCp4j1UW8TxOxQGpdLPr3MYL2gngH82LA/****cl2rU3msd****NemYxrtNpNfs+IvqYsLJv3vItz****/0Yt0caVFF9ab4W51c8PJv8aclR****Ai3trHG****rA4/8iUvSoIhGP6wID****"

nslookupDNSサーバから必要な情報を聞き出すために使用されるコマンドです。-type=の後には、ns(権威DNSサーバを調べるとき)、mx(メールサーバを調べるとき)などの値が入ります。

またnslookupコマンドの最後に問い合わせたいドメインの権威DNSサーバのドメイン名、ns01.*******.comのようなものを入れたり(権限のない回答は表示されません)、Googleのキャッシュサーバ8.8.8.8(権限のない回答が表示されます)などをいれて、問い合わせるサーバを指定することも可能です。

()

nslookup -type=ns ***.co.jp

nslookup -type=mx ***.co.jp ns01.***.co.jp

nslookup ***.co.jp 8.8.8.8



 前のページヘ 次のページへ