서드파티 Salt Minion 확장을 통한 Azure VM 명령 실행
Detection stack
- AIDR
- Alert
- ETL
- Query
요약
공격자는 Microsoft.Compute/virtualMachines/extensions/write 권한을 악용하여 Azure VM에서 임의의 코드를 실행할 수 있는 합법적인 타사 확장을 악용할 수 있습니다. Salt Minion 확장을 배포하고 이를 악성 Salt Master에 연결함으로써, 공격자는 악성 상태를 대상 시스템에 전파하고 루트 또는 SYSTEM 수준의 액세스를 얻을 수 있습니다. 이 기술은 정상적인 관리 자동화와 잘 섞일 수 있는 은밀한 명령 실행을 가능하게 합니다.
조사
보고서는 악성 Salt Master가 Azure VM을 제어하도록 구성하는 개념 증명 공격을 제시합니다. 조사는 Azure CLI를 통해 Salt Minion 확장이 배포되고 포트 4505와 4506을 통해 통신하도록 구성되는 방법을 보여줍니다. 연구원들은 curl 을 사용하여 관리 ID 토큰을 밴드 외 상호작용 서비스에 탈취하는 악성 Salt 상태를 실행합니다.
완화
조직은 확장 쓰기 권한이 포함된 역할, 즉 소유자, 기여자, 가상 머신 기여자를 엄격하게 제한해야 합니다. 최소 권한 원칙을 적용하면 무단 확장 배포를 방지하는 데 중요합니다. 보안 팀은 또한 의심스러운 가상 머신 확장 쓰기 작업 및 예기치 않은 타사 확장 설치 여부를 모니터링하기 위해 Azure 활동 로그를 모니터링해야 합니다.
대응
이 활동이 감지되면 보안 팀은 즉시 확장을 배포한 주체의 권한을 취소해야 합니다. Azure 활동 로그를 검토하여 소스 IP 주소, 영향을 받은 VM 및 확장 구성을 확인하십시오. 손상된 시스템에서 엔드포인트 포렌식을 수행하여 명령 실행을 평가하고, 도난당한 자격 증명을 식별하며, 무단 지속성 여부를 감지하십시오.
공격 흐름
탐지
Python이 의심스러운 프로세스를 생성함 (프로세스 생성 통해)
보기
밴드 외 상호작용 도메인 요청을 통한 의심스러운 명령 및 제어 (DNS 통해)
보기
Azure VM에서 명령 실행 (azureactivity 통해)
보기
탐지하기 위한 IOC (소스 IP): 타사 확장을 사용한 Azure VM 명령 실행 – Salt Minion
보기
탐지하기 위한 IOC (대상 IP): 타사 확장을 사용한 Azure VM 명령 실행 – Salt Minion
보기
Azure에서 악성 VM 확장의 무단 배포 탐지 [Azure 활동 로그]
보기
시뮬레이션 실행
전제 조건: 텔레메트리 및 기준선 사전 점검이 통과해야 합니다.
이유: 이 섹션은 탐지 규칙을 트리거하기 위해 설계된 적대적 기술(TTP)의 정확한 실행을 설명합니다. 명령 및 서사는 반드시 식별된 TTP를 직접 반영하고 탐지 논리에 의해 기대되는 정확한 텔레메트리를 생성해야 합니다. 추상적이거나 관련 없는 예는 오진을 초래합니다.
-
공격 서사 및 명령: 공격자는 Azure 테넌트 내에서 충분한 권한을 얻었습니다 (예: ‘가상 머신 기여자’ 역할의 손상된 서비스 주체 또는 사용자 계좌를 통해). 공격자는 전통적인 SSH/RDP 접근 없이 대상 VM에서 직접 명령을 실행하여 발판을 마련하기 위해 “사용자 정의 스크립트 확장”을 배포하기로 결정했습니다. 이 기술은 엔드포인트 기반 네트워크 제어를 우회하는 데 매우 효과적입니다. 공격자는 새로운 확장을 대상 VM에 ‘쓰기’ 위해 Azure CLI 명령을 실행합니다. 이 작업은
MICROSOFT.COMPUTE/VIRTUALMACHINES/EXTENSIONS/WRITEAzure 활동 로그에서 작동하며, 이는 우리 탐지 규칙이 포착하도록 설계된 정확한 텔레메트리입니다. -
회귀 테스트 스크립트:
# 시뮬레이션: 'EXTENSIONS/WRITE' 탐지 논리를 트리거하기 위해 더미 확장을 배포 # 실제 테스트 환경 값을 대체하십시오 RESOURCE_GROUP="TestRG" VM_NAME="TestVM" EXTENSION_NAME="MaliciousSaltMinionSim" echo "시뮬레이션 시작: $VM_NAME에 확장 $EXTENSION_NAME 배포 중..." az vm extension set --resource-group $RESOURCE_GROUP --vm-name $VM_NAME --name $EXTENSION_NAME --publisher Microsoft.Azure.Extensions --settings '{"commandToExecute": "echo "시뮬레이션 성공" > /tmp/pwned.txt"}' echo "시뮬레이션 명령 보냄. MICROSOFT.COMPUTE/VIRTUALMACHINES/EXTENSIONS/WRITE에 대한 Azure 활동 로그 확인" -
정리 명령:
# 정리: 환경을 원래 상태로 되돌리기 위해 모의 악성 확장을 제거 RESOURCE_GROUP="TestRG" VM_NAME="TestVM" EXTENSION_NAME="MaliciousSaltMinionSim" echo "정리 중: 확장 $EXTENSION_NAME 제거 중..." az vm extension delete --resource-group $RESOURCE_GROUP --vm-name $VM_NAME --name $EXTENSION_NAME echo "정리 완료."