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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Medusa — 동적 함수 로딩, SOCKS5 프록시, 파일 작업, 셸코드 주입, macOS/Windows 포스트 익스플로잇 모듈을 갖춘 Mythic용 크로스플랫폼 C2 에이전트. | Kitploit
도구/GitHubGitHub/mythicagents/medusa
Penetration Testing FrameworksPrivilege EscalationExploit FrameworksLateral MovementShellcodePost-ExploitationCommand and ControlRed TeamingRemote Access ToolShellcode GenerationPayload Development
2085221일 전Kitploit 검토 완료

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
GitHub
mythicagents/medusa

Medusa

동적 함수 로딩, SOCKS5 프록시, 파일 작업, 셸코드 주입, macOS/Windows 포스트 익스플로잇 모듈을 갖춘 Mythic용 크로스플랫폼 C2 에이전트.

저장소 보기

Medusa Logo

Medusa

Medusa는 Python 3.8과 Python 2.7을 모두 지원하는 크로스플랫폼 에이전트입니다.

설치

Medusa를 설치하려면 원격 컴퓨터에 Mythic v3가 설치되어 있어야 합니다. Mythic 설치 방법은 Mythic 프로젝트 페이지에서 확인할 수 있습니다.

Mythic 설치 루트에서 다음 명령을 실행합니다:

./mythic-cli install github https://github.com/MythicAgents/Medusa.git

설치가 완료되면 새 에이전트를 빌드하기 위해 Mythic을 다시 시작합니다.

RabbitMQ 구성 참고 사항

Payload_Type/medusa/rabbitmq_config.json 파일은 템플릿이며 Mythic 환경과 일치해야 합니다.

  • rabbitmq_password를 Mythic의 RABBITMQ_PASSWORD 값으로 설정합니다 (일반적으로 Mythic .env 파일에 있습니다).
  • rabbitmq_host를 RabbitMQ 호스트/컨테이너 이름으로 설정합니다 (docker-compose 구성에서는 주로 mythic_rabbitmq, 로컬 바인딩의 경우 127.0.0.1).
  • mythic_server_host를 Mythic 서버 호스트/컨테이너 이름으로 설정합니다 (docker-compose 구성에서는 주로 mythic_server, 로컬 바인딩의 경우 127.0.0.1).

주요 기능

  • 디스크에 에이전트 기능이 노출되는 것을 제한하기 위한 에이전트 함수의 동적 로드/언로드
  • 사용자 정의 스크립트에서 사용할 Python 모듈의 인메모리 로드
  • 크로스플랫폼 SOCKS5 프록시
  • macOS 클립보드 읽기, 스크린샷 캡처 및 TCC 데이터베이스 파싱
  • 업로드/다운로드가 가능한 파일 브라우저 호환성
  • 동적 Python 코드의 Eval()
  • 기본 인증 프록시 호환성

명령어 매뉴얼 빠른 참조

기본 에이전트와 포함된 명령어는 모두 Python 내장 라이브러리를 사용하므로 작동에 추가 패키지가 필요하지 않습니다. 에이전트는 명령어를 스레드로 실행하므로 오래 걸리는 업로드나 다운로드가 기본 에이전트를 차단하지 않습니다.

일반 명령어

macOS 명령어

Windows 명령어

Python 버전

Medusa 에이전트의 두 버전 모두 내장 라이브러리로 작성된 AES256 HMAC 구현을 사용하므로 (여기에서 각색), 표준 Python 설치 외에 추가 종속성이 필요하지 않습니다. 따라서 에이전트는 Windows, Linux, macOS 호스트에서 작동해야 합니다. 이 암호화 구현은 대용량 파일(스크린샷, 다운로드 등) 처리 시 일부 오버헤드를 발생시키지만 사용 가능한 수준입니다.

Py2 vs Py3 명령어

Payload_Type/Medusa/agent_code 디렉터리 안에는 py2와 py3 접미사가 있는 base_agent 파일이 있습니다. 마찬가지로 개별 함수 파일에서도 유사한 파일 확장자를 볼 수 있습니다.

builder.py 스크립트는 이를 읽어 먼저 Medusa 에이전트의 올바른 기본 Python 버전을 선택합니다. 그런 다음 builder.py는 선택된 Python 버전에 특화된 명령어를 포함합니다. 명령어에 .py 확장자만 있는 경우, Py2와 Py3 버전 간에 대체 코드가 필요하지 않다는 가정 하에 기본적으로 이것이 사용됩니다.

스레드 작업

Medusa는 작업 실행에 기본 스레딩을 사용합니다. 잠재적으로 오래 실행되는 작업은 jobkill 작업의 신호에 응답하는 '중지 확인'으로 구현할 수 있습니다. 이는 아래와 유사한 코드 스니펫으로 구현할 수 있습니다:

root@kitploit:~
if [task for task in self.taskings if task["task_id"] == task_id][0]["stopped"]:
  # Some job-specific tidy up
  return "Job stopped."

이 핸들러는 download, upload, watch_dir, screenshot 명령어에서 구현된 것을 확인할 수 있습니다.

또한 장기 실행 작업이 지속적인 출력을 제공해야 하는 경우, 기본 에이전트에 포함된 sendTaskOutputUpdate 함수를 사용하여 작업 완료 전에 Mythic을 업데이트할 수 있습니다. 지속적인 출력을 제공하고 jobkill할 수 있는 더미 함수는 아래에서 확인할 수 있습니다.

root@kitploit:~
def dummyFunction(self, task_id):
  while(True):
      # Check if we've got a stop signal.
      if [task for task in self.taskings if task["task_id"] == task_id][0]["stopped"]: return "Job stopped."

      # Send output back to Mythic
      self.sendTaskOutputUpdate(task_id, "We're still running")

      time.sleep(10)

지원되는 C2 프로파일

Medusa는 현재 두 가지 C2 프로파일을 지원합니다: http (AES256 HMAC 암호화 유무 모두) 및 azure_blob.

HTTP 프로파일

HTTP 프로파일은 기본 비동적 프로파일을 통해 Mythic 서버로 콜백합니다. 작업 할당은 GET 요청, 응답은 POST 요청입니다.

감사의 말

  • 브라우저 스크립트 및 에이전트 코드는 @its_a_feature_와 @djhohnstein의 작업을 각색했습니다.
  • Cedric Owens의 MacC2 및 이 블로그 게시물
  • Chris Ross의 EmPyre 및 이 블로그 게시물.
  • 여기에서 찾은 암호화 기술.
  • flaticon.com의 에이전트 아이콘
도구 다운로드
CommandSyntaxDescription
catcat path/to/file파일 내용을 읽고 출력합니다.
cdcd [.. dir]작업 디렉터리를 변경합니다 (..는 상위 디렉터리로 이동).
cpcp src_file_or_dir dst_file_or_dir파일 또는 폴더를 대상 위치로 복사합니다.
cwdcwd작업 디렉터리를 출력합니다.
downloaddownload [path]대상 시스템에서 파일을 다운로드합니다.
download_bulkdownload_bulk [path1] [path2] ...하나의 작업으로 대상 시스템에서 여러 파일을 다운로드합니다.
exitexit콜백을 종료합니다.
envenv환경 변수를 출력합니다.
eval_codeeval_code [commands]Python 코드를 실행하고 출력을 반환합니다.
jobkilljobkill [task id]장기 실행 작업에 중지 신호를 보냅니다.
jobsjobs다운로드와 같은 장기 실행 작업을 나열합니다.
list_moduleslist_modules [module_name]인메모리 모듈 또는 특정 모듈의 전체 파일 목록을 나열합니다.
loadload command에이전트에 새 기능을 로드합니다.
load_moduleload_module압축된 Python 모듈을 메모리에 로드합니다 (여기와 여기에서 각색).
load_scriptload_script에이전트를 통해 Python 스크립트를 로드하고 실행합니다.
lsls [. path][path]의 파일과 폴더를 나열하거나 .을 사용하여 현재 작업 디렉터리를 나열합니다.
mvmv src_file_or_dir dst_file_or_dir파일 또는 폴더를 대상 위치로 이동합니다.
pip_freezepip_freeze시스템에 설치된 패키지를 프로그래밍 방식으로 나열합니다.
ptypty [/bin/bash] / pty self / pty fork대화형 PTY 세션을 엽니다. 모드: spawn은 PTY로 프로그램을 실행하고, self는 실시간 에이전트 상태로 프로세스 내 Python REPL을 열며, fork는 스냅샷된 상태로 에이전트를 Python REPL로 포크합니다 (Linux/macOS만 해당).
rmrm file_or_dir파일 또는 폴더를 삭제합니다.
shellshell [command]subprocess.Popen()을 사용하여 생성되는 셸 명령을 실행합니다. 명령이 완료될 때까지 대기하므로 에이전트를 차단하지 않도록 주의하세요.
sockssocks start/stop [port]Medusa 에이전트를 통한 SOCKS5 프록시를 시작/중지합니다.
sleepsleep [seconds] [jitter percentage]에이전트의 콜백 간격을 초 단위로 설정합니다.
unloadunload command에이전트에서 기존 기능을 언로드합니다.
unload_moduleunload_module module_name이전에 메모리에 로드된 Python 모듈을 언로드합니다.
uploadupload파일을 시스템의 원격 경로에 업로드합니다.
watch_dirwatch_dir path seconds대상 디렉터리의 변경 사항을 지정된 주기로 폴링하여 감시합니다.
CommandSyntaxDescription
clipboardclipboard클립보드 내용을 출력합니다 (Cedric Owens가 여기에 설명한 Objective-C API 사용. macOS 전용, Python 2.7 전용).
list_appslist_appsmacOS 애플리케이션을 나열합니다 (Python 2.7 전용, macOS 전용).
list_tcclist_tcc [path]macOS TCC 데이터베이스의 항목을 나열합니다 (전체 디스크 접근 권한 필요, 현재는 Big Sur에서만 지원).
screenshotscreenshot스크린샷을 캡처합니다 (Objective-C API 사용, macOS 전용, Python 2.7 전용).
spawn_jxaspawn_jxaosascript 프로세스를 생성하고 Javascript 내용을 파이프로 전달합니다.
vscode_list_recentvscode_list_recent [state_db]VSCode에서 최근에 연 파일과 폴더를 나열합니다.
vscode_open_editsvscode_open_edits [backup_dir_path]VSCode에서 파일에 대한 저장되지 않은 변경 사항을 나열합니다.
vscode_watch_editsvscode_watch_edits [path to remote dir] [poll_interval]지정된 간격으로 VSCode 백업 디렉터리를 폴링하여 저장되지 않은 편집 내용을 확인합니다.
CommandSyntaxDescription
shinjectshinjectCreateRemoteThread를 사용하여 대상 PID에 셸코드를 주입합니다 (Windows 전용 - 여기에서 각색).
load_dllload_dll dll_path dll_export디스크의 DLL을 로드하고 내보낸 함수를 실행합니다 (참고: 이 DLL은 완료 시 int 값을 반환해야 합니다. 예를 들어 msfvenom으로 생성된 DLL은 완료 시 에이전트를 종료시킵니다).
list_dllslist_dlls [pid]로컬 또는 대상 프로세스의 프로세스 메모리(PEB)를 읽어 로드된 DLL 목록을 가져옵니다 (Python 3 전용)
pspsPID, 프로세스 이름, 아키텍처, 바이너리 경로 등 제한된 프로세스 정보를 가져옵니다 (Python 3 전용)
ps_fullps_fullPPID, 무결성 수준, 명령줄을 포함한 전체 프로세스 정보를 가져옵니다 (Python 3 전용)
killkill프로세스 ID로 프로세스를 종료합니다 (Python 3 전용)