복구 불가능? 신종 랜섬웨어 '비스트'의 등장
비스트(Beast) 랜섬웨어 그룹은 2025년 2월 서비스형 랜섬웨어(RaaS) 형태로 등장해, 같은 해 7월 토르(Tor) 기반 유출 사이트를 개설하며 활발한 활동을 이어가고 있다. 이들은 제조, 건설, 의료, 교육 등 다양한 산업을 공격 대상으로 삼아 전 세계 16개 조직의 데이터를 공개했다. SMB 스캔을 통한 네트워크 확산, 피싱 이메일(저작권 침해 경고, 가짜 이력서 위장), 비다르(Vidar) 인포스틸러 등을 이용해 침투하며, 동시에 복구 차단 기법을 병행한다. ChaCha20 기반 암호화와 섀도우 카피 삭제 등을 통해 복호화가 사실상 불가능한 수준의 피해를 유발한다. 이처럼 정교하게 진화한 비스트 랜섬웨어의 주요 특징과 대응 방안을 살펴보자.


[그림 1] BEAST 랜섬웨어 그룹의 DLS
초기 루틴
1. 공격 대상 시스템 필터링
비스트 그룹은 GetLocaleInfo, GetSystemDefaultUILanguage 같은 윈도우 API를 통해 시스템의 국가언어 설정을 확인하고, 미리 지정된 지역에 해당하면 실행을 중단하도록 설계돼 있다. 이러한 지역 회피 로직은 실행 환경의 로케일(Locale) 정보를 기준으로 공격 여부를 결정함으로써 특정 국가에서는 랜섬웨어 행위를 수행하지 않고 즉시 종료된다. 함수를 이용해 해당 랜섬웨어가 동작하는 대상 국가를 필터링하며, 각 WINAPI로부터 시스템의 기본 설정된 국가나 언어 설정을 기반으로 공격자가 사전에 명시한 지역일 경우에는 랜섬웨어 행위를 수행하지 않고 곧바로 종료된다.

[표 1] 공격 대상 시스템 필터링 목록
*로케일: 사용자의 언어, 국가, 사용자 인터페이스에서 사용자가 선호하는 표시 방식을 지정하는 설정
이 두 API에서 제외되는 국가들은 대부분 과거 구(舊) 소련에 속했거나 러시아의 정치·경제적 영향권에 있는 지역이다. 아르메니아, 아제르바이잔, 벨라루스, 조지아, 카자흐스탄, 키르기스스탄, 몰도바, 러시아, 타지키스탄, 투르크메니스탄, 우크라이나, 우즈베키스탄 등은 모두 과거 소비에트 연방 구성국으로, 현재도 CIS(독립국가연합) 혹은 러시아 주도의 지역 협력체에 포함된다.
따라서 이들 국가를 코드 상에서 제외하거나 실행을 회피하는 로직은 일반적으로 “러시아 및 CIS 지역 사용자는 감염·탐지 리스크가 높으므로 악성코드가 실행을 회피하는 지역 제한”의 목적으로 사용되는 것으로 해석된다.
2. .data 섹션 복호화
프로그램은 실행 시 .data 영역에서 “!!!CONFIG!!!”와 “!!!PASSWORD!!!” 문자열의 존재 여부를 확인하며, 두 문자열이 모두 존재하지 않을 경우 .data 영역의 상위 0x30바이트를 추출해 특정 문자열과 결합한 값을 활용해 ChaCha20 알고리즘을 구성한다. 이를 기반으로 .data 영역의 나머지 암호화된 데이터를 복호화한다.

[그림 2] ChaCha20 알고리즘의 구성 요소 “expand 32-byte k”

[그림 3] ChaCha20 알고리즘으로 복호화되는 .data 섹션
반면, “!!!CONFIG!!!”나 “!!!PASSWORD!!!”- 문자열이 존재하면 표준 복호화 절차를 건너뛰고 인자값(설정 파일 또는 패스워드) 확인 단계가 추가된다. 해당 인자를 받아 실행되는 변종이 존재할 가능성도 있다.
암호화 준비
1. 자가복제 및 Run키 등록
악성코드에는 일정 조건(플래그 설정)에 따라 스스로를 복제하고 Run 키에 등록해 지속성을 확보하는 로직이 있다. 이는 감염 후 재부팅에도 악성코드가 재실행되도록 하는 전형적인 기법이다.

[표 2] 대상 경로
2. 확장자 구성
Beast 랜섬웨어에 감염된 파일은 {원본파일명}.{GUID-like-string}.{확장자} 형식을 가지며, GUID-like 문자열은 내부적으로 SHA-512 연산으로 생성된 18바이트 식별자다. 이 전체가 확장자 또는 파일명 식별자로 사용된다. 상위 9바이트는 호스트의 환경, 식별자 등 시스템 정보를 합쳐 SHA-512로 해시한 결과에서 추출한 것으로 호스트 환경에 따라 달라지는 해시 값이고, 하위 9바이트는 바이너리에 하드코딩된 고정값이다. 최종 확장자 문자열은 런타임에 복호화된 .data 영역에서 획득해 사용한다.
3. ShadowCopy 삭제
랜섬웨어는 피해 복구의 핵심 수단인 ShadowCopy(볼륨 섀도 복사본)를 삭제해 파일 복구를 방해한다. 이를 위해 공격자는 WMI 쿼리를 활용하는데, 먼저 IWbemLocator와 IWbemContext의 CLSID를 바탕으로 CoCreateInstance()를 호출해 필요한 COM 인터페이스를 획득한다. 이후 획득한 COM 인터페이스로 ROOT\CIMV2 경로에 접근한 뒤 ExecQuery() 함수를 통해 시스템에 존재하는 모든 Win32_ShadowCopy 인스턴스를 열거하고, 각 인스턴스의 경로를 Get() 함수로부터 획득한 후 DeleteInstance() 함수를 통해 삭제한다.

[표 3] ShadowCopy를 삭제하기 위해 호출되는 COM 인터페이스
4. Process, Service 종료
암호화 성공률과 피해를 극대화하기 위해, 파일을 암호화할 때 걸림돌 역할을 수행하는 프로세스와 서비스들을 종료한다. 종료를 시도하는 항목을 살펴보면 데이터베이스 계열과 백업 및 복구와 관련된 항목, 안티바이러스 제품, 오피스, 파일 편집기, 메일 등의 항목이 존재하는 것으로 확인된다.

[표 4] 종료 대상 프로세스 목록

[표 5] 종료 대상 서비스 목록
5. GUI
Beast 랜섬웨어 악성코드는 Debug모드 형태로 GUI 창을 활성화할 수 있으며, [Ctrl+Alt+666] 단축키를 통해 창에 진입한다. 해당 창에서는 암호화 대상 폴더를 지정할 수 있으며 “암호화 준비” 단계에서 다뤘던 기능 중 다수를 수동으로 실행할 수 있다. 또한, 현재 암호화 진행 상황을 실시간으로 확인할 수 있다.

[그림 4] Beast 랜섬웨어 GUI 창
암호화
 [그림 5] chacha20 암호화
[그림 5] chacha20 암호화
암호화가 완료된 파일은 파일의 마지막에 8byte 크기의 Magic 값을 갖는다. 이 Magic 값은 암호화 대상 파일이 선정됐을 경우 파일 데이터의 마지막 부분과 비교해 이미 암호화된 파일인지 판단하기 위해 사용된다. 해당 Magic 값은 악성코드 내부 로직에 하드코딩 돼 있으며, 버전에 따라 바뀔 수 있다.
• Magic(Hex): 66 6B EA 57 1A BE 16 66
위 Magic 값을 포함해, 암호화가 완료된 파일은 원본 크기보다 0xA0만큼 크기가 증가한다. 암호화에 사용된 값들이 Metadata 형태로 파일의 끝에 삽입되기 때문이다. Metadata에는 파일의 원본 크기, 암호화에 사용된 키 값과 기타 복호화에 필요한 데이터들이 함께 저장된다.

[그림 6] 암호화된 파일의 내부 구조
최종적으로 암호화된 파일의 확장자 변경은 MoveFile() 함수를 이용해 진행된다.

[그림 7] 확장자 변경 방식(MoveFile)
최근 Beast 랜섬웨어는 다양한 기업 환경을 대상으로 활발히 유포되고 있으며, 특정 산업군에 국한되지 않고 광범위한 시스템을 공격 대상으로 삼고 있다. Beast 랜섬웨어는 내부에 고정된 공개키 및 ChaCha20 기반의 하이브리드 암호화 알고리즘을 사용해 파일을 암호화하며, 복호화에 필요한 개인키는 공격자 측 서버에만 존재한다. 또한, 암호화된 파일에는 0xA0 크기의 메타데이터가 삽입돼 복호화 검증용 정보가 포함되며, ZIP 구조를 포함한 대용량 파일에 대해서도 일부 블록 암호화 및 헤더 덮어쓰기 방식을 적용해 데이터 복구 가능성을 차단한다.
이런 특성으로 인해, 암호화 알고리즘 또는 키 관리 체계 자체가 무력화되지 않는 한 복호화는 사실상 불가능하다. 따라서 기업은 피해 발생 이후 복호화를 시도하기보다는, 사전에 시스템 취약점 점검, 백업 체계 강화, 외부 접근 통제, 중요 자산의 네트워크 분리 및 정기 보안 점검을 철저히 수행해 감염 가능성을 최소화해야 한다.
Beast 랜섬웨어는 단순한 파일 암호화 수준을 넘어, 구조적 복구 방지 기법과 정보 유출을 병행하는 복합형 공격 형태를 보이므로, 조기 탐지 및 신속한 격리 대응 체계를 갖추는 것이 무엇보다 중요하다.
자세한 내용은 ASEC 블로그에서 확인할 수 있다.
출처 : AhnLab

















