この記事では、udp2rawユーティリティについて説明します。このユーティリティを使用すると、RAWソケットを使用してUDPプロトコルをブロックするように構成されたファイアウォールをバイパスできます。
機能の概要
→ ツールの公式ウェブサイト
また、ユーティリティのスキームを示しています
これらの図から、このツールはクライアントとサーバーで構成されており、2番目のツールはファイアウォールの内側に配置する必要があることがわかります。 原則として、トラフィックをトンネリングする他のユーティリティには同じものが必要です。たとえば、reGeorgの操作については、defcon.ruに関する他の記事で説明しています。
1つのサーバーが同時に複数のクライアントにサービスを提供でき、1つのクライアントが1つのRAWソケットを介して複数のUDP接続を使用できます。
udp2rawは、root権限を持つLinux(Android、OpenWRT、Raspberry PIを含む)、およびWindowsとMacOSの両方に対して、仮想マシンのイメージとしてかなり具体的な形式で使用できます。 ただし、仮想マシンのイメージは4.4 MBしか使用しないため、これは完全に適用可能です。
基本的な形式では、udp2rawは偽のICMP / TCPヘッダーをネットワークパケットに追加することができます。これにより、UDPではなく、対応するネットワークプロトコルのパケットをファイアウォールに強制させることができます。
FakeTCPモードでは、udp2rawは接続を確立するときに3方向TCPハンドシェイクをシミュレートし、データ転送中に直接SYN / ACKフラグの正しい設定をサポートします。
udp2rawは、通常のUDPトンネルモードで、接続の安定化、リプレイ攻撃からの保護( アンチリプレイウィンドウ )、または単にトラフィックの暗号化(AES-128-CBC)の補助ツールとしても使用できます。 この場合、偽のICMP / TCPヘッダーはパケットに追加されません。
OpenVPNと組み合わせてudp2rawを使用することもできます。これにより、UDPトラフィックだけでなく、udp2rawを使用してトンネリングすることができます。 作業のスキームを以下に示します
この特定のケースでは、開発者のgithubに個別の簡単な指示があります。
実用例
Linuxでudp2rawを開始するには、githubからアーカイブをダウンロードします
wget https://github.com/wangyu-/udp2raw-tunnel/releases/download/20170826.0/udp2raw_binaries.tar.gz
そして開梱
root@kalix64:~/tunneling/udp2raw# tar -xvzf udp2raw_binaries.tar.gz udp2raw_amd64 udp2raw_mips34kc udp2raw_arm udp2raw_amd64_hw_aes udp2raw_arm_asm_aes udp2raw_mips34kc_asm_aes udp2raw_x86 udp2raw_x86_asm_aes
クライアントとサーバーは同じアプリケーションです。 起動時にキーのみが異なります
usage: run as client : ./this_program -c -l local_listen_ip:local_port -r server_ip:server_port [options] run as server : ./this_program -s -l server_listen_ip:server_port -r remote_ip:remote_port [options]
ネットワークに、SNMPサービスがアクティブになっているWindowsマシンと、UDPパケットをブロックするが、WindowsマシンへのTCPアクセスを許可するゲートウェイがあるとします。
攻撃者は、Kali Linuxマシンからゲートウェイにアクセスし、そこでudp2rawサーバーをホストすることができました。 攻撃者がUDPポート161でWindowsマシンに直接接続しようとすると、何も機能しません。
次に、ゲートウェイで実行することにより、udp2rawを使用してファイアウォールからSNMPパケットの性質を隠すことができます。
./udp2raw_amd64 -s -l 0.0.0.0:5555 -r 192.168.2.2:161 -a -k "snmptunnel" --raw-mode faketcp
そしてカーリーカーで
./udp2raw_amd64 -c -l 0.0.0.0:4444 -r 192.168.1.5:5555 -a -k "snmptunnel" --raw-mode faketcp
攻撃者は暗号化されたトンネルを介してリモートマシンのSNMPサービスにアクセスできるようになりました。
この場合、TCPトラフィックのみがWiresharkで表示されます
ICMPヘッダーを使用すると、Wiresharkで次のように表示されます
ゲートウェイ側でトラフィックを確認すると、最も一般的なSNMP UDPパケットがWindowsマシンに送信されていることがわかります。
結論として
さらに、 kcptunを使用してトンネルの動作を高速化し、トラフィックをトンネリングする他のツール( reGeorg 、 dnscat2 、 icmptunnelなど)に慣れることができます。
攻撃者がudp2rawを使用する場合、IDS、IPS、およびDPIネットワークセキュリティシステムを使用して、企業ネットワーク内のこのような異常を検出できます。