Trojan.Ransom.CryptXXX
현충일 연휴를 포함해 지난 6월 3일 금요일부터 6월 7일 화요일까지, 국내에서는 대형 휴대폰 커뮤니티 사이트를
통하여 랜섬웨어가 유포되어 많은 이용자들이 피해를 호소했습니다.
이번에 유포된 랜섬웨어는 올해 4월 발견된 CryptXXX의 변종으로, 사용자 파일들을 “.cryp1” 확장자로 암호화 시키며, “Angler Exploit Kit”을 통하여 유포되기 때문에 이런 이름이 붙었습니다.
CryptXXX 악성코드는 꾸준하게 다양한 변종이 제작되고 있고, 한국어를 포함해 25개국 언어 서비스를 제공할 정도로
국제적인 특성을 갖고 있습니다. 또 유포지를 쉽게 파악하지 못하도록 하면서, 동시에 보안이 취약한 광고 플랫폼을
경유하여 불특정 다수 이용자를 대상으로 공격하는 “멀버타이징(Malvertising)”을 수행합니다.
멀버타이징 공격 기법은 이메일 첨부파일 기법과 함께 지난해 중순 이후 빠르게 증가한 주요 랜섬웨어 유포 경로로
꼽힙니다. 해당 기법이 사용된 광고 플랫폼을 갖고 있는 웹사이트는 단순 방문만으로도 플래시 플레이어의 취약점을
통해 사용자 PC를 감염시킬 수 있습니다. 때문에 앞서 언급한 휴대폰 커뮤니티 사이트뿐만 아니라,
해당 광고 플랫폼을 이용하는 웹사이트라면 감염 가능성이 높다고 볼 수 있습니다.
[그림 1] CryptXXX 랜섬웨어 “멀버타이징” 감염 흐름도
감염경로 분석
해당 커뮤니티를 통해 유포된 랜섬웨어의 구체적인 유포 경위는 googleads 광고 중 “doubleclick.net” 링크를 통해
연결되는 애드센스 광고 플랫폼 중 하나인 “OpenX” 를 통하여 유포된 것으로 확인되고 있습니다.
[그림 2] 해당 커뮤니티 내 유포 경위 (출처: 해당 커뮤니티 공지사항 게시판)
DLL 파일에 의한 감염
지금까지 대부분의 랜섬웨어들은 사용자가 직접 실행이 가능한 exe 형태로 배포되었습니다.
그러나 CryptXXX의 실질적인 Payload는 DLL의 형태로 배포되고 있으며, DLLMain이 구동되면서
추가적인 Export 함수가 실행되는 구조를 취하고 있습니다. 해당 랜섬웨어는 실행되면 rundll32.exe를 DLL파일이 있는
위치에 svchost.exe 라는 이름으로 복사한 뒤, 추가적으로 Export 함수들을 실행시킵니다.
[그림 3] DLLMain 실행 후 svchost.exe(rundll32.exe) 프로세스가 다수 생성된 모습
CryptXXX DLL은 다수의 Export 함수를 제공하고 있고, 이 악성코드는 svchost.exe(실제로는 rundll32.exe) 프로세스를 생성하면서 적절한 Export 함수 이름을 인자로 전달하여 해당 Export 함수를 실행시킵니다. 아래는 CryptXXX에서 Export 하고 있는 함수 목록입니다.
[그림 4] Export function list
EExport 함수별 기능은 아래와 같습니다.
DllEntryPoint |
MXS0 실행 |
MXS0 |
감염여부 확인 후 감염되어 있지 않으면 MXS1 실행 |
MXS1 |
MXS4, MXS2의 실행을 포함한 메인 감염 루틴 |
MXS2 |
C&C 통신 |
MXS3 |
INT3 Exception을 이용한 MXS1 실행 |
MXS4 |
특정 프로세스 강제종료 및 MXS3 실행 |
파일 암호화
시스템에 존재하는 드라이브 문자열을 얻어와서 Drive Type을 가져옵니다. 시스템에 존재하는 드라이브 중 아래 타입에 해당하는 경우 암호화의 대상이 됩니다. (GetDriveType -> EncryptLoop)
[그림 5] GetDriveType 후에 암호화 루틴(EncryptLoop)으로 이어지는 부분
CryptXXX 랜섬웨어는 시스템에 존재하는 드라이브를 검사하여 드라이브 타입이 아래 중 하나에 해당하면 암호화를 진행하도록 되어있습니다.
DRIVE_REMOVABLE |
이동식 드라이브(USB 저장장치 등) |
DRIVE_FIXED |
고정형 드라이브(HDD, SSD 등) |
DRIVE_REMOTE |
네트워크 드라이브 |
또한 이 랜섬웨어는 파일을 검사하여 파일의 확장자가 아래와 같을 경우 암호화를 진행합니다.
경로 문자열에 아래 문자열이 포함되는 경우에는 암호화 대상에서 제외됩니다.
[그림 6] 암호화 대상에서 제외되는 경로의 일부
\\WINDOWS\\ |
\\WINNT |
\\RECYCLER\\ |
\\SYSTEM~1\\ |
\\BOOT\\ |
\\RECOVERY\\ |
\\$RECYCLE.BIN\\ |
\\PERFLOGS\\ |
\\EFI\\ |
\\CONFIG.MSI\\ |
\\PROGRA~1\\ |
\\PROGRA~2\\ |
\\GOOGLE\\ |
\\TEMP\\ |
\\ALLUSE~1\\ |
\\APPDATA\\ |
\\PROGRA~3\\ |
\\PUBLIC\\ |
AUTOEXEC.BAT |
THUMBS.DB |
\\APPLIC~1\\ |
\\COOKIES\\ |
\\LOCALS~1\\ |
\\TEMPLA~1\\ |
이 악성코드의 제작자는 암호화 하고자 하는 파일의 크기가 최대 13,631,488(0xD00000) 바이트일 경우에만
이를 암호화 하고, 나머지 부분은 암호화가 되지 않도록 설정해두었습니다. 부분 암호화가 되더라도
파일의 구조가 손상되기 때문에 암호화가 된 것이나 마찬가지로 볼 수 있습니다.
[그림 7] 최대 파일 암호화 사이즈
이전 버전의 CryptXXX 와 달리 파일의 0x40 byte만큼은 공개키로 암호화되고 0x1FFF만큼은 키 테이블을 이용한
XOR암호화가 진행됩니다. 따라서 0x203F블럭 단위로 암호화가 진행됩니다.
[그림 8] 암호화 로직
파일 암호화가 끝나면 파일 끝에 0x118 byte만큼 사용했던 키 테이블을 공개키로 암호화 하여 붙여 넣습니다.
[그림 9] 키 테이블 암호화 하여 추가
암호화된 블록의 초기 0x80바이트는 공개키로 암호화 되어 있으며, 0x1FFFbyte는 키 테이블과 XOR 암호화가
되어 있습니다. 그리고 파일 마지막에 키 테이블과 공개키로 암호화된 0x118byte만큼이 파일에 추가됩니다.
초기 바이트가 공개키로 암호화 되어 있기 때문에 개인키가 없으면 완벽한 복호화가 사실상 어렵습니다.
[그림 10] 원본과 암호화된 파일 블록 비교
암호화가 된 파일은 아래와 같이 파일명의 끝에 “.cryp1”가 붙게 됩니다.
[그림 11] 암호화가 이루어진 파일에 cryp1 확장자가 붙은 모습
또한 암호화가 끝난 폴더에는 아래와 같이 결제를 요구하는 안내문을 담은 txt파일과 html파일을 생성합니다.
[그림 12] 결제 유도문 파일을 생성해둔 모습
결제 요구 안내문 파일의 이름은 아래와 같이 부여 받은 개인ID명과 일치하도록 되어있습니다.
감염 후에는 아래와 같은 화면이 뜨면서 사용자는 키보드 및 마우스의 어떠한 동작도 수행할 수 없는 상태가 되는데,
사용자는 컴퓨터를 재시작 하여야 조작이 가능합니다.
[그림 13] 랜섬웨어 작동 완료 후 나타나는 화면
결론
이번에 다룬 악성코드는 사용자 시스템에 존재하는 파일들을 검사한 후 암호화 대상 확장자인 경우 파일을 암호화 시키며, 이를 빌미로 금전을 요구하는 랜섬웨어의 전형적인 모습을 갖고 있습니다. 과거에 유포되었던 CryptXXX와 비교했을 때, 이번 변종 버전은 복호화가 사실상 불가능 하도록 기능이 좀 더 고도화 되었고, 암호화 대상 확장자의 종류도 훨씬 늘어났습니다.
알약은 랜섬웨어의 심각성을 인지하고 행위기반 랜섬웨어 차단 기능을 도입하여 랜섬웨어로부터의 피해를 사전에 예방하고 있습니다. 이 기능을 통해 현재까지 알려진 대부분의 랜섬웨어를 사전에 차단하여 사용자에게 알리고 있으며, 더욱 안전한 컴퓨팅 환경을 제공하고 있습니다.
랜섬웨어는 한 번 피해를 입으면 복구하기가 쉽지 않기 때문에 무엇보다 사용자의 평소 습관이 중요합니다. PC사용 시 중요한 자료의 백업을 생활화 하고, 운영체제 및 써드파티 프로그램의 업데이트를 최신으로 유지해야 합니다. 그리고 보안이 상대적으로 취약한 사이트에는 함부로 접근하지 않는 것도 필요할 것입니다.
※ 관련 내용은 알약 보안동향보고서 6월호에서도 확인하실 수 있습니다.
[악성코드 분석리포트] Trojan.Android.SmsSpy (2) | 2016.08.09 |
---|---|
암호화된 PDF 문서 파일로 둔갑한 '이메일 피싱' 주의보 (0) | 2016.08.04 |
MS 워드 매크로 사용 문서(.docm) 이용한 Locky 랜섬웨어 주의! (0) | 2016.07.07 |
말하는 랜섬웨어(Cerber) 변종 이메일로 국내 유입 확인 (10) | 2016.07.05 |
또 다시 유포되는 Locky 랜섬웨어 주의! (0) | 2016.06.24 |
댓글 영역