PUBG Ransomware는2018년 4월 10일쯤
발견된 랜섬웨어로, 기존에 장난삼아 제작되고 배포되어 이슈가 되었던 동방프로젝트 랜섬웨어(http://thegear.co.kr/14295)와
비슷한 느낌으로 제작된 랜섬웨어입니다. 장난삼아 만들었다고는 하지만 실제로 파일에 대한 암호화를 진행하기
때문에 자칫하면 실제 피해가 발생할 수 있어 주의가 필요합니다. 무척 간단히 분석이 가능할 거라고 예상이
가능했기 때문에 한번 분석해봤습니다.
이번에도 별다른 아이콘은 없고, 또 .NET 기반의 Win32
PE 파일입니다. 파일 크기는 40.5KB로
상당히 작습니다.
[그림 1. PUBG_Ransomware.exe
Exeinfo PE]
Exeinfo PE를 이용하여 분석해본 결과
패킹은 되어 있지 않은 것 같았습니다. 그럼 원본 바이너리 자체 크기가 40KB밖에 되지 않았다는 것인데 랜섬웨어 치고는 너무 작아서 꽤 놀랐습니다.
[그림 2. PUBG_Ransomware.exe
Bintext 분석]
패킹이 전혀 되어 있지 않기 때문에 내부
문자열을 찾아보면 재미있는 문자열이 무척 많이 보이지만, pdb 정보가 박혀 있길래 이를 가져왔습니다. 경로는 "C:\Users\ryank\source\repos\PUBG_Ransomware\PUBG_Ransomware\obj\Debug\PUBG_Ransomware.pdb”
로 지정되어 있으며 유저 이름이 ‘ryank’
인 것으로 보아 제작자는 ‘Ryan K’ 라는 닉네임을 사용하는 사람인 것으로 추정이 가능합니다.
[그림 3. PUBG_Ransomware.exe
dotpeek 디컴파일]
Jetbrain사의 Dotpeek을
이용하여 분석해본 결과 실행 직후 바탕 화면 아래의 특정 파일들을 암호화하도록 되어있는 것을 볼 수 있습니다. 여기서
함수명이 익숙하지 않아 확인해보니 스페인어인 것을 알 수 있었고, 이 랜섬웨어의 제작자는 스페인 국적의 인물인 것으로 추정해볼 수 있었습니다.
암호화를 진행하는 확장자들은 위와 같았습니다. 암호화가
완료된 파일은 뒤에 ‘.PUBG’ 확장자를 추가로 붙입니다.
[그림 4. 암호화
루틴]
AES 256 CBC 암호 방식을 사용하며 Zeros 방식의 패딩을 사용합니다. 이 패딩 방식은 모든 바이트를
0으로 채워 패딩하는 방식입니다. 인자로 넘어가는 문자열을
확인해 보니 항상 Key가 되는 문자열은 “GBUPRansomware”로
동일했습니다.
[그림 5. 프로세스
체크]
메인 Form이
로드됨과 동시에 시작된 루틴에서는 특정 이름을 가진 프로세스를 가져와서 존재할 경우 playtime을
늘리고, 이것이 3이 되는 순간 복호화 루틴으로 들어갑니다. 해당 프로세스 이름은 “TslGame”으로 게임 배틀그라운드의 프로세스
이름입니다. 타이머의 Interval을 1000으로 설정한 후 3번이므로 3초간만
저 프로세스를 켜두면 자동으로 복호화가 되는 로직입니다. 여기서 맹점이 하나 있는 것이, 프로세스 이름으로 체크하는 것이기 때문에 적당히 아무 프로그램이나 파일명을 TslGame.exe로
바꾼 후 실행시키면 알아서 복호화를 해줍니다.
[그림 6. 리소스
내부 그림]
리소스 내에는 Form의 배경에 지정할 이미지 파일 하나만 들어있었습니다. 이외에
딱히 레지스트리를 건드리는 부분도 없었고, 정적 분석이 더 필요한 부분도 없어서 바로 동적 분석으로
들어갔습니다.
바탕
화면 밑의 파일들만 암호화하기 때문에 바탕 화면에 실행 파일과 암호화될 파일들을 함께 둔 후 동적 분석을 시작했습니다.
[그림 8. 랜섬노트(?) 및
암호화된 파일들]
바탕 화면 아래의 파일들만 암호화하는 단순함
때문인지 실행 직후 바로 파일들이 암호화됩니다. Form에는 배틀그라운드 게임을 1시간동안 플레이하거나, ‘s2acxx56a2sae5fjh5k2gb5s2e’라는
키 값을 주면서 이것으로 복구하라고 씌여 있습니다. 하지만 Restore
Code를 입력하는 Input Box와 Restore 버튼은
Disabled 상태라 키 입력이 불가능합니다.
[그림 9. 복호화된 파일들]
정적
분석으로 알아낸 것처럼, 프로세스 이름을 기반으로 게임이 실행 중인지 여부를 판단하기 때문에 적당히
아무 프로그램이나 이름을 ‘TslGame.exe’로 변경 후 실행시키면 3초 뒤 자동으로 복호화를 완료해줍니다. Hex Editor로 열어
봤을 때 정상적으로 복호화된 것을 확인할 수 있었습니다. 이후 랜섬웨어는 자동으로 종료됩니다.
PUBG
Ransomware는 분류는 랜섬웨어가 되겠지만 금전적인 요구는 전혀 하지 않고 사실상 거의 대가 없이 모든 파일을 복호화 해 주는
등 악의가 느껴지지 않는 프로그램입니다. 이전에 장난삼아 개발되었던 다른 ‘게임 플레이 시간에 따라 복호화를 해 주는 랜섬웨어’들과 비슷한 느낌으로
개발된 것으로 보입니다. 악의가 느껴지지 않는다고는 하나 실제로 유저의 파일들을 암호화하여 피해를 줄
수 있는 것은 사실이기 때문에 수많은 안티바이러스 벤더사에서 악성으로 탐지하고 있습니다.
패킹도
프로텍팅도 전혀 되어 있지 않고 .NET 기반 프로그램인데다 난독화 처리도 되어 있지 않아서 그냥 정적
문자열 패턴 기반으로도 충분히 탐지가 가능하며, 바탕화면의 특정 파일들을 암호화하는 행위 자체도 무척
뚜렷합니다. 하지만 랜섬노트를 따로 드랍하거나 보여주는 행위가 없어 자동 분석은 약간 힘들 수도 있겠습니다. 네트워크 행위도 전혀 하지 않고, 단순히 암호화 및 복호화 행위만
수행합니다.
패킹
및 프로텍팅이 되어 있지 않다는 점을 보면 분석에 익숙하지 않은 분들이나 간단히 분석할 수 있는 .NET 기반
악성코드를 찾아보고 있는 사람들에게는 좋은 샘플일 것 같습니다.