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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/cbeuw/cloak
Encryption/Decryption ToolsIDS/IPS EvasionNetwork SecuritySteganography
GitHubcbeuw/cloak

Cloak

권위주의 국가의 적들에 의한 탐지를 회피하기 위한 검열 우회 도구

저장소 보기
4.1k35481년 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Build Status codecov Go Report Card Donate

Cloak은 기존 프록시 도구(예: OpenVPN)를 개선하여 정교한 검열과 데이터 차별을 우회할 수 있게 해주는 플러그 가능한 전송(pluggable transport)입니다.

Cloak은 독립적인 프록시 프로그램이 아닙니다. 대신, 프록시 트래픽을 일반 웹 브라우징 활동으로 위장하여 작동합니다. 트래픽 지문이 매우 뚜렷하여 단순한 필터링 규칙으로 차단될 수 있는 기존 도구와 달리, Cloak은 오탐(false positive)을 거의 발생시키지 않고 정확히 표적으로 삼기가 매우 어렵습니다. 이는 검열 조치에 대한 부수 피해를 증가시켜, Cloak을 차단하려는 시도가 검열 국가가 의존하는 서비스에도 손상을 줄 수 있습니다.

제3자 관찰자에게 Cloak 서버를 실행 중인 호스트는 무해한 웹 서버와 구별할 수 없습니다. 이는 서버로/로부터의 트래픽 흐름을 수동적으로 관찰할 때뿐만 아니라 Cloak 서버의 동작을 능동적으로 탐지할 때도 마찬가지입니다. 이는 일련의 암호화 스테가노그래피 기술을 통해 달성됩니다.

Cloak은 Shadowsocks, OpenVPN, Tor 등 TCP 또는 UDP를 통해 트래픽을 터널링하는 모든 프록시 프로그램과 함께 사용할 수 있습니다. 여러 프록시 서버를 동일한 서버 호스트에서 실행할 수 있으며, Cloak 서버는 리버스 프록시 역할을 하여 클라이언트를 원하는 프록시 종단점에 연결합니다.

Cloak은 여러 기본 TCP 연결을 통해 트래픽을 다중화하여 HOL(head-of-line) 블로킹을 줄이고 TCP 핸드셰이크 오버헤드를 제거합니다. 또한 트래픽 패턴을 실제 웹사이트와 더 유사하게 만듭니다.

Cloak은 다중 사용자를 지원하므로 여러 클라이언트가 동일한 포트(기본값 443)에서 프록시 서버에 연결할 수 있습니다. 또한 사용량 크레딧 및 대역폭 제어와 같은 트래픽 관리 기능을 제공합니다. 이를 통해 기본 프록시 소프트웨어가 다중 사용자를 위해 설계되지 않았더라도 프록시 서버가 여러 사용자에게 서비스를 제공할 수 있습니다.

Cloak은 또한 Amazon Cloudfront와 같은 중개 CDN 서버를 통한 터널링을 지원합니다. 이러한 서비스는 매우 널리 사용되므로 해당 서비스에 대한 트래픽을 방해하려는 시도는 검열 국가에 매우 높은 부수 피해를 초래할 수 있습니다.

빠른 시작

서버에 Shadowsocks와 함께 Cloak을 빠르게 배포하려면 @HirbodBehnam이 작성한 이 스크립트를 실행할 수 있습니다.

목차

  • 빠른 시작
  • 빌드
  • 설정
    • 서버
    • 클라이언트
  • 설치
    • 서버
      • 사용자 추가 방법
        • 제한 없는 사용자
        • 대역폭 및 크레딧 제한이 적용되는 사용자
    • 클라이언트
  • 후원

빌드

root@kitploit:~
git clone https://github.com/cbeuw/Cloak
cd Cloak
go get ./...
make

빌드된 바이너리는 build 폴더에 있습니다.

설정

설정 파일의 예시는 example_config 폴더에서 찾을 수 있습니다.

서버

RedirAddr은 들어오는 트래픽이 Cloak 클라이언트에서 온 것이 아닐 때의 리디렉션 주소입니다. 검열자가 허용하는 주요 웹사이트(예: www.bing.com)로 설정하는 것이 이상적입니다.

BindAddr은 Cloak이 바인딩하고 수신할 주소 목록입니다(예: 모든 인터페이스에서 포트 443 및 80을 수신하려면 [":443",":80"]).

ProxyBook은 클라이언트 측에서 사용되는 ProxyMethod 이름을 키로 하는 객체입니다. 값은 배열이며, 첫 번째 요소는 프로토콜, 두 번째 요소는 Cloak이 트래픽을 전달할 업스트림 프록시 서버의 IP:PORT 문자열입니다.

예시:

root@kitploit:~
{
  "ProxyBook": {
    "shadowsocks": [
      "tcp",
      "localhost:51443"
    ],
    "openvpn": [
      "tcp",
      "localhost:12345"
    ]
  }
}

PrivateKey는 base64로 인코딩된 정적 curve25519 Diffie-Hellman 개인 키입니다.

BypassUID는 대역폭이나 크레딧 제한 없이 인가된 UID 목록입니다.

AdminUID는 base64로 인코딩된 관리자 사용자의 UID입니다. BypassUID에만 사용자를 추가하는 경우 이 항목을 비워둘 수 있습니다.

DatabasePath는 사용자 사용 정보 및 제한 사항을 저장하는 userinfo.db의 경로입니다. Cloak은 파일이 없으면 자동으로 생성합니다. BypassUID에만 사용자를 추가하는 경우 이 항목을 비워둘 수 있습니다. 또한 이 필드는 AdminUID가 유효한 UID가 아니거나 비어 있는 경우 효과가 없습니다.

KeepAlive는 활동이 없을 때 OS가 업스트림 프록시 서버에 TCP KeepAlive 프로브를 보내기 전에 대기할 시간(초)입니다. 0 또는 음수 값은 비활성화합니다. 기본값은 0(비활성화)입니다.

클라이언트

UID는 base64로 인코딩된 사용자의 UID입니다.

Transport는 direct 또는 CDN 중에서 선택할 수 있습니다. 서버 호스트가 직접 연결을 원하면 direct를 사용하고, CDN을 사용하는 경우 CDN을 사용합니다.

PublicKey는 서버 관리자가 제공한 base64로 인코딩된 정적 curve25519 공개 키입니다.

ProxyMethod는 사용 중인 프록시 방법의 이름입니다. 서버의 ProxyBook에 있는 항목 중 하나와 정확히 일치해야 합니다.

EncryptionMethod는 Cloak이 사용할 암호화 알고리즘의 이름입니다. 옵션은 plain, aes-256-gcm(aes-gcm과 동의어), aes-128-gcm, chacha20-poly1305입니다. 참고: Cloak은 전송 보안을 제공하기 위한 것이 아닙니다. 암호화의 목적은 프록시 프로토콜의 지문을 숨기고 페이로드를 통계적으로 무작위처럼 보이게 하는 것입니다. 기본 프록시 도구가 이미 AEAD 또는 유사한 기술을 통해 암호화와 인증을 모두 제공한다고 확신하는 경우에만 plain으로 남겨둘 수 있습니다.

ServerName은 ISP나 방화벽이 사용자가 방문하고 있다고 믿게 만들 도메인입니다. 이상적으로는 서버 구성의 RedirAddr(검열자가 허용하는 주요 사이트)과 일치해야 하지만, 꼭 그럴 필요는 없습니다. random을 사용하면 연결할 때마다 서버 이름이 무작위로 지정됩니다.

AlternativeNames는 ServerName과 함께 사용되는 배열로, 새 연결마다 다른 ServerNames 사이를 섞습니다. CDN 제공자가 도메인 프론팅을 금지하고 대체 도메인을 거부하는 경우 CDN 전송 모드와 충돌할 수 있습니다.

예시:

root@kitploit:~
{
  "ServerName": "bing.com",
  "AlternativeNames": ["cloudflare.com", "github.com"]
}

CDNOriginHost는 CDN 모드에서 원본 서버(즉, Cloak을 실행하는 서버)의 도메인 이름입니다. 이는 Transport가 CDN으로 설정된 경우에만 효과가 있습니다. 설정하지 않으면 명령줄 인수(독립 실행형 모드) 또는 Shadowsocks(플러그인 모드)를 통해 제공된 원격 호스트 이름으로 기본 설정됩니다. CDN 서버와 TLS 세션이 설정된 후, 이 도메인 이름은 HTTP 요청의 Host 헤더에 사용되어 CDN 서버가 이 호스트와 WebSocket 연결을 설정하도록 요청합니다.

CDNWsUrlPath는 CDN 모드에서 전송되는 웹소켓 요청을 구성하는 데 사용되는 URL 경로로, Transport가 CDN으로 설정된 경우에만 효과가 있습니다. 설정하지 않으면 기본값은 "/"입니다. 이 옵션은 TLS 세션이 설정된 후 HTTP 요청의 첫 번째 줄을 구성하는 데 사용됩니다. 주로 특정 URL 경로 아래의 요청만 전달되는 리버스 프록시 뒤에 있는 Cloak 서버를 위한 것입니다.

NumConn은 사용하려는 기본 TCP 연결 수입니다. 기본값 4는 대부분의 사용자에게 적합합니다. 너무 높게 설정하면 성능이 저하됩니다. 0으로 설정하면 연결 다중화가 비활성화되고 각 TCP 연결은 종료 후 닫히는 별도의 수명이 짧은 세션을 생성합니다. 이렇게 하면 GoQuiet처럼 동작합니다. 연결이 불안정한 사용자에게 유용할 수 있습니다.

BrowserSig는 사용자가 사용하는 것처럼 보이게 할 브라우저입니다. 실제로 사용하는 브라우저와는 관련이 없습니다. 현재 chrome, firefox, safari가 지원됩니다.

KeepAlive는 활동이 없을 때 OS가 Cloak 서버에 TCP KeepAlive 프로브를 보내기 전에 대기할 시간(초)입니다. 0 또는 음수 값은 비활성화합니다. 기본값은 0(비활성화)입니다. 경고: 활성화하면 서버가 프록시로 더 쉽게 탐지될 수 있지만, Cloak 클라이언트가 인터넷 중단을 더 빨리 감지할 수 있습니다.

StreamTimeout은 Cloak이 프록시 프로그램의 들어오는 연결에서 데이터를 보낼 때까지 기다리는 시간(초)입니다. 이 시간이 초과되면 Cloak이 연결을 닫습니다. Cloak은 TCP 연결이 설정된 후에는 타임아웃을 적용하지 않습니다.

설치

서버

  1. 기본 프록시 서버(예: OpenVPN, Shadowsocks)를 하나 이상 설치합니다.
  2. 최신 릴리스를 다운로드하거나 이 저장소를 클론하여 빌드합니다.
  3. ck-server -key를 실행합니다. 공개 키는 사용자에게 제공하고, 개인 키는 비밀로 유지해야 합니다.
  4. (제한 없는 사용자만 추가하려면 건너뜁니다) ck-server -uid를 실행합니다. 새 UID가 AdminUID로 사용됩니다.
  5. example_config/ckserver.json을 원하는 위치에 복사합니다. PrivateKey를 방금 얻은 개인 키로 변경하고, AdminUID를 방금 얻은 UID로 변경합니다.
  6. 기본 프록시 서버가 모두 localhost에서 수신하도록 구성합니다. 구성 파일의 ProxyBook을 그에 맞게 편집합니다.
  7. 프록시 프로그램을 구성합니다. sudo ck-server -c <ckserver.json 경로>를 실행합니다. ck-server는 낮은 번호의 포트(443)에 바인딩되므로 루트 권한이 필요합니다. 또는 https://superuser.com/a/892391 를 따라 ck-server에 불필요하게 루트 권한을 부여하지 않을 수 있습니다.

사용자 추가 방법

제한 없는 사용자

ck-server -uid를 실행하고 UID를 ckserver.json의 BypassUID 필드에 추가합니다.

대역폭 및 크레딧 제한이 적용되는 사용자
  1. 먼저 AdminUID가 생성되어 ckserver.json에 설정되어 있고, DatabasePath에 userinfo.db의 경로가 지정되어 있는지 확인합니다(Cloak은 파일이 없으면 자동으로 생성합니다).
  2. 클라이언트에서 ck-client -s <서버 IP> -l <로컬 포트> -a <AdminUID> -c <ckclient.json 경로>를 실행하여 관리자 모드로 진입합니다.
  3. https://cbeuw.github.io/Cloak-panel 을 방문합니다(참고: 이는 순수 JS 정적 사이트이며, 백엔드가 없고 이 사이트에 입력된 모든 데이터는 브라우저와 사용자가 지정한 Cloak API 엔드포인트 사이에서 처리됩니다. 또는 https://github.com/cbeuw/Cloak-panel 에서 저장소를 다운로드하여 브라우저에서 index.html을 열 수도 있습니다. 웹 서버가 필요하지 않습니다).
  4. API Base에 127.0.0.1:<1단계에서 입력한 포트>를 입력하고 List를 클릭합니다.
  5. + 패널을 클릭하여 사용자를 더 추가할 수 있습니다.

참고: 사용자 데이터베이스는 디스크에 저장되어 영구적입니다. ck-server를 시작할 때마다 사용자를 다시 추가할 필요가 없습니다.

클라이언트

Android 클라이언트는 여기에서 사용할 수 있습니다: https://github.com/cbeuw/Cloak-android

  1. 서버에 있는 것에 해당하는 기본 프록시 클라이언트를 설치합니다.
  2. 최신 릴리스를 다운로드하거나 이 저장소를 클론하여 빌드합니다.
  3. 서버 관리자로부터 공개 키와 사용자 UID를 얻습니다.
  4. example_config/ckclient.json을 원하는 위치로 복사합니다. 획득한 UID와 PublicKey를 입력합니다. ProxyMethod를 서버 측 ProxyBook의 해당 항목과 정확히 일치하도록 설정합니다.
  5. 프록시 프로그램을 구성합니다. ck-client -c <ckclient.json 경로> -s <서버 IP>를 실행합니다.

후원

이 프로젝트가 유용하다면, 제 머천 스토어를 방문해 주세요. 또는 저에게 직접 기부할 수도 있습니다.

Donate

BTC: bc1q59yvpnh0356qq9vf0j2y7hx36t9ysap30spx9h

ETH: 0x8effF29a8F9bD38A367580527AC303972c92b60c

도구 다운로드