Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Tunna — Tunna는 HTTP를 통해 모든 TCP 통신을 감싸고 터널링하는 도구 모음입니다. 완전히 방화벽으로 보호된 환경에서 네트워크 제한을 우회하는 데 사용할 수 있습니다. | Kitploit
도구/GitHubGitHub/secforce/tunna
Web Proxies & InterceptionIDS/IPS EvasionPenetration TestingRed Teaming
GitHubsecforce/tunna

Tunna

Tunna는 HTTP를 통해 모든 TCP 통신을 감싸고 터널링하는 도구 모음입니다. 완전히 방화벽으로 보호된 환경에서 네트워크 제한을 우회하는 데 사용할 수 있습니다.

저장소 보기
1.3k280575년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Tunna

Tunna는 HTTP를 통해 모든 TCP 통신을 래핑하고 터널링하는 도구 모음입니다. 완전히 방화벽으로 차단된 환경에서 네트워크 제한을 우회하는 데 사용할 수 있습니다.

v1.1 Alpha 버전

				  _____                        
				 |_   _|   _ _ __  _ __   __ _ 
				   | || | | | '_ \| '_ \ / _` |
				   | || |_| | | | | | | | (_| |
				   |_| \__,_|_| |_|_| |_|\__,_|	
                                                 

                 Tunna 0.1, HTTP 터널링 TCP 연결용 (Nikos Vassakis)
                 http://www.secforce.co.uk	/ nikos.vassakis <at> secforce.com

################################################################################################################

요약

TLDR: HTTP를 통해 TCP 연결 터널링

완전히 방화벽으로 차단된 환경에서 (인바운드 및 아웃바운드 연결이 제한됨 - 웹서버 포트 제외)

웹쉘을 사용하여 원격 호스트의 모든 서비스에 연결할 수 있습니다. 이는 원격 호스트의 로컬 포트에 대한 로컬 연결이며, 방화벽에서 허용되어야 합니다.

웹쉘은 서비스 포트에서 데이터를 읽어 HTTP로 래핑한 후 HTTP 응답으로 로컬 프록시에 전송합니다.

로컬 프록시는 래핑을 해제하고 데이터를 로컬 포트에 기록합니다. 이 포트에 클라이언트 프로그램이 연결됩니다.

로컬 프록시가 로컬 포트에서 데이터를 수신하면 HTTP Post를 통해 웹쉘로 전송합니다.

웹쉘은 HTTP Post에서 데이터를 읽어 서비스 포트에 넣습니다.

그리고 반복 --^

웹서버 포트만 열려 있으면 됩니다 (일반적으로 80/443) 전체 통신 (외부적으로)은 HTTP 프로토콜을 통해 이루어집니다.

사용법

python proxy.py -u <원격url> -l <로컬포트> [옵션]

옵션

--help, -h 도움말 메시지를 표시하고 종료

--url=URL, -u URL 원격 웹쉘의 URL

--lport=LOCAL_PORT, -l LOCAL_PORT 로컬 리스닝 포트

--verbose, -v Verbose (패킷 크기 출력)

--buffer=BUFFERSIZE, -b BUFFERSIZE* HTTP 요청 크기 (일부 웹쉘은 크기 제한이 있음)

SOCKS 옵션 없음

SOCKS 프록시를 사용하는 경우 옵션은 무시됩니다.

--no-socks, -n SOCKS 프록시를 사용하지 않음

--rport=REMOTE_PORT, -r REMOTE_PORT 웹쉘이 연결할 원격 서비스 포트

--addr=REMOTE_IP, -a REMOTE_IP 웹쉘이 연결할 원격 주소 (기본값 = 127.0.0.1)

업스트림 프록시 옵션

로컬 프록시를 통해 연결 터널링

--up-proxy=UPPROXY, -x UPPROXY 업스트림 프록시 (http://proxyserver.com:3128)

--auth, -A 업스트림 프록시 인증 필요

고급 옵션

--ping-interval=PING_DELAY, -q PING_DELAY webshprx 핑 스레드 간격 (기본값 = 0.5)

--start-ping, -s 먼저 핑 스레드 시작 - 일부 서비스는 먼저 데이터를 보냄 (예: SSH)

--cookie, -C 요청 쿠키

--authentication, -t 기본 인증

  • 제한 사항 참조

사용 예: python proxy.py -u http://10.3.3.1/conn.aspx -l 8000 -v

# 이렇게 하면 포트 8000에 로컬 SOCKS 프록시 서버가 시작됩니다.
# 이 연결은 HTTP로 래핑되어 원격 서버에서 언래핑됩니다.

python proxy.py -u http://10.3.3.1/conn.aspx -l 8000 -x https://192.168.1.100:3128 -A -v

# 이렇게 하면 포트 8000에 로컬 SOCKS 프록시 서버가 시작됩니다.
# 인증이 필요한 로컬 프록시(https://192.168.1.100:3128)를 통해 원격 Tunna 웹쉘에 연결됩니다.

python proxy.py -u http://10.3.3.1/conn.aspx -l 4444 -r 3389 -b 8192 -v --no-socks

# 이렇게 하면 웹쉘과 원격 호스트 RDP(3389) 서비스 간의 연결이 시작됩니다.
# RDP 클라이언트는 로컬호스트 포트 4444에 연결할 수 있습니다.
# 이 연결은 HTTP로 래핑됩니다.

전제 조건

원격 서버에 웹쉘을 업로드할 수 있는 능력

제한 사항 / 알려진 버그 / 해킹

이것은 POC 코드이며 서버의 DoS를 유발할 수 있습니다.
	실행 후 또는 오류 발생 시 정리를 위한 모든 노력이 이루어졌습니다 (보장은 없음)

로컬 테스트 기준:
	* JSP 버퍼는 제한되어야 함 (buffer 옵션):
			4096은 Linux Apache Tomcat에서 작동
			1024는 XAMPP Apache Tomcat에서 작동 (느림)
			* 그 이상은 원격 소켓에서 바이트 누락 문제 발생
			예: ruby proxy.rb -u http://10.3.3.1/conn.jsp -l 4444 -r 3389 -b 1024 -v

	* 소켓이 기본적으로 활성화되지 않음:
		php windows (IIS + PHP)
		XAMPP Windows
		php linux (PHP 내장 웹 서버/apache + PHP)
	오류 "Uncaught Error: Call to undefined function socket_create()"가 발생하면
	https://stackoverflow.com/questions/6137823/fatal-error-call-to-undefined-function-socket-create 참조


	* 웹쉘의 캐리지 리턴 (코드 외부):
		응답에 전송되어 로컬 소켓에 기록됨 --> 패킷 손상

	* Windows용 PHP 웹쉘: 루프 함수가 원격 소켓을 DoS시킴:
		sleep 함수 추가 --> 작동하지만 약간 느림
	* PHP 웹쉘은 파일 끝("?>" 이후)에서 줄 바꿈 문자를 제거해야 함
		그렇지 않으면 모든 응답에 전송되어 Tunna를 혼란시킴

파일

웹쉘:
	conn.jsp	Apache Tomcat에서 테스트 완료 (windows + linux)
	conn.aspx	IIS 6+8에서 테스트 완료 (windows server 2003/2012)
	conn.php	LAMP + XAMPP + IIS에서 테스트 완료 (windows + linux)

웹서버:
	webserver.py	Python 2.6.5로 테스트 완료

프록시:
	proxy.py	Python 2.6.5로 테스트 완료

기술적 세부사항

아키텍처 결정

데이터는 HTTP Post 본문에 원시(raw)로 전송됨 (Post 변수 없음)

지시사항/구성은 URL 매개변수(HTTP Get)로 웹쉘에 전송됨
데이터는 HTTP 본문(HTTP Post)으로 전송됨

웹소켓 미사용: 대부분의 웹서버에서 기본적으로 지원되지 않음
비동기 HTTP 응답은 사실상 불가능
	프록시가 지속적으로 서버를 쿼리함 (기본 0.5초)

초기화 단계

1번째 패킷이 웹쉘과 세션을 시작하고 쿠키를 받음 예: http://webserver/conn.ext?proxy

2번째 패킷이 연결 구성 옵션을 웹쉘에 전송 예: http://webserver/conn.ext?proxy&port=4444&ip=127.0.0.1

웹쉘이 연결할 IP와 포트
이것은 스레드 요청입니다:
	php에서 이 요청은 웹쉘 소켓 연결을 유지하기 위해 무한 루프로 진입합니다.
	다른 웹쉘에서는 [OK]가 수신됩니다.

TUNNA 클라이언트

클라이언트 프로그램이 연결할 로컬 소켓이 생성됩니다. 클라이언트가 연결되면 핑 스레드가 시작되고 실행이 시작됩니다. 소켓의 모든 데이터(클라이언트로부터)는 읽혀서 HTTP Post 요청으로 전송됩니다. 웹쉘 소켓의 모든 데이터는 POST 요청에 대한 응답으로 전송됩니다.

핑 스레드

HTTP 응답은 비동기적일 수 없기 때문입니다. 이 스레드는 일정 간격(기본 0.5초)으로 웹쉘에 HTTP Get 요청을 수행합니다. 웹쉘이 보낼 데이터가 있으면 이 요청에 대한 응답으로 (또한) 전송합니다. 그렇지 않으면 빈 응답을 전송합니다.

일반적으로: 로컬 프록시의 데이터는 HTTP Post로 전송됩니다. 0.5초마다 Get 요청이 웹쉘에 데이터를 요청합니다. 웹쉘 측에 데이터가 있으면 이러한 요청 중 하나에 대한 응답으로 전송됩니다.

웹쉘

웹쉘은 로컬 또는 원격 호스트의 소켓에 연결됩니다. 소켓에 기록된 모든 데이터는 요청(POST/GET)에 대한 응답으로 프록시에 다시 전송됩니다. Post로 수신된 모든 데이터는 소켓에 기록됩니다.

참고 사항

모든 요청은 URL 매개변수 "proxy"가 설정되어야 웹쉘에 의해 처리됩니다. (http://webserver/conn.ext?proxy)

종료 시 / 오류 시

모든 스레드를 종료하고 로컬 소켓을 닫습니다. proxy&close를 웹쉘에 전송: 원격 스레드를 종료하고 소켓을 닫습니다.

SOCKS

SOCKS 지원은 Tunna의 추가 모듈입니다. 로컬에서는 별도의 스레드가 연결 요청과 트래픽을 처리하며, 포트와 패킷 크기를 지정하는 헤더를 추가하고 이를 Tunna에 전달합니다. Tunna는 이를 원격 웹서버로 전송하고, HTTP 헤더를 제거한 후 패킷을 원격 SOCKS 프록시로 전달합니다. 원격 SOCKS 프록시는 연결을 시작하고 수신된 포트를 로컬 포트에 매핑합니다. 원격 SOCKS 프록시가 서비스로부터 데이터를 수신하면 매핑 테이블을 확인하여 응답해야 할 포트를 찾고, 포트를 헤더로 추가하여 로컬 SOCKS 프록시가 데이터를 전달할 위치를 알 수 있게 합니다. 수신된 포트의 모든 트래픽은 로컬 포트로 전달되고 그 반대도 마찬가지입니다.

저작권 및 면책 조항

Tunna, HTTP를 통한 TCP 터널링 Nikos Vassakis Copyright (C) 2014 SECFORCE.

이 도구는 합법적인 목적으로만 사용됩니다.

이 프로그램은 자유 소프트웨어입니다: 자유 소프트웨어 재단이 발행한 GNU 일반 공중 사용 허가서(GPL) 버전 3 또는 (선택에 따라) 이후 버전의 조건에 따라 재배포 및/또는 수정할 수 있습니다.

이 프로그램은 유용할 것이라는 희망으로 배포되지만, 어떠한 보증도 없습니다. 상품성 또는 특정 목적에의 적합성에 대한 묵시적 보증도 없습니다. 자세한 내용은 GNU 일반 공중 사용 허가서를 참조하십시오.

이 프로그램과 함께 GNU 일반 공중 사용 허가서 사본을 받아야 합니다. 그렇지 않은 경우, http://www.gnu.org/licenses/를 방문하십시오.

도구 다운로드