우크라이나의 컴퓨터를 손상시키는 WhisperGate 멀웨어
이 보고서는 Microsoft 위협 인텔리전스에서 2022년 1월 15일에 보고한 WhisperGate 멀웨어에 대한 기술 개요입니다. 이 문서는 멀웨어의 TTP 및 완화 조치에 대한 개괄적인 개요를 찾고 있는 사용자를 위한 것입니다.
Executive Summary
위스퍼게이트는 우크라이나의 정부, 비영리 단체, 정보 기술 조직 등 여러 산업을 대상으로 진행 중인 작전에서 사용되고 있는 새로운 멀웨어 제품군입니다. 이 멀웨어는 피해자의 MBR을 파괴하고 연결된 저장 장치의 파일을 손상시키도록 설계된 3단계 MBR(마스터 부트 레코드) 와이퍼입니다. 멀웨어의 각 단계는 개별적인 작업을 수행합니다. 1단계는 몸값 메모와 코드로 MBR을 덮어쓰고, 2단계는 발견된 각 드라이브의 섹션을 덮어쓰는 코드를 다운로드하고 실행하며, 3단계는 Discord의 CDN에서 JPG 첨부 파일로 호스팅되는 3단계를 다운로드하여 실행하고, 3단계는 191개의 파일 확장자 목록과 일치하는 모든 파일을 손상시킵니다. 멀웨어 개발자는 특히 3단계에서 탐지 및 분석을 회피하기 위해 난독화를 사용합니다. WhisperGate는 파일과 드라이브를 더 이상 복구할 수 없거나 사용할 수 없을 정도로 Windows 시스템을 지우고 손상시킵니다. 위스퍼게이트의 공격 동기와 배후에 있는 위협 행위자에 대한 자세한 내용은 아직 밝혀지지 않고 있습니다. 이러한 공격은 러시아의 우크라이나 침공과 2022년 1월 14일에 발생한 우크라이나 정부 웹사이트 훼손에 대한 위험이 고조되는 상황에서 발생했습니다.
주요 판단
- 이 글을 쓰는 시점에서 위스퍼게이트를 배포하는 위협 행위자 그룹은 알려진 위협 그룹의 소행은 아니지만, 다른 연구자들은 이 그룹이 국가의 후원을 받는 것으로 의심하고 있습니다.
- 데이터 백업과 관련하여 랜섬웨어에 대해 취한 것과 동일한 예방 조치를 적용하여 WhisperGate의 데이터 파괴 기능의 영향을 완화해야 합니다.
- 위스퍼게이트 멀웨어는 우크라이나 이외의 다른 공격에서 사용된 적이 없는 것으로 보아 이 작전을 위해 특별히 개발되었을 가능성이 있습니다.
배경
2022년 1월 15일, Microsoft는 우크라이나의 여러 조직을 대상으로 하는 파괴적인 멀웨어 작전을 보고했습니다. 이 활동은 기존 위협 행위자 그룹에 귀속되지 않았으므로 알려지지 않은 새로운 위협 활동 클러스터를 추적하는 데 사용되는 Microsoft의 DEV-#### 명명 규칙을 사용하여 추적하고 있습니다. 이 그룹은 최종적으로 네임드 액터로 전환되거나 기존 액터와 병합될 때까지 DEV-0586이라는 명칭을 부여받았습니다. Microsoft는 2022년 1월 13일부터 이 악성 활동을 발견하기 시작했으며, 조사를 통해 WhisperGate로 추적 중인 새로운 멀웨어군을 발견했습니다.
위스퍼게이트 기술적 분석
위스퍼게이트 멀웨어는 아래 그림 1에서 자세히 설명하는 3단계로 구성되어 있습니다. 이 3단계는 모두 머신 재부팅 전에 실행해야 효과를 극대화할 수 있습니다. 1단계는 피해자의 부팅 디스크의 MBR을 손상시키고 재부팅 시 시스템의 다른 드라이브도 손상시킵니다. 2단계는 첨부 파일 시스템과 네트워크 드라이브에 있는 파일을 손상시키는 데 사용되는 3단계를 다운로드합니다. 1단계 또는 2단계 중 하나라도 성공적으로 실행되면 파일이 손상됩니다. 테스트 결과, 위스퍼게이트의 1단계 멀웨어에 의해 GUID 파티션 테이블(GPT) 디스크가 복구 불가능하게 파괴되지 않으므로 해당 단계의 멀웨어에 부분적으로 면역이 되는 것으로 나타났습니다. 2단계와 3단계가 포함된 것은 GPT 스타일의 부팅 디스크를 사용하는 피해자들도 멀웨어의 영향을 받을 수 있도록 하기 위한 것으로 추측됩니다. 그러나 3단계는 원격 네트워크 드라이브도 표적으로 삼기 때문에 피해자의 부팅 디스크에 사용된 파티셔닝 방식에 관계없이 추가 피해를 유발할 수 있습니다.
그림 1: 위스퍼게이트 멀웨어의 단계(출처: 레코디드 퓨처)
1단계: MBR(마스터 부트 레코드) 덮어쓰기
1단계는 Windows에서 GNU 컴파일러 컬렉션(GCC) 6.3.0을 지원하는 Minimalist GNU for Windows(MinGW) 개발 환경을 사용하여 컴파일합니다. 이 바이너리의 주요 목적은 "\\.\PhysicalDrive0"의 MBR을 머신이 재부팅될 때까지 효과가 나타나지 않는 사용자 지정 MBR로 덮어쓰는 것입니다. 시작 시 컴퓨터의 BIOS는 MBR을 찾을 때 사용할 디스크 순서를 결정합니다. PhysicalDrive0의 MBR을 덮어쓰는 것은 해당 디스크가 BIOS에서 가장 먼저 검사할 디스크라는 가정을 하는 것이며, 이는 일반적으로 합리적인 가정입니다. 머신이 재부팅되고 사용자 지정 MBR 코드가 실행되면 그림 2와 같이 랜섬노트와 함께 사용자에게 표시됩니다.
그림 2: 위스퍼게이트 1단계가 실행된 후 표시되는 랜섬노트(출처: Recorded Future)
랜섬 메모를 표시한 후 MBR 코드는 각 드라이브의 섹션을 그림 3에 표시된 내용으로 199바이트 간격으로 덮어씁니다. 각 드라이브에 기록되는 콘텐츠는 0x00부터 순차적으로 증가하여 6번째 바이트에서 다릅니다.
그림 3: 디스크에 기록되는 콘텐츠의 헥스 보기(출처: Recorded Future)
MBR 코드는 그림 4와 같이 인터럽트 0x13을 통해 확장 쓰기 함수 호출을 수행하여 각 드라이브에 콘텐츠를 여러 번 씁니다.
그림 4: 드라이브를 열거하고 발견된 각 디스크의 섹션을 덮어쓰는 MBR 명령어(출처: Recorded Future)
피해자가 부팅 디스크에 GPT 스타일의 파티션 테이블을 사용하는 경우 1단계는 효과적이지 않습니다. 재부팅하면 Windows는 부팅할 수 없지만 디스크 드라이브를 손상시키는 WhisperGate의 MBR 코드는 실행되지 않습니다. GPT 디스크는 디스크 끝에 GPT 테이블의 백업 복사본을 유지하므로, 피해자는 그림 5와 같이 라이브 Linux 배포를 실행하고 gdisk 유틸리티의 복구 명령을 사용하여 GPT 테이블을 복원할 수 있습니다.
그림 5: gdisk 복구 명령으로 손상된 GPT 테이블 복원하기(출처: Recorded Future)
2단계: 다운로더
2단계는 .NET으로 작성되었으며, 주요 기능은 3단계 멀웨어를 다운로드하여 실행하는 것입니다. 20초 후에 실행이 시작되며, "_powershell -enc UwB0AGEAcgB0AC0AUwBsAGUAZQBwACAALQBzACAAMQAwAA==_"라는 PowerShell 명령을 사용하여 "_Start-Sleep -s 10_"으로 디코딩합니다. 10초 지연은 두 번 실행되며 멀웨어가 AV 엔진의 탐지를 회피하는 데 사용될 수 있습니다. 이 멀웨어는 https://cdn[.]discordapp[.]com에 호스팅된 Discord 첨부 파일에서 세 번째 단계를 검색합니다, Tbopbh.jpg라는 이름의 파일입니다. 2단계에서는 JPG 파일의 바이트를 반전시키고, JPG 파일을 .NET 어셈블리로 반사적으로 로드한 다음, 내보낸 함수 "_Ylfwdwgmpilzyaph_"를 호출합니다.
3단계: 파일 손상기
3단계 멀웨어는 .NET으로 작성되었으며 eazfuscator로 난독화되어 있습니다. 실행 시 2개의 임베디드 PE 실행 리소스(AdvancedRun 및 Wagybg)가 압축을 풀고, 디코딩하고, GZIP 압축을 해제합니다. 다음으로 .vbs 스크립트는 "%AppData%\local\Temp\Nmddfrqqrbyjeygggda.vbs"에 작성되고 Wscript.exe로 실행됩니다. 그림 6에 표시된 스크립트는 Windows Defender에서 전체 C 드라이브를 검사 대상에서 제외하는 데 사용됩니다.
그림 6: "%AppData%\local\Temp\Nmddfrqqrbyjeygggda.vbs"의 내용(출처: Recorded Future)
그런 다음 AdvancedRun을 실행하여 Windows Defender 서비스를 중지하고 해당 프로그램 데이터 폴더를 삭제합니다. AdvancedRun은 NirSoft에서 개발한 양성 소프트웨어로, 다양한 설정에서 프로그램을 실행하는 데 사용됩니다. 작성자는 Windows Defender를 비활성화하는 명령을 실행하는 데 필요한 TrustedInstaller 권한으로 프로그램을 실행할 수 있기 때문에 AdvancedRun을 사용했습니다. 그림 7과 8은 AdvancedRun.exe를 실행하는 데 사용되는 명령줄 인수를 보여줍니다. "_/RunAs 8_" 인수를 사용하면 AdvancedRun이 TrustedInstaller 권한을 사용하도록 지시합니다.
그림 7: "AdvancedRun.exe" 윈도우 디펜더 서비스 중지(출처: 레코딩된 미래)
그림 8: "AdvancedRun.exe" 윈도우 디펜더의 프로그램 데이터를 재귀적으로 삭제하는 방법(출처: 레코디드 퓨처)
마지막으로, 설치유틸.exe 프로세스에서 프로세스 할로우를 통해 Wagybg를 실행합니다. 2019년에도 피싱 캠페인의 일환으로 비슷한 기법이 Netwire 트로이 목마를 로드하는 데 사용되었습니다. InstallUtil은 Microsoft에서 제작하고 .NET 프레임워크의 일부로 배포하는 양성 프로그램입니다.
이 단계의 멀웨어는 파일 손상을 수행하는 데 사용됩니다. 먼저 GetLogicalDrives()를 호출하여 시스템의 논리 드라이브 목록을 가져온 다음, 고정 미디어 또는 네트워크 드라이브인지 식별합니다. 이 멀웨어는 아래 그림 9에 표시된 191개의 파일 확장자 중 1개로 끝나는 파일을 검색합니다. 그런 다음 각 파일의 처음 1MB를 0xCC 바이트로 덮어쓰는 방식으로 일치하는 파일을 손상시킵니다.
그림 9: 타깃 파일 확장자(출처: Recorded Future)
파일 손상을 완료한 후 손상자는 111.111.111[.]111로 5번의 핑 요청을 보냅니다. 를 클릭한 다음 그림 10과 같이 스스로 삭제합니다. 멀웨어가 핑 요청을 하는 이유는 정확히 알 수 없지만, 스스로 삭제하기 전에 시간 지연을 추가하거나 감염된 호스트의 기록을 유지하기 위한 것으로 추측됩니다.
그림 10: 파일 손상자가 사용하는 자동 삭제 기능(출처: Recorded Future)
완화 조치
조직은 위스퍼게이트 멀웨어의 파괴 기능으로부터 데이터를 보호하기 위해 오프사이트 백업 전략을 고려할 것을 권장합니다.
- 네트워크 세분화는 공격자와 멀웨어가 조직 네트워크의 다른 부분에 액세스하는 것을 방지할 수 있습니다. 이 솔루션은 대규모 네트워크를 더 작은 네트워크 세그먼트로 분할하는 것으로 방화벽, 가상 로컬 영역 네트워크 및 기타 분리 기술을 통해 수행할 수 있습니다.
- 민감한 고객 정보는 인터넷에서 분리되어 있거나 나머지 기업 네트워크와 분리된 시스템에 보관하는 것이 좋습니다. 위스퍼게이트 멀웨어는 피해 시스템의 파일을 변조하기 때문에 매우 민감한 고객 데이터를 인터넷에 접속할 수 없거나 나머지 네트워크에 접속할 수 없는 시스템으로 옮기면 위스퍼게이트 멀웨어가 해당 파일에 액세스할 수 있는 기회를 최소화할 수 있습니다.
- 침입 탐지 시스템(IDS), 침입 방지 시스템(IPS) 또는 네트워크 방어 메커니즘을 구성하여 언급된 외부 IP 주소에 대해 경고하도록 하고, 검토 후 해당 주소와의 연결 시도를 차단하는 것도 고려하세요.
- 원격 액세스 솔루션이 일상 업무에 중요한 역할을 하는 경우, Citrix 및 RDP와 같은 모든 원격 액세스 서비스 및 프로토콜은 2단계 또는 다중 인증을 사용하여 구현해야 합니다.
- 의심스러운 파일 수정 활동, 특히 사용자 디렉터리에서 대량의 파일 수정이 발생하는지 모니터링합니다.
- 스크립트를 실행하려면 스크립트에 서명해야 하도록 PowerShell의 실행 정책을 설정합니다. 이 기능은 전통적인 방식으로 실행되는 스크립트(예: 더블 클릭)에만 <command> 적용되며 명령줄에서 PowerShell 프로그램의 인수로 실행되는 base64 인코딩된 스크립트(예: powershell.exe )는 보호하지 못합니다.
- 일부 보안 관련 개선 사항이 추가된 버전 5와 같은 최신 버전의 PowerShell을 사용하세요.
- 안티맬웨어 검사 인터페이스(AMSI): 이 기능은 Windows 10 및 Windows Server 2016에 도입되었으며 "파일 및 메모리 또는 스트림 검사, 콘텐츠 소스 URL/IP 평판 검사 및 기타 기술"을 제공하며 PowerShell, UAC, Windows 스크립트 호스트, JavaScript, VBScript 및 Office VBA 매크로와 통합할 수 있습니다. AMSI를 우회하는 방법에 대한 연구에 따르면 메모리 패치와 같은 보다 정교한 방법 중에서도 난독화(예: XOR 또는 base64 인코딩 "금지" 명령) 또는 간단한 실행 우회를 사용하여 AMSI를 우회할 수 있는 것으로 나타났습니다.
- 스크립트 및 명령 로깅이 활성화되어 있는지 확인합니다. 여기에는 다음이 포함됩니다: 모듈 로깅(스크립트의 일부, 난독화된 코드 및 출력용으로 형식이 지정된 일부 데이터를 포함하여 PowerShell 스크립트의 파이프라인 실행 기록), 스크립트 블록 로깅(실행된 스크립트 및 명령의 전체 내용을 포함하여 실행 기록) 및 전사(입력 및 출력을 포함하여 각 PowerShell 세션의 고유 기록을 생성)가 있습니다. 로깅이 반드시 악성 PowerShell의 실행을 막는 것은 아니지만, 어떤 종류의 악의적인 동작이나 지표가 관련되어 있는지 이해하는 데 도움이 될 수 있습니다.
전망
이 글을 쓰는 현재, DEV-0586은 우크라이나의 조직을 표적으로 삼는 데에만 WhisperGate를 사용하고 있는 것으로 보입니다. 어트리뷰션을 포함하여 이 위협 행위자에 대한 자세한 정보는 향후 며칠 또는 몇 주에 걸쳐 공개될 예정입니다. 이제 위스퍼게이트가 공개적으로 보고되고 보안 전문가들이 멀웨어에 대한 경고를 받았으므로, 위스퍼게이트 개발자가 탐지를 더 잘 회피하기 위해 와이퍼를 변경할 가능성이 있습니다.
관련