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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/cybersecsi/dockerized-android
Android SecurityContainer SecurityMobile SecurityLearning & EducationLabs & Practice
GitHubcybersecsi/dockerized-android

dockerized-android

보안 교육 플랫폼에서 모바일 구성 요소의 통합을 가능하게 하는 컨테이너 기반 프레임워크

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

Dockerized Android

Dockerized Android는 Docker 내에서 Android 에뮬레이터를 실행하고 브라우저를 통해 제어할 수 있는 컨테이너 기반 프레임워크입니다. 이 프로젝트는 모바일 보안 구성 요소를 Cyber Range에 통합하기 위한 시작점을 제공하기 위해 개발되었지만, 어떤 목적으로든 사용할 수 있습니다. 다만 개발 및 테스트 목적으로는 docker-android 프로젝트를 권장합니다.

Docker 유지보수 문서 라이선스: MIT

목차

  • 목차
  • 소개
  • 기능
  • 아키텍처
    • 핵심 구성 요소
    • UI 구성 요소
    • 인스턴스 관리자 구성 요소
  • Docker 이미지 목록
  • 실행 방법
    • 사전 요구 사항
    • OS 호환성
    • 실제 장치를 위한 OS X 우회 방법
    • 실행
    • 빌드
  • 구성
  • 라이선스
  • Dockerized Android를 언급한 곳
  • 크레딧

소개

위의 간략한 설명에서 언급했듯이 이 프로젝트는 Cyber Range에 모바일 보안 구성 요소를 도입하기 위한 시작점을 제공하기 위해 만들어졌습니다. 이러한 이유로 이미 개발된 기능과 앞으로 추가될 기능은 사용자가 실제 시뮬레이션(예: 보안 훈련)을 더 쉽게 설정할 수 있도록 도와줄 것입니다. 이 README는 상당히 길기 때문에 "실행 방법" 부분으로 바로 건너뛰고 싶을 수도 있습니다.

기능

현재 다음 기능을 사용할 수 있습니다:

  • Docker에서 Android 에뮬레이터 실행
  • 웹 브라우저를 통해 장치 제어
  • 애플리케이션 설치
  • 포트 포워딩 활성화
  • 장치 재부팅
  • SMS 에뮬레이션
  • 웹 브라우저에서 터미널 사용
  • 물리적 장치 연결 가능
  • 시작 동작 사용자 지정 (구성 섹션 참조)
  • 여러 인스턴스를 쉽게 관리
초기 설정인스턴스 관리자 설정수동 설정
initial-setupinstance-manager-setupmanual-setup
도구 상자 기능인스턴스 전환
toolboxinstance-switch

아키텍처

이 프로젝트는 세 가지 주요 부분으로 구성됩니다:

  • Dockerized Android Core
  • Dockerized Android UI
  • Dockerized Android Instance Manager (선택 사항) 다음 그림은 두 가지 필수 구성 요소의 실제 아키텍처 개요를 제공합니다.

핵심 구성 요소

핵심 구성 요소는 Docker 컨테이너 내에서 Android 구성 요소(에뮬레이트 또는 실제)를 실행하는 데 필요한 모든 프로세스를 실행하고 외부에 일부 기능을 노출하는 구성 요소입니다. 여러 프로세스를 관리하여 기능 세트를 제공해야 하기 때문에 의심할 여지 없이 가장 복잡한 부분입니다. 위 그림은 장기 실행 프로세스, 시작 프로세스 및 유틸 스크립트 간의 명확한 구분을 보여줍니다. 또한 이 그림에는 6개의 장기 실행 프로세스가 있다고 표시되어 있는데, 이는 핵심 구성 요소에 대한 일반적인 개요를 제공하기 위해 추가된 약간의 부정확성입니다. 실제로는 핵심 구성 요소에는 두 가지 변형이 있습니다:

  • 에뮬레이터용 Core
  • 실제 장치용 Core

주요 아키텍처 차이점은 장기 실행 프로세스와 관련이 있습니다. 에뮬레이터용 Core는 장기 실행 emulator 프로세스를 실행하는 반면, 실제 장치용 Core는 물리적 장치를 표시하고 제어하기 위해 장기 실행 scrcpy 프로세스를 실행합니다. 다른 부분은 Core 구성 요소의 유형에 따라 다른 동작을 따르는 일부 로직을 제외하면 상당히 유사합니다.

UI 구성 요소

UI 구성 요소는 백엔드가 노출하는 모든 기능을 간편하게 사용할 수 있는 방법을 제공하며 장치를 표시하고 제어하는 기능도 추가합니다. 사용자는 Core 구성 요소의 주소와 해당 포트(백엔드가 노출하는 포트와 websockify가 노출하는 포트)를 수동으로 입력해야 합니다. 이 수동 설정을 통해 기본 포트(백엔드의 경우 4242, websockify의 경우 6080)를 변경할 수 있습니다.

인스턴스 관리자 구성 요소

인스턴스 관리자 구성 요소는 단일 REST API를 통해 실행 중인 Core에 대한 모든 정보(주소 및 포트)를 제공하는 역할을 합니다. 이는 docker-compose에 있는 Core에 대한 모든 정보를 포함하는 간단한 JSON 구성 파일을 작성하여 수행되며, 하나씩 수동으로 추가하는 번거로운 작업을 피할 수 있습니다. JSON 구성 파일의 구조는 다음과 같습니다:

root@kitploit:~
{
    "instances": [
        {
            "name": [장치를 식별하는 일반 문자열],
            "address": [구성 요소의 주소],
            "core_port": [백엔드의 포트],
            "vnc_port": [VNC의 포트]
        }
    ]
}

Docker 이미지 목록

secsi/dockerized-android-core-bare는 시스템 이미지를 다운로드하지 않으며, 모든 SDK 폴더가 있는 호스트 머신의 폴더를 마운트할 수 있습니다.

실행 방법

플랫폼을 실행하는 방법에 대한 전체 예제를 보려면 examples 디렉토리의 docker-compose를 참조하십시오. 이 디렉토리에는 세 가지 다른 구성이 포함되어 있습니다:

  • docker-compose-core: 실제 장치용 Core 설정;
  • docker-compose-emulator: 에뮬레이터용 Core 설정;
  • docker-compose-instance-manager: 두 개의 서로 다른 Core와 선택 사항인 Instance Manager 구성 요소를 포함한 설정.

작동 방식을 이해한 후에는 필요에 맞게 변경할 수 있습니다.

사전 요구 사항

머신에 Docker와 Docker Compose가 설치되어 있어야 합니다.

OS 호환성

이 플랫폼은 호스트 OS에 따라 다르게 동작합니다. 다음 표는 현재 호환성을 요약한 것입니다:

LinuxWindowsOS X
에뮬레이터용 Core완벽 호환아직 지원되지 않음지원되지 않음
실제 장치용 Core완벽 호환완벽 호환우회 방법

Windows 및 OS X의 경우 중첩 가상화를 지원하는 Linux VM을 사용해야 합니다.

Linux 머신이 중첩 가상화를 지원하는지 확인하려면 다음 명령을 실행할 수 있습니다:

root@kitploit:~
sudo apt install cpu-checker
kvm-ok

실제 장치를 위한 OS X 우회 방법

OS X에서 실제 장치용 Core를 사용하려면:

  • 호스트의 adb 사용
  • 무선 연결 사용

무선 연결을 위해 Google은 간단한 튜토리얼을 제공합니다. 컨테이너 내에서 호스트 adb에 연결하려면 컨테이너에 수동으로 들어가서 다음을 실행해야 합니다:

root@kitploit:~
adb -H host.docker.internal devices

실행

프레임워크를 시작하는 명령은 다음과 같습니다:

  1. 먼저 examples 폴더에서 구성을 선택합니다. 예:
root@kitploit:~
cp ./examples/docker-compose-core.yml docker-compose.yml
  1. docker-compose로 실행:
root@kitploit:~
docker-compose up

더 간단하게 다음 명령을 사용할 수도 있습니다:

docker-compose -f ./examples/docker-compose-core.yml up

이제 브라우저에서 http://127.0.0.1:8080 주소로 이동하여 현재 구성을 설정하기만 하면 됩니다:

Instance Manager를 사용하지 않은 경우 수동 설정을 클릭하고 다음 정보를 입력합니다:

  1. 인스턴스의 이름(선택);
  2. docker-compose에 선언된 Core 구성 요소의 IP 주소;
  3. Core 포트 번호 (4242 기본값);
  4. VNC 포트 번호 (6080 기본값).

Instance Manager를 사용하는 경우 "Instance Manager"를 클릭하고 IP 주소와 포트 번호(예: 193.21.1.100:7373)를 입력하기만 하면 됩니다.

이제 브라우저 내에서 프레임워크를 사용할 수 있습니다.

빌드

utils 폴더에 있는 스크립트를 통해 이미지를 직접 빌드할 수도 있습니다.

구성

ENV 변수를 통해 일부 기능을 구성하여 설정을 사용자 지정할 수 있습니다. 다음 표는 모든 변수 목록을 제공합니다:

REAL_DEVICE_SERIAL 변수는 두 개 이상의 물리적 장치가 연결된 경우 필수적입니다. 누락되면 아무 것도 작동하지 않습니다. 마지막으로 각 구성 요소가 노출하는 포트 목록은 다음과 같습니다:

라이선스

Dockerized Android는 MIT 라이선스 하에 배포되는 오픈 소스 무료 소프트웨어입니다.

Dockerized Android를 언급한 곳

  • SecSI
    • https://secsi.io/blog/a-container-based-framework-for-android-emulation-and-hacking/
  • KitPloit
    • https://www.kitploit.com/2021/10/dockerized-android-container-based.html
    • https://www.kitploit.com/2021/12/top-20-most-popular-hacking-tools-in.html

인용

이 코드가 연구에 유용하다면, 다음 논문을 인용해 주시기 바랍니다:

root@kitploit:~
@inproceedings{Capone2022,
  doi = {10.1109/icecet55527.2022.9872834},
  url = {https://doi.org/10.1109/icecet55527.2022.9872834},
  year = {2022},
  month = jul,
  publisher = {{IEEE}},
  author = {Daniele Capone and Francesco Caturano and Angelo Delicato and Gaetano Perrone and Simon Pietro Romano},
  title = {Dockerized Android: a container-based platform to build mobile Android scenarios for Cyber Ranges},
  booktitle = {2022 International Conference on Electrical,  Computer and Energy Technologies ({ICECET})}
}

크레딧

이 프로젝트는 나폴리 페데리코 2세 대학교에서 컴퓨터 공학 석사 학위 논문을 대표합니다. 이 작업에 영감을 주신 Simon Pietro Romano 교수님과 엔지니어 Francesco Caturano 님께 특별히 감사드립니다.

도구 다운로드
Android 버전API이미지
5.0.121secsi/dockerized-android-core-emulator-5.0.1
5.1.122secsi/dockerized-android-core-emulator-5.1.1
6.023secsi/dockerized-android-core-emulator-6.0
7.024secsi/dockerized-android-core-emulator-7.0
7.1.125secsi/dockerized-android-core-emulator-7.1.1
8.026secsi/dockerized-android-core-emulator-8.0
8.127secsi/dockerized-android-core-emulator-8.1
9.028secsi/dockerized-android-core-emulator-9.0
10.029secsi/dockerized-android-core-emulator-10.0
11.030secsi/dockerized-android-core-emulator-11.0
--secsi/dockerized-android-core-bare
--secsi/docker-android-core-real-device
구성 요소ENV 이름기본값설명
CoreTARGET_PORT6080Websockify 포트
CoreCUSTOM_APP_DEFAULT_PORT4242Node.js 백엔드 포트
CoreDEVICEINFO설정되지 않음, true처럼 동작장치 정보 기능 활성화/비활성화
CoreTERMINAL설정되지 않음, true처럼 동작터미널 기능 활성화/비활성화
CoreAPK설정되지 않음, true처럼 동작APK 설치 기능 활성화/비활성화
CoreFORWARD설정되지 않음, true처럼 동작포트 포워딩 기능 활성화/비활성화
CoreSMS설정되지 않음, true처럼 동작SMS 에뮬레이션 기능 활성화/비활성화
CoreREBOOT설정되지 않음, true처럼 동작재부팅 기능 활성화/비활성화
CoreINSTALL_ON_STARTUPfalse/root/dockerized-android/apk 폴더에 있는 모든 apk를 설치하는 기능 활성화/비활성화
CoreENABLE_UNKNOWN_SOURCESfalse알 수 없는 소스에서 설치 활성화
CoreREAL_DEVICE_SERIAL설정되지 않음연결된 물리적 장치가 두 개 이상인 경우 제어할 장치의 시리얼 번호로 설정해야 하며, 그렇지 않으면 다른 모든 기능이 작동하지 않음
Instance ManagerDEFAULT_PORT7373REST API의 포트
구성 요소포트 #설명
Core5555ADB 포트
Core4242Node.js 백엔드
Core6080Websockify (noVNC용)
UI80프론트엔드
Instance Manager7373REST API