CryptXXX (3.0)
유포
- Angler Exploit Kit 을 통한 배포 및 설치/실행.
- 취약한 웹 사이트에서 Angler Exploit 이 있는 페이지로 랜딩.
- Angler Exploit 은 사용자 PC 의 취약점을 검색하고 Bedep 모듈을 동작.
- Bedep 모듈은 Angler Exploit Kit 의 Fileless Loader 역할을 하며 간단한 가상환경 체크도 수행.
- Bedep 로더를 통해 최종 파일이 드랍 및 실행.
동작
- rundll32.exe(svchot.exe 이름으로 복사) 통한 dll 실행.
- 백신 업체 제품 확인 및 차단.
- 약 90여개의 파일에 대한 암호화 진행.
- Volume Shadow Copy 삭제.
- 악성 DLL 이 가지고 있는 5개의 Export 함수를 통해 악성 동작을 수행. (Export 함수명 : MS 111, MS 112, ... , MS 115)
- 파일 암호화 이후 Screen Locker 동작.
분석
- - 각 Export 함수의 역할
- MS 111
- MS 112
- MS 113
- MS 114
[ MS 114 함수의 코드 ]
- MS 115
[ MS 115 함수의 주요 루틴 ]
- 악성코드 내 문자열 복호화 루틴
- 악성코드 내에서 정적으로 사용하는 거의 모든 문자열은 Encoding 되어 있다.
- 특정 키 값을 사용하여 문자열을 복호화 하는데, 해당 파일에서는 모두 14(0xE)를 사용한다.
[ 악성코드 내의 문자열 복호화 ]
- 백신 확인 루틴
- 파일 MAC time 변경
- 모든 파일 조회후 대상 확장자 파일 비교
암호화
- 랜덤 값 및 Seed 생성 부분
- 임의의 Key 집합을 만들기 위해 Delphi generator 를 사용.
- GetSystemTime 함수로 _SYSTEMTIME 구조체값을 얻어 옴. (16bytes)
- _SYSTEMTIME 구조체의 5번째(wHour) 이후의 값으로 Seed 를 계산.
- 해당 값은 이후 랜덤한 Key를 만들기 위한 Seed 값이 됨.
- 버전 5 이하의 Delphi 에서는 랜덤 함수에 사용하는 seed 값으로 위와 같이 system time을 사용다.
- 같은 시간에 대한 같은 seed 값이 생성되고 결국 같은 랜덤 값이 생기는 취약성이 발견.
- Seed = ((Hour * 60 + Minute) * 60 + Second) * 1000 + Milliseconds 형태로 seed를 생성.
- 생성한 seed 값을 이용해 실제 랜덤한 값을 생성하는 부분.
- Delphi 랜덤 함수에서 사용 되며 D.H.Lehme 의 multiplicative congruential algorithm 을 이용.
- X(k + 1) = (Xk * A) + C mod(M)
X = 랜덤 값, A = 승수, C = 상수, M = 범위 이며,
Delphi 에선 A = 8088405, C = 1 를 사용하고 있음.
- 암호화 동작 후 이름 변경
암호화 이후 랜섬노트 화면
특징
- CryptXXX 1.0/2.0 버전은 복호화 가능. (Key Bruteforce 방식)
- CryptXXX 3.0 이상의 버전은 부분 복호화 가능. (일부 백신사에서 제공 하나 큰 의미가 없어 보임)
Last update ::
- 2016.06.09 (초안 작성)
- 2016.11.07 (내용 추가, 오타 수정)
Keywords ::
- Ransomware
- CryptXXX
References ::
- https://isc.sans.edu/forums/diary/Angler+Exploit+Kit+Bedep+and+CryptXXX/20981/ (Angler Exploit Kit 분석)
- Jean-Baptiste Bedrune, Eric Filiol, and Frederic Raynal : "Cryptography: All-out Attacks or How to Attack Cryptography Without Intensive Cryptanalysis";2010; (Delphi 암호화 방식)
- http://securityfactory.tistory.com/275 (Angler Exploit KIt 분석)
- https://www.proofpoint.com/tw/threat-insight/post/cryptxxx-ransomware-learns-samba-other-new-tricks-with-version3100 (CryptXXX 3.0 분석)
- http://blog.checkpoint.com/2016/05/27/cryptxxx-simple-evasive-effective/ (CryptXXX 분석)
- http://asec.ahnlab.com/1045 (CryptXXX 분석)