udp2rawを使用してTCP / ICMPのUDPトラフィックをマスクする





この記事では、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を使用してトンネルの動作を高速化し、トラフィックをトンネリングする他のツール( reGeorgdnscat2icmptunnelなど)に慣れることができます。



攻撃者がudp2rawを使用する場合、IDS、IPS、およびDPIネットワークセキュリティシステムを使用して、企業ネットワーク内のこのような異常を検出できます。



All Articles