국내맞춤형랜섬웨어 갠드크랩 2.1 수산 INT 기술연구소 (CERT) 2018. 05. 10 본문서는국내를대상으로노리는유포되는랜섬웨어갠드크랩 2.1을분석한보고서입니다. 실제침해사고내용을중심으로작성된보고서입니다. 본문서는수산아이앤티 CERT에서작성되었으며연구목적의활용은가능하나, 그외활용으로인해발생하는문제에대한법적책임은당사자에있음을알려드립니다. 문의처 : 기술연구소 CERT 파트 (SungMin.Rue@soosan.co.kr / KimNamGuy@soosan.co.kr) c 2018 SOOSAN INT. All Rights Reserved.
목 차 1. 개요... 2 2. 갠드크랩 2.1 악성코드분석내용... 3 2.1 공격경로및감염증상... 3 2.2 감염사례분석... 5 3. 상세동적분석 ( 갠드크랩 2.1)... 7 3.1 분석파일정보... 7 3.2 행위프로세스분석... 9 4. 대응방안... 17 1
1. 개요 지난 4월 CERT 팀은랜섬웨어감염사고를접수하였습니다. 조사결과, 메일에서다운로드받은첨부파일로인해서랜섬웨어에감염이된것으로확인했습니다. 다행히감염피해자는랜섬웨어에감염됐다는것을미리파악해, 추가감염을예방하고자네트워크를차단했고추가적인피해는없었습니다. 해당기기를공격한것은최근국내에서유행하고있는갠드크랩 (GandCrab) 2.1 버전으로확인됐습니다. 암호화된확장자명이.CRAB 을통해서알수있었습니다. 참고로갠드크랩에서 갠드 는프랑스지역중하나인 그헨트 (Ghent) 를지칭하는용어로추론했습니다. 따라서갠드크랩은그헨트지역의꽃게를지칭하는것으로풀이할수있습니다. 국내만을집중적으로활동하고있는랜섬웨어이고침해사고가접수되었기때문에, 저희 CERT 팀은갠드크랩 2.1을 5월호월간악성코드분석주제로선정했습니다. 본보고서의순서는다음과같습니다. 2장에서는겐드크랩 2.1 공격경로와감염증상을설명한후, 실제사례를들어어떻게갠드크랩을유포했는지설명하겠습니다. 아울러 3장에서는갠드크랩의상세행위프로세스를설명하고, 대응방안을소개하면서본보고서를마치도록하겠습니다. 2
2. 갠드크랩 2.1 악성코드분석내용 갠드크랩 2.1 의공격경로와증상을우선살펴본뒤, 실제로발생한침해사고를살펴보 도록하겠습니다. 2.1 공격경로및감염증상 [ 그림 2-1] 겐드크랩 2.1 공격도식화 갠드크랩 2.1의악성코드감염경로는크게두가지로, 웹사이트와이메일입니다. 웹사이트를악용해방문자를감염시키는악성공격을 드라이브바이다운로드 (Drive-by- Download) 라고하는데, 좀더상세히설명하면해커가웹사이트의취약점을노려사이트에악성코드를심어서방문자의감염을유도하는공격입니다. 이메일의경우, 사용자가관심가질만한주제로갠드크랩을첨부한악성메일을보내는방식으로감염을유도합니다. 따라서메일열람만으로는감염되지않으며, 해당첨부파일을클릭해야만갠드크랩에감염이됩니다참고로 CERT 팀에서갠드크랩 2.1 관련악성메일을현황을조사하였는데, 입사지원및이미지도용의내용으로감염을유도하는경우가많았습니다. 이처럼다양한경로로갠드크랩 2.1을유포하는것으로보아, 해커는금전적이득을목표로한다는것을확인할수있었습니다. 특히드라이브바이다운로드방식의유포는 3
다수를대상으로감염시키는데에가장효과적이라고할수있습니다. 사이트방문자를대상으로악성코드감염을시도하기때문입니다. 악성메일에서도불특정다수를대상으로갠드크랩 2.1의감염을유도한다는사실을확인할수있었습니다. 갠드크랩 2.1 탐지의우회를위해악성파일을압축만했을뿐, 감염을위한고도의기술이발견되지않았기때문입니다. 사용자를감염시킨갠드크랩 2.1은해커에게 C2 (Command & Control) 1) 를이용해감염시킨사실을알립니다. 그리고컴퓨터에특정프로세스가동작하는사실을확인한뒤에, 특정프로세스동작시에컴퓨터를재부팅시켜버립니다. 그리고화이트리스트방식으로감염제외대상을확인한후에, 무차별적으로파일들을암호화시킵니다. 참고로화이트리스트방식으로파일을암호화시키는이유는, 사용자에게그만큼피해를주어서사용자가금전적비용을지불하게만들기위함으로해석할수있습니다. 암호화가완료되면갠드크랩 2.1은컴퓨터를다시한번더재부팅한후에, 사용자에게랜섬웨어감염사실을인지시키고금액을요구합니다. 랜섬웨어는주로가상화폐를요구하는경우가많은데, 갠드크랩 2.1은 대시 (DASH) 라는가상화폐를요구합니다. 갠드크랩 2.1 공격에대해서다음과같이정리할수있습니다. 1. 사이트, 이메일등다양한경로를활용해갠드크랩 2.1을유포하는것으로보아불특정다수를감염시키는것을목표로하는랜섬웨어입니다.. 2. 불특정다수를감염시켜금전적인이득획득을위한랜섬웨어공격이라는것을확인했습니다. 3. 악성메일로유포하는경우, 메일제목과내용이한국어에능숙한점으로보아갠드크랩 2.1은한국인대상으로한랜섬웨어인것으로추론할수있었습니다. 4. 특히국내만을노리는랜섬웨어이기때문에조심할필요가있다고판단했습니다. 1) C2 (Command & Control): 해커와악성코드를통신하는네트워크경로및이를가능케하는기술. 4
2.2 감염사례분석 지난 4월중순에수산INT CERT팀은갠드크랩 2.1 감염신고를접수받았습니다. 메일을통해서감염된것으로확인되었습니다. 그림 2-2는실제로사용자에게전달된악성이메일내용을캡처한그림입니다. [ 그림 2-2] 갠드크랩 2.1 파일이첨부된악성메일내용 수신된메일주소는 @yellimungus.com라는도메인을사용하고있습니다. 저희 CERT팀에서해당도메인을좀더조사하였습니다. 확인한결과, 이전에는 @yellowmungus.com 도메인을사용하고있다는사실을발견했습니다. 아마해당도메인이차단되어 yellimungus로바꾼것으로보였습니다. 주로하씨의성을가진연예인이름을사용했습니다. 연예인이름을사용한이유는, 사용자에게친숙한이미지를주어메일에거부감을없애기위한때문인것으로보고있습니다. Yellowmungus를직역하면노란곰팡이로해석할수있습니다. 이때 Yellow를황금및돈으로해석을할수있고, 곰팡이는 더러움을먹고피어나다 라는문학적의미를내포하고있습니다. 따라서 Yellowmungus 는불법적인짓을행하여돈을번다는함축적의 5
미로해석할수있습니다. 이처럼의심가는도메인을사용하는이유는, 본인을드러내기위함으로볼수있습니다. 특히영어를조금아는사람이라면, 의심이가는도메인을보고해당파일을다운로드받지않을가능성이높기때문입니다. 따라서해당메일을보낸해커는지금까지알려지지않은해커그룹으로볼수있습니다. 더욱이 Yellowmungus 도메인이차단되었음에도, Yellimungus라는유사한도메인을사용한것으로보아, Yellowmungus에의미를두는해킹그룹으로볼수있습니다. 메일내용을보면 입사지원서 와관련된주제입니다. 해당메일에피해를입은직원은국내인사담당구인사이트를통해구인중에있었는데, 해커는구인사이트를보고악성메일을유포한것으로보입니다. 국내구인사이트를아는것으로보아서, 두가지해킹그룹군으로나눌수있습니다. 한국을노린외국계해킹그룹혹은북한등국내문화에익숙한해킹그룹으로말입니다. 저희 CERT는한국을노린외국계해킹그룹으로잠재결론을내렸습니다. [ 그림 2-3] 갠드크랩 2.1 파일이첨부된악성메일내용 메일에첨부된악성파일은보안탐지를회피하기위해서압축된형태로하고있었습니다. 압축을풀어보면.exe파일과.lnk파일이있습니다. 그림 2-3은첨부파일의압축해제시에나타나는파일모습입니다..lnk는바로가기파일의확장자로서해당파일을실행하면,.exe 파일이자동으로실행되랜섬웨어에감염되는형태입니다. 지금까지내용을정리하면, 해당메일은입사지원을가장한갠드크랩 2.1 유포악성메일로드러났습니다. 첨부파일을다운로드후실행시에감염증상이일어나는것도추가로확인했습니다. 6
3. 상세동적분석 ( 갠드크랩 2.1) 수산 INT CERT 에서는갠드크랩 2.1 을실제로분석해보았습니다. 분석내용은다음과같 습니다. 3.1 분석파일정보 분석파일명은 [ 임의로지정된파일명 ].exe 입니다. 해당파일해시정보는아래와같습니다. - MD5: 82f5c57a5e58ff735138a99206b1ac19 - SHA-1: 09f509ff4bf5f46e318dfc368a8f3b637902075b - SHA-256: 6e4d9ea2321b2af8c53f2e4b9d638ecb3b12e2c7a6ae3150e9a4fcab210a44b0 아울러테이블에서보는것과같이, 갠드크랩 2.1 을파일에서사용하는 API 들을정리하였습니다. 갠드크랩 2.1 사용된 API 목록 kernel32.dll VirtualProtect QueryPerformanceCounter ExitProcess GetCurrentProcessId OpenProcess GetSystemTimeAsFileTime Sleep GetEnvironmentStringsW GetFileAttributesW FreeEnvironmentStringsW GetModuleFileNameW IsDebuggerPresent CreateFileW IsProcessorFeaturePresent ExitThread UnhandleExceptionFilter lstrlenw SetUnhandledExceptionFilter GetLastError InitializeCriticalSectionAndSpinCount GetProcAddress GetCurrentProcess CloseHandle TerminateProcess SetFilePointerEx TlsAlloc SetStdHandle TlsGetValue GetConsoleMode TlsSetValue GetConsoleCP TlsFree FlushFileBuffers GetModuleHandleW GetCommandLineA EnterCriticalSection SetLastError LeaveCriticalSection GetCurrentThreadId HeapFree 7
EncodePointer DecodePointer GetModuleHandleExW MultiByteToWideChar WideCharToMultiByte GetProcessHeap GetStdHandle GetFileType DeleteCriticalSection GetStartupInfoW GetModuleFileNameA WriteFile IsValidCodePage GetACP GetOEMCP GetCPInfo LoadLibraryExW OutputDebugStringW HeapAlloc HeapReAlloc GetStringTypeW HeapSize LCMapStringW WriteConsoleW 화이트리스트 확장자제외.ani,.cab,.cpl,.gdcb,.gandcrab,.yassine_lemmou,.cur,.diagcab,.diagpkg,.dll,.drv,.hlp,.ldf,.icl,.icns,.ico,.ics,.lnk,.key,.bat,.cmd,.CRAB,.crab,.GDCB,.theme,.themepack,.exe,.idx,.mod,.mpa,.msc,.msp,.msstyles,.msu,.nomedia,.ocx,.prf,.rom,.rtp,.scr,.shs,.spl,.sys,.theme,.themepack,.exe, 8
3.2 행위프로세스분석 1. 갠드크랩 2.1 은분석을어렵게하기위해소스코드난독화를사용하였습니다. 그림 3-1 에서알수없는문자열들이사용하는걸발견하였습니다. 그림에서보여주는부분을 난독화된문자열로추측하였습니다. [ 그림 3-1] 난독화해제전 9
2. 그림 3-2 는악성코드가실행되면서난독화가풀린모습입니다. [ 그림 3-2] 난독화해제후모습 10
3. 먼저그림 3-3 에서 00408F8B 조건통과하게되면난독화해제를하는주소 CALL 명령어를사용하게됩니다. 해당 CALL 주소의의미는 [ 그림 3-4] 처럼 PE 파일섹션들을 재정의하기위함을알수있습니다. [ 그림 3-3] 난독화해제과정 [ 그림 3-4] PE 섹션 Load 11
4. 그림 3-5 는난독화해제가되면서 PE 구조재정의과정을보게됩니다. 이렇게재정의된 구간은암호화및핵심역할로실행이되며, 해당주소 (00260000) 는매실행시주소 값이바뀌기때문에현재의주소값은중요하지않다고볼수있습니다. [ 그림 3-5] PE 구조 12
5. 그림 3-6 은 LoadLibraryA 함수를사용하여암호화함수등필요 API 들을재정의하여 사용하게됩니다. [ 그림 3-6] KERNEL32.dll API 재정의 [ 그림 3-7] USER32.dll API 재정의 13
6. 난독화해제가끝난후자기파일을 \AppData\Roaming\Microsoft 로복사해이동한 후재부팅돼도재실행이가능하도록레지스트리변조를하는행위를발견했습니다. { HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce } [ 그림 3-8] 레지스트리변조루틴 14
7. 갠드크랩 2.1 은확장자.CRAB 으로먼저바꾼후파일암호화를진행하는순서로 이루어져있습니다. 그림 3-9 에서그림 3-12 까지가이러한과정을보여줍니다. [ 그림 3-9] 확장자변조 [ 그림 3-10] 암호화전 [ 그림 3-11] 암호화진행루틴구간 15
[ 그림 3-12] 암호화완료 [ 그림 3-13] 입금요청웹페이지 16
4. 대응방안 [ 그림 4-1] 갠드크랩 2.1 대응방안 1. 악성메일조심하기출처가불분명한메일은가급적열람하지않는것이좋습니다. 그리고압축파일혹은확장자가.lnk인경우에는악성파일로의심해볼필요가있습니다. 2. 사이트방문주의하기웹사이트경로로사용자를감염시키기도합니다. 따라서의심스러운사이트방문에주의할필요가있습니다. 그러나일반사용자가이를판별하기란쉽지않습니다. 이러한한계점을 ewalker 제품구매로극복할수있습니다. ewalker는매일 3만개가넘는악성사이트를신규로업데이트하고있어서, 사용자가악성사이트에접속하는것을원천적으로차단합니다. 따라서 ewalker 제품으로갠드크랩 2.1 감염을예방할수있습니다. 3. ered 활용하기 ered는화이트리스트기반으로허용되지않은프로세스실행을원천적으로차단하는보안기술입니다. 그러므로 ered는랜섬웨어와같은악성공격프로세스를원천적으로차단합니다. 더욱이 ered의동작은게스트 OS 하부의하이퍼바이저 OS에동작하기때문에차단행위를노리는악성공격에도대응이가능합니다. 실제로갠드크랩 2.1을 ered에적용해보았는데, 원천적으로차단하는것을확인했습니다. 아울러최근등장한갠드크랩 3.0까지차단하는것도확인했습니다. 17
2018 년수산 INT 보안연구보고서발간내역 월간악성코드분석보고서 2018-01 호 : 가상화폐채굴악성코드분석 (2018 년 01 월 ) 2018-02 호 : UBoat Rat 분석보고서 (2018 년 02 월 ) 2018-03 호 : 평창올림픽파괴악성코드분석보고서 (2018 년 03 월 ) 2018-04 호 : 웹으로감염시키는악성코드 헤르메스 분석 (2018 년 04 월 ) 2018-05 호 : 국내맞춤형랜섬웨어 갠드크랩 (2018 년 05 월 ) 18
감사합니다. 서울특별시강남구밤고개로1길 10, 3층 ( 수서동, 현대벤처빌 ) Tel 02.541.0073 Fax 02.541.0204 E-mail QI@soosan.co.kr HP http://www.soosanint.com 19