Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
gonc — 자동 NAT 트래버설, 보안 P2P, 그리고 셸 접근, 파일 전송, 네트워크 프록시를 위한 고급 기능을 갖춘 Netcat. | Kitploit
도구/GitHubGitHub/threatexpert/gonc
General Purpose UtilitiesEncryption/Decryption ToolsWeb Proxies & InterceptionData ExfiltrationNetwork SecurityPenetration TestingCommand and ControlRed TeamingRemote Access Tool
GitHubthreatexpert/gonc

gonc

자동 NAT 트래버설, 보안 P2P, 그리고 셸 접근, 파일 전송, 네트워크 프록시를 위한 고급 기능을 갖춘 Netcat.

6956021개월 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
저장소 보기웹사이트
공유

gonc 소개

中文 、 English README

gonc는 P2P 통신을 용이하게 하기 위해 설계된 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
    
  • 수신 측에는 두 가지 옵션이 있습니다:

  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 통신

  • 패스프레이즈에 합의하여 두 개의 서로 다른 네트워크 간에 보안 암호화 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을 사용하지 않으며, 하나의 연결만 수락하고, -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를 지원합니다. Socks5 서버에 대한 클라이언트 연결을 지속적으로 수락하려면 -keep-open을 사용하세요. Golang의 고루틴 덕분에 우수한 다중 클라이언트 동시성 성능을 달성합니다:

    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 명령)를 사용하여 TLS를 통한 Socks5를 표준 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 유형을 지능적으로 판단합니다
  • SessionKey에서 파생된 해시를 공유 토픽으로 사용하여 공용 MQTT 서버를 통해 주소 정보를 안전하게 교환합니다
  • 다음 우선순위 순서로 직접 연결을 시도합니다: 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 유형을 세 가지 범주로 분류합니다:

  1. Easy: 단일 내부 포트가 여러 STUN 서버에서 동일한 외부 포트로 매핑됩니다

  2. Hard: 단일 내부 포트가 STUN 서버에서 일관되지만 다른 외부 포트로 매핑됩니다 — 유형 1보다 어렵습니다

  3. Symmetric: 단일 내부 포트가 대상에 따라 다른 외부 포트로 매핑됩니다 — 가장 어려운 유형입니다

이러한 NAT 유형을 처리하기 위해 gonc는 여러 트래버설 전략을 사용합니다:

  • 여러 STUN 서버를 사용하여 NAT 동작을 감지하고 다중 출구 IP 시나리오를 식별합니다

  • 양쪽이 지원하는 경우 IPv6 연결을 선호합니다(예: TCP6-to-TCP6 직접 다이얼)

  • 두 피어 모두 TCP에서 리스닝하면서 동시에 서로에게 다이얼하여 TCP 홀 펀칭 성공률을 높입니다

  • 더 쉬운 NAT를 가진 피어는 초기 UDP 패킷을 지연시켜 더 어려운 쪽의 포트 변경을 유발하지 않도록 합니다

  • 더 어려운 NAT를 가진 피어는 낮은 TTL로 UDP 패킷을 전송하여 원격 방화벽의 간섭을 줄입니다

  • 최후의 수단으로 "생일 역설" 전략을 사용합니다: 더 어려운 쪽은 600개의 임의 소스 포트를 사용하고, 다른 쪽은 600개의 임의 대상 포트를 시도하여 UDP 포트 충돌 성공 가능성을 높입니다

도구 다운로드