Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
gonc — 自動NATトラバーサル、安全なP2P、およびシェルアクセス、ファイル転送、ネットワークプロキシのための高度な機能を備えたNetcat。 | Kitploit
ツール/GitHubGitHub/threatexpert/gonc
汎用ユーティリティ暗号化/復号化ツールウェブプロキシと傍受データ流出ネットワークセキュリティペネトレーションテストコマンド&コントロールレッドチーミングリモートアクセスツール
GitHubthreatexpert/gonc

gonc

自動NATトラバーサル、安全なP2P、およびシェルアクセス、ファイル転送、ネットワークプロキシのための高度な機能を備えたNetcat。

6956021ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
リポジトリを見るウェブサイト
共有

gonc の紹介

中文 、 English の README

gonc は、ピアツーピア通信を容易にするために設計された Golang ベースの netcat ツールです。主な機能は次のとおりです:

  • 🔁 自動 NAT トラバーサル: 設定不要。両側はパスフレーズを合意するだけで済みます。-p2p パラメータを使用することで、ピアは互いのネットワークアドレスを自動的に発見し、NAT トラバーサルを通じてポイントツーポイント接続を確立できます。アドレス交換には公開 STUN および MQTT サービスを活用します。

  • 🔒 相互認証を伴うエンドツーエンド暗号化: TCP には TLS、UDP には DTLS による暗号化伝送をサポートし、パスフレーズベースの相互身元認証を行います。

  • 🧩 柔軟なサービス設定: -e パラメータを使用すると、各接続にサービスを提供するアプリケーションを柔軟に設定できます。たとえば、-e /bin/sh はリモート cmd シェルを提供できます。また、組み込みの仮想コマンドを使用して、便利な SOCKS5 サービス、HTTP ファイルサービス、トラフィック転送を実現できます。


最新バージョンのダウンロード

docs


関連プロジェクト

  • gonc-gui — gonc をベースに構築されたデスクトップ(Windows)および Android アプリ:便利なクロスデバイス、クロスネットワークの P2P 直接接続と安全なファイル転送。パスフレーズを共有する(または QR コードをスキャンする)だけで、コマンドラインは不要です。

使用例

基本的な使い方

  • nc のように使用します:

    root@kitploit:~
    gonc www.baidu.com 80
    gonc -tls www.baidu.com 443
    

    IP とポートに基づいてポイントツーポイント接続のみを確立できます。

  • さらに、共有パスフレーズに基づいて、自動 NAT トラバーサルを伴うポイントツーポイント接続を確立することもできます。

    次の図は、家庭用ブロードバンドネットワーク(ハード NAT)とモバイルネットワーク上のピア(対称 NAT)の間で gonc が P2P 接続を確立するプロセスを示しています。両側に IPv6 があるため、NAT トラバーサルを実演するために両端で -4 オプションを使用して IPv4 を強制しています。

    hole-punching

P2P トンネルと HTTP ファイルサーバー

  • 両側が同じパスフレーズを合意します。 送信側では、共有するファイルまたはディレクトリを公開するために HTTP ファイルサーバーを起動します。-httpserver オプションは複数のパスを受け付け、それぞれが単一のファイルまたはディレクトリのいずれかになります:

    root@kitploit:~
    gonc -p2p <passphrase> -httpserver c:/RootDir1 c:/RootDir2
    
  • 受信側には 2 つの選択肢があります:

  1. ディレクトリ全体を自動的にダウンロードする

    次のコマンドを実行すると、すべてのファイルがローカルマシンに再帰的にダウンロードされます。プロセスが中断された場合、コマンドを再実行すると中断したところから自動的に再開されます:

    root@kitploit:~
    gonc -p2p <passphrase> -download c:/SavePath
    
  2. ブラウザ経由で閲覧し、選択的にダウンロードする

    このオプションは自動的にダウンロードを開始しません。代わりに、手動でブラウザを開き、http://127.0.0.1:9999 にアクセスしてピアのファイルリストを表示し、必要に応じてファイルをダウンロードする必要があります:

    root@kitploit:~
    gonc -p2p <passphrase> -httplocal-port 9999
    

    特定のサブディレクトリをダウンロードする必要がある場合、ブラウザは不便になりますが、次のように行うことができます:

    root@kitploit:~
    gonc -http-download c:/SavePath http://127.0.0.1:9999/subdir
    

安全な暗号化 P2P 通信

  • パスフレーズを合意することにより、2 つの異なるネットワーク間で安全な暗号化 P2P 通信を確立します(gonc -psk . を使用して passphrase を置き換える高エントロピーのパスフレーズを生成します)。このパスフレーズは相互発見と証明書導出に使用され、TLS 1.3 による通信の安全性を確保します。

    root@kitploit:~
    gonc -p2p passphrase
    

    もう一方では、同じパラメータを使用します(プログラムは自動的に TCP または UDP 通信を試み(TCP 優先)、役割(TLS クライアント/サーバー)をネゴシエートし、TLS プロトコルを完了します):

    root@kitploit:~
    gonc -p2p passphrase
    

    もう一方の端が実行時間を遅らせた場合、約 30 秒以内に情報をやり取りする相手が見つからないと終了することに注意してください。そのため、MQTT メッセージ購読に基づく待機メカニズムもサポートしており、-mqtt-wait と -mqtt-hello を使用して両者の P2P 開始タイミングを同期させます。たとえば、次は -mqtt-wait を使用して継続的に待機します,

    root@kitploit:~
    gonc -p2p passphrase -mqtt-wait
    

    もう一方では、

    root@kitploit:~
    gonc -p2p passphrase -mqtt-hello
    
  • NAT タイプを確認する

    root@kitploit:~
    gonc -nat-checker
    

    これは IPv6 および IPv4 の TCP と UDP の NAT アドレスを確認し、NAT 後のポート変化を分析します。TCP6 または UDP6 アドレスがリストされていない場合、IPv6 がないことを意味します。各プロトコルアドレスは "(easy)" で終わり、ホールパンチングの成功率が最も高いことを示します;"(hard)" はより高い成功率を示します;"(symm)" は最も困難です。Symm では、P2P が機能するためにもう一方の端が "easy" または "hard" である必要があります。

リバースシェル(UNIX 系システム向けの疑似端末サポート)

  • リスナー(-keep-open を使用せず、1 つの接続のみを受け入れ、-psk による認証なし):
    root@kitploit:~
    gonc -tls -exec ":sh /bin/bash" -l 1234
    
  • 接続してシェルを取得する(TAB、Ctrl+C などをサポート):
    root@kitploit:~
    gonc -tls -pty x.x.x.x 1234
    
  • P2P をリバースシェルに使用する(passphrase は認証に使用され、TLS 1.3 による安全な通信を確保します):
    root@kitploit:~
    gonc -exec ":sh /bin/bash" -p2p passphrase
    
    もう一方では:
    root@kitploit:~
    gonc -pty -p2p passphrase
    

伝送速度テスト

  • データを送信し、伝送速度を測定する(組み込みの /dev/zero と /dev/urandom):
    root@kitploit:~
    gonc.exe -send /dev/zero -P x.x.x.x 1234
    
    出力例:
    root@kitploit:~
    IN: 76.8 MiB (80543744 bytes), 3.3 MiB/s | OUT: 0.0 B (0 bytes), 0.0 B/s | 00:00:23
    
    受信側では:
    root@kitploit:~
    gonc -P -l 1234 > NUL
    

P2P トンネルと SOCKS5 / HTTP プロキシ

  • トンネルが確立されるのを待つ:

    root@kitploit:~
    gonc -p2p passphrase -linkagent
    
  • もう一方では、リモートネットワークにアクセスするためにポート 3080 でローカル SOCKS5 / HTTP プロキシサービスを起動します:

    root@kitploit:~
    # The link option controls how the local and remote proxy endpoints are created.
    # Use none to indicate that no listening port is opened on that side:
    gonc -p2p passphrase -link "3080;none"
    

    次に、たとえばリモートネットワーク内の 10.0.0.1:3389 に接続したい場合、ローカルのリモートデスクトップクライアントに次のアドレスを入力するだけです:

    root@kitploit:~
    10.0.0.1-3389.gonc.cc:3080
    

    このドメインは 127.b.c.d の形式の IP に解決されます。その結果、リモートデスクトップクライアントはポート 3080 のローカル SOCKS5 プロキシに接続し、gonc は 127.b.c.d アドレスを逆解析してドメイン名から情報 10.0.0.1-3389 を抽出します。

  • link 設定フォーマット

    root@kitploit:~
    # Based on the established tunnel, both local and remote sides listen on port 1080.
    # The proxy supports both HTTP and SOCKS5 protocols, with transparent proxy capability enabled.
    gonc -p2p <passphrase> -link "1080;1080"
    
    # Below is the configuration method for the URL format. The parameter value of -link must be enclosed in quotes; otherwise, parsing problems may occur.
    # The left side x://0.0.0.0:1080?tproxy=1 is equivalent to simply writing 1080.
    # The right side enables port 1080 on the remote host, without transparent proxy support.
    gonc -p2p <passphrase> -link "x://0.0.0.0:1080?tproxy=1;x://127.0.0.1:1080"
    
    # The left side f://127.0.0.1:1080?to=1.2.3.4:80
    # means listening locally on port 1080 and forwarding traffic to 1.2.3.4:80 on the remote side.
    # The right side 'none' indicates that no port is opened remotely.
    gonc -p2p <passphrase> -link "f://127.0.0.1:1080?to=1.2.3.4:80;none"
    
    # The right side f://0.0.0.0:80?to=127.0.0.1:80
    # means listening on port 80 on the remote side and forwarding traffic back to 127.0.0.1:80 locally.
    gonc -p2p <passphrase> -link "none;f://0.0.0.0:80?to=127.0.0.1:80"
    
    # The left side x+tls means the proxy protocol with TLS encryption and allows for certificate configuration. The right side specifies the outbound IP address via `outbound_bind` (suitable for multi-IP environments).
    gonc -p2p <口令> -link "x+tls://user:[email protected]:1080?cert=ca.pem&key=key.pem;none?outbound_bind=10.0.0.5"
    

柔軟なサービス設定

  • -exec を使用して、各接続にサービスを提供するアプリケーションを柔軟に設定します。たとえば、シェルコマンドに /bin/bash を指定する代わりに、ポート転送にも使用できます。ただし、次の例では接続ごとに新しい gonc プロセスを起動します:
    root@kitploit:~
    gonc -keep-open -exec "gonc -tls www.baidu.com 443" -l 8000
    
  • 複数の子プロセスの生成を避けるには、組み込みの nc モジュールを使用します:
    root@kitploit:~
    gonc -keep-open -exec ":nc -tls www.baidu.com 443" -l 8000
    

Socks5 プロキシサービス

  • クライアントモードを設定する:

    root@kitploit:~
    gonc -x s.s.s.s:port x.x.x.x 1234
    
  • 組み込み Socks5 サーバー:-e :s5s を使用して標準の Socks5 サービスを提供します。Socks5 のユーザー名とパスワードを設定する -auth をサポートします。-keep-open を使用して Socks5 サーバーへのクライアント接続を継続的に受け入れます。Golang の goroutine のおかげで、優れたマルチクライアント同時実行性能を実現します:

    root@kitploit:~
    gonc -e ":s5s -auth user:passwd" -keep-open -l 1080
    
  • TLS 上の安全な Socks5:標準の Socks5 は暗号化されていないため、-e :s5s を -tls および -psk と共に使用して、TLS 通信上の安全な Socks5 をカスタマイズします。-P を使用して接続伝送情報を監視し、-acl を使用して着信接続とプロキシ宛先のアクセス制御を実装します。acl.txt ファイル形式については、acl-example.txt を参照してください。

    gonc.exe -tls -psk passphrase -e :s5s -keep-open -acl acl.txt -P -l 1080

    もう一方では、:s5c(組み込み s5c コマンド)を使用して Socks5 over TLS を標準の Socks5 に変換し、127.0.0.1:3080 でローカルクライアントアクセスを提供します:

    gonc.exe -e ":s5c -tls -psk passphrase x.x.x.x 1080" -keep-open -l -local 127.0.0.1:3080

他のアプリケーション用のトンネルの確立

  • WireGuard の NAT トラバーサルを支援して VPN を形成する

    パッシブ(リスニング)側の PC-S で、次のコマンドを実行します(WireGuard ピアの公開鍵をパスフレーズとして使用し、WireGuard がポート 51820 でリッスンしていると仮定します):

    gonc -p2p <PublicKey-of-PS-S> -mqtt-wait -u -k -e ":nc -u 127.0.0.1 51820"

    アクティブ(開始)側の PC-C で、WireGuard ピア(PS-S)の Endpoint を 127.0.0.1:51821 に設定し、自身の WireGuard インターフェイスは 51820 でリッスンします。次に、次のコマンドを実行します。-k フラグにより、ネットワークが切断された場合に gonc が自動的に再接続できるようになります:

    gonc -p2p <PublicKey-of-PS-S> -mqtt-hello -u -k -e ":nc -u -local 127.0.0.1:51821 127.0.0.1 51820"

P2P NAT トラバーサル機能

gonc はどのように P2P 接続を確立しますか?

  • 複数の公開 STUN サーバーを同時に使用してローカルの TCP/UDP NAT マッピングを検出し、NAT タイプをインテリジェントに判定します
  • 公開 MQTT サーバーを介してアドレス情報を安全に交換し、SessionKey から導出されたハッシュを共有トピックとして使用します
  • 次の優先順序で直接接続を試みます:IPv6 TCP > IPv4 TCP > IPv4 UDP、真のピアツーピア通信を目指します
  • リレーサーバーは使用されず、フォールバックメカニズムも提供されません — 接続が失敗するか、真の P2P 成功のいずれかです

P2P が実行不可能な場合にリレーサーバーをデプロイする方法

  • パブリック IP 上で動作する UDP ASSOCIATE サポート付きの SOCKS5 サーバーがあれば、リレーとして十分です。また、独自の VPS 上で gonc の組み込み SOCKS5 プロキシを実行してリレーサーバーとして機能させることもできます。

    次のコマンドは、UDP 転送のみをサポートする SOCKS5 プロキシを起動します。-psk および -tls オプションは暗号化と PSK ベースの認証を有効にします。注意:ファイアウォールでポート 1080 を開くだけにしないでください — UDP 転送はセッションごとにランダムなポートを使用します。

    gonc -e ":s5s -u -c=0" -psk <password> -tls -k -l 1080

  • P2P が失敗した場合、gonc の片側のみが -x オプションを使用して P2P プロセスを再試行し、SOCKS5 リレー経由でルーティングする必要があります:

    gonc -p2p <passphrase> -x "-psk <password> -tls <socks5server-ip>:1080"

    あるいは、UDP 転送をサポートする標準の SOCKS5 プロキシサーバーを使用することもできます:

    gonc -p2p <passphrase> -x "<socks5server-ip>:1080" -auth "user:password"

たとえば、両方のピアが対称 NAT の背後にあり P2P が失敗した場合、片側だけが SOCKS5 UDP リレーを使用することで、その NAT 動作を効果的に「easy」に変え、接続の確立がはるかに容易になります。データはエンドツーエンドで暗号化されたままです。

使用される公開サーバー(STUN および MQTT):

root@kitploit:~
"tcp://turn.cloudflare.com:80",
"udp://turn.cloudflare.com:53",
"udp://stun.l.google.com:19302",
"stun.gonc.cc:3478",
"global.turn.twilio.com:3478",
"stun.nextcloud.com:443",

"tcp://broker.hivemq.com:1883",
"tcp://broker.emqx.io:1883",
"tcp://test.mosquitto.org:1883",
"tcp://mqtt.gonc.cc:1883"

gonc の NAT トラバーサルはどの程度効果的ですか?

両端が対称 NAT のシナリオを除き、gonc は非常に高い成功率を達成します

gonc は NAT タイプを 3 つのカテゴリに分類します:

  1. Easy:単一の内部ポートが複数の STUN サーバー間で同じ外部ポートにマッピングされる

  2. Hard:単一の内部ポートが STUN サーバー間で一貫しているが異なる外部ポートにマッピングされる — タイプ 1 より困難

  3. Symmetric:単一の内部ポートが宛先に応じて異なる外部ポートにマッピングされる — 最も困難なタイプ

これらの NAT タイプに対処するため、gonc はいくつかのトラバーサル戦略を採用しています:

  • 複数の STUN サーバーを使用して NAT 動作を検出し、マルチ出口 IP シナリオを特定します

  • 両側がサポートしている場合は IPv6 接続を優先します(例:TCP6 から TCP6 への直接ダイヤル)

  • 両方のピアが TCP でリッスンしながら同時に互いにダイヤルし、TCP ホールパンチングの成功率を高めます

  • より簡単な NAT を持つピアは、より困難な側でポート変更を引き起こさないように、最初の UDP パケットを遅延させます

  • より困難な NAT を持つピアは、リモートファイアウォールからの干渉を減らすために低い TTL で UDP パケットを送信します

  • 最後の手段として、「誕生日のパラドックス」戦略を使用します:より困難な側は 600 のランダムな送信元ポートを使用し、もう一方の側は 600 のランダムな宛先ポートを試み、UDP ポート衝突の成功の可能性を高めます

ツールをダウンロード