본문 바로가기

악성코드 정보

변형된 Salsa20 알고리즘을 사용하는 GandCrab 랜섬웨어

안랩 ASEC 분석팀에서는 쉼 없이 지속 유포 중인 GandCrab의 유포 방식과 변화되는 기능들에 대해서 지속 분석 및 대응하여 정보를 공유하고있다. 이 글에서는 지난 v4.x의 GandCrab kill-switch에 사용되었던 커스텀 된 Salsa20 알고리즘이 현재 유포 중인 v5.2 버전에서도 동일하게 파일 암호화에 쓰이고 있음을 알리고자 한다.

 

 

- 커스텀 Salsa20 알고리즘이 사용됨을 최초 언급하였던 GandCrab v4.x 글 : https://asec.ahnlab.com/1145

- 가장 최근 버전의 암호화 방식에 대해 설명한 GandCrab v5.2 글 : https://asec.ahnlab.com/1220

 

 

v4.x의 kill-switch가 가능한 루틴이 제거되었기 때문에 지금은 kill-switch가 불가능하지만 여전히 그 때 사용한 방식의 커스텀 된 Salsa20 알고리즘 방식으로 각 파일들을 암호화하고 있다. 일반적으로 알려진 Salsa20 알고리즘에서 일부 연산과 상수를 변경하여 사용하고 있다.

 

 

[그림 1] - 일반적 Salsa20 알고리즘 코드 (출처 : https://github.com/andres-erbsen/salsa20/blob/master/salsa20.c) 

 

 

Salsa20 알고리즘은 초기 세팅되는 4x4매트릭스에서 각각의 행과 열에 대해 특정 연산들을 통해 결과를 얻게된다. 이때 알려진 Salsa20 알고리즘에서는 각각의 행, 열에서 확인되는 4개의 값을 이용하여 새로운 4개의 값을 출력하는 라운드 연산시 ROL 쉬프트 연산을 수행하며, 이때 사용되는 상수는 7, 9, 13, 18이다. 

 

 

[그림 2] - GandCrab에서도 일정하게 따르는 Salsa20의 초기 매트릭스 구성

 

 

하지만 GandCrab의 암호화에서 사용하고 있는 Salsa20 알고리즘은 커스텀되어 4번 모두 ROL 쉬프트 연산을 하는 것이 아닌 ROL 3번, ROR 1번의 연산의 결과를 얻는다. 또한 이때 상수는 보통 알려진 Salsa20과는 다르게 7, 9, 13, 14를 사용한다. 

 

 

[그림 3] - 알려진 Salsa20과 커스텀 Salsa20 비교

 

이때 사용되는 Key와 Nonce는 각각의 파일마다 상이하며, CryptGetRandom API를 통해 생성된다. 이 정보들은 이전 블로그에 설명되었듯, 파일 하위에 암호화되어 저장된다. (https://asec.ahnlab.com/1220해당 알고리즘을 통해 파일 앞에서 부터 0x100000 크기 만큼 암호화를 수행한다.

 

 

자사에서는 GandCrab을 아래와 같이 진단 중이다.

 

파일 : Trojan/Win32.Gandcrab

행위진단 : Malware/MDP.Ransom.M1171