
MESH v0.2.0-beta
암호화된 P2P 메시 VPN으로 원격 모바일 포렌식을 지원하며, 무선 ADB 및 libimobiledevice 수집, 네트워크 모니터링, NAT 및 방화벽을 통한 침입 탐지를 가능하게 합니다.
MESH는 모바일 기기에서 원격 논리 포렌식 획득을 지원하는 네트워킹 도구입니다.
MESH는 분석가에게 NAT, 방화벽 또는 제한적인 모바일 네트워크 뒤에 있는 기기에도 직접 암호화된 경로를 제공하여 무선 디버깅, 네트워크 모니터링 및 포렌식 획득을 가능하게 합니다. 개인 오버레이를 구축하여 원격 기기가 동일한 로컬 서브넷에 있는 것처럼 동작하도록 합니다. 중앙 VPN 서버, 포트 포워딩 또는 유지·방어해야 할 영구 인프라가 필요하지 않습니다. 이를 통해 MVT 및 AndroidQF와 같은 도구를 사용하여 인터넷을 통한 원격 네트워크 모니터링 및 획득이 원활하고 쉽게 이루어집니다.
기능
- ADB 무선 디버깅 및 libimobiledevice를 통한 원격 모바일 포렌식: WARD, MVT, AndroidQF 및 기타 ADB/iOS 도구를 기기가 로컬에 있는 것처럼 실행합니다.
- 원격 네트워크 모니터링: 동일한 암호화 메시를 통해 PCAP 캡처 및 Suricata 침입 탐지.
기능 제외
보안 강화
- 경로가 존재할 때 직접 피어투피어 WireGuard 전송을 우선 사용.
- 필요 시 AmneziaWG를 사용하여 WireGuard를 DPI 및 국가 방화벽에 대해 난독화.
- UDP가 차단될 경우 암호화된 HTTPS 릴레이로 자동 대체.
메시는 일시적이며 분석가가 제어합니다. 기기를 온라인으로 전환하고, 수집한 후 네트워크를 해체합니다. 실행 중인 상태가 남지 않아 활동 핑거프린팅을 회피하는 데 도움이 됩니다.
[!IMPORTANT] Public Alpha: 현재 공개 알파 단계이며 활발히 개발 중입니다. 전체 제3자 침투 테스트가 완료되었으며 주요 취약점은 모두 패치되었습니다. 사항이 변경될 수 있으며 호환성이 깨지는 변경이 발생할 수 있습니다. 현재 어느 정도의 기술적 전문 지식이 필요합니다. 버그나 보안 문제는 GitHub Issues를 통해 신고해 주시기 바랍니다.
빠른 시작
전체 문서:
https://docs.meshforensics.org/
사전 요구 사항
- Git
- Compose V2 플러그인이 포함된 Docker Engine (
docker compose, 기존docker-compose아님). 설치 안내 - 빌드 오케스트레이션 및 대화형 설정을 위한 Task (go-task). 설치 안내. 간단히:
- Linux:
sudo snap install task --classic - macOS:
brew install go-task
- Linux:
[!NOTE] 대부분의 런타임 작업은 일반
docker compose로도 가능하지만, 대화형 설정 작업(.env 관리, 구성 템플릿, 인증키 교체)은 go-task가 필요합니다.
1. 리포지토리 클론
git clone https://github.com/BARGHEST-ngo/mesh.git
cd MESH
2. 컨트롤 플레인 시작
task build
task controlPlane
task controlPlane은 대화형으로 설정을 안내하며 모든 필수 서비스를 시작합니다. 대부분의 사용자에게는 Ephemeral 배포와 Automatic 도메인을 선택하는 것이 권장됩니다. 서버나 DNS 구성이 필요 없습니다.
배포 유형을 선택하세요. 임시 컨트롤 플레인은 워크스테이션에서 실행되며 보안 터널을 통해 인터넷에 접근 가능합니다. 영구 컨트롤 플레인은 관리하는 전용 인터넷 접속 서버에서 실행됩니다.
도메인을 선택하세요. Automatic을 선택하면 MESH가 공개 HTTPS 주소를 자동으로 프로비저닝합니다. 자체 도메인을 사용하려면 Manual을 선택하세요.
API 키 입력. Automatic 도메인을 선택한 경우 API 키를 입력하라는 메시지가 표시됩니다. 이 키는 Barghest 팀이 제공하며, 액세스를 요청하려면 연락주시기 바랍니다.
구성 확인. MESH가 시작되기 전에 생성된 설정을 검토하세요.
설정이 잘못되었거나 설정이 중단된 경우 .env를 삭제하고 task controlPlane을 다시 실행하여 처음부터 시작하세요.
CONTROL_PLANE_TYPE=Ephemeral
PROXY_DOMAIN_TYPE=Automatic
MESH_SUBDOMAIN=<무작위 10자 슬러그>
FRP_AUTH_TOKEN=<비밀 토큰>
CONTROL_PLANE_URL=https://<슬러그>.tunnels.meshforensics.app
LOGIN_URL=https://<슬러그>.tunnels.meshforensics.app
컨테이너가 시작되고 API 키가 생성됩니다. 모든 서비스가 정상 상태가 되면 MESH는 웹 UI에 로그인할 수 있는 일회성 API 키를 출력합니다.
Control plane API key (enter this in the web UI to log in):
<SECRET API KEY>
3. 웹 UI 접속
컨트롤 플레인 URL로 이동하여 로그인할 때 API 키를 입력하세요.
https://<슬러그>.tunnels.meshforensics.app
웹 UI는 Let's Encrypt에서 자동으로 발급된 인증서를 통해 HTTPS로 제공됩니다.
[!IMPORTANT] 기본 ACL은 각 네트워크의 노드가 서로 통신할 수 있도록 허용합니다. 프로덕션 배포에서는 제한적인 정책을 사용해야 합니다. ACL 탭에서 수정하세요.
MESH 네트워크가 노드를 수용할 준비가 되었습니다.
노드 등록 및 포렌식 워크플로에 대한 설명서를 참조하세요.
4. 해체
task down은 MESH 네트워크를 파괴하고 모든 사용자를 연결 해제합니다. Ephemeral 배포 및 Automatic 도메인을 선택한 경우 이들 및 모든 흔적이 제거되어 더 이상 접근할 수 없습니다.
아키텍처 요약
MESH는 Tailscale 프로토콜을 대폭 수정한 포크이지만 Tailscale 인프라가 필요하지 않습니다.
피어투피어 종단간 암호화 채널은 UDP 홀 펀칭을 사용하여 설정됩니다. UDP를 사용할 수 없거나 차단된 경우 E2EE HTTPS 릴레이( DERP 릴레이라고 함)로 장애 조치됩니다. DERP(Designated Encrypted Relay for Packets) 프로토콜 DERP 서버는 직접 피어투피어 연결을 설정할 수 없을 때 노드 간 트래픽을 중계합니다.
MESH는 동일한 모델을 따릅니다. 기본적으로 운영자가 자체 DERP 인프라( MESH의 컨트롤 플레인을 사용하여 구성 가능)를 구성하지 않은 경우 MESH는 Tailscale의 공용 DERP 서버를 사용하여 특히 제한적인 네트워크 환경에서 안정적인 연결을 보장합니다. 그러나 MESH는 Tailscale 인프라가 필요하지 않습니다. 운영자는 컨트롤 플레인(임베디드 DERP 구현 포함)을 통해 자체 DERP 서버를 배포하고 사용할 수 있습니다. 따라서 원할 경우 MESH를 완전히 자체 호스팅할 수 있습니다.
DERP 서버는 순수 전송 릴레이로만 작동합니다. 기기 간 연결을 용이하게 하지만 교환되는 데이터에 대한 가시성은 없으며, 데이터는 종단간 암호화된 상태로 유지됩니다.
개선 사항(이에 국한되지 않음):
- 포렌식 작업에 맞춤화된 UI를 갖춘 자체 호스팅 가능한 조정 서버
- 자동 WireGuard 키 배포
- 선택적 AmneziaWG 기반 전송 난독화
- 암호화된 HTTPS 릴레이 대체
컨트롤 플레인은 피어 검색 및 키 교환만 담당합니다.
포렌식 트래픽은 가능할 때마다 엔드포인트 간에 직접 흐릅니다.
주요 기능
- 피어투피어 암호화 포렌식 서브넷
- 자동 WireGuard / AmneziaWG 키 관리
- ACL 적용이 가능한 자체 호스팅 컨트롤 플레인
- CGNAT 할당 가상 TUN 인터페이스
- ADB-over-WiFi 및 libimobiledevice 호환성
- AndroidQF + MVT 통합
- 포렌식 아티팩트의 안전한 전송
- 선택적 킬 스위치 격리
- 빠른 메시 생성 및 해체
VPN을 사용하지 않는 이유?
기존 VPN 및 허브 앤 스포크 아키텍처는 다음과 같은 문제를 야기합니다:
- 영구 인프라 위험
- 중앙 집중식 트래픽 분석 지점
- 단일 장애 지점
- 운영 노출 증가
MESH는 조정과 데이터 전송을 분리합니다:
- 컨트롤 플레인은 포렌식 트래픽을 전달하지 않음
- 가능한 경우 피어 연결은 직접 연결
- 릴레이는 전송 대체 수단이지 아키텍처 허브가 아님
- 메시는 일회용이며 작업 범위 지정
MESH는 영구적인 엔터프라이즈 네트워킹보다는 일시적이고 위험도가 높은 환경에 최적화되어 있습니다.
리포지토리 구조
android-client— Android 엔드포인트 APKcontrol-plane— 조정 서버analyst— 분석가 CLI 클라이언트
개발자 참고 사항
워크플로:
- 개발은 브랜치에서 이루어지며 PR을 통해 병합됩니다.
- 릴리스는 버전 태그로 생성됩니다.
- GitHub Actions는 태그된 릴리스를
mesh-analyst-client에 미러링합니다. - 외부 Go 프로젝트는
main이 아닌 명시적 버전 태그에 의존해야 합니다.
라이선스
MESH는 GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later)에 따라 라이선스가 부여됩니다.
이 소프트웨어의 일부는 BSD 3-Clause License에 따라 라이선스가 부여된 Tailscale의 파생 작업입니다. 원래 Tailscale 저작권 및 라이선스는 BSD-3-Clause 요구 사항에 따라 보존됩니다. AmneziaWG/Wireguard 코드는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 .licenses/를 참조하세요.
BARGHEST의 모든 수정 및 추가 사항은 Copyright (c) BARGHEST이며 AGPL-3.0-or-later에 따라 라이선스가 부여됩니다.
법적 고지
WireGuard는 Jason A. Donenfeld의 등록 상표입니다.

