포스팅 내용

악성코드 분석 리포트

[악성코드 분석리포트] Trojan.Ransom.CryptXXX


Trojan.Ransom.CryptXXX


현충일 연휴를 포함해 지난 6월 3일 금요일부터 6월 7일 화요일까지, 국내에서는 대형 휴대폰 커뮤니티 사이트를

통하여 랜섬웨어가 유포되어 많은 이용자들이 피해를 호소했습니다.


이번에 유포된 랜섬웨어는 올해 4월 발견된 CryptXXX의 변종으로, 사용자 파일들을 “.cryp1” 확장자로 암호화 시키며, “Angler Exploit Kit”을 통하여 유포되기 때문에 이런 이름이 붙었습니다.


CryptXXX 악성코드는 꾸준하게 다양한 변종이 제작되고 있고, 한국어를 포함해 25개국 언어 서비스를 제공할 정도로

국제적인 특성을 갖고 있습니다. 또 유포지를 쉽게 파악하지 못하도록 하면서, 동시에 보안이 취약한 광고 플랫폼을

경유하여 불특정 다수 이용자를 대상으로 공격하는 “멀버타이징(Malvertising)”을 수행합니다.


멀버타이징 공격 기법은 이메일 첨부파일 기법과 함께 지난해 중순 이후  빠르게 증가한 주요 랜섬웨어 유포 경로로

꼽힙니다. 해당 기법이 사용된 광고 플랫폼을 갖고 있는 웹사이트는 단순 방문만으로도 플래시 플레이어의 취약점을

통해 사용자 PC를 감염시킬 수 있습니다. 때문에 앞서 언급한 휴대폰 커뮤니티 사이트뿐만 아니라, 

해당 광고 플랫폼을 이용하는 웹사이트라면 감염 가능성이 높다고 볼 수 있습니다. 


[그림 1] CryptXXX 랜섬웨어 “멀버타이징” 감염 흐름도



감염경로 분석


해당 커뮤니티를 통해 유포된 랜섬웨어의 구체적인 유포 경위는 googleads 광고 중 “doubleclick.net” 링크를 통해

연결되는 애드센스 광고 플랫폼 중 하나인 “OpenX” 를 통하여 유포된 것으로 확인되고 있습니다.


[그림 2] 해당 커뮤니티 내 유포 경위 (출처: 해당 커뮤니티 공지사항 게시판)


악성파일 분석

※ CryptXXX.dll


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월호에서도 확인하실 수 있습니다. 



  1. Kanade. 2016.07.30 19:52 신고  수정/삭제  댓글쓰기

    정보 감사합니다. ^^ 덕분에 CryptXXX 계열 랜섬웨어의 감염 방식을 이해한 것 같아요 ㅎㅎ

    • 알약(Alyac) 2016.08.02 08:50 신고  수정/삭제

      도움이 되셨다니 뿌듯하네요~ 감사합니다. ^^ 앞으로도 자주 방문해주시길 바랄게요~

  2. cryp1 2016.09.26 13:37  수정/삭제  댓글쓰기

    결론는 확장자 cryp1 랜섬웨어 감염파일은 복호화 안된단 얘기 인가요? ㅠㅠ
    아직 개발 안되었나요?
    이후에 개발 안될까요?

    • 알약(Alyac) 2016.09.27 08:58 신고  수정/삭제

      대부분의 랜섬웨어는 복호화툴 개발이 매우 어렵습니다. 그러나 간혹 랜섬웨어의 구조적인 헛점이나, 랜섬웨어 제작자의 서버 개인키가 오픈되어 복호화툴 제작이 가능한 경우가 있으므로 암호화된 작업물들을 따로 보관해두시기 바랍니다. 더불어 향후 랜섬웨어에 감염되지 않도록 사용하시는 SW를 최신버전으로 업데이트해주시고, 중요한 파일들은 따로 백업해두시는 등의 조치를 간곡히 권장 드립니다. 감사합니다.

티스토리 방명록 작성
name password homepage