신종 랜섬웨어 Koxic 국내 유포 중

최근, 다양한 신/변종 랜섬웨어가 계속해서 등장하고, 국내 환경을 대상으로도 여러 랜섬웨어들이 유포되고 있다. 이 가운데, 신종 랜섬웨어인 ‘콕식(Koxic)’의 국내 유포 정황이 확인되었다. 치밀한 사전 작업을 거쳐 암호화를 수행하는 콕식 랜섬웨어의 특징과 동작 과정을 살펴본다.

콕식(Koxic) 랜섬웨어는 올해 초 처음 수집되었고, 파일 외형과 내부 랜섬노트가 변형된 파일이 최근 ASD 인프라를 통해 탐지 및 차단되었다. 감염 시 암호화된 파일의 이름에 “.KOXIC_[랜덤문자열]” 확장자를 추가하며, 각 디렉토리에 TXT 파일의 랜섬노트를 생성한다. 랜섬노트의 파일명은 [그림 1]과 같다.

 

[그림 1] 암호화된 파일 및 랜섬노트 예시

 

최근 수집된 샘플의 랜섬노트는 한 때 국내에 활발하게 유포되었던 블루크랩(BlueCrab: Sodinokibi, REvil) 랜섬웨어와 유사하다. 블루크랩 랜섬웨어는 별도 웹사이트를 제작하여 토르(TOR) 브라우저를 통한 접속을 요구하지만, 콕식 랜섬웨어는 이메일을 통해 연락을 유도한다는 차이점이 있다.

 

이전에 수집된 콕식 랜섬웨어 샘플 중에는 블루크랩과 거의 동일한 형태의 랜섬노트를 가진 샘플도 있는 반면, 전혀 다른 형태의 랜섬노트를 가진 샘플도 있다. 두 랜섬웨어의 코드 간 유사성을 찾아볼 수 없다는 점에서, 직접적인 연관 관계는 없는 것으로 추정된다.

 

[그림 2] 콕식 랜섬노트

 

본 샘플의 랜섬노트를 보면, 사용자의 중요 파일을 다운로드 했고, 협상하지 않을 경우 데이터를 외부로 유출할 수 있다는 협박 내용이 있다. 하지만, 외부로의 정보 유출 행위는 없었다. 또 다른 특징으로는, UPX 패킹을 숨기기 위해 섹션 이름을 의도적으로 변경했다. “UPX Trick”이라 칭해지는 이 기법은 UPX로 패킹된 파일을 조작하여 분석을 방해하거나 안티바이러스(AV) 제품의 자동 언패킹(Unpacking) 기능을 우회하기 위해 종종 사용된다.

 

[그림 3] 섹션명 변조(UPX Trick)

 

콕식 랜섬웨어는 본격적으로 파일들을 암호화하기 전, 아래와 같이 다양한 사전 작업들을 수행한다.

 

사전 작업

1. 디버깅 검사

디버깅을 체크하는 API를 두 개 사용할 경우, 현재 함수를 무한 반복(재귀 호출)한다. 이로 인해, 디버깅 중에 스택 오버플로우(Stack Overflow)가 발생하게 된다.

 

[그림 4] 디버깅 탐지 함수

 

2. 시스템 레지스트리 수정

“cmd" 명령을 통해 시스템 레지스트리를 수정한다. 윈도우 디펜더와 알림 종료 등의 값을 조작한다. 원격 세션 만료 시간을 최대치로 늘려주는 항목도 있다.

 

3. 프로세스 종료

[표 1]의 명령 실행으로 특정 프로세스와 서비스 종료를 시도한다. 하지만 명령간 구분이 개행으로 처리되어 있어, 사실상 첫 번째 줄 밖에 실행되지 않는다. 이는 공격자의 실수로 보인다.

 

cmd.exe /c taskkill /F /IM MSASCuiL.exe

taskkill /F /IM MSMpeng.exe

taskkill /F /IM msseces.exe​

 

[표 1] 프로세스 종료 명령어

 

4. VSC 삭제 및 서비스 종료

볼륨 쉐도우 복사본(Volume Shadow Copy)를 삭제하고 다수 서비스의 상태를 수정하는 명령어를 실행한다. 다만, [표 1]의 경우와 유사하게 첫 줄만 실행되어 사실상 VSC삭제 행위만 발현된다.

 

5. 시스템 정보 수집

시스템 정보를 수집하여 %temp% 디렉토리에 랜덤 파일명으로 작성한다. 다만, 해당 데이터를 외부로 전송하는 루틴은 찾을 수 없다. 수집 항목으로는 IP주소, 시스템 계정 정보, 디스크 정보, 네트워크 어댑터 정보, 하드웨어 정보, OS 정보 등이 포함되어 있다.

 

[그림 5] 수집 시스템 정보 예시

 

6. 프로세스 우선순위 변경 및 권한 부여

자기 자신의 프로세스 우선순위를 “높음”으로 상향시키며, 프로세스 토큰 권한을 검사 후 수정(추가)한다. 추가되는 권한은 [표 2]와 같다.

 

[그림 6] 프로세스 우선순위 변경

 

SeBackupPrivilege, SeRestorePrivilege, SeManageVolumePrivilege, SeTakeOwnershipPrivilege

 

[표 2] 변경 대상 토큰 권한

 

파일 암호화

암호화 시에는, 암호화 대상 목록을 작성하는 스레드와 실제 암호화를 수행하는 여러 스레드가 동시에 동작한다. 그리고, 목록에 있는 대상 파일을 차례로 암호화한다. 암호화는 원본 파일의 이름을 변경한 뒤 파일 매핑 함수를 사용해 암호화된 데이터를 덮어쓰는 형태로 진행된다. 이때 사용되는 함수 호출 흐름은 [표 3]과 같다.

 

MoveFileExW – CreateFileMappingW – MapViewOfFile – [암호화] – UnmapViewOfFile

[표 3] 파일 암호화 흐름

 

암호화 알고리즘은 AES CBC 모드이며 32바이트 길이의 키와 16바이트 IV(Initialization Vector)를 사용한다. 파일 암호화 시 16바이트 블록 단위로 암호화를 수행하지만, 마지막 블록에서 패딩을 사용하지 않는 것이 특징이다. 이 때문에, 파일 끝 16바이트로 떨어지지 않는 부분은 암호화되지 않고 원본 데이터가 그대로 보존되어 있다.

 

암호화 관련 코드는 오픈소스인 “libtomcrypt”를 그대로 사용한 것으로 보이며, 파일 암호화에 사용된 AES 키는 RSA 암호화하여 랜섬노트 하단에 저장한다. IV값은 암호화된 키 뒤에 평문으로 추가한다. 최종적으로는 [그림 7]과 같은 형태가 된다.

 

[그림 7] 랜섬노트에 저장된 암호화된 AES 키와 IV(밑줄) 예시

 

파일 암호화가 완료되면 랜섬노트를 %TEMP% 디렉토리에 생성하고, 메모장을 통해 실행한다.

 

 

출처 : AhnLab

02-553-2331
견적 요청
카카오톡 문의