상세 컨텐츠

본문 제목

악명 높은 JSWorm 랜섬웨어 4번째 버전 발견돼

국내외 보안동향

by 알약(Alyac) 2019. 9. 6. 08:59

본문

JSWorm: The 4th Version of the Infamous Ransomware


악명 높은 JSWorm 랜섬웨어가 버전 4로 업그레이드되었습니다.


이름은 자바스크립트와 웜을 연상시키지만, 이 악성코드는 앞서 언급한 두 가지와는 관련이 없습니다.


기술적 분석


JSWorm은 모든 사용자 파일을 암호화 후 새로운 확장자를 붙이는데, 다른 랜섬웨어들과 달리, 이 확장자는 많은 정보를 포함하고 있습니다. 


파일이 암호화되면 "파일명.[원래 확장자].[감염 ID][공격자 이메일].JSWRM"과 같은 형식으로 파일명이 변경됩니다.



[그림 1] 감염 ID와 Email 연락처

<이미지 출처: https://blog.yoroi.company/research/jsworm-the-4th-version-of-the-infamous-ransomware/>



랜섬노트에는 블랙리스트에 추가될 경우 사용할 수 있는 백업 이메일(symmetries0@tutanota.com)이 포함되어 있습니다. 


암호화 단계에서 이 랜섬웨어는 모든 폴더에 HTML 애플리케이션인 "JSWRM-DECRYPT.hta"를 생성합니다. 


해당 HTA 파일은 [그림 1]에서 확인할 수 있는 랜섬 창입니다.


시스템 기능은 정상적으로 작동할 수 있도록 Windows, Perflogs와 같은 시스템 디렉터리, 문서, 설정, $RECYCLE.BIN, 시스템 볼륨 정보, MSOCache는 암호화 대상에서 제외합니다.



[그림 2] 제외된 경로

<이미지 출처: https://blog.yoroi.company/research/jsworm-the-4th-version-of-the-infamous-ransomware/>



JSWorm은 암호화할 파일 확장자의 목록을 포함하지 않고 제외할 확장자만을 포함합니다. 


이 악성코드는 하기 리스트에 없는 확장자를 사용하는 모든 파일을 암호화합니다.



[그림 3] 암호화 제외된 확장자들>

<이미지 출처: https://blog.yoroi.company/research/jsworm-the-4th-version-of-the-infamous-ransomware/>



암호화 단계에서, JSWorm은 "C:\ProgramData"에 "key.Infection_ID.JSWRM"라는 이름의 파일을 생성합니다. 


이는 파일을 암호화하는데 사용되는 AES 키를 포함하고 있으며, 이 키는 추가적인 RSA 암호화 과정을 거칩니다. 아래 그림은 암호화된 키의 한 예입니다.

 


[그림 4] "C:\ProgramData"내 "Key" 파일의 내용

<이미지 출처: https://blog.yoroi.company/research/jsworm-the-4th-version-of-the-infamous-ransomware/>



또한 이 랜섬웨어는 암호화 작업으로 줄 수 있는 영향을 극대화하기 위해 아래와 같은 작업을 실행합니다.


- 윈도우가 자동으로 생성한 섀도우 복사본 및 기타 시스템 복원 포인트 삭제

- SQL 서버 등 일반적인 프로그램이 사용 중인 파일을 암호화하기 위해 관련된 프로세스 종료

- 시스템 재부팅 후, 랜섬노트 창을 표시하기 위해 자동 실행 경로에 레지스트리 키 추가



암호화 체계


악성코드가 암호화하는 AES 키는 내장된 "MI2i6BWRFhcswznItBEl33UaIoDOwqI=" base64 시드를 기반으로 생성됩니다. 


이는 낮은 수준의(low-level) 조작을 진행하기 전, CryptStringToBinaryA API를 통해 바이트 배열로 변환됩니다.



[그림 5] AES 키 생성에 사용된 내장된 초기 문자열

<이미지 출처: https://blog.yoroi.company/research/jsworm-the-4th-version-of-the-infamous-ransomware/>



이 문자열은 랜덤한 문자열과 조합되어 각 감염마다 다른 파생 AES 키를 만들어냅니다. 


따라서 공격자조차 파일을 해독할 수 있는 최종 AES 키를 알지 못하며, 사용자는 파일 복구를 위해 "C:\ProgramData"에 저장된 키 파일을 보내야 합니다. 


공격자는 해당 키 파일을 받은 후 공격자가 가지고 있는 개인 RSA 키로 사용자의 암호화된 파일을 복호화할 AES 키를 추출해야 합니다.


마지막 단계는 암호화 루틴으로, 아래 그림에서 볼 수 있듯 "CryptEncrypt" 함수를 사용합니다.

 


[그림 6] CryptEncrypt 함수용 파라미터

<이미지 출처: https://blog.yoroi.company/research/jsworm-the-4th-version-of-the-infamous-ransomware/>



이 악성코드의 새로운 뮤텍스를 인스턴스 하는 부분에는 "kto prochtet tot sdohnet =)"라는 러시아 문장이 포함되어 있었습니다. 이 문장은 "읽는 사람은 죽는다 =)"로 해석할 수 있습니다.

 


[그림 7] 뮤텍스 생성

<이미지 출처: https://blog.yoroi.company/research/jsworm-the-4th-version-of-the-infamous-ransomware/>



결론


위에서 분석한 JSWorm 랜섬웨어는 다른 랜섬웨어처럼 암호화 체계, 섀도우 복사본 삭제, 지속성 등의 기능을 가지고 있습니다. 


암호화 체계로 CryptStringToBinaryA API를 통해 바이트 문자열로 변환될 내장된 Base64 시드를 사용하고. 이때 생성되는 AES 키를 사용합니다. 


안정성과 개발 시간 단축을 위해 암호화 작업에 CryptoAPI 라이브러리를 사용하는 것은 매우 일반적입니다.


그리고 러시아어로 "kto prochtet tot sdohnet =)"라는 문자열이 포함된 뮤텍스가 존재한다는 것은 흥미로운 부분입니다. 


이로써 악성코드의 제작자가 러시아어를 사용한다고 추측해볼 수 있습니다. 


물론 잘못된 단서일 수 있지만, 러시아는 이러한 사이버 범죄 활동에 자주 연루되어 왔습니다.


카스퍼스키랩의 악성코드 분석가에 따르면, 2016년에도 러시아 언더그라운드는 그 해 추적한 새로운 암호화 랜섬웨어의 약 75%를 생산했습니다.


현재 알약에서는 해당 랜섬웨어에 대해 Trojan.Ransom.JSWorm으로 탐지 중에 있습니다.





출처:

https://securityaffairs.co/wordpress/90811/malware/jsworm-4-ransomware-analysis.html

https://blog.yoroi.company/research/jsworm-the-4th-version-of-the-infamous-ransomware/

관련글 더보기

댓글 영역