
CVE-2016-5696 の Proof of Concept コード
Rover は、CVE-2016-5696 で示されているように、任意のクライアント送信元ポートを発見するための小さな Python プログラムです。送信元ポートが判明すると、2 つのホストが通信していることを確認するために必要な 4 タプルの情報を完成させることができます。実行時、rover はターゲットサーバーとの接続を確立し、内部クロックをサーバーのチャレンジ ACK 時間に同期させ、その後、ほとんどの Linux ホストのデフォルトのエフェメラルポート範囲を検索し始めます(必要に応じて変更可能)。
詳細は、元の論文をこちらからご覧ください: here
これは kali 1.0 で Ubuntu 14.04 SSH サーバー に対してテスト済みです。他の環境でも動作するはずですが、コードに修正が必要になる場合があります。要件は以下の通りです:
使用方法は以下の通りです:
rover.py [-h] -c 192.168.1.1 -s 192.168.1.10 -p 22 [-v v, vv]
CVE2016-5969 デモンストレーター
任意引数:
-h, --help ヘルプメッセージを表示して終了
-c 192.168.1.1 対象クライアントのIP
-s 192.168.1.10 対象サーバーのIP
-p 22 対象サーバーのポート
-v v, vv 冗長レベル
Rover は、同期の品質に応じて約 1~2 分で完了します。

os.system('iptables -A OUTPUT -p tcp --tcp-flags RST RST -j DROP')。プログラムが動作するには、このルールが IPTABLES に追加されている必要があります。