
この記事では、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
クライアントとサーバーは同じアプリケーションです。 起動時にキーのみが異なります
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ネットワークセキュリティシステムを使用して、企業ネットワーク内のこのような異常を検出できます。