목차
- 개요
- 주요 목표
- 영향을 받는 산업
- 지리적 초점.
- 감염 사슬.
- 초기 조사 결과.
- 미끼 문서를 살펴보다
- 기술 분석
- 1단계 – 악성 LNK 스크립트
- 2단계 – DUPERUNNER 임플란트
- 3단계 – AdaptixC2 비콘.
- 사회 기반 시설 유물.
- 맺음말
- SEQRITE 보호.
- IOC
- 미터 공격.
개요
SEQRITE APT-Team은 최근 러시아 기업, 특히 인사부, 급여부, 그리고 내부 행정 부서를 표적으로 삼는 캠페인을 적발했습니다. 이 캠페인은 직원 보너스와 내부 재무 정책을 주제로 한 현실적인 미끼 문서를 사용합니다. 이 캠페인에 연루된 전체 악성코드 생태계는 악성 LNK 파일 사용을 기반으로 하며, DUPERUNNER라고 명명된 알려지지 않은 임플란트를 사용하게 됩니다. 이 임플란트는 결국 AdaptixC2 비콘을 로드하여 위협 행위자의 인프라에 다시 연결합니다.
이 블로그에서는 분석 과정에서 발견한 캠페인의 기술적 세부 사항을 살펴보겠습니다. 초기 감염 경로 심층 분석부터 캠페인에 사용된 알려지지 않은 임플란트까지, 캠페인의 여러 단계를 살펴보고, 캠페인에 대한 최종 개요를 살펴보겠습니다.
주요 목표
영향을 받는 산업
- 기업 부문 직원.
- 인사 및 급여
지리적 초점
- 러시아 연방
감염 사슬

초기 발견
최근 2025년 11월 21일에 저희 팀은 Virustotal에 나타난 악성 ZIP 아카이브를 발견했는데, 이 ZIP 파일은 PDF 및 LNK 확장자를 가진 미끼를 포함한 스피어 피싱 기반 감염의 초기 소스로 사용되었으며, 이를 통해 최종적으로 Adaptix C2 Beacon을 실행하는 임플란트인 DUPERUNNER가 다운로드되었습니다.
Премия 2025.zip이라는 이름의 ZIP 파일은 Bonus.Zip으로 변환되며, 이 파일에는 Документ_1_О_размере_годовой_премии.pdf.lnk라는 악성 LNK가 포함되어 있습니다. 이 LNK는 다시 Document_1_On_the_size_of_the_annual_bonus.pdf.lnk로 변환되는데, 이는 기본적으로 유인(lure) 기반 명명법과 관련이 있습니다. 이 악성 바로가기(.LNK)는 powershell.exe라는 LOLBIN을 사용하여 악성 임플란트를 다운로드하는데, 이 LOLBIN은 DUPERUNNER로 추적됩니다. 실행 후 Adaptix C2 비콘을 다운로드하고 명령 및 제어 서버로 다시 연결됩니다. 이제 유인 문서를 살펴보겠습니다.
미끼 문서를 살펴보다
처음에 Документ_2_О_сроках_и_порядке_получения_выплат.pdf라는 이름의 지불금 수령 조건 및 절차에 관한 문서 2로 알려진 미끼 문서를 살펴보면 기본적으로 캠페인과 관련된 미끼입니다.

미끼의 제목에는 연간 보너스 규모에 대해 언급되어 있으며, 첫 번째 문단을 더 살펴보면 해당 문서가 발행되었다고 언급되어 있습니다. "직원에 대한 물질적 인센티브 시스템을 규제하는 목적이며, 러시아 연방 노동법 및 조직의 내부 규정에 따라." 그런 다음 연간 보너스 금액을 결정하는 절차를 간략하게 설명하고, 이 문서를 회사 내부에서 사용하기 위한 표준 HR 정책으로 규정하고, 전체적인 유혹을 다섯 가지 핵심 요소로 더 세분화합니다.

전반적으로 이 미끼 문서의 5가지 핵심 사항은 직원의 연간 보너스를 계산하기 위한 내부 기업 규칙을 개략적으로 설명하며, 이를 KPI, 직무 책임, 조직 목표에 대한 기여도와 연계된 성과 기반 인센티브로 설명합니다.
유혹 문서에서는 달리 명시하지 않는 한 연봉의 15%를 기본 보너스 금액으로 정하고, 최종 보너스 금액은 성과 평가, 전략적 업무 완료, 징계 기록, 회사 표준 준수 여부에 따라 달라진다고 설명합니다.
또한 고용주는 회사의 재정 상태, 부서별 성과, 그리고 직원의 개인적 기여도를 고려하여 보너스를 증액 또는 감액할 수 있다고 명시되어 있습니다. 마지막으로, 보너스 지급 결정은 최종적인 고용주 명령서를 통해 공식화되며, 직원에게 전달되어야 합니다. 이러한 구조는 내부 HR 및 급여 업무 흐름과 긴밀히 연계됩니다.
다음 섹션에서는 기술적 분석을 살펴보겠습니다.
기술 분석
기술적 분석을 세 단계로 구분했습니다. 먼저, 스피어피싱 기반 ZIP 파일에 내장된 악성 바로가기(.LNK) 스크립트를 분석합니다. 다음으로, DUPERUNNER로 추적되는 악성 임플란트를 분석하고, 마지막으로 DUPERUNNER 임플란트에 의해 다운로드 및 실행되는 Adaptix C2 기반 비콘을 집중 분석합니다.
1단계 – 악성 LNK 스크립트
ZIP 파일에는 Документ_1_О_размере_годовой_премии.pdf.lnk라는 LNK가 포함되어 있습니다. 이를 조사해 본 결과, 이 LNK의 유일한 목적은 원격 서버에서 다운로드하고 powershell.exe라는 Windows 유틸리티를 사용하여 악성 임플란트인 DUPERUNNER를 실행하는 것뿐이라는 것이 분명해졌습니다.
![]()
명령줄 인수를 살펴보면 이제 다음을 사용하고 있다는 것이 매우 분명합니다. powershell.exe 와 같은 플래그로 -노니, -아니요글렌데일 -w 숨김 완전히 백그라운드에서 실행하려면 iwr(Invoke-WebRequest) 원격 서버 46[.]149[.]71[.]230에서 임플란트를 다운로드하고 Temp 폴더에 s.exe라는 이름으로 저장하는 데 사용됩니다. 이후, 이 명령은 다운로드된 임플란트를 즉시 실행합니다.
다음 섹션에서는 DUPERUNNER로 알려진 임플란트의 기술적 성능을 살펴보겠습니다.
2단계 – DUPERUNNER 임플란트
초기 분석 결과, s.exe 파일은 C++로 프로그래밍된 두 번째 스테이저라는 것을 발견했습니다.

이제 바이너리의 첫 번째 조각을 분석한 결과, DUPERUNNER라고 알려진 C++ 임플란트 내부에 여러 가지 흥미로운 기능 세트가 존재한다는 것을 발견했습니다.

이제 이러한 흥미로운 기능을 살펴보고 그 기능을 분석해 보겠습니다.

첫 번째 함수인 DownloadAndOpenPDF를 살펴보니, 이 함수는 두 개의 인수를 받는데, 하나는 PDF가 호스팅되는 주소이고 다른 하나는 포트 번호인 80입니다. 마지막으로, InternetOpenA와 같은 API를 사용하여 특정 사용자 에이전트를 사용하고 GET 요청을 통해 원격 서버에서 fontawesome_tld.woff로 호스팅되는 파일을 다운로드하려고 시도합니다. 또한 파일을 다운로드하기 위해 여러 번의 쿼리를 수행하기 전에 3초의 짧은 Sleep 시간을 사용합니다.

동일한 함수의 다음 부분에서는 피해자의 컴퓨터의 임시 경로를 열거하고 특정 API를 사용하여 시스템 시간도 열거합니다. 열거된 후 파일은 컴퓨터의 타임스탬프에 따라 이름이 지정된 PDF와 함께 Temp 디렉터리에 저장됩니다. 이를 통해 PDF의 무해성을 활용합니다.

마지막으로 PDF가 다운로드되면 ShellExecuteA를 사용하여 대상 컴퓨터에 PDF를 생성합니다.
글쎄요, 저희는 위협 행위자 측에서 작은 실수가 있었음을 발견했습니다. 이 기능 이후에 다운로드되는 PDF가 스피어 피싱 ZIP 파일에 이미 압축되어 있던 동일한 미끼를 다운로드했기 때문입니다. 이로 인해 미끼가 대상의 컴퓨터에 두 번이나 존재하게 됩니다. 하지만 안타깝게도 이 TA가 미끼를 두 번이나 떨어뜨린 동기는 알려지지 않았기 때문에 이것이 의도적인 것인지 아니면 TA 측의 실수인지는 여전히 확신할 수 없습니다.

다음 함수인 GetTargetPID는 매우 간단합니다. 즉, explorer.exe, notepad.exe, msedge.exe와 같은 프로세스 집합을 열거합니다. 이 프로세스들은 클래식 프로세스 주입을 위한 희생양 프로세스로 사용되며, 프로세스 주입 전에 프로세스를 열거하는 데 일반적으로 사용되는 CreateToolHelp API를 사용하여 이를 수행합니다.

이제 세 번째 함수 Download를 살펴보면, 이전 함수와 마찬가지로 비슷한 User-Agent를 사용하고 있으며, 이번에는 비슷한 원격 웹 서버에서 fontawesome.woff라는 다른 파일을 다운로드하고 있으며, 기본적인 중지-시도 메커니즘을 사용하여 파일을 쿼리하고 InternetReadFile이라는 API를 사용하여 대상 머신에 다운로드한 후 대상 머신에 저장합니다.

이제 DUPERUNNER 임플란트의 마지막 함수로 넘어가면 두 개의 인수가 필요하다는 것을 알 수 있습니다. 하나는 TargetID이고 다른 하나는 프로세스 주입을 수행하기 위해 전달되는 다음 스테이저 버퍼의 셸코드입니다.

이름에서 알 수 있듯이 이 함수는 VirtualAllocEx를 사용하여 메모리를 할당한 다음 대상 프로세스에 셸코드를 쓰는 고전적인 원격 스레드 주입을 사용하고, 더 나아가 대상 프로세스에 새 스레드를 생성합니다. 여기서 네 번째 매개변수 LPTHREAD_START_ROUTINE(lpBaseAddress라고도 함)에는 셸코드의 주소가 들어 있으며, 이 경우 Adaptix C2 비콘이 실행됩니다.
마지막으로, 대상 컴퓨터에서 마지막 스테이저가 실행되고 DUPERUNNER 임플란트가 정상적으로 종료됩니다. 다음 섹션에서는 Adaptix C2 비콘을 살펴보겠습니다.
3단계 – AdaptixC2 비콘
처음에 파일을 살펴본 결과, fontawesome.woff라는 이름의 이 파일은 기본적으로 스테이저 파일이라는 것을 알아냈습니다. 이 파일은 가상 부트스트랩 로더 역할을 하여 특정 작업을 수행하고 마지막으로 셸코드를 로드하는데, 셸코드는 기본적으로 메모리에 C2 비콘입니다.

또한 우리는 이 스테이저 기반 페이로드가 단지 몇 가지 기능만을 포함하고 있다는 것을 알아냈습니다.

sub_12D를 실행하면서, 먼저 자신의 숨겨진 페이로드를 찾기 위해 영리한 방법을 사용합니다. 현재 위치에서 자신의 메모리를 스캔하여 매직 바이트 0x5A45("EZ"를 거꾸로 쓴 것)를 찾습니다. 이 마커를 찾으면 정확히 60바이트 뒤에 저장된 숫자를 읽습니다. 이 숫자는 셸코드 끝에 붙어 있는 실제 DLL의 오프셋입니다. 그런 다음 해당 위치로 이동하여 간단한 정상성 검사를 수행하고 데이터가 "PE\0\0"으로 시작하는지 확인합니다.
![]()
그런 다음 다음 함수 집합을 살펴보면 sub_69는 기본적으로 확인할 DLL 이름의 해시를 가져옵니다.

DLL 기본 주소 전체는 고전적인 PEB->Ldr->InMemoryOrderModuleList 순회를 통해 확인됩니다. 여기서 맬웨어는 로드된 모듈 목록을 탐색하고 사용자 지정 시드 1572를 각 모듈 이름에 사용하여 대상 해시(이 경우 ntdll.dll의 경우 0x19A59EC)와 일치하는 항목을 찾을 때까지 사용자 지정 대소문자를 구분하지 않는 djb2 스타일 해싱 루틴을 적용합니다. 다른 0x7B348614는 kernel32.dll입니다.

DLL 이름의 ASCII 이름을 확인하는 데 사용할 수 있는 간단한 Python 스크립트를 작성했습니다.

![]()
다음으로, DLL의 기본 주소가 확인되면 내보내기 테이블을 탐색하고 각 내보낸 함수 이름을 사용자 정의 해시 값과 일치시켜 API도 확인했습니다. 이를 통해 맬웨어는 셸코드 실행을 위해 VirtualAlloc, GetProcAddress 등의 함수를 동적으로 조회할 수 있었습니다.

셸코드가 실행되자 구성을 추출하여 임플란트의 Beacon-ID와 같은 몇 가지 중요한 아티팩트를 발견했습니다.

그 외에도 비콘이 C2-원격 호스트에 접속하여 POST 방식을 함께 사용했다는 사실과, 이와 관련된 User-Agent도 발견했습니다.

마지막으로 흥미로운 아티팩트를 발견했는데, 바로 C2 URL입니다. 공격자가 인프라를 호스팅했던 곳입니다. AdaptixC2는 오픈소스 프로젝트이므로 다른 코드 조각들은 이미 웹에 공개되어 있으므로 자세히 살펴보지는 않겠습니다. 하지만 위에서 비콘 ID, 사용자 에이전트, C2 호스트와 같은 중요한 아티팩트들은 추출했습니다.
다음 섹션에서는 이 캠페인의 인프라 세부 사항에 대해 중점적으로 살펴보겠습니다.
인프라 유물
처음에 우리는 이러한 악성 캠페인과 관련된 두 개의 네트워크 관련 아티팩트가 있다는 것을 발견했습니다. 그 중 하나는 악성 LNK가 DUPERUNNER 임플란트를 다운로드하는 데 사용했고, 다른 하나는 AdaptixC2가 호스팅된 원격 호스트였습니다.

글쎄요, 네트워크 기반 검색을 빠르게 수행한 결과, IP 주소 46[.]149[.]71[.]230 최신 업데이트가 기본 포트 구성인 포트 443에서 제공되고 있음을 확인했습니다. 어댑틱스C2 HTTP 비콘도 기본 Apache 웹 서버로 실행 중이며 기본 페이지가 있습니다.


DUPERUNNER 임플란트에서 확인했듯이, 이 원격 호스트는 포트 80에서 호스팅되는 후반 단계의 다운로드만 담당했습니다. TA가 나중에 AdaptixC2를 호스팅하는 서버로 사용하기 위해 포트 443으로 설정을 변경한 것은 매우 특이한 사례라고 생각합니다. 또한, 유사한 인프라 구조가 중복되는 여러 개의 흥미로운 도메인이 이 유사한 주소를 가리키고 있다는 사실도 확인했습니다.


이제 다음 IP 주소로 넘어가서, 비콘이 연결되었던 이 C2 호스트의 최신 응답이 AdaptixC2 HTTP 비콘에 대해 유사한 포트 구성을 가지고 있음을 확인했습니다.
악성 인프라는 ASN에서 호스팅됩니다. AS 48282 및 AS 9123 VDSINA-AS 및 TIMEWEB-AS 조직에 따라.
맺음말
저희는 2025년 11월부터 UNG0902 클러스터에서 이 캠페인을 추적해 왔으며, DUPERUNNER와 AdaptixC2와 같은 여러 악성 인프라와 임플란트를 사용하는 것을 발견했습니다. 저희 조사 결과, 해당 위협 행위자는 여러 조직의 직원을 표적으로 삼고 있는 것으로 나타났습니다. 저희는 이 캠페인을 동일한 클러스터에서 추적할 예정이며, 현재 진행 중인 캠페인은 국가가 지원하는 활동으로 추정합니다.
SEQRITE 보호
- 트로이 목마.50169.SL
- 트로이 목마.50168.GC
- 로더.S38592683
IOC
| 해시(SHA-256) | 파일 유형 |
| 87db5cbd76e7adeb6932c4ae14f3d3bb736d631460d65e067fb2a0083b675399 | EXE |
| d9e2b6341f6de5c95dd02cf3350c07cd2be3b0a78b82c073229396b6d4c8d3c1 | EXE |
| 3ce5ab897b7f33bc1b9036abc8e7d2812b385fbab404dad686afaf9fb83fe07a | EXE |
| 48b9f78899b8a3daaeb9cbf7245350a6222cbf0468cd5c2bab954c8dbbce3995 | EXE |
| 7157be86c6612c59e5120ae00260f4268b19560fa5a6fa52ed54d72868070d50 | 7zip |
| 432974205e1ce4c1d2c0e6bf6ebfafd90f6c19451eec0485ac46beaf65247763 | EXE |
| 1e0c5129ac74989754b7c27be9e12b1ebf90fa5f81db6d7fe5f1aa050a914cf9 | EXE |
| 3a52c13d00af0486095ee4007fd72dae646d3c7384754744507e33537b3fdf2a | EXE |
| 8c075d89eee37a58f1f3a8bf0cbd97e0c8f00e73179a36eb2cd8745024c1c4ee | EXE |
| 2cd715d0702fd70fda45c0569a38b3d983de1a8cf23b559293a7c0623da69c90 | EXE |
| ba6902efd3771a564785bdae68fa5f5ac12b7ebd828e8975459fff0136e2efdb | DLL |
MITER ATT & CK
| 술책 | 기술 ID | 기술명 | Operation DupeHike에 적용되는 방식 |
| 초기 액세스 | T1566.001 | 스피어피싱 첨부 파일 | 피해자는 악성 PDF 테마의 LNK 미끼(직원 보너스 정책)가 포함된 ZIP 파일을 받습니다. |
| 실행 | T1204.002 | 사용자 실행: 악성 파일 | 사용자가 LNK 파일을 PDF라고 생각하고 열어서 실행을 트리거합니다. |
| 실행 | T1059.001 | PowerShell을 | LNK는 -NoNI -nop -w hidden 옵션을 사용하여 PowerShell을 실행하여 C2에서 DUPERUNNER를 다운로드하고 실행합니다. |
| 실행 | T1218.011 | 시스템 바이너리 프록시 실행: Rundll32 / LOLBIN 실행 | PowerShell과 기타 LOLBIN은 악성 구성 요소의 실행을 프록시하는 데 사용됩니다. |
| 실행 | T1105 | 인그레스 도구 전송 | PowerShell Invoke-WebRequest(iwr)는 s.exe(DUPERUNNER)를 다운로드하고 나중에 fontawesome.woff(AdaptixC2 stager)를 다운로드합니다. |
| 방어 회피 | T1036 | 위장 | LNK는 PDF인 것처럼 보이고, DLL은 ZIP인 것처럼 보이고, WOFF는 글꼴 파일인 것처럼 보입니다. |
| 방어 회피 | T1027 | 난독화/암호화된 파일 | AdaptixC2는 매직 바이트(EZ) 뒤에 첨부된 압축 셸코드를 사용합니다. |
| 방어 회피 | T1027.007 | 동적 API 해상도 | AdaptixC2는 djb2 스타일 해싱과 PEB 트래버설을 사용하여 API를 확인합니다. |
| 방어 회피 | T1055.003 | 스레드 실행 하이재킹 | DUPERUNNER는 합법적인 프로세스(explorer.exe, notepad.exe, msedge.exe)에 셸코드를 주입합니다. |
| 방어 회피 | T1620 | 반사 코드 로딩 | AdaptixC2는 반사적 로딩 기술을 사용하여 추가된 셸코드에서 페이로드를 로드합니다. |
| 발견 | T1082 | 시스템 정보 검색 | DUPERUNNER는 호스트 이름, 도메인, 시스템 시간, 임시 디렉토리를 수집하고 피해자 GUID를 생성합니다. |
| 발견 | T1057 | 프로세스 발견 | DUPERUNNER는 CreateToolHelp API를 사용하여 프로세스(explorer.exe, notepad.exe, msedge.exe)를 열거합니다. |
| 명령 및 제어 | T1071.001 | 애플리케이션 계층 프로토콜: HTTP | DUPERUNNER는 HTTP GET을 사용하여 46.149.71.230에서 미끼와 비콘을 다운로드합니다. |
| 명령 및 제어 | T1132 | 데이터 인코딩 | 비콘 결과와 통신은 내부 루틴을 통해 인코딩됩니다. |
| 명령 및 제어 | T1095 | 비응용 계층 프로토콜 | AdaptixC2는 비콘을 위해 원시 TCP를 사용할 수 있습니다(C2 설계에서 암시됨). |
| 명령 및 제어 | T1573 | 암호화 된 통신 | AdaptixC2 비콘은 C2 통신 중에 암호화를 사용합니다. |
| 권한 상승/방어 회피 | T1055 | 공정 주입 | DUPERUNNER는 원격 스레드 주입을 통해 합법적인 프로세스에 AdaptixC2 셸코드를 주입합니다. |
| 수집 | T1113 / T1005 | 지역 데이터 수집 | TA의 지시에 따라 시스템 파일을 검색할 수 있는 비콘입니다. |
| 여과 | T1041 | C2 채널을 통한 유출 | 비콘은 POST를 통해 인코딩된 결과/출력을 /result C2 엔드포인트로 전송합니다. |
| 영향 | T1537 | 데이터 유출 | 러시아 기업의 시스템 데이터와 파일을 훔칩니다. |
작성자
- 수바지트 싱하
- 프리야 파텔
- 난디니 세스



