본문 바로가기
악성코드 정보

Vidar 인포스틸러 악성코드 정보 유출 기능 분석

by AhnLab ASEC 분석팀 2020. 9. 8.

Vidar는 사용자 정보를 유출하는 기능을 갖는 인포스틸러 악성코드이다. 아래의 주간 통계에서도 확인 되듯 Top 5 안에는 포함되지 않지만 꾸준히 일정 비율을 차지하고 있으며, 한동안 Top 5에도 포함되었던 이력을 보면 다시 그 유포량이 증가할 수 있다.

https://asec.ahnlab.com/1375 

 

ASEC 주간 악성코드 통계 ( 20200824 ~ 20200830 )

ASEC 분석팀에서는 ASEC 자동 분석 시스템 RAPIT를 활용하여 알려진 악성코드들에 대한 분류 및 대응을 진행하고 있다. 여기에서는 2020년 8월 17일 월요일부터 2020년 8월 23일 일요일까지 수집된 한 주

asec.ahnlab.com

 

최근 한 달 동안 확인된 유포 파일 개수는 아래의 표와 같다. 모두 "build.exe"라는 이름으로 유포되고 있으며, (윈도우 정품인증을 위한) KMSAuto로 위장한 설치 파일 내부에 존재하는 공통점이 있다.

날짜 유포 파일 수 날짜 유포 파일 수 날짜 유포 파일 수 날짜 유포 파일 수
8월 8일 4 8월 16일 0 8월 24일 0 9월 1일 3
8월 9일 2 8월 17일 2 8월 25일 3 9월 2일 1
8월 10일 3 8월 18일 2 8월 26일 1 9월 3일 7
8월 11일 1 8월 19일 2 8월 27일 3 9월 4일 4
8월 12일 1 8월 20일 4 8월 28일 2 9월 5일 5
8월 13일 4 8월 21일 4 8월 29일 3 9월 6일 2
8월 14일 5 8월 22일 1 8월 30일 0 9월 7일 4
8월 15일 2 8월 23일 4 8월 31일 2 9월 8일 2

 

유포 방식은 다음과 같이 이전 ASEC 블로그에 언급되었던 사례들과 동일하며, 여기에서는 그 정보 유출 기능 및 대상들에 대해 조금 더 상세하게 다루도록 한다.

https://asec.ahnlab.com/1316 

 

[주의] 이력서와 공정거래위원회를 사칭한 악성코드 유포

ASEC 분석팀은 5월 6일 이력서와 공정거래위원회를 사칭한 악성코드가 다수 유포됨을 확인하였다. 해당 악성코드는 첨부파일 형태로 유포되는 악성코드이며 하나의 압축파일에 파일명은 유사하

asec.ahnlab.com

https://asec.ahnlab.com/1330 

 

[주의] KMSAuto 인증 툴을 위장하여 유포 중인 Vidar 인포스틸러

ASEC 분석팀은 최근 Vidar 인포스틸러 악성코드가 KMSAuto, KMSPico 인증 툴을 위장한 악성코드들을 통해 유포 중인 것을 확인하였다. 사용자들은 윈도우 정품 인증을 목적으로 인증 툴을 사용하지만 ��

asec.ahnlab.com

 

Vidar의 정보 유출 대상은 일반적인 인포스틸러 악성코드들과는 달리 웹 브라우저나 이메일 클라이언트 등 대한 사용자 계정 정보만을 대상으로 하지 않으며, 웹 브라우저의 경우 쿠키, AutoFill, 신용카드 번호와 같은 다양한 정보들과 사용자 PC에 존재하는 파일들까지 그 대상이 될 수 있다.

 

Vidar는 먼저 정보 유출을 위해 필요한 기능이 구현된 정상 DLL들을 C&C 서버에서 C:\Program Data\ 경로로 다운로드 받는다. 그 대상 DLL들은 다음과 같다.

  • Freebl3.dll, mozglue.dll, msvcp140.dll, nss3.dll, softokn3.dll, vcruntime140.dll

다음은 DLL 다운로드 주소이다.

- http://gratyna[.]com/freebl3.dll

- http://gratyna[.]com/mozglue.dll

- http://gratyna[.]com/msvcp140.dll

- http://gratyna[.]com/nss3.dll

- http://gratyna[.]com/softokn3.dll

- http://gratyna[.]com/vcruntime140.dll

 

Vdiar 악성코드의 C&C 통신

 

이후 C&C 서버에 요청을 하면, 이 요청에 대한 응답으로 C&C 서버로부터 다음과 같은 형태의 정보 유출 관련 설정을 받는다. 다음은 요청 시 사용되는 주소이다.

- http://gratyana[.]com/237

 

C&C 서버와의 통신으로 전달 받는 설정

 

1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 250,

C&C 서버의 응답 중 10으로 이루어진 앞 부분의 값들은 특정 정보 유출 기능에 대한 활성화 / 비활성화 여부를 결정한다. 10개 항목이 모두 사용되는 것은 아니며, 아래와 같이 각 순서 별로 6개 항목만 실질적으로 파싱되어 구별된다.

 

  • 2 : Autofill, Cookie, CreditCard
  • 3 : History, Downloads 기록
  • 4 : 코인 지갑 주소
  • 7 : 텔레그램
  • 8 : 스크린샷
  • 9 : 파일 유출

 

이와는 별개로 응용 프로그램들의 사용자 계정 정보, 그리고 감염 시스템의 다양한 정보들은 설정에 상관없이 항상 정보 유출 대상이 된다.

 

정보 유출 후에는 그 결과를 텍스트 파일과 같은 형태로 다음 경로들에 저장한다.

 

C\ProgramData\[Random]\

.... \files\

.... \files\Autofill\

.... \files\CC\

.... \files\Cookies\

.... \files\Downloads\

.... \files\History\

.... \files\Soft\

.... \files\Telegram\

.... \files\Wallets\

.... \files\Files\

........ passwords.txt

........ information.txt

........ outlook.txt

........ screenshot.jpg

........ cookie_list.txt

 

정보 수집 후 files 경로에 저장된 파일들

 

 

[사용자 계정 정보]

 

먼저 응용 프로그램들에 대한 사용자 계정 정보가 담기는 passwords.txt 파일과 outlook.txt 파일을 살펴본다. 참고로 outlook.txt 파일에 계정 정보가 저장되는 Outlook을 제외하고 다른 것들은 모두 passwords.txt 파일에 계정 정보가 저장된다.

 

Firefox 기반 웹 브라우저

Firefox 기반 웹 브라우저들에 대해서는 계정 정보가 담긴 파일들, 즉 과거 버전의 경우 signons.sqlite 파일과 최신 버전의 경우 logins.json 파일을 그 대상으로 한다. signons.sqlite 파일은 sqlite 포맷으로 존재하기 때문에 계정 정보 추출을 위해 다음과 같은 sql 쿼리문이 사용된다.

> SELECT encryptedUsername, encryptedPassword, formSubmitURL FROM moz_logins

 

최신 버전의 경우 logins.json 파일에 텍스트 형태로 존재한다. 이후 이렇게 얻어진 계정 정보들은 nss3.dll의 함수들을 이용해 복호화한다. 그리고 복호화된 계정 정보는 \files\passwords.txt 파일에 저장된다.

 

정보 유출 대상인 Firefox 기반 웹 브라우저는 Firefox 외에도 다음과 같다.

- Pale Moon, Waterfox, Cyberfox, BlackHawk, icecat, K-Meleon

 

Chromium 기반 웹 브라우저

과거 크롬 버전들 외에도, Local State 파일에 존재하는 마스터 키가 필요한 크롬 버전 80 이후의 버전들에 대해서도 계정 정보를 추출하는 루틴이 구현되어 있다.

 

이 파일 또한 sqlite 포맷이기 때문에 다음과 같은 SQL 쿼리문이 사용된다.

> SELECT action_url, username_value, password_value FROM logins

 

정보 유출 대상인 Chromium 기반 웹 브라우저는 Chrome 외에도 다음과 같다.

- Chromium, Kometa, Amigo, Torch, Orbitum, Uran, QIP Surf, Cent Browser, Elements Browser, Torbro Browser, Suhba, Chedot, Edge, Opera

 

Internet Explorer / Edge

IEEdge를 대상으로 Vault를 이용한 계정 정보 추출 루틴이 존재한다.

 

Thunderbird 이메일 클라이언트

Thunderbird 이메일 클라이언트는 MozillaFirefox에서 사용된 것과 동일한 루틴이 사용된다.

 

Outlook

Outlook은 \files\passwords.txt 파일에 추출한 계정 정보가 저장되는 다른 대상들과는 달리\files\outlook.txt 파일에 계정 정보가 저장된다.

 

다음과 같이 00000003 부터 00000009 까지 각 7개의 레지스트리 키에 존재하는 레지스트리 값들을 가져오는데, 그 중 인코딩되어 저장된 비멀번호 Password 에 대해서는 CryptUnprotectData() API를 이용해 디코딩해서 저장한다.

- HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000003

~

HKCU\Software\Microsoft\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook\9375CFF0413111d3B88A00104B2A6676\00000009

 

기타

이외에도 WinSCP, FileZilla와 같은 FTP 클라이언트 및 Pidgin 인스턴트 메신저가 계정 정보 유출 대상이 된다.

 

 

[웹 브라우저 기타 정보]

 

쿠키

쿠키의 경우 추출된 정보가 \files\Cookies\ 폴더에 텍스트 파일 형태로 저장된다. 예를들어 Internet Explorer의 경우 IE_Cookies.txt 파일로, Edge의 경우 Edge_Cookies.txt 파일로 저장된다.

 

쿠키 정보 유출 기능은 IE, Edge, Firefox 기반, Chromium 기반 웹 브라우저들을 대상으로 한다. 그리고 C&C 서버의 명령에 따라 정보 유출 대상에서 제외될 수 있다.

 

Internet Explorer

\AppData\Roaming\Microsoft\Windows\Cookies\Low\ 폴더 내의 *.txt 파일들을 읽어서 필요한 정보를 파싱한 후 \files\Cookies\IE_Cookies.txt 파일에 저장한다.

 

Edge

\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\#!001\MicrosoftEdge\Cookies\ 내의 *.cookie 파일들과 *.txt 파일들을 읽어서 \files\Cookies\Edge_Cookies.txt 경로에 저장한다.

 

Firefox 기반 웹 브라우저

Firefox를 대상으로 하자면, \AppData\Roaming\Mozilla\Firefox\Profiles\a7obrt24.default-release\ 과 같은 경로의 cookies.sqlite 파일에 해당 정보가 포함되어 있다. 이 파일은 sqlite 포맷이기 때문에 아래와 같은 SQL 쿼리문으로 정보를 추출한다.

> SELECT host, isHttpOnly, path, isSecure, expiry, name, value FROM moz_cookies

 

참고로 이 경우 \files\Cookies\cookies_Mozilla Firefox_a7obrt24.default-release.txt 와 같은 파일이 생성된다.

 

Chromium 기반 웹 브라우저

Chrome을 대상으로 하자면, \AppData\Local\Google\Chrome\User Data\Default\Cookies 파일에 해당 정보가 포함되어 있다. 이 파일은 sqlite 포맷이기 때문에 아래와 같은 SQL 쿼리문으로 정보를 추출한다.

> SELECT HOST_KEY, is_httponly, path, is_secure, (expires_utc/1000000)-11644480800, name, encrypted_value from cookies

 

Chrome의 경우 \files\Cookies\Google Chrome_Default.txt 파일이 생성된다.

 

 

[History, Download]

 

History의 경우 추출된 정보가 \files\History\ 폴더에, Download 기록의 경우 \files\Downloads\ 폴더에 텍스트 파일 형태로 저장된다.

 

History 기록에 대한 정보 유출 기능은 Firefox 기반, Chromium 기반 웹 브라우저들을 대상으로 하며, Download 기록에 대한 정보 유출 기능은 Chromium 기반 웹 브라우저들을 대상으로 한다. 그리고 이것들은 C&C 서버의 명령에 따라 정보 유출 대상에서 제외될 수 있다.

 

Firefox 기반 웹 브라우저

Firefox를 대상으로 하자면, \AppData\Roaming\Mozilla\Firefox\Profiles\a7obrt24.default-release\places.sqlite 파일에 해당 정보가 포함되어 있다. 이 파일은 sqlite 포맷이기 때문에 아래와 같은 SQL 쿼리문으로 History 정보를 추출한다.

> SELECT url FROM moz_places

 

Chromium 기반 웹 브라우저

Chrome을 대상으로 하자면, \AppData\Local\Google\Chrome\User Data\Default\History 파일에 해당 정보가 포함되어 있다. 이 파일은 sqlite 포맷이기 때문에 SQL 쿼리문으로 정보를 추출한다.

- History 기록  >  SELECT url, title from urls

- Downloads 기록  >  SELECT target_path, tab_url from downloads

 

 

[AutoFill, CreditCard]

 

Autofill의 경우 추출된 정보가 \files\Autofill\ 폴더에, CreditCard의 경우 \files\CC\ 폴더에 텍스트 파일 형태로 저장된다.

해당 항목들에 대한 정보 유출 기능은 Chromium 기반 웹 브라우저들을 대상으로 한다. 그리고 C&C 서버의 명령에 따라 정보 유출 대상에서 제외될 수 있다.

 

Chrome을 대상으로 하자면, \AppData\Local\Google\Chrome\User Data\Default\Web Data 파일에 해당 정보들이 포함되어 있다. 이 파일은 sqlite 포맷이기 때문에 SQL 쿼리문으로 정보를 추출한다.

- Autofill SELECT name, value, value_lower FROM autofill

- CreditCard SELECT name_on_card, expiration_month, expiration_year, card_number_encrypted FROM credit_cards

 

 

[기타 프로그램들 정보 유출]

 

Telegram

Telegram의 경우 유출 대상 파일을 \files\Telegram\ 폴더로 복사한다. 그 대상 파일로는 \AppData\Roaming\Telegram Desktop\tdata\D877F783D5D3EF8C\ 경로의 map으로 시작하는 파일들과 \AppData\Roaming\Telegram Desktop\tdata\ 경로의 D877F783D5D3EF8C0 파일과 D877F783D5D3EF8C1 파일이다. 이 파일들은 Telegram PC 버전에서 세션 탈취를 위한 방식으로 알려져 있다.

 

코인 지갑 파일들

코인 지갑 파일들에 대해서는 유출 대상 파일 즉 지갑 파일들을 \files\Wallets\ 폴더로 복사한다. Electrum을 예시로 하자면 지갑 파일은 \AppData\Roaming\Electrum\wallets\default_wallet 파일이며 이 파일이 그대로 복사된다.

 

유출 대상 코인 지갑은 다음과 같다.

- Ethereum, Electrum, ElectrumLTC, Exodus, ElectronCash, MultiDoge, JAXX, Atomic

 

Authy Desktop

Authy Desktop 인증 프로그램의 경우 \AppData\Roaming\Authy Desktop\Local Storage\*.localstorage 파일들을 \files\Soft\Authy 폴더로 복사한다.

 

 

[파일 유출]

 

Vidar는 계정 정보를 포함한 특정 응용 프로그램의 설정 정보들 외에도, 직접적으로 파일 자체를 C&C 서버로 유출하는 기능도가지고 있다.

 

C&C 서버에서 받은 설정 문자열들 중에는 정보 유출 기능 활성화 / 비활성화 옵션 뒤에 다음과 같은 부분이 포함되어 있다. 이것을 구분하자면 각각 \files\Files\ 폴더에 저장할 폴더 이름, 경로, 유출 대상 파일명, 파일 사이즈 조건 그리고 구분자가 된다.

 

Desktop;

  %DESKTOP%\;

  *.txt:*.dat:*wallet*.*:*2fa*.*:*backup*.*:*code*.*:*password*.*:*auth*.*:*google*.*:*utc*.*:*UTC*.*:*crypt*.*:*key*.*:*.kdbx;

  50;

  true;movies:music:mp3;

Documents;

  %DOCUMENTS%\;

  *.txt:*.dat:*wallet*.*:*2fa*.*:*backup*.*:*code*.*:*password*.*:*auth*.*:*google*.*:*utc*.*:*UTC*.*:*crypt*.*:*key*.*:*.kdbx;

  50;

  true;movies:music:mp3;

Authy;

  %APPDATA%\Authy Desktop\;

  *.*;

  4000;

  true;movies:music:mp3;

 

Desktop을 예로 들어보자. Vidar는 먼저 \files\Files\Desktop\ 폴더를 생성하고 여기에 “*.txt” 즉 텍스트 파일들과 “.wallet” 즉 지갑 파일들을 포함하여 이름에 아래와 같은 문자열이 포함된 파일들을 복사한다. 참고로 그 경로는 바탕화면 즉 %DESKTOP%이며, 사이즈는 50(KB) 보다 작은 파일들을 조건으로 한다. 그리고 이 Desktop 폴더를 zip 파일로 압축한다. 마지막으로 true;movies:music:mp3;는 구분자로서 Desktop과 이후 파일 유출 대상인 Documents 이 두개를 구분시키는 역할을 한다.

 

- 유출 파일 저장 경로 : Desktop;

- 유출 대상 경로 : %DESKTOP%\;

- 유출 대상 파일명 : *.txt:*.dat:*wallet*.*:*2fa*.*:*backup*.*:*code*.*:*password*.*:*auth*.*:*google*.*:*utc*.*:*UTC*.*:*crypt*.*:*key*.*:*.kdbx;

- 유출 파일 최대 크기 (KB) : 50;

- 구분자 : true;movies:music:mp3;

 

위의 C&C 서버 명령에 따르면 바탕화면 및 문서 경로와 %APPDATA%\Authy Desktop\ 경로에서 위와 같은 이름이 포함된 지정한 크기 이하의 파일들을 C&C 서버로 유출하게 된다.

 

 

[스크린샷]

 

C&C 서버에서 받은 설정 중에서 8번째 항목인 스크린샷 기능은 0 즉 비활성화 되어 있었다. 만약 이 기능이 활성화되어 있다면 현재 화면의 스크린샷을 찍은 후 \files\screenshot.jpg 파일로 저장하게 된다.

 

 

[시스템 정보]

 

마지막으로 \files\information.txt 파일에 다양한 시스템 정보들을 저장한다. 참고로 [Network] 항목의 경우 http://ip-api.com/line/ 에 접속하여 확보한 결과를 기반으로 저장한다. Information.txt 파일에 저장되는 항목들은 아래와 같다.

 

- 기본 정보 : Version, Date, MachineID, GUID, HWID, Path, Work Dir, Windows, Computer Name, User Name, Display Resolution, Display Language, Keyboard Languages, Local Time, TimeZone

- Hardware : Processor, CPU Count, RAM, VideoCard

- Network : IP, Country, City, ZIP, Coordinates, ISP

- Processes : 현재 실행 중인 프로세스 목록

- Software : 설치된 소프트웨어 목록

 

이렇게 추출한 정보들은 zip 파일로 압축되어 C&C 서버에 보내지며 주소는 아래와 같다.

- http://gratyana[.]com/

 

C&C 서버로 유출 정보가 담긴 압축 파일 전송

 

보낸 후에는 C&C 서버로부터 추가 악성코드 다운로드를 위한 주소를 응답으로 받을 수 있다. 현재 환경에서는 URL 대신 위의 스크린샷과 같이 “OK” 문자열을 받음에 따라 다운로드가 정상적으로 동작하지 않지만, 만약 정상적인 악성코드 다운로드 URL을 응답으로 받은 경우에는 C\ProgramData\[Random].exe 경로에 악성코드를 다운로드하고 실행시키게 된다. Vidar는 인포스틸러 기능 외에 다운로더 기능도 존재한다.

 

마지막으로 정보 유출 및 다운로더 기능을 마친 Vidar는 아래와 같이 자가 삭제한다.

> "C:\Windows\System32\cmd.exe" /c taskkill /im 1.exe /f & erase [Vidar 경로] & exit

 

사용자들은 의심스러운 메일을 받게 된다면 첨부 파일의 실행을 지양해야 하며, 정품 소프트웨어 사용을 생활화하고 의심스러운 웹사이트나 P2P이용은 자제해야 한다. 또한 V3를 최신 버전으로 업데이트하여 악성코드의 감염을 사전에 차단 할 수 있도록 신경써야 한다.

 

현재 자사 V3 제품에서는 해당 악성코드를 아래와 같이 진단 중이다.

 

[파일 진단]
- Trojan/Win32.MalPe.R350320 (2020.09.05.05)


[행위 진단]
- Malware/MDP.SystemManipulation.M2040

 


[관련 IOC 정보]


C2
http://gratyana[.]com

 

HASH
- 107aec31f2f3b9d4cbd1545f69504136

 

 

댓글0