Athena 및 Apollo 에이전트 트래픽을 Telegram 봇 간 메시지를 통해 터널링하여 암호화된 페이로드를 Mythic의 Push C2 gRPC 서비스를 통해 Mythic에 브리징하는 Mythic C2 프로필입니다.
Telegram은 Athena 및 Apollo 에이전트를 위한 Mythic C2 프로필을 제공합니다. 이는 Telegram 비공개 봇 간 메시지를 전송 수단으로 사용하고, Mythic의 Push C2 gRPC 서비스를 컨트롤러 브리지로 사용합니다.
Athena 또는 Apollo 에이전트 봇 <-> Telegram Bot API <-> 컨트롤러 봇 <-> Telegram C2 서비스 <-> Mythic
실행 중인 각 에이전트는 자체 Bot API 토큰을 사용합니다. C2 서비스는 하나의 컨트롤러 봇 토큰을 사용합니다. 두 봇 모두 Telegram의 봇 간 통신 모드(Bot-to-Bot Communication Mode)가 활성화되어 있어야 합니다.
메시지는 작은 JSON 봉투를 사용하며 sendMessage를 통해 전송되기 전에 2,800자 청크로 분할됩니다. 에이전트 페이로드는 aes256_hmac 암호화를 유지하며, Telegram 서비스는 암호화된 Mythic 메시지를 복호화하지 않고 전달합니다.
Mythic 디렉터리에서 다음 명령을 실행하세요:
./mythic-cli install github https://github.com/DavidCarliez/mythic_telegram_profile
로컬 개발의 경우 체크아웃을 대신 설치하세요:
./mythic-cli install folder /path/to/telegram -f
동일한 Mythic 배포에 지원되는 에이전트 포크 중 하나를 설치하세요:
# Athena
./mythic-cli install github https://github.com/DavidCarliez/Athena -b telegram-c2
# Apollo
./mythic-cli install github https://github.com/DavidCarliez/Apollo -b telegram-c2
getUpdates 소비자는 하나의 업데이트 큐를 공유하므로 동시 페이로드에 토큰을 재사용하지 마세요.비공개 봇 간 메시지는 두 봇 모두에서 통신 모드가 필요합니다. Telegram은 Bot-to-Bot Communication 가이드에서 이 요구 사항을 문서화하고 있습니다.
Mythic에서 C2 Profiles를 열고 telegram의 작업을 확장한 후 View/Edit Config를 선택합니다. 다음을 설정하세요:
| Key | Value |
|---|---|
botToken | BotFather에서 받은 컨트롤러 봇 토큰 |
apiBase | 호환되는 로컬 Bot API 서버를 사용하지 않는 한 https://api.telegram.org |
pollTimeout | 1초에서 50초 사이의 롱 폴링 타임아웃 |
mythicGrpc | Mythic Push C2 gRPC 엔드포인트; 일반적인 Mythic 배포에서는 제공된 값을 유지하세요 |
구성을 저장한 후 프로필을 시작하세요.
Athena 또는 Apollo를 빌드할 때 telegram C2 프로필을 선택하고 다음을 제공하세요:
| Parameter | Description |
|---|---|
bot_token | 페이로드 전용 에이전트 봇의 토큰 |
controller_bot | 컨트롤러 봇 사용자 이름, @ 포함 또는 미포함 |
api_base | Telegram Bot API 기본 URL |
message_checks | 각 컨트롤러 응답을 기다리는 동안의 최대 롱 폴링 횟수 |
time_between_checks | 초 단위 롱 폴링 타임아웃 |
callback_interval | 초 단위 에이전트 콜백 간격 |
callback_jitter | 에이전트 콜백 지터 백분율 |
AESPSK | aes256_hmac 메시지 암호화 |
user_agent | Telegram으로 전송되는 HTTP User-Agent |
proxy_* | 선택적 HTTP 프록시 설정 |
killdate | 페이로드 만료 날짜 |
AESPSK를 활성화 상태로 유지하세요.getUpdates 호출이 서로의 응답을 소비하게 됩니다.각 Telegram 텍스트 메시지는 다음 필드를 가진 JSON 객체를 포함합니다:
v: 프로토콜 버전, 현재 1sender_id: 에이전트 프로세스에서 생성된 임의 경로 식별자client_id: 응답 경로 식별자to_server: 방향 플래그packet_id: 청크 세트 식별자reply_to: 컨트롤러 응답에 의해 확인된 요청 식별자sleep: 초 단위 현재 에이전트 콜백 간격jitter: 현재 에이전트 콜백 지터 백분율chunk: 0부터 시작하는 청크 인덱스chunks: 총 청크 수, 256으로 제한됨message: 암호화된 Mythic 메시지 조각불완전한 청크 세트는 10분 후에 만료됩니다.