GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

elceef

dnstwist – 誤植、フィッシング、企業スパイを検出するためのドメイン名順列エンジン

投稿日:

誤植、フィッシング、企業スパイを検出するためのドメイン名順列エンジン
                 _           _            _     _
              __| |_ __  ___| |___      _(_)___| |_
             / _` | '_ \/ __| __\ \ /\ / / / __| __|
            | (_| | | | \__ \ |_ \ V  V /| \__ \ |_
             \__,_|_| |_|___/\__| \_/\_/ |_|___/\__|

ユーザーがドメイン名を入力しようとする際にどのような問題が発生するのかを確認してください。 敵があなたを攻撃するのに使用できる類似のドメインを探します。 typosquatters、フィッシング攻撃、詐欺、企業スパイを検出できます。 ターゲットを絞った脅威情報の追加ソースとして役立ちます。

アイデアは非常に簡単です。dnstwistはドメイン名をシードとして取り込み、潜在的なフィッシングドメインのリストを生成し、登録されているかどうかを確認します。 さらに、MXレコードのメールサーバーを使って間違った企業の電子メールを傍受することができるかどうかをテストし、ウェブページのファジーハッシュを生成して、フィッシングサイトであるかどうかを調べることができます。

主な機能

  • 広範囲の効率的なドメインファジーアルゴリズム
  • Unicodeドメイン名(IDN)
  • マルチスレッドジョブの配布
  • クエリA、AAAA、NS、MXレコード
  • ファジィハッシュによるウェブページの類似性を評価して、ライブフィッシングサイトを見つける
  • MXホスト(メールサーバ)が間違った電子メールを傍受するために使用できるかどうかをテストする
  • 辞書ファイルを使用する追加ドメインの亜種
  • GeoIPの位置情報
  • HTTPとSMTPのサービスバナーを取得する
  • WHOISの作成日と変更日の検索
  • CSV形式とJSON形式での出力

要件

Linux

Ubuntu Linuxは主要な開発プラットフォームです。 Ubuntu 15.04以降を実行している場合は、次のような依存関係をインストールすることができます:

$ sudo apt-get install python-dnspython python-geoip python-whois \
python-requests python-ssdeep python-cffi

また、Pythonツールを使用することもできます。 これは、他のインストールとの競合を避けるために仮想環境内で行うことができます。 しかし、まだシステムレベルでインストールされているライブラリが2つ必要です。

$ sudo apt-get install libgeoip-dev libffi-dev
$ BUILD_LIB=1 pip install -r requirements.txt

OSX

Macをお使いの場合は、dnstwistをHomebrew経由で次のようにインストールできます。

$ brew install dnstwist

これはdnstwist.pyとして、上記のすべての要件とともにインストールするdnstwist.pyです。 使い方は同じですが、ファイル拡張子を省略するだけでPATHバイナリが追加されます。

ドッカー

Dockerを使用している場合、Docker Hubから正式なイメージを引き出して実行することができます:

$ docker pull elceef/dnstwist
$ docker run elceef/dnstwist example.com

使い方

まず、ドメイン名だけを引数として入力することをお勧めします。 このツールは、ファジングアルゴリズムを使用してそれを実行し、次のDNSレコード(A、AAAA、NS、およびMX)で潜在的なフィッシングドメインのリストを生成します。

$ dnstwist.py example.com

通常、生成されるドメインのリストには、100以上の行があります。特に、より長いドメイン名の場合は特にそうです。 そのような場合、登録された(解決可能な)ものだけを表示することが実用的かもしれません。

$ dnstwist.py --registered example.com

フィッシングサイトにサービスを提供するという観点から、各ドメイン名を手動でチェックするのは時間がかかることがあります。 これに対処するために、 dnstwistは、いわゆるファジーハッシュ(コンテキストトリガされた区分的ハッシュ)を利用します。 ファジィハッシングは、2つの入力(この場合はHTMLコード)を比較し、基本レベルの類似性を判断する機能を含む概念です。 dnstwistのこのユニークな機能は、 ssdeep引数で有効にすることができます。 生成されたドメインごとに、 dnstwistは応答可能なHTTPサーバからコンテンツを取得し(リダイレクトの可能性に応じて)、そのファジーハッシュを元の(初期)ドメインのものと比較します。 類似度はパーセンテージで表されます。 動的に生成されるWebページでは100%一致する可能性は低いですが、各通知はパーセンテージレベルに関係なく慎重に検査する必要があります。

$ dnstwist.py --ssdeep example.com

フィッシングサイトは、特定のURLから配信される場合もあります。 引数として完全または部分的なURLアドレスを指定すると、 dnstwistはそれを解析し、生成された各ドメイン名に適用します。 この能力は、明らかにファジー・ハッシング機能と組み合わせてのみ有効です。

$ dnstwist.py --ssdeep https://example.com/owa/
$ dnstwist.py --ssdeep example.com/crm/login

非常に多くの場合、攻撃者はフィッシング詐欺ドメインに電子メールハニーポットを設定し、誤った電子メールが届くのを待ちます。 このシナリオでは、攻撃者は、送信されたユーザーに関係なく、そのドメイン宛てのすべての電子メールを送信するようにサーバーを構成します。 もう1つのdnstwist機能では、 どのメールサーバがそのような敵意のために使用できるかを確認するために、各メールサーバ(DNS MXレコードを介して広告されている)で簡単なテストを実行できます。 疑わしいサーバーにはSPYING-MX文字列が表示されます。

可能性のある偽陽性に注意してください。 いくつかのメールサーバーは、間違ってアドレス指定された電子メールを受け取り、それらのメッセージを破棄するふりをします。 この手法は、ディレクトリハーベスト攻撃を防ぐために使用されます。

$ dnstwist.py --mxcheck example.com

ファジングアルゴリズムによって生成されるドメイン名は必ずしも十分ではない。 さらに多くのドメイン名を生成するには、 dnstwistに辞書ファイルを入力してください。 ターゲットとするフィッシングキャンペーンで使用される最も一般的な単語のリストを含む辞書サンプルが含まれています。 あなたのニーズにそれを適応させてください。

$ dnstwist.py --dictionary dictionaries/english.dict example.com

デフォルトの素敵でカラフルなテキスト端末の出力とは別に、CSVとJSONの2種類のよく知られた出力形式を簡単に解析できます。 データ交換に使用します。

$ dnstwist.py --csv example.com > out.csv
$ dnstwist.py --json example.com > out.json

このツールには、GeoIPデータベースが組み込まれています。 –geoip引数を使用して、各IPv4アドレスの地理的な場所(国名)を表示します。

$ dnstwist.py --geoip example.com

もちろん、 dnstwistが提供する機能のすべてを簡単な説明とともに常にあなたの指先で利用できます:

$ dnstwist.py --help

がんばろう!

カバレッジ

ドメインの長さに加えて、アルゴリズムによって生成されるバリアントの数が大幅に増加し、したがって検証に必要なDNSクエリの数が増加します。 たとえば、google.comのすべての亜種を確認するには、300,000件以上のクエリを送信する必要があります。 ドメインfacebook.comの場合、その数は500万を超えます。 どのくらい簡単に推測するのは、多くのリソースを必要とし、最も重要なことはさらに時間がかかることです。 長いドメインの場合、すべてをチェックするだけでは不可能です。 このため、このツールは元のドメインに非常に近いドメインを生成してチェックします.Levenshteinの距離は2を超えません。理論的には、これらは攻撃者の観点から最も魅力的なドメインです。 しかし、攻撃者の想像力は無制限であることに注意してください。

接触

質問、コメント、またはチョコレートを送るには、 marcin@ulikowski.plで電子メールをドロップしてください

次の方法で著者に連絡することもできます:

どんなフィードバックもありがとうございます。 あなたがツールを実行することができ、あなたが結果に満足しているならば、私に知らせてください。 あなたがdnstwistでいくつかのフィッシング詐欺のドメインを見つけて 、それらを共有するのが快適であれば、私にもメッセージを送ってください。 ありがとうございました。







-elceef
-, , , , , , , ,

執筆者: