Kimsuky disguised as a Korean company signed with a valid certificate to distribute Troll Stealer

Author: Jiho Kim & Sebin Lee | BLKSMTH

Last Modified : Feb 7, 2024
Photo by Mark König on Unsplash

Executive Summary

  • 2024년 1월 10일, S2W의 위협 연구 및 인텔리전스 센터 Talon은 Kimsuky 그룹의 새로운 악성코드로 추정되는 샘플을 VirusTotal에서 헌팅하여 분석을 진행
    — 해당 악성코드는 국내 특정 사이트 접속 후 추가로 설치가 필요한보안 프로그램 다운로드 페이지로부터 유포된 것으로 확인
    — 일반적인 공급망 공격과는 다르게, 특정 사이트에 업로드된 설치 프로그램만 악성코드가 포함된 버전으로 변경된 점 확인
  • 헌팅된 악성코드는 감염된 시스템의 정보를 탈취하는 Go언어로 작성된 정보 탈취형 악성코드로, SGA Solutions의 보안 프로그램 설치 파일(TrustPKI, NX_PRNMAN)로 위장한 Dropper로 부터 드랍 및 실행됨
  • Dropper 실행 시 악성코드와 함께 정상 설치 파일로 함께 실행되며, 악성코드와 정상 설치파일 모두 유효한 정상D2innovation Co.,LTD” 인증서로 서명되었다는 점에서 실제 해당 기업의 인증서가 탈취되었을 가능성이 존재
  • S2W Talon은 악성코드 내에 “D:/~/repo/golang/src/root.go/s/troll/agent”라는 경로명이 포함되어 있다는 점에서 해당 악성코드를 “Troll Stealer” 로 명명
  • (주요 기능) Troll Stealer는 감염된 시스템의 정보(SSH, FileZilla, C 드라이브 파일/디렉토리, 브라우저, 시스템 정보, 화면 캡쳐)를 탈취 후 C&C 서버로 전송하는 기능이 존재
  • (Kimsuky 그룹과의 연관성) Kimsuky 그룹이 최근 Go언어 기반의 악성코드를 활발히 사용하고 있다는 점과, Troll Stealer에 기존 Kimsuky 그룹과 연결된 AppleSeed 및 AlphaSeed 악성코드와 유사한 코드가 다수 사용되었다는 점을 근거로 들어 Kimsuky 그룹이 해당 악성코드를 유포한 배후에 있을 것으로 추측
  • (공격 대상) Troll Stealer는 감염된 시스템 상의 GPKI 폴더를 탈취하는 기능을 포함하고 있으며, 이러한 점에서 이번 공격 캠페인이 국내 행정 및 공공 기관내 장치를 대상으로 진행되었을 것으로 추정됨
    — 다만, 기존 Kimsuky 그룹이 보여준 TTP와 일부 상이한 점이 확인되었다는 점에서 Kimsuky 그룹과 밀접하게 연관된 다른 그룹이 배후로 있을 가능성도 존재
  • 동일한 정상 인증서로 서명된 악성코드들이 추가로 발견되고 있으며, 추후에도 해당 인증서로 서명된 악성코드가 유포될 가능성이 존재해 주의가 필요

Introduction

2024년 1월 10일, Go언어 기반의 정보 탈취형 악성코드가 발견되어 분석을 진행했다.
발견된 악성코드는 국내 특정 웹사이트 접속시 연결되는 보안 프로그램 다운로드 페이지로부터 유포되었으며, SGA Solutions의 보안 프로그램 설치 파일(TrustPKI, NX_PRNMAN)로 위장했다.

그림 1. 국내 특정 웹사이트 접속시 연결되는 보안 프로그램 다운로드 페이지 예시

악성코드는 실행시 정상 인스톨러와 악성코드를 드랍하고 실행하는 Dropper 유형으로 확인되었으며, Dropper 악성코드와 정상 설치 파일은 모두 원래 인증서인 “SGA Solutions”가 아닌, 유효한 “D2innovation Co.,LTD” 인증서로 서명되어 있다.

그림 2. Dropper 악성코드에서 확인된 유효한 D2innovation Co.,LTD 인증서

해당 악성 파일로부터 드랍되는 DLL 파일은 VMProtect로 패킹되어 있는 Go언어 기반의 정보 탈취형 악성코드로, “D:/~/repo/golang/src/root.go/s/troll/agent” 경로를 내부에 포함하고 있다. 감염 시스템 내 존재하는 특정 파일과 시스템 정보를 수집하며, 수집한 정보를 C&C 서버로 유출한다. 분석결과, 오픈소스 스틸러의 일부 코드를 차용하여 제작한 점이 확인되었다.

그림 3. TrollStealer 악성코드에 존재하는 경로

S2W 위협 연구 및 인텔리전스 센터인 Talon은 해당 악성코드가 기존 AppleSeed 악성코드에서 시스템 정보를 수집하기 위한 명령어가 거의 동일한 부분과, AlphaSeed 악성코드가 사용하는 RC4 + RSA 조합을 동일하게 파일 암호화에 사용한다는 점과 같이 기존 Kimsuky 그룹의 악성코드와 유사점이 발견되어 해당 악성코드의 배후에 Kimsuky 그룹이 있을 것으로 추정하고 있다.

Talon은 해당 악성코드가 “D:/~/repo/golang/src/root.go/s/troll/agent” 라는 경로명을 사용하고 있다는 점에서 “Troll Stealer”로 명명하였다.

Detailed Analysis

Sample Information

  • MD5: 7b6d02a459fdaa4caa1a5bf741c4bd42
  • SHA256: f8ab78e1db3a3cc3793f7680a90dc1d8ce087226ef59950b7acd6bb1beffd6e3

해당 악성코드는 SGA 솔루션의 TrustPKI 설치파일로 위장했으며, 실행시 감염된 시스템의 정보를 탈취해 C&C 서버로 전송하는 기능을 수행한다.

  1. 악성 DLL 파일을 드롭하고 Rundll32.exe를 통해 악성 DLL 파일 로드
  2. 정상 설치파일인 NXTPKIENTS.exe 파일을 실행해 정상 설치파일로 보이도록 위장
  3. 악성행위를 통해 감염된 시스템의 정보를 탈취
  4. C&C 서버로 탈취한 데이터 전송
  5. Powershell을 통해 자가삭제 수행
그림 4. 악성코드 실행 흐름

Stage1. Dropper

1. Mutex & Self-deletion

실행시 중복 실행 방지를 위해 Mutex를 생성하며, 이후 %Temp% 하위 경로에 자가 삭제를 위한 BAT 스크립트 파일을 생성 및 실행한다.

  • Mutex name: windows update {2024–1020–02A}
  • File path: %Temp%\\[A-Z0–9]{4}.tmp.bat
  • BAT file contents
:goto_redel
rd /s /q [File path]
del [File path]
if exist [File path] goto goto_redel
del %Temp%\\[A-Z0-9]{4}.tmp.bat

2. Execute Normal Installer (NXTPKIENTS.exe)

이후 SGA Solutions 정상 설치파일을 Desktop 경로에 드랍 및 실행한다.
해당 설치 파일은 SGA Solutions Co.,Ltd. 인증서로 서명된 정상 파일로 확인되었다.

  • File path: %USERPROFILE%\Desktop\NXTPKIENTS.exe
그림 5. Dropper 악성코드에 의해 실행된 정상 TrustPKI 설치 파일

3. Drop & Load Malicious DLL

추가로 정상 파일 외에 Troll Stealer와 감염 이력을 확인하기 위한 파일을 드랍하며 각 파일의 경로는 다음과 같다.
Dropper 악성코드 샘플마다 생성되는 폴더 및 파일 이름은 다르게 나타나며, 분석을 진행한 샘플에서 확인된 경로 및 이름은 다음과 같다.

표 1. 정보 탈취형 악성코드가 드랍되는 경로 및 감염 이력 확인을 위한 파일명

이후 Troll Stealer는 rundll32.exe 프로세스를 통해 실행되며, 감염 이력 확인을 위한 파일명이 Export 함수로 호출된다. 해당 악성코드는 분석 방해를 위해 VMProtect 패킹된 상태로 확인되었다.

  • Command: C:\Windows\system32\rundll32.exe %AppData%\[DLL Path] [Export]

Stage2. Troll Stealer

  • Filename: C:\Users\admin\AppData\Roaming\Hancom\hc-[a-z0–9]{8}.png
  • MD5: 88f183304b99c897aacfa321d58e1840
  • SHA256: 61b8fbea8c0dfa337eb7ff978124ddf496d0c5f29bcb5672f3bd3d6bf832ac92
  • Type: DLL

1. Initial behavior

초기 실행과정 중 “ChromeUpdateTaskMachineUAC” 스케줄러 삭제를 수행한다. 하지만 Troll Stealer와 상위 Dropper가 위와 같은 이름의 스케줄러를 등록하는 기능이 없다는 점에서, 과거에 사용했던 기능을 실수로 제거하지 않았던 것으로 추정된다.

  • Command: schtasks /delete /f /tn “ChromeUpdateTaskMachineUAC”

이후 Dropper 악성코드에서 드롭하는 감염 이력 확인용 파일의 존재를 확인하여 Dropper를 통해 실행된 악성코드인지 확인하는 작업을 수행한다. 해당 파일이 존재하는 경우에만 악성행위를 수행한다.

  • File path: %ProgramData%\limsjo.a

Troll Stealer 자체적으로 악성코드 중복실행 방지를 위한 Dropper와 다른 값의 Mutex를 등록한다.

  • Mutex name: chrome development kit 1.0

2. Set configuration data

감염된 시스템의 MAC 주소와 디렉토리 경로를 수집하고 이후 악성행위 수행을 위해 Config 데이터를 구성 및 임시 파일로 생성한다. Config 내에는 C&C 서버 주소 등의 정보가 포함되어 있다.

  • Config path: %UserProfile%\.tmp\{Random Number}.org
  • C&C server: hxxp[:]//qi.limsjo.p-e[.]kr/index.php
  • C&C server: hxxp[:]//ai.limsjo.p-e[.]kr/index.php
표 2. Config 데이터 구성 목록
  • Config 데이터 예시
{
"ServerID": 0,
"ObjectID": 0,
"GtType": 2111,
"GtID": [sha1_hash(little_endian(mac_addr[:8]))],
"GtVer": "[email protected]",
"Interval": 0,
"LocalPath": "%AppData%\\local\\",
"MacAddr": [MacAddr],
"ProxyNum": 5,
"ProxyUrl": [
"",
"",
"",
"http://qi.limsjo.p-e.kr/index.php",
"http://ai.limsjo.p-e.kr/index.php"
]
}

이후, Config 파일을 암호화 하여 C&C 서버로 전송 후 삭제한다.

  • Encrypted config file path: %AppData%\local\gcfg@{YYMMDD}(HH.MM.SS-000).gte1

3. Data collection

표 3. 타겟 데이터 및 암호화된 탈취 파일명

Troll Stealer는 감염된 시스템 내 다양한 정보를 탈취한 후 암호화를 수행하고 C&C 서버로 전송하는 기능을 수행한다. 해당 악성코드에서 탈취하는 정보는 다음과 같다.

3.1. SSH

감염된 시스템의 SSH 정보를 탈취하기 위해 시스템의 .ssh 디렉토리를 압축하고 파일로 생성한다. 이후, 압축파일을 암호화하여 별도의 파일로 생성하고 C&C서버로 전송한다.

  • .SSH directory save path: %USERPROFILE%\.ssh
  • Encrypted file path: %AppData%\local\tsd@{YYMMDD}(HH.MM.SS-000).gte1

3.2. FileZilla

감염된 시스템의 FileZilla 정보를 탈취하기 위해 시스템 상의 Filezilla 디렉토리를 압축하고 파일로 생성한다. 이후, 압축파일을 암호화하여 마찬가지로 별도의 파일로 생성한 뒤 C&C서버로 전송한다.

  • FileZilla directory save Path: %AppData%\filezilla
  • Encrypted file path: %AppData%\local\tfd@{YYMMDD}(HH.MM.SS-000).gte1

3.3. Microsoft Sticky Note

감염된 시스템의 Microsoft Sticky Note 정보를 탈취하기 위해 시스템의 Microsoft Sticky Note 디렉토리를 압축하고 파일로 생성한다. 이후, 압축파일을 암호화하고 파일로 생성한 뒤 C&C서버로 전송한다.

  • Microsoft Sticky Note save path: %USERPROFILE%\AppData\Local\packages\microsoft.microsoftstickynotes_8wekyb3d8bbwe\localstate
  • Encrypted file path: %AppData%\local\tnd@{YYMMDD}(HH.MM.SS-000).gte1

3.4. “GPKI” directory in C Drive

Troll Stealer는 감염된 시스템의 C드라이브 내 특정 폴더의 데이터를 탈취한다. 공격자는 C 드라이브 내 파일 및 폴더명을 수집하고 아래와 같이 추가 문자열을 덧붙여 새로운 문자열을 생성한다. 이후 해당 문자열의 SHA512 해시를 생성하고, 악성코드 내 하드코딩된 SHA512 해쉬값과 동일한 경우, 해당 파일을 암호화 후 C&C 서버로 전송한다. 하드코딩된 SHA512 해시를 분석한 결과, 공격자는 C 드라이브 하위에 GPKI 폴더를 탈취하려한 시도가 확인되었다.

  • String format: “aaxxyyzz” + {File name} + “zzyyxxaa”

==> Target string: aaxxyyzzgpkizzyyxxaa

  • Hardcoded SHA512 hash in Troll Stealer: 17ccb0832c3382b5f9e86236e035d899a351c98f3871080c138d4494218cbbc2b6f9dc43705ed97e8b0b09f25752302094e0d297151f67b22328af95610f72f1
  • Encrypted file path: %AppData%\local\tcd@{YYMMDD}(HH.MM.SS-000).gte1

행정전자서명인증서라고도 불리는 GPKI는 국내 행정 및 공공기관 등의 정부에서 사용하는 전자적 정보로, 행정전자서명의 진위를 검증할 때 사용되는 공인인증서이다. 즉, 일반 컴퓨터에서는 사용되지 않고, 공무를 위해 사용되는 컴퓨터에 설치되는게 일반적이다. 이러한 점에서, 이번 캠페인은 공공에 설치된 PC 등을 타겟하기 위한 것으로 평가된다.

3.5. Browser Information

감염된 시스템의 브라우저 정보를 탈취한다. 해당 악성코드는 브라우저 정보를 탈취하기 위해 Go언어로 작성된 오픈소스인 HackBrowserData를 이용한것으로 추정된다. 감염된 시스템의 Chromium기반의 브라우저 및 Firefox 브라우저를 대상으로 하고 있으며, Cookie, History, Download, Extension 등 다양한 정보를 탈취하고 browser 디렉토리에 json 파일로 저장한다. 이후, browser 디렉토리를 압축 후 암호화하여 C&C 서버로 전송한다.

  • Browser save path: %AppData%\local\browser
  • Encrypted file path: %AppData%\local\tbd@{YYMMDD}(HH.MM.SS-000).gte1

3.6. System Information

감염된 시스템의 정보를 탈취하기 위해 CMD 명령을 통해 시스템 정보를 수집하고 암호화 후 파일로 생성한다. 암호화 된 파일은 C&C 서버로 전송된다.

  • Encrypted file path: %AppData%\local\ccmd@{YYMMDD}(HH.MM.SS-000).gte1
표 4. 수집하는 시스템 정보 목록
  • Commands to collect system information
systeminfo & 
net user &
query user &
powershell Get-CimInstance -Namespace root/SecurityCenter2 -Classname AntivirusProduct &
wmic qfe &
wmic startup get &
wmic logicaldisk get &
ipconfig /all &
arp -a &
route print &
tasklist &
wmic process get Caption, Commandline &
dir "%programfiles%" &
dir "%programfiles% (x86)" &
dir "%programdata%\Microsoft\Windows\Start Menu\Programs" &
dir "%appdata%\Microsoft\Windows\Recent" &
dir /s "%userprofile%\desktop" &
dir /s "%userprofile%\downloads" &
dir /s "%userprofile%\documents"

3.7. Screen Capture

감염된 시스템의 현재 데스크탑 화면을 캡쳐하여 파일로 저장한다. 데스크탑 화면 캡쳐를 위해 Github에 공개된 “kbinani”의 screenshot 패키지를 사용한다. 이후 캡쳐한 파일을 암호화 후 파일로 생성한 뒤 C&C 서버로 전송한다.

  • Encrypted file path: %AppData%\local\ssht@{YYMMDD}(HH.MM.SS-000).gte1

4. File Encryption

C&C 서버로 탈취한 데이터를 전송하기 전, RC4와 RSA-4096 알고리즘을 조합하여 데이터를 암호화한다. 악성코드는 하드코딩된 PKCS#1의 DER로부터 RSA Public Key 파싱을 수행한다. 이후, 랜덤으로 RC4 키 값을 생성하여 탈취 데이터를 암호화하는데 사용한다. RC4 암호화 키는 RSA Public Key로 암호화된다.

그림 6. 탈취한 파일 암호화 흐름
  • Hardcoded PKCS#1 DER
3082020a0282020100c3fc0e50f4dcafec48ee42362d70c8f6b3153e91566b15a9540d0ca9f3e81846093d8752940b414043c0eaa752dd29b3aa7132bc3a1c9d8c8ed8aeaeb51c1ab99491879e8e9af96eec3f87d64fdc6dc2e51bed259314c6417d481472463a3df1ca5a16254f203aecb10c56e0dc0b8f9f6e70cc286161dbd2d0e6e3652a438ba1e48cc822cb2138f012e4cd4132c627ca165a17793785fc4c74198b03bcd8743f389345edb4238984ebf84d9a89851b5adc6378a4c0b441bab7f7e15330be4ed3abadb393cce9a3f1e37cf71cbbf3cc32c2b399cdc2cd65f651be21ef84c9bf67c13cbd38a0d0897dfc1f6b7ba809ef59f5de9019697115ddfdae5cb885f78e4766af4c23c95ebb198656ee391d788ab52fd760670561d417f099538f45f652b438b5b32afa0c2ae08eb04381112a254aff4e6eeb1db29be8dc248a85226a21528e87b837801f7a81ab4e0b03d0b23ba8c69bad52d094c343444676b9d1516cf3cf1017942cf12eadc16cf56f843ba344deb6c7e935b4abf574d8121b301dc05ce7945578ede2f14be9daab4bd6be430dcf7f4e39e97fba7f462822c6743ac8dc79674dcd5c958c94bf27490758e9fa13432e5f0134cacd422115a0e76fcfd14b9b86f88bb3e136fc54c46ea6d2212ea00478dc11d9cf80c06fab2c4a3c7d3ad5f4fa00f4999a2170189eb747368e41c2cf41302e476c39861876512d9f8d355b0203010001

5. C&C Communication

해당 악성코드는 앞서 구성한 Config 데이터 및 피해 시스템에서 탈취한 데이터를 유출하기 위해 12개의 필드로 구성된 60바이트 크기의 구조를 사용한다. 이때 통신의 목적과 전송하는 데이터의 유형에 따라 각 필드 값을 다르게 설정하고, size_payload 필드 이후에는 전송하고자 하는 페이로드가 위치하게 된다. 구성된 데이터는 XOR 연산 및 Base64 인코딩되어 HTTP 프로토콜을 통해 C&C 서버로 전송된다. 통신시 공통적으로 사용하는 구조는 그림 7과 같고 각 필드가 의미하는 바는 표 5에서 서술하였다.

그림 7. Troll Stealer가 사용하는 통신 데이터 구조표 5. 데이터 구조 내 필드

전송할 데이터를 구조에 맞게 구성한 후에는 바이너리 내 하드코딩된 4바이트 Key를 사용하여 XOR 연산 후 Base64 인코딩을 수행한다. 인코딩된 결과는 “a=[Encoded_Data]” 형식으로 C&C 서버에 전송한다.

  • XOR Key: DD 33 99 CC
그림 7. 데이터 연산 과정

이와 같은 방식으로 인해 최종 탈취 데이터는 아래와 같이 전송된다.

  • 데이터 탈취 => 파일 암호화(RC4+RSA) => 통신 구조체 인코딩(XOR+Base64) => a 파라미터로 전달

Troll Stealer는 통신시 최초 1회에만 페이로드에 “init” 문자열을 포함하여 C&C 서버에 전송하고, 응답값으로 “ok” 문자열을 수신한 경우에만 이어서 탈취한 데이터를 유출한다.

이때 Config 또는 탈취한 항목을 유출할 때마다 총 4번의 통신이 발생하는데, 첫 번째 통신은 ping 기능을 수행하기 위해 발생하고, 두 번째와 세 번째 통신은 동일한 데이터를 페이로드에 포함하여 전송한다. 하지만 status_type 필드의 값이 다르게 구성되어 있는 점을 확인할 수 있었다. 마지막 네 번째 통신에서는 페이로드에 탈취한 파일명을 포함하고, send_type 필드 값을 5로 설정한다. C&C 서버에 성공적으로 파일이 전송되면 %appdata%\local\ 경로에 저장된 암호화된 파일을 삭제한다.

그림 8. Troll Stealer의 통신 흐름

6. Self-deletion

악성행위 수행 이후, 자가삭제를 수행하기 위해 .tmp 디렉토리에 PS1 파일을 생성한다. PS1파일은 악성 DLL 파일 및 자기자신을 삭제한다.

  • .PS1 save path: %USERPROFILE%\.tmp\{Random}.ps1
  • .PS1 file contents
$target = {Stealer Path}
for ($i = 0; $i -lt 50; $i++)
{
Remove-Item $target -Force
Remove-Item $PSCommandPath -Force
if (!(Test-Path $target) -and !(Test-Path $PSCommandPath))
{
break
}
Start-Sleep -Seconds 2
}

Attribution

S2W는 최근 Kimsuky 그룹이 Go언어 기반의 악성코드를 활발히 사용하고 있다는 점과, Troll Stealer와 기존 AppleSeed 및 AlphaSeed 악성코드간에 유사한 코드가 다수 발견되었다는 점을 근거로 들어 Kimsuky 그룹이 Troll Stealer 악성코드를 유포한 배후에 있을 것으로 추측하고 있다.

Correlation with AppleSeed/AlphaSeed

Dropper 악성코드가 Troll Stealer를 드랍하는 경로와 생성하는 파일명 형식은 ASEC에서 공개한 AppleSeed의 드랍되는 경로 및 파일명과 유사하게 나타나는 것으로 확인되었다.

표 6. AppleSeed와 Troll Stealer 드랍 경로 및 파일명 비교

더불어 감염된 시스템의 정보를 수집하기 위해 실행하는 하드코딩된 명령어는 2023년 5월에 발견된 AppleSeed 악성코드에서도 거의 동일하게 확인된 바 있다. 다만, Troll Stealer의 경우 사용자의 계정 및 세션에 대한 정보를 추가로 획득하기 위해 2가지 명령어가 추가되었다.

  • net user
  • query user
표 7. AppleSeed와 Troll Stealer 에서 사용하는 명령어 목록 비교

그 외에도 Kimsuky 그룹이 사용하는 악성코드 중 AppleSeed 악성코드를 드랍하는 Dropper 악성코드와 Meterpreter 악성코드에서 동일한 형태의 Mutex가 사용된 부분이 확인되었다.

표 8. Kimsuky 그룹의 악성코드에 사용된 Mutex

Troll Stealer는 탈취한 데이터를 C&C서버로 전송할 때 RSA와 RC4 알고리즘을 조합하여 사용한다. 이때 랜덤으로 RC4 Key를 생성하고 RSA 공개키로 암호화하는 방식은 기존 AlphaSeed에서 사용하는 방식과 동일한 것으로 확인되었다.

그림 9. AlphaSeed와 Troll Stealer에서 사용하는 암/복호화 방식

또한, 피해 시스템의 데스크탑 화면을 캡쳐하기 위해 사용한 Go언어로 작성된 라이브러리는 AlphaSeed에서 사용된 것과 동일한 kbinani 패키지로 확인되었다.

Another golang-based backdoor (GoBear)

추가 분석을 진행한 결과, S2W는 Troll Stealer 악성코드 외에도 정상 “D2innovation Co.,LTD 인증서”로 서명된 Go언어 기반의 백도어 GoBear 악성코드를 추가로 식별하였다.

GoBear는 C&C 서버로부터 받은 명령에 따라 악성 행위를 수행하는데, 이때 명령에 따라 호출되는 함수명에 포함된 문자열이 Kimsuky 그룹이 사용하는 C++ 기반의 백도어 악성코드인 BetaSeed에서 쓰이는 명령어와 일부 중복되는 점이 확인되었다. DLL 유형의 BetaSeed는 피해 시스템의 정보를 탈취하고, C&C 서버로부터 수신한 명령어에 따라 추가적인 악성 행위를 수행한다.

다만, 두 악성코드가 작성된 언어가 다르고, 함수명에 포함된 문자열 외에 코드 상에서 유사하게 나타난 부분이 존재하지 않는다는 점에서 서로 다른 유형으로 구분하였다.

표 9. Kimsuky 그룹이 사용한 것으로 추정되는 백도어 악성코드 간 연관성

GoBear에 기존 Kimsuky 그룹의 백도어 악성코드에서 지원하지 않던 SOCKS5 프록시 기능이 추가되어있다는 점은 주목할 만한 기능으로 확인되었다. 게다가, 과거 AppleSeed 악성코드에서 사용되었던 뮤텍스가 업데이트되지 않고 2년만에 그대로 재사용되었다는 점 또한 AppleSeed 를 기반으로 Troll Stealer 악성코드를 제작하는 과정에서 제작자의 실수일 가능성이 존재한다.

Conclusion

  • 2024년 1월 10일, S2W의 위협 연구 및 인텔리전스 센터 Talon은 Kimsuky 그룹의 새로운 악성코드로 추정되는 샘플을 VirusTotal에서 헌팅하여 분석을 진행하였으며 Troll Stealer로 명명함
  • Troll Stealer는 Go언어로 작성되었으며, 감염된 시스템의 정보(SSH, FileZilla, C 드라이브 파일/디렉토리, 브라우저, 시스템 정보, 화면 캡쳐)를 탈취하는 Info-stealer 악성코드로 확인됨
    —Troll Stealer는 SGA Solutions의 Trusted PKI 설치파일로 위장한 Dropper로부터 드랍 및 실행되는 방식으로 배포되는 점 확인
  • Dropper로부터 실행된 인스톨러는 정상으로 확인되었지만, Troll Stealer와 정상 설치 파일 모두 유효한 정상D2innovation Co.,LTD 인증서”로 서명되었다는 점에서 실제 해당 기업의 인증서가 탈취되었을 가능성이 존재
  • Troll Stealer는 감염된 시스템 상의 GPKI 폴더를 탈취하는 기능을 포함하고 있으며, 이러한 점에서 이번 공격 캠페인이 국내 행정 및 공공 기관내 장치를 대상으로 진행되었을 것으로 추정됨
    — Kimsuky 그룹이 과거 GPKI 폴더를 탈취하거나, SOCKS5 프로토콜을 활용해온 이력이 확인되지 않았다는 점에서 새로운 목표를 설정하였거나, AppleSeed/AlphaSeed의 소스코드에 접근할 수 있는 타 그룹이 Troll Stealer 및 GoBear를 제작하였을 가능성도 존재
  • S2W는 Kimsuky 그룹이 Go언어 기반의 악성코드를 활발히 사용하고 있다는 점과, Troll Stealer와 기존 AppleSeed 및 AlphaSeed 악성코드간에 유사한 코드가 다수 발견되었다는 점을 근거로 들어 Kimsuky 그룹이 해당 악성코드를 유포한 배후에 있을 것으로 평가
  • 동일한 정상 인증서로 서명된 악성코드들이 추가로 발견되고 있으며, 추후에도 해당 인증서로 서명된 악성코드가 유포될 가능성이 존재해 주의가 필요

MITRE ATT&CK

Resource Development

  • (T1588.004 ) Digital Certificates

Execution

  • (T1204.002) Malicious File
  • (T1059.001) PowerShell
  • (T1059.003) Windows Command Shell

Defense Evasion

  • (T1027.002) Software Packing

Credential Access

  • (T1555.003) Credentials from Web Browsers
  • (T1539) Steal Web Session Cookie

Discovery

  • (T1057) Process Discovery
  • (T1087.001) Local Account
  • (T1083) File and Directory Discovery
  • (T1518.001) Security Software Discovery
  • (T1082) System Information Discovery
  • (T1016) System Network Configuration Discovery

Collection

  • (T1005) Data from Local System
  • (T1113) Screen Capture
  • (T1560) Archive Collected Data

Command and Control

  • (T1071.001) Web Protocol

Exfiltration

  • (T1041) Exfiltration Over C2 Channel

Appendix A. IoCs

File hash

Dropper

  • 19c2decfa7271fa30e48d4750c1d18c1
  • 6eebb5ed0d0b5553e40a7b1ad739589709d077aab4cbea1c64713c48ce9c96f9
  • 7b6d02a459fdaa4caa1a5bf741c4bd42
  • f8ab78e1db3a3cc3793f7680a90dc1d8ce087226ef59950b7acd6bb1beffd6e3
  • 27ef6917fe32685fdf9b755eb8e97565
  • 2e0ffaab995f22b7684052e53b8c64b9283b5e81503b88664785fe6d6569a55e

Backdoor (GoBear)

  • 87429e9223d45e0359cd1c41c0301836
  • a8c24a3e54a4b323973f61630c92ecaad067598ef2547350c9d108bc175774b9

Troll Stealer

  • 7457dc037c4a5f3713d9243a0dfb1a2c
  • ff3718ae6bd59ad479e375c602a81811718dfb2669c2d1de497f02baf7b4adca
  • c8e7b0d3b6afa22e801cacaf16b37355
  • 955cb4f01eb18f0d259fcb962e36a339e8fe082963dfd9f72d3851210f7d2d3b
  • 88f183304b99c897aacfa321d58e1840
  • bc4c1c869a03045e0b594a258ec3801369b0dcabac193e90f0a684900e9a582d

Network

  • hxxp[:]//ai.kostin.p-e[.]kr/index.php
  • hxxp[:]//ar.kostin.p-e[.]kr/index.php
  • hxxp[:]//ai.negapa.p-e[.]kr/index.php
  • hxxp[:]//ol.negapa.p-e[.]kr/index.php
  • hxxp[:]//ai.limsjo.p-e[.]kr/index.php
  • hxxp[:]//qi.limsjo.p-e[.]kr/index.php
  • hxxp[:]//coolsystem[.]co.kr/admin/mail/index.php
  • ai.kostin.p-e[.]kr
  • ar.kostin.p-e[.]kr
  • ai.negapa.p-e[.]kr
  • ol.negapa.p-e[.]kr
  • ai.limsjo.p-e[.]kr
  • qi.limsjo.p-e[.]kr
  • 216.189.159[.]197

Kimsuky disguised as a Korean company signed with a valid certificate to distribute Troll Stealer was originally published in S2W BLOG on Medium, where people are continuing the conversation by highlighting and responding to this story.

Article Link: Kimsuky disguised as a Korean company signed with a valid certificate to distribute Troll Stealer | by S2W | S2W BLOG | Feb, 2024 | Medium