안랩 ASEC은 지난 8/29자바스크립트 내에 포함된 GandCrab 랜섬웨어에 대해 분석 정보를 블로그에 게시하였으며 랜섬웨어 실행하는 2가지 방식 중 내부에 암호화된 형태로 포함된 갠드크랩은 4.3 버전이고, 파워쉘을 통한 다운로드(http://pastebin.com/raw/***) 방식에 의해 구동되는 갠드크랩의 버전은 4.4임을 확인할 수 있었다. (참고: http://asec.ahnlab.com/1152)

4.4버전은 파일리스(Fileless)로 동작한다는 것 이외에 현재까지 알려진 갠드크랩과 기능이 전체적으로 유사하였으며, 특이사항으로 암호화 차단(Kill-Switch)기능을 수행하는 lock 파일 존재 여부를 확인하는 코드가 재등장하였다. 단, 기존의 고정된 이름과 달리 매일매일 lock 파일명이 변경되어야 하는 한계가 존재한다. 갠드크랩 4.4에서 확인된 (암호화 차단 역할을 하는) lock 파일 생성 알고리즘은 [그림 1]과 같다. (해당 Kill-Switch 조건은 v4.3, v4.4 모두 동일한 방식)


[그림 1] lock 파일 생성 알고리즘 (v4.4)


lock 파일 생성 여부 확인은 갠드크랩 v4.4이 파일 암호화를 하기 전에 수행된다. 따라서 각 드라이브의 루트 경로에 해당 lock 파일이 있을 경우 파일 암호화는 수행되지 않는다. 파일 내용에 상관없이 파일 이름만 유효하면 암호화가 차단되는 기능을 수행한다.

예시) GetVolumeInformation 호출에 의해 확인된 볼륨시리얼 정보가 0x888A15A5인 사용자의 일 별로 다르게 생성되는 lock 파일명 정보

2018/09/01 () : 888a1242888a15aa19.lock

2018/09/02 () : 888a1242888a15aa7a.lock

2018/09/03 () : 888a1242888a15aa6b.lock


갠드크랩 4.4 lock 파일의 파일명을 정할 때 GetSystemTime API를 사용해서 로컬 시스템의 시간 정보를 xor 연산으로 사용하기 때문에 [그림 2]처럼 일별로 각기 다른 파일명의 존재 여부를 확인한다. 따라서 암호화 차단 기능을 수행하기 위해서는 매일 다른 파일명의 lock 파일을 생성해야 한다.


[그림 2] 일 별로 다른 lock 파일명


현재 안랩 제품에서는 스크립트 파일 및 갠드크랩 랜섬웨어를 아래와 같이 진단하고 있다.

유포 JS 파일

파일 진단명

JS/Gandcrab, JS/GandCrab.S1

랜섬웨어 실행파일

파일 진단명

Trojan/Win32.Gandcrab (2018.07.05.05)

행위 진단명

Malware/MDP.Ransom.M1171

파워쉘 스크립트

행위 진단명

Malware/MDP.Ransom.M1947


Posted by 분석팀