Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
rdpscan — CVE-2019-0708 "BlueKeep" 脆弱性のための高速スキャナー。 | Kitploit
ツール/GitHubGitHub/robertdavidgraham/rdpscan
脆弱性スキャナーエクスプロイトネットワークセキュリティ
GitHubrobertdavidgraham/rdpscan

rdpscan

CVE-2019-0708 "BlueKeep" 脆弱性のための高速スキャナー。

リポジトリを見る
921237207年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

Windows download macOS download Linux download Follow Build

rdpscan: CVE-2019-0708 bluekeep脆弱性スキャナー

これは、Microsoft Remote DesktopのCVE-2019-0708脆弱性のための簡易スキャナーです。 現在、パブリックインターネット上には約90万台のマシンがこの脆弱性に対して脆弱であり、 多くの人がWannaCryやnotPetyaのようなワームが間もなく現れると予想しています。したがって、ネットワークをスキャンし、 脆弱なシステムにパッチを適用するか(少なくともNLAを有効にする)してください。

これはコマンドラインツールです。ソースコードをダウンロードして自分でコンパイルするか、 上記のリンクからWindowsまたはmacOS用のプリコンパイル済みバイナリをダウンロードできます。

このツールは、https://github.com/zerosum0x0/CVE-2019-0708 の rdesktop パッチに完全に基づいています。 コードをトリミングして、macOSとWindowsで簡単にコンパイルできるようにし、 さらに複数のターゲットをスキャンする機能を追加しただけです。

ステータス

これはまだ数日前の実験的なものです。ただし、インターネット全体をスキャンしてテストしています(masscanの助けを借りて)。そのため、かなり迅速に多くの問題を解決しています。ヘルプ/コメントについては、Twitter(@erratarob)で連絡してください。

  • 2019-05-38 - 出力結果の説明を改善、およびその意味のドキュメントを追加(下記参照)。
  • 2019-05-27 - WindowsとmacOSのバイナリをリリース(上のバッジをクリック)。
  • 2019-05-26 - Windowsのネットワーク問題を修正
  • 2019-05-25 - LinuxとmacOSで正常動作、Windowsにいくつかのネットワークエラー
  • 2019-05-24 - LinuxとmacOSで動作、Windowsにいくつかのコンパイルバグ
  • 2019-05-23 - 現在XCode内でmacOS上で作業中

主な使用方法

ネットワークをスキャンするには、次のように実行します:

rdpscan 192.168.1.1-192.168.1.255

各アドレスに対して、次の3つの結果のいずれかが出力されます:

  • SAFE - ターゲットがパッチ適用済み、または少なくともCredSSP/NLAが必要であると判断された場合
  • VULNERABLE - ターゲットが脆弱であると確認された場合
  • UNKNOWN - ターゲットが応答しない、または何らかのプロトコル障害がある場合

ターゲットIPアドレスに何も存在しない場合、古いバージョンでは「UNKNOWN - connection timed out」というメッセージが出力されていました。大規模なネットワークをスキャンする場合、関心のないシステムに関する情報が多すぎて過負荷になります。そのため、新しいバージョンでは、コマンドラインに -v(verbose)を追加しない限り、この情報はデフォルトでは出力されません。

大規模なネットワークのスキャン速度を上げるには、ワーカーの数を増やします:

rdpscan --workers 10000 10.0.0.0/8

ただし、私のコンピュータでは、システムの制限により、このパラメータをいくら高く設定しても、実際には約1500ワーカーしか生成されません。

さらに速度を上げるには、これをmasscanと組み合わせて使用します(下記の2番目の説明を参照)。

結果の解釈

主な応答は3つあります:

  • SAFE - ターゲットはおそらくパッチ適用済み、または脆弱ではないことを意味します。
  • VULNERABLE - ターゲットがこのバグに対して脆弱であることを確認したことを意味します。
  • UNKNOWN - どちらとも確認できないことを意味します。通常はターゲットが応答しないか、RDPが実行されていない場合(これが大多数です)。また、ターゲットのリソース不足やネットワーク問題の場合も多く発生します。最後に、プロトコルエラーも多くの原因となります。 3つの主な応答はSAFE、VULNERABLE、UNKNOWNですが、診断を説明する追加のテキストが含まれています。このセクションでは、表示される様々な文字列について説明します。

SAFE

ターゲットが安全であると考える主な理由は3つあります:

  • SAFE - Target appears patched これは、ターゲットがトリガーリクエストに応答しない場合に発生します。これは、パッチが適用されたWindowsシステム、またはWindows 10やUnixのように最初から脆弱ではなかったシステムを意味します。
  • SAFE - CredSSP/NLA required これは、RDP接続を確立する前に、ターゲットが最初にネットワークレベル認証を要求することを意味します。ツールは正当な資格情報なしではこのポイントを通過できないため、ターゲットがパッチ適用済みかどうかを判断できません。ただし、ハッカーもこのポイントを通過して脆弱なシステムを悪用することはできないため、おそらく「安全」です。しかし、エクスプロイトが出現すると、有効なユーザー名/パスワードを持つ内部関係者は、システムが未パッチであればそれを悪用できるようになります。
  • SAFE - not RDP これは、システムがRDPではなく、たまたま同じポートを使用する別のサービスであり、明らかにRDPではない応答を生成する場合を意味します。一般的な例はHTTPとSSHです。ただし、特定可能なプロトコルではなく、サーバーがRSTまたはFINパケットで応答する場合があります。これらはSAFEではなくUNKNOWNとして識別されます。

VULNERABLE

これは、システムがバグに対して脆弱であることを確認したことを意味します。

  • VULNERABLE - got appid システムが脆弱である場合の応答はこれ1つだけです。

UNKNOWN

UNKNOWNには無数のバリエーションがあります

  • UNKNOWN - no connection - timeout これははるかに最も一般的な応答であり、ターゲットIPアドレスが全く応答しない場合に発生します。実際、これは非常に一般的であるため、広いアドレス範囲をスキャンする場合、通常は省略されます。有効にするには -v(verbose)フラグを追加する必要があります。
  • UNKNOWN - no connection - refused (RST) これは2番目に多い応答であり、ターゲットが存在しネットワークトラフィックに応答するが、RDPを実行していないため、TCP RSTパケットで接続を拒否する場合に発生します。
  • UNKNOWN - RDP protocol error - receive timeout これは3番目に多い応答であり、RDP接続の確立に成功した後、サーバーが応答を停止した場合に発生します。これはネットワークエラーや、ターゲットシステムが何らかの理由で過負荷になっている場合に発生します。また、NATの背後にいて接続を過剰にロードしている場合など、この端のネットワークエラーも考えられます。
  • UNKNOWN - no connection - connection closed これは、接続を確立した(TCP SYN-ACK)後、接続がすぐに閉じられる(RSTまたはFINによる)ことを意味します。これが発生する理由は多数あり、区別できません:
    • RDPを実行しているが、何らかの理由で接続を閉じる(リソース不足の可能性)。
    • RDPではなく、送信したRDPリクエストを好まず、適切なエラーメッセージを送信する代わりに(そうすればSAFE - not RDPがトリガーされる)、接続を突然閉じる。
    • IPS、ファイアウォール、NATなどの中間デバイスが、これを敵対的と判断したか、リソース不足のために接続を閉じた。
    • その他特定できていない理由。インターネットをスキャンすると、多くの奇妙なことが起こります。
  • UNKNOWN - no connection - host unreachable (ICMP error) リモートネットワークが、ホストに到達できないか、実行されていないと報告しています。そのホストが生きているべきだと思う場合は、後でもう一度試してください。
  • UNKNOWN - no connection - network unreachable (ICMP error) 遠端に(一時的な)ネットワークエラーがあります。そのネットワークが稼働しているはずだと思う場合は、後でもう一度試してください。
  • UNKNOWN - RDP protocol error RDPプロトコルで何らかの破損が発生したことを意味します。リモート側が誤って実装している(Windowsシステムではない)、一時的なネットワークエラーをうまく処理していない、またはその他の理由によるものです。
  • UNKNOWN - SSL protocol error Windows Vista以降、RDPはSTARTTLSプロトコルを使用してSSL上で動作します。このレイヤーには上記と同様の独自の問題があり、基礎となるネットワークエラーをうまく処理しなかったり、何らかの非互換性があるシステムと通信しようとしたりすることが含まれます。ここで非常に長いエラーメッセージ(SSL3_GET_RECORD:wrong versionなど)が表示される場合、それは相手側にSSLのバグがあるか、使用しているSSLライブラリ自体にバグがあることを意味します。

masscanとの併用

このrdpscanツールはかなり遅く、1秒あたり数百ターゲットしかスキャンできません。代わりにmasscanを使用して高速化できます。masscanツールは約1000倍高速ですが、ターゲットに関する限られた情報しか提供しません。

手順は次のとおりです:

  • 最初にmasscanでアドレス範囲をスキャンし、ポート3389(または使用するポート)に応答するホストを素早く見つけます。
  • 次に、masscanの出力をrdpscanにフィードし、アクティブであることがわかっているターゲットのみをスキャンするようにします。

簡単な実行方法は、コマンドラインでそれらを組み合わせることです:

masscan 10.0.0.0/8 -p3389 | rdpscan --file -

私のやり方は2段階です:

masscan 10.0.0.0/8 -p3389 > ips.txt
rdpscan --file ips.txt --workers 10000 >results.txt

ビルド

難しいのはOpenSSLライブラリをインストールし、システム上の他のバージョンと競合しないようにすることです。テストしたいくつかのLinuxバージョンの例を以下に示しますが、パッケージ名はディストリビューションによって異なります。また、OpenSSL互換API(BoringSSLやLibreSSLなど)にも多くのオプションがあります。

$ sudo apt install libssl-dev
$ sudo yum install openssl-devel

この問題を解決したら、次のようにすべての.cファイルを一緒にコンパイルするだけです:

$ gcc *.c -lssl -lcrypto -o rdpscan

ディレクトリにこれを行うMakefileを配置してあるので、おそらく次のようにするだけで済みます:

$ make

コードはCで書かれているため、Cコンパイラがインストールされている必要があります。例えば、次のようにします:

$ sudo apt install build-essential

よくあるビルドエラー

このセクションでは、より明白なビルドエラーについて説明します。

ssl.h:24:25: fatal error: openssl/rc4.h: No such file or directory

これは、OpenSSLのヘッダーがインストールされていないか、パスにないことを意味します。OpenSSLのバイナリがインストールされていても、開発用のものがインストールされているとは限らないことに注意してください。ヘッダーとライブラリの両方が必要です。

Debianでこれらをインストールするには、次のようにします:

$ sudo apt install libssl-dev

パスの問題を修正するには、コンパイルフラグ-I/usr/local/includeなどを追加します。

リンカ問題の例:

Undefined symbols for architecture x86_64:
"_OPENSSL_init_ssl", referenced from:
    _tcp_tls_connect in tcp-fac73c.o
"_RSA_get0_key", referenced from:
    _rdssl_rkey_get_exp_mod in ssl-d5fdf5.o
"_SSL_CTX_set_options", referenced from:
    _tcp_tls_connect in tcp-fac73c.o
"_X509_get_X509_PUBKEY", referenced from:
    _rdssl_cert_to_rkey in ssl-d5fdf5.o

これは、複数のバージョンのOpenSSLが存在するためmacOSで発生します。パスをハードコードすることで修正します:

$ gcc *.c -lssl -lcrypto -I/usr/local/include -L/usr/local/lib -o rdpscan

他の人のコメントによると、Homebrewでインストールした場合、次のコマンドラインがmacOSで動作する可能性があります。ただし、競合する他のOpenSSLコンポーネントをインストールしているため、上記のリンクエラーが依然として発生します。

gcc $(brew --prefix)/opt/openssl/lib/libssl.a $(brew --prefix)/opt/openssl/lib/libcrypto.a -o rdpscan *.c

実行

上記のセクションでは、プログラムを実行するためのクイックスタートのヒントを提供しました。このセクションでは、より詳細なヘルプを提供します。

単一のターゲットをスキャンするには、ターゲットのアドレスを渡すだけです:

./rdpscan 192.168.10.101

IPv6アドレスとDNS名を渡すことができます。複数のターゲットを渡すこともできます。例:

./rdpscan 192.168.10.101 exchange.example.com 2001:0db8:85a3::1

また、begin-end IPv4アドレスまたはIPv4 CIDR指定を使用して、アドレス範囲をスキャンすることもできます。IPv6範囲は大きすぎるためサポートされていません。

./rdpscan 10.0.0.1-10.0.0.25 192.168.0.0/16

デフォルトでは、一度に100ターゲットのみをスキャンします。この数は--workersパラメータで増やすことができます。ただし、このパラメータをいくら高く設定しても、実際にはシステムに応じて最大約500~1500ワーカーが同時に実行されます。

./rdpscan --workers 1000 10.0.0.0/24
ツールをダウンロード