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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
whoc — 기본 컨테이너 런타임을 원격 서버로 유출하는 컨테이너 이미지 | Kitploit
도구/GitHubGitHub/twistlock/whoc
Container SecurityExploitationData ExfiltrationCloud Security
GitHubtwistlock/whoc

whoc

기본 컨테이너 런타임을 원격 서버로 유출하는 컨테이너 이미지

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

whoc

내부 컨테이너 런타임을 추출하여 원격 서버로 전송하는 컨테이너 이미지입니다. 즐겨찾는 CSP 컨테이너 플랫폼의 기반 컨테이너 런타임을 건드려보세요!

  • Defcon 29 Cloud Village에서의 WhoC
  • Azurescape - whoc 기반 연구, 퍼블릭 클라우드 최초의 계정 간 컨테이너 탈취 (70,000$ 바운티)

어떻게 작동하나요?

runc CVE-2019-5736에서 확인된 것처럼, 기존의 Linux 컨테이너 런타임은 /proc/self/exe를 통해 실행 중인 컨테이너에 자신을 노출합니다. whoc는 이 링크를 사용하여 자신을 실행하는 컨테이너 런타임을 읽어냅니다.

동적 모드

동적으로 링크된 컨테이너 런타임에 대해 작동하는 whoc의 기본 모드입니다.

  1. whoc 이미지의 엔트리포인트는 /proc/self/exe로 설정되며, 이미지의 동적 링커(ld.so)는 upload_runtime으로 대체됩니다.
  2. 이미지가 실행되면 컨테이너 런타임이 컨테이너 내부에서 자신을 다시 실행합니다.
  3. 런타임이 동적으로 링크되어 있으므로, 커널은 우리의 가짜 동적 링커(upload_runtime)를 런타임 프로세스에 로드하고 실행을 넘깁니다.
  4. upload_runtime은 /proc/self/exe를 통해 런타임 바이너리를 읽어 설정된 원격 서버로 전송합니다.

alt text

대기-실행 모드

정적으로 링크된 컨테이너 런타임을 위해 whoc는 다른 버전을 제공합니다: whoc:waitforexec.

  1. upload_runtime이 이미지 엔트리포인트이며, whoc 컨테이너의 PID 1로 실행됩니다.
  2. 사용자는 whoc 컨테이너에 exec로 접속하여 /proc/self/exe를 가리키는 파일을 호출해야 합니다 (예: docker exec whoc_ctr /proc/self/exe).
  3. exec가 발생하면 컨테이너 런타임이 컨테이너 내부에서 자신을 다시 실행합니다.
  4. upload_runtime은 /proc/$runtime-pid/exe를 통해 런타임 바이너리를 읽어 설정된 원격 서버로 전송합니다.

alt text

로컬에서 시도해보기

docker와 python3가 설치되어 있어야 합니다. 저장소를 클론하세요:

root@kitploit:~
git clone [email protected]:twistlock/whoc.git && cd whoc

추출된 컨테이너 런타임을 수신할 파일 서버를 설정하세요:

root@kitploit:~
mkdir -p stash && cd stash
ln -s ../util/fileserver.py fileserver 
./fileserver

다른 셸에서, 선택한 컨테이너 환경(예: Docker)에서 whoc 이미지를 실행하세요:

root@kitploit:~
cd whoc
docker build -f Dockerfile_dynamic -t whoc:latest src  # 또는 ./util/build.sh
docker run --rm -it --net=host whoc:latest 127.0.0.1  # 또는 ./util/run_local.sh

파일 서버가 컨테이너 런타임을 수신했는지 확인하세요. 바닐라 Docker에서 whoc를 실행하는 경우, 수신된 컨테이너 런타임은 runc여야 합니다.

--net=host는 로컬 테스트에서만 사용되며, whoc 컨테이너가 127.0.0.1을 통해 호스트의 파일 서버에 쉽게 접근할 수 있도록 하기 위함입니다.

다른 플랫폼

기본적으로 whoc는 linux/amd64용으로 빌드되지만, 다른 CPU 아키텍처도 지원합니다. 대기-실행 모드는 일반적인 방법으로 빌드할 수 있습니다. 다른 CPU 아키텍처용 동적 모드로 whoc를 빌드하려면, PLATFORM_LD_PATH_ARG 빌드 인수에 대상 아키텍처의 동적 링커 경로를 지정해야 합니다.

arm64용 예제 빌드 스크립트는 util/build_arm64.sh에서 확인할 수 있습니다.

도움말

whoc의 주요 바이너리인 upload_runtime에 대한 도움말:

root@kitploit:~
Usage: upload_runtime [options] <server_ip>

Options:
 -p, --port                 원격 서버의 포트, 기본값은 8080
 -e, --exec                 정적 컨테이너 런타임을 위한 대기-실행 모드, 컨테이너에 exec가 발생할 때까지 대기
 -b, --exec-bin             exec 모드에서 exec용으로 생성되는 기본 바이너리를 재정의, 기본값은 /bin/enter
 -a, --exec-extra-argument  exec 모드에서 런타임에 추가 인수를 전달하여 빠르게 종료되지 않도록 함
 -r, --exec-readdir-proc    exec 모드에서 런타임 pid를 추측하는 대신(whoc에 런타임을 잡을 기회를 한 번만 줌),
                            '/proc' 아래에서 새 프로세스를 검색하여 런타임을 찾음
도구 다운로드