스마트로더, Oura Ring MCP 복제하여 공급망 공격 진행
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
SmartLoader는 가짜 GitHub 계정과 복제된 Oura Ring MCP 서버를 사용하여 MCP 레지스트리를 오염시켰습니다. 트로이화된 서버는 개발자 자격 증명, 암호화 지갑 데이터 및 건강 정보를 훔치기 위한 StealC 인포스틸러를 전달했습니다. 이 활동은 AI 지원 건강 통합이 공급망의 발판이 될 수 있음을 보여줍니다.
조사
연구원들은 진짜 Oura MCP 레포지토리를 포크하고 유사한 모양을 게시한 최소한 5개의 조작된 GitHub 프로필을 맵핑했습니다. 악의적인 포크는 새로운 계정 하에 푸시되고 MCP 레지스트리에 제출되었습니다. 동적 분석을 통해 사용자 AppData 폴더에 준비된 LuaJIT 기반 페이로드와 Realtek 오디오 드라이버로 가장한 예약 작업을 통해 지속성이 유지되는 것이 발견되었습니다.
완화
MCP 서버 인벤토리를 감사하고 설치 전 출처 확인을 강제하며 AppData에서 실행 파일을 시작하는 예약 작업에 대한 경고를 시행하십시오. 외부 유출 통제 조치를 적용하고 알려진 암호화폐 및 C2 엔드포인트로의 트래픽을 차단하십시오. 승인 시 GitHub 기여자 기록과 레포지토리 계보를 확인하십시오.
대응
탐지 시 워크스테이션을 격리하고 악성 작업을 종료하며 승인되지 않은 AppData 실행 파일을 제거하고 노출된 자격 정보와 API 키를 회전하십시오. 손상된 MCP 서버를 법의학적으로 검토하고 reinfection을 방지하기 위해 종속성 검사를 강화하십시오.
graph TB %% 클래스 정의 classDef action fill:#99ccff classDef malware fill:#ffcc99 classDef process fill:#ff9999 classDef file fill:#cccccc classDef technique fill:#c0c0c0 %% 노드 정의 action_supply_chain[“<b>동작</b> – <b>T1195.001 공급망 침해</b><br/><b>설명</b>: 공격자가 소프트웨어 공급망을 침해하여 악성 코드를 배포함.”] class action_supply_chain action malware_trojanized_server[“<b>악성코드</b> – <b>이름</b>: Trojanized Oura MCP Server<br/><b>목적</b>: 손상된 패키지를 통해 전달됨.”] class malware_trojanized_server malware action_developer_install[“<b>동작</b> – <b>패키지 설치</b><br/><b>설명</b>: 개발자가 손상된 MCP 패키지를 설치함.”] class action_developer_install action file_resource_txt[“<b>파일</b> – <b>이름</b>: resource.txt<br/><b>기술</b>: T1027 난독화된 파일, T1059 명령 및 스크립트 인터프리터”] class file_resource_txt file malware_luajit_script[“<b>악성코드</b> – <b>LuaJIT 스크립트</b><br/><b>기술</b>: T1027, T1059”] class malware_luajit_script malware process_odmw[“<b>프로세스</b> – <b>이름</b>: ODMw.exe (LuaJIT 인터프리터)”] class process_odmw process process_odmy[“<b>프로세스</b> – <b>이름</b>: ODMy.exe (LuaJIT 인터프리터)”] class process_odmy process tech_T1053[“<b>기술</b> – T1053 예약 작업/작업<br/><b>설명</b>: 지속성을 위해 예약 작업 생성.”] class tech_T1053 technique process_task_odmw[“<b>프로세스</b> – <b>예약 작업</b>: RealtekAudioManager_ODMw”] class process_task_odmw process process_task_odmy[“<b>프로세스</b> – <b>예약 작업</b>: AudioManager_ODMy”] class process_task_odmy process malware_socket3[“<b>악성코드</b> – <b>이름</b>: socket3.lua (C2 페이로드)”] class malware_socket3 malware tech_T1102[“<b>기술</b> – T1102 웹 서비스<br/><b>설명</b>: 명령 및 제어를 위해 HTTP 기반 웹 서비스를 사용함.”] class tech_T1102 technique tech_T1041[“<b>기술</b> – T1041 C2 채널을 통한 유출<br/><b>설명</b>: 탈취한 데이터를 C2 채널을 통해 전송함.”] class tech_T1041 technique malware_stealc[“<b>악성코드</b> – <b>이름</b>: StealC Infostealer”] class malware_stealc malware tech_T1555_003[“<b>기술</b> – T1555.003 파일 내 자격 증명: 브라우저 비밀번호/쿠키<br/><b>설명</b>: 저장된 브라우저 자격 증명을 탈취함.”] class tech_T1555_003 technique tech_T1552_001[“<b>기술</b> – T1552.001 파일 내 자격 증명: 비밀번호 저장소<br/><b>설명</b>: Discord 토큰, 암호화폐 지갑, SSH 키 및 API 자격 증명을 탈취함.”] class tech_T1552_001 technique %% 공격 흐름을 보여주는 연결 action_supply_chain –>|전달| malware_trojanized_server malware_trojanized_server –>|설치됨| action_developer_install action_developer_install –>|생성| file_resource_txt file_resource_txt –>|포함| malware_luajit_script malware_luajit_script –>|드롭| process_odmw malware_luajit_script –>|드롭| process_odmy process_odmw –>|사용| tech_T1053 process_odmy –>|사용| tech_T1053 tech_T1053 –>|생성| process_task_odmw tech_T1053 –>|생성| process_task_odmy process_task_odmw –>|실행| process_odmw process_task_odmy –>|실행| process_odmy process_odmw –>|실행| malware_socket3 process_odmy –>|실행| malware_socket3 malware_socket3 –>|통신| tech_T1102 malware_socket3 –>|유출| tech_T1041 malware_socket3 –>|배포| malware_stealc malware_stealc –>|탈취| tech_T1555_003 malware_stealc –>|탈취| tech_T1552_001
공격 흐름
탐지
의심스러운 예약 작업 (감사를 통해)
보기
탐지할 IOCs (목적지 IP): SmartLoader가 Oura Ring MCP를 복제하여 공급망 공격을 배포
보기
탐지할 IOCs (원본 IP): SmartLoader가 Oura Ring MCP를 복제하여 공급망 공격을 배포
보기
AppData에서 의심스러운 LuaJIT 인터프리터 실행 [Windows 프로세스 생성]
보기
SmartLoader 가짜 GitHub 에코시스템 탐지 [웹 서버]
보기
모의 실행
전제 조건: 원격 측정 및 기준선 초기 점검이 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적 항법 기술의 정확한 실행을 자세히 설명합니다. 명령어와 설명은 식별된 TTP를 직접 반영하며 탐지 논리에 예상되는 정확한 원격 측정을 생성하는 것을 목표로 합니다.
-
공격 서사 및 명령:
위조된 GitHub 레포지토리를 호스팅하는 공격자가 (예:https://github.com/SiddhiBagul/MCP-oura) 합법적인 SmartLoader 페이로드를 복사하고 재브랜딩하여 공개적으로 접근 가능하게 만듭니다. 손상된 내부 호스트는 나중에 스크립트를 실행하여curl을 통해 악의적인 레포지토리를 다운로드합니다. 이 작업은 규칙의 인디케이터 URL 중 하나와 일치하는 HTTP GET 요청을 프록시에 기록합니다. -
회귀 테스트 스크립트:
#!/usr/bin/env bash # SmartLoader 가짜‑GitHub 다운로드 시뮬레이션 – Sigma 규칙을 트리거 MALICIOUS_URLS=( "https://github.com/SiddhiBagul/MCP-oura" "https://github.com/YuzeHao2023/MCP-oura" "https://github.com/punkpeye/MCP-oura" "https://github.com/dvlan26/MCP-oura" "https://github.com/halamji/MCP-oura" "https://github.com/yzhao112/MCP-oura" ) for url in "${MALICIOUS_URLS[@]}"; do echo "[+] 악성 레포지토리 가져오기: $url" # -L 플래그는 리디렉션을 따릅니다; -s는 진행 상태를 조용히 합니다; -o는 출력을 버립니다. curl -s -L -o /dev/null "$url" done echo "[+] 시뮬레이션 완료." -
정리 명령:
# 파일이 지속되지 않았지만, URL의 셸 기록을 지우세요 history -d $(history | grep -n "github.com" | cut -d: -f1) echo "[+] 정리 완료 – URL이 기록에서 제거되었습니다."