플래시 파일에 숨어든 랜섬웨어의 정체
최근 록키(Locky), 케르베르(Cerber) 등의 랜섬웨어를 다운로드 및 실행하는 SWF, 즉 플래시 파일이 유포되고 있다. 이들 SWF 파일 중 대부분은 익스플로잇 킷(Exploit Kit)에 의해 유포되고 있다. 이 글에서는 익스플로잇 킷에 의해 유포된 랜섬웨어 중 내부에 암호화된 플래시 파일을 가지고 있는 유형에 대해 알아본다.
SWF는 'Small Web Format'의 약자로, 웹 상에서 그래픽 애니메이션 등을 구현하는 어도비 플래시 플레이어(Adobe Flash Player)의 파일 형식이다. 특히 액션스크립트(ActionScript, AS)를 사용하는 브라우저 게임에 흔히 사용된다. 이번에 발견된 랜섬웨어를 설치 및 실행하는 악성 플래시 파일도 액션스크립트를 사용하고 있다.
[그림 1]은 해당 플래시 파일의 내부 구조 및 액션스크립트다.
[그림 1] 플래시 파일 구조 및 스크립트(AS) 코드
해당 파일 실행 시 스크립트 코드는 파일 내부의 암호화된 데이터를 복호화한다. [그림 2]는 데이터 복호화 과정을 도식화한 것이다.
[그림 2] 내부 데이터 복호화 과정
한 가지 특이한 점은 [그림 2]의 ③에 해당하는 스크립트 코드가 정상적으로 파싱(parsing)되지 않는다는 점이다([그림 3] 참고).
[그림 3] 정상 파싱이 되지 않는 스크립트 코드
해당 스크립트 코드는 [그림 4]와 같은 XOR 연산 과정을 거쳐 복호화되며, 이를 통해 비로소 압축된 형태의 플래시 파일을 확인할 수 있다. 해당 플래시 파일은 zlib 라이브러리를 사용하여 압축되었으며, 파일 시그니처는 [그림 4]와 같이 ‘CWS’이다.
[그림 4] 압축된 플래시 파일을 확인하기 위한 XOR 연산
해당 악성코드가 실제로 실행될 때는 내부 파일이 메모리 상에서 복호화되어 실행되기 때문에 파일이 생성되지 않는다. 따라서 [그림 5]와 같이 메모리 덤프를 통해 생성된 플래시 파일을 확인할 수 있다.
[그림 5] 복호화 후 생성된 플래시 파일 구조 및 스크립트
V3 제품에서는 해당 유형의 악성 플래시 파일을 다음과 같은 진단명으로 탐지하고 있다.
<V3 제품군 진단명>
SWF/Exploit (2016.09.02.00)
이번에 발견된 랜섬웨어 유포용 플래시 파일뿐만 아니라 최근 상당수의 악성코드가 익스플로잇 킷을 이용한 악성 플래시 파일을 통해 유포되고 있다. 특히 이들 악성 플래시 파일 중에는 내부에 쉘코드(Shellcode)나 또 다른 악성 파일을 갖고 있는 경우가 많다. 따라서 사용자는 확인되지 않은 의심스러운 웹사이트, 특히 기업 사용자의 경우 업무 PC를 통한 불필요한 사이트의 접근을 삼가는 것이 좋다. 또한 OS 및 플래시 플레이어 등 주로 사용하는 프로그램의 최신 보안 패치를 적용하고 V3 등 백신 프로그램의 엔진 또한 항상 최신 버전으로 유지하는 것이 중요하다.
- AhnLab분석팀 송재민 연구원