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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
PortForwarder — C 기반 TCP 포트 포워딩 유틸리티 | Kitploit
도구/GitHubGitHub/lsecqt/portforwarder
General Purpose UtilitiesNetwork MappingIDS/IPS EvasionLateral MovementPenetration TestingUtilities & FrameworksRed Teaming
GitHublsecqt/portforwarder

PortForwarder

C 기반 TCP 포트 포워딩 유틸리티

저장소 보기
41112개월 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Windows TCP 포트 포워더

Windows용 고성능 TCP 포트 포워더로, IP 화이트리스트 및 상세 로깅 기능을 선택적으로 제공합니다.

특징

  • ✅ 로컬 포트에서 모든 원격 호스트:포트로 TCP 트래픽 전달
  • ✅ 보안 강화를 위한 선택적 IP 화이트리스트
  • ✅ 포트 445 / SMB 인계 모드 (SMB 비활성화 후 포트 445를 릴레이용으로 확보)
  • ✅ 최대 100개의 동시 연결 지원
  • ✅ 실시간 통계와 함께 양방향 데이터 전달
  • ✅ 거부된 연결 디버깅을 위한 상세 모드
  • ✅ 끊긴 연결 감지를 위한 공격적인 TCP keepalive 설정
  • ✅ 저지연 전달 (Nagle 알고리즘 비활성화)
  • ✅ 정상 종료 처리 (Ctrl+C)
  • ✅ 스레드 안전 연결 관리

요구 사항

  • Windows 운영 체제
  • Visual Studio (컴파일용) 또는 MinGW-w64
  • Winsock2 라이브러리 (Windows SDK에 포함)

컴파일

Visual Studio 개발자 명령 프롬프트 사용:

root@kitploit:~
cl PortForwarder.c /Fe:PortForwarder.exe ws2_32.lib

MinGW-w64 사용:

root@kitploit:~
gcc PortForwarder.c -o PortForwarder.exe -lws2_32

사용법

root@kitploit:~
PortForwarder.exe <local_port> <remote_host> <remote_port> [allowed_ip] [-v]

매개변수

  • <local_port> - 수신 대기할 로컬 포트 (1-65535)
  • <remote_host> - 트래픽을 전달할 원격 호스트 이름 또는 IP 주소
  • <remote_port> - 트래픽을 전달할 원격 포트 (1-65535)
  • [allowed_ip] - 선택 사항 - 이 IP 주소의 연결만 수락
  • [-v] - 선택 사항 - 상세 모드 활성화 (거부된 연결 표시)

예제

기본 포트 포워딩 (IP 필터링 없음)

로컬 포트 8080을 원격 서버 192.168.1.100의 포트 80으로 전달:

root@kitploit:~
PortForwarder.exe 8080 192.168.1.100 80

IP 화이트리스트를 사용한 포트 포워딩

192.168.1.50의 연결만 수락:

root@kitploit:~
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50

IP 화이트리스트 및 상세 로깅을 사용한 포트 포워딩

거부된 연결 시도 표시:

root@kitploit:~
PortForwarder.exe 8080 192.168.1.100 80 192.168.1.50 -v

원격 호스트 이름으로 포워딩

root@kitploit:~
PortForwarder.exe 3306 database.example.com 3306

IP 제한이 있는 SSH 포트 포워딩

root@kitploit:~
PortForwarder.exe 2222 10.0.0.50 22 192.168.1.100

포트 445 / SMB 인계 (승인된 작업 전용)

SMB 포트 445에서 수신 대기하고 원격 SMB 엔드포인트로 전달합니다. 로컬 포트가 445인 경우 도구는 먼저 Windows 기본 제공 SMB 서버에서 포트를 해제합니다:

root@kitploit:~
PortForwarder.exe 445 10.0.0.50 445 192.168.1.100

로컬 포트가 445인 경우, 바인딩 전에 도구가 자동으로:

  1. 권한 확인 — 프로세스가 관리자 권한으로 실행 중인지 확인합니다. 그렇지 않으면 명확한 메시지와 함께 중단됩니다.
  2. 현재 소유자 표시 — 현재 포트 445에 바인딩된 PID/프로세스를 식별합니다 (일반적으로 srvnet 커널 드라이버를 통해 PID 4의 System).
  3. SMB 비활성화 및 포트 해제 — LanmanServer 및 srv2 / srvnet 드라이버를 중지하고 (종속 서비스를 재귀적으로 중지), 각 단계를 출력하여 가시성을 확보합니다.
  4. 확인 및 바인딩 — 포트 445가 해제되었는지 확인한 후 평소처럼 바인딩하고 전달합니다.

출력 예시:

root@kitploit:~
[445] === Port 445 / SMB takeover ===
[445] Privilege check: running elevated (administrator). OK
[445] Port 445 currently held by PID 4 (System (kernel / srvnet))
[445] Disabling SMB server and releasing port 445...
[445] Stopping 'LanmanServer'...
[445]   service 'LanmanServer' stopped
[445] Stopping 'srv2'...
[445]   service 'srv2' stopped
[445] Stopping 'srvnet'...
[445]   service 'srvnet' stopped
[445] Port 445 is now free. Proceeding to bind.
[445] (Restore SMB later with: net start LanmanServer)

⚠️ 이러한 서비스를 중지하면 작업 기간 동안 호스트의 파일/프린터 공유가 비활성화됩니다. 이후 net start LanmanServer로 복원합니다 (드라이버는 요청 시 또는 다음 부팅 시 다시 시작됩니다). 테스트 권한이 있는 시스템에서만 사용하십시오.

사용 사례

로컬 개발

  • 컨테이너 또는 VM에서 실행 중인 서비스에 액세스
  • WSL2에서 Windows 호스트로 포트 전달
  • 로컬에서 웹훅 엔드포인트 테스트

네트워크 브리징

  • 서로 다른 네트워크 세그먼트 연결
  • 방화벽 제한 우회 (승인된 용도로만)
  • DMZ에서 내부 서비스에 액세스

데이터베이스 액세스

  • IP 화이트리스트로 안전한 데이터베이스 연결
  • 점프 호스트를 통한 데이터베이스 트래픽 터널링
  • 원격 개발을 위한 로컬 데이터베이스 노출

보안 테스트

  • TCP 트래픽 패턴 모니터링 및 분석
  • IP 기반 접근 제어 테스트
  • 상세 모드로 연결 시도 감사

출력 정보

포워더는 상세한 로깅을 제공합니다:

root@kitploit:~
[INFO] Configuration:
  Local port:  8080
  Remote host: 192.168.1.100
  Remote port: 80
  Allowed IP:  192.168.1.50 (filtered mode)
  Verbose:     OFF

[INFO] Listening on port 8080...
[INFO] Press Ctrl+C to stop

[INFO] New connection from 192.168.1.50:54321 ACCEPTED
[INFO] Connected to remote 192.168.1.100:80
[INFO] Connection established, forwarding traffic...
[INFO] Closing connection (Sent: 1024 bytes, Received: 2048 bytes, Total: 3072 bytes)

상세 모드 출력

-v 플래그가 활성화되면 거부된 연결도 기록됩니다:

root@kitploit:~
[INFO] Connection from 192.168.1.99:54322 REJECTED (IP not allowed)

기술 세부 사항

성능 최적화

  • 버퍼 크기: 효율적인 데이터 전송을 위한 8KB 버퍼
  • TCP_NODELAY: 지연 시간을 줄이기 위해 Nagle 알고리즘 비활성화
  • Keepalive: 끊긴 연결을 감지하기 위한 공격적인 설정 (초기 10초, 간격 1초)
  • 스레드 풀: 전용 전달 스레드를 사용한 최대 100개의 동시 연결
  • 비차단 Accept: 응답성 있는 종료를 위한 타임아웃 기반 select()

연결 처리

각 연결은 전용 전달 스레드를 생성하여:

  1. 원격 호스트에 연결 설정
  2. 소켓 옵션 설정 (타임아웃, keepalive, TCP_NODELAY)
  3. 양방향 전달을 위해 select() 사용
  4. 각 방향으로 전송된 바이트 추적
  5. 종료 시 두 소켓을 정상적으로 닫음

오류 처리

포워더는 일반적인 네트워크 오류를 정상적으로 처리합니다:

  • WSAECONNRESET - 피어에 의해 연결 재설정
  • WSAECONNABORTED - 연결 중단
  • WSAENETRESET - 네트워크로 인한 연결 끊김
  • WSAETIMEDOUT - 연결 시간 초과

스레드 안전성

  • 임계 영역이 연결 배열을 보호
  • 깨끗한 종료를 위한 휘발성 running 플래그
  • 정리 중 스레드 동기화

보안 고려 사항

⚠️ 중요 보안 참고 사항:

  1. IP 화이트리스트: 프로덕션에서는 [allowed_ip] 매개변수를 사용하여 액세스를 제한하십시오
  2. 암호화 없음: 이 포워더는 트래픽을 암호화하지 않습니다. 중요한 데이터에는 SSH 터널 또는 VPN과 함께 사용하십시오
  3. 인증: 기본 제공 인증이 없습니다. 원격 서비스에 적절한 보안이 있는지 확인하십시오
  4. 방화벽: Windows 방화벽을 구성하여 수신 포트에 대한 액세스를 제한하십시오
  5. 로깅: 프로덕션에서는 로그 파일 비대를 방지하기 위해 상세 모드를 비활성화하십시오
  6. 리소스 제한: 100개의 연결 제한으로 리소스 고갈을 방지합니다

문제 해결

포트가 이미 사용 중인 경우

root@kitploit:~
[ERROR] bind() failed: 10048

해결 방법: 다른 애플리케이션이 포트를 사용하고 있습니다. 다른 로컬 포트를 선택하거나 충돌하는 서비스를 중지하십시오.

원격에 연결할 수 없는 경우

root@kitploit:~
[ERROR] connect() to remote failed: 10061

해결 방법: 원격 호스트에 연결할 수 있는지, 지정된 포트에서 서비스가 실행 중인지 확인하십시오.

권한 거부됨

root@kitploit:~
[ERROR] bind() failed: 10013

해결 방법: 1024 미만의 포트는 관리자 권한이 필요할 수 있습니다. 관리자로 실행하거나 더 높은 포트 번호를 사용하십시오.

연결 거부됨

root@kitploit:~
[INFO] Connection from X.X.X.X:XXXXX REJECTED (IP not allowed)

해결 방법: 상세 모드(-v)를 활성화하여 거부된 IP를 확인하거나 IP 필터링을 제거하십시오.

포워더 중지

Ctrl+C를 눌러 포워더를 정상적으로 중지합니다. 다음을 수행합니다:

  1. 새 연결 수락 중지
  2. 활성 연결이 완료될 때까지 대기 (최대 5초)
  3. 모든 소켓 닫기
  4. 리소스 정리
  5. 정리 확인 표시

제한 사항

  • Windows 전용: Winsock2 API 사용 (Linux/macOS로 이식 불가)
  • IPv4 전용: 현재 IPv4 주소만 지원
  • 단일 IP 필터: 하나의 허용 IP 주소만 지정 가능
  • 로드 밸런싱 없음: 트래픽이 단일 원격 엔드포인트로 전달됨
  • 트래픽 검사 없음: 콘텐츠 분석 없는 원시 TCP 전달
  • 대역폭 제한 없음: 기본 제공 조절 또는 QoS 없음

향후 개선 사항

향후 버전에서 추가될 수 있는 기능:

  • IPv6 지원
  • 다중 IP 화이트리스트/블랙리스트
  • SSL/TLS 암호화 래퍼
  • 트래픽 통계 대시보드
  • 설정 파일 지원
  • 대역폭 제한
  • 라운드 로빈 로드 밸런싱
  • 연결 속도 제한
  • 크로스 플랫폼 지원 (Linux/macOS)

라이선스

이 소프트웨어는 교육 및 합법적인 네트워크 관리 목적으로 제공됩니다. 관련 법규 및 규정을 준수하여 책임감 있게 사용하십시오.

기여

기여를 환영합니다! 다음을 준수해 주십시오:

  • 코드는 기존 스타일을 따를 것
  • 변경 사항이 Windows에서 잘 테스트되었을 것
  • 복잡한 로직에 주석을 포함할 것
  • 새 기능에 대해 README 업데이트

지원

문제, 질문 또는 기능 요청이 있으면 프로젝트 저장소에 이슈를 열어 주십시오.

또한 Patreon에서 제 작업을 지원할 수 있습니다.


도구 다운로드