
CVE-2019-0708 - BlueKeep (RDP)
RDP 接続シーケンス: https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-rdpbcgr/023f1e69-cfe8-4ee6-9ee0-7e759fb4e4ee
RDP サービスの脆弱性の分析: https://www.zerodayinitiative.com/blog/2019/5/27/cve-2019-0708-a-comprehensive-analysis-of-a-remote-desktop-services-vulnerability
上記の2つのリンクを確認して、RDP 接続シーケンスの仕組みと、Microsoft Windows RDP カーネルドライバー - termdd.sys (MS_T120) に存在する脆弱性を理解してください。
Windows カーネルデバッグ: https://medium.com/@straightblast426/a-debugging-primer-with-cve-2019-0708-ccfa266682f6
私はカーネルエクスプロイトとデバッグに関しては n00b です :)
1日目:
まず、未認証の CVE-2019-0708 "BlueKeep" スキャナー PoC スクリプト - cve_2019_0708_bluekeep.rb を調べて、PoC スクリプトがどのように実装されているかを理解しようとしました。そこで、Metasploit データストアで verbose モードを有効にして、出力の分析を開始しました。しかし、それを理解するのは非常に困難でした。Python で同じ PoC を実装しようと考えました。
2日目:
Python で未認証の CVE-2019-0708 "BlueKeep" スキャナーを作成しました。これにより、RDP 接続シーケンスとパケットの理解に大いに役立ちました。その後、クラッシュを特定するために 2 日間 RDP パケットをいじってみましたが、失敗しました :(

注: cve_2019_0708_bluekeep.py は未認証の CVE-2019-0708 "BlueKeep" スキャナー PoC であり、実際のエクスプロイトではありません。
4日目:
自分がどこで間違えたのかに気づきました :) 既存の PoC スクリプトを使用する代わりに、RDP パケットの送信を容易にするために、TLS を使用して PoC をゼロから書き始めました。
注: MSDN ドキュメントを適切に読んでください。すべてが非常に明確です。
5日目:
ついにクラッシュを発生させることができました。デモビデオを確認してください :)
メールアドレス: [email protected] または [email protected]
Youtube: Fools Of Security
ウェブサイト: Fools Of Security Community