◈ Key Findings
- Evidence of follow-on distribution using malicious LNK files contained in ZIP archives identified in Kimsuky-linked attack activity
- Traces of the AI agent "opencode" identified in decoy PDF metadata, showing the continued use of AI and LLMs to mass-produce decoys
- All LNK files configured to launch PowerShell, with encrypted loaders concealed within lengthy execution arguments
- Decoy documents and follow-on PowerShell commands retrieved from GitHub Raw Content paths using a GitHub PAT
- Anti-analysis logic designed to detect analysis tools and virtualization processes and terminate execution when specific conditions are met
- Need to strengthen EDR-based detection and threat hunting for the abuse of LNK files, PowerShell, and GitHub
1. Executive Summary
Genians Security Center continues to track Git-based C2 attacks assessed to be carried out by Kimsuky, collectively known as Operation GitPower. In a previous threat intelligence report, we also disclosed evidence that Kimsuky was using AI and local LLMs to prepare attacks and create decoys.
This report presents a follow-up analysis based on a detailed examination of 13 malicious LNK files collected and identified between August 11 and 19, 2026. The LNK files use filenames disguised as documents related to financial and corporate operations, including fund disbursement, insurance premiums, interest payments, policy funds, certificate renewal, store master data, customer documents, and Visa payments.
This shows that Kimsuky's decoy themes, which previously focused primarily on diplomacy, security, and academia, have expanded to a wider range of targets, including financial institutions and corporate personnel. The 13 malicious samples retain the core tactics identified in previous attacks. Repeated characteristics include abnormally long LNK execution arguments, argument concealment using leading spaces, custom decoders, access to GitHub Raw Content using hardcoded PATs (Personal Access Tokens), registration of hidden scheduled tasks, and task names disguised as legitimate software.
However, this analysis also identified additional signs of evolution that were not covered in the previous report.
First, some variants include analysis-evasion routines that detect analysis and virtualization tools, inspect sandbox usernames, and delete command histories. These routines are assessed as attempts to interfere with both automated analysis environments and manual analysis by security researchers.
Second, Pastebin was observed being used as a second-stage payload delivery channel in addition to GitHub. This is interpreted as the use of an alternative delivery route in parallel with the existing C2 operation method in preparation for blocking or takedown.
Third, the decoy document types have diversified beyond PDF to include XLSX and PNG files. Some variants displayed only an error document without providing an actual decoy document. The possibility that this resulted from a mistake by the threat actor cannot be ruled out.
In particular, this analysis continued to identify evidence that AI and LLMs were used to mass-produce decoy documents. The 29 decoy documents downloaded from the GitHub C2 were classified by hash, revealing 11 unique documents and numerous duplicates in which the same documents were redistributed under different randomized filenames. This shows that the threat actor reuses the same decoy documents across repositories while randomizing only the filenames.
Analysis of the document metadata and content found that some PDFs contained "opencode", an AI coding agent, in the Creator and Producer fields, while the Author field remained set to "anonymous". The content also contained unreplaced placeholders such as "(temporary value)", indicating that LLM-generated document drafts were used in the attacks without sufficient review.
(Note) An unreplaced placeholder is temporary text inserted during document creation for later replacement with an actual value but left unchanged in the final document. If the document had undergone a proper review process, notations such as "(temporary value)" should have been replaced with actual figures or text, or deleted. These traces are therefore assessed as important evidence suggesting that an LLM-generated draft was used as an attack decoy without sufficient review.
Another set of PDFs contained HeadlessChrome and Skia/PDF metadata. This indicates that the threat actor first generated the documents in HTML format and then converted them by automatically executing the PDF save function in a headless Chrome browser. The high degree of similarity in content structure and standardized wording across the documents further supports the evidence that they were mass-produced using a single prompt or HTML template with only the topic changed.
These findings show that Kimsuky is increasing the speed and diversity of decoy document creation using AI and LLMs while retaining its existing GitHub PAT-based C2 and LNK execution framework. In particular, the combined use of AI-generated documents and stolen copies of legitimate documents is assessed as an operational approach intended to selectively adjust the credibility of the decoys according to the target and topic.
This report is not based on a single specific sample. It draws on behaviors, infrastructure, and document creation patterns repeatedly identified across the 13 LNK variants and the decoy documents they download. The findings can also be used to develop detection policies for attacks in the same family and strengthen threat hunting and incident response.
[Figure 1-1] Comparison of Placeholders in Decoy Documents
2. Threat Analysis
2-1. Initial Access
Initial access begins with a typical spear phishing attack in which the user extracts a ZIP archive distributed by the threat actor through email or other channels and executes the LNK file contained inside.
The archive contains LNK files with filenames and document icons that can easily be mistaken for legitimate business documents. As shown below, the decoy themes are closely aligned with Korean financial and corporate operations.
| Category |
Example Filename | Disguise Scenario |
| Funds/Policy |
20260811_자금집행.lnk 정책자금 안내 수정 사항_202608.lnk |
Fund disbursement attachments and policy fund notices |
| Insurance/Interest |
보험료 납부 안내_202608.lnk 이자 납부 안내_202608.lnk 보험서류.lnk |
Insurance premiums, interest payments, and related documents |
| Certificates/Security |
인증서 갱긴 안내.lnk Security_20260811.lnk |
Digital certificate renewal and security notices |
| Payments/Customers |
Visa5499.lnk 20260819_고객서류_No01.lnk |
Card payment details and customer documents |
| Retail | 2026년_8월_매장 기준정보 변경 지침.lnk | Store operating guidelines |
[Table 2-1] Comparison of LNK Filenames and Disguise Scenarios
In particular, variants with English filenames, such as "Security_20260811.lnk" and "Security_20260813.lnk", were found to share the same dates and infrastructure as the Korean-language decoys.
This suggests that the same threat actor may have modified the filenames and distributed the variants in parallel to simultaneously target domestic and overseas users or different target groups.
2-2. LNK File Structure and Disguise Characteristics
All 13 samples analyzed share the following disguise characteristics. This strongly suggests that they were generated using the same LNK creation tool or automated generation method.
1) Icon Disguise- All LNK files specify "%ProgramFiles%\Google\Chrome\Application\chrome.exe" as the icon path. This is intended to make users perceive them as legitimate browser executable files.
- The Description field of every LNK file contains the same values shown below. These values exactly match those described in the Operation GitPower report.
- Type: Hangul Document
- Size: 2.84 KB
- Date modified: 10/20/2023 11:23
The actual file format is LNK, and the file sizes range from approximately 319 KB to 8.9 MB. Therefore, the document type, file size, and modification date recorded in the Description field do not match the actual file properties.
3) Leading Spaces Used to Conceal Arguments- Approximately 300 space characters are inserted before the command-line arguments. As a result, the core command is not immediately visible in the Windows shortcut properties window. This also matches the leading-space technique described in the previous report.
- The commands themselves range from approximately 5,800 to 9,500 characters.
- The analyzed samples can be divided into two groups based on file size. The small variants consist of four files approximately 319 KB in size, while the large variants consist of nine files approximately 8.9 MB in size. However, the actual LNK structures, including the Header, LinkInfo, StringData, and ExtraData sections, are present only within approximately the first 16 KB of each file. The remaining area is filled with pseudorandom alphanumeric padding, as described below.
-
- The padding follows a pattern in which letters and numbers alternate. For example, it appears in the form "B0qS7zD5uK2mP9aX6cL3yN8v..." and uses a distinctive character set that excludes certain vowels.
- Windows ignores data located after the end of the LNK structure. Therefore, the padding is extraneous data that does not affect the execution flow.
[Figure 2-1] Padding Data
This technique can be used to artificially increase the file size and evade detection by some sandbox and anti-malware engines.
2-3. Custom Decoder Analysis
The core data in the execution arguments is not encoded in standard Base64 format.
It consists of a space-delimited decimal array and a custom arithmetic substitution decoder. The array variable name, $VIUSBvejbawf, is identical across all 13 samples.
[Figure 2-2] LNK Execution Arguments
This is a typical loader structure designed to evade static detection by obfuscating the actual payload as a numeric array and then decrypting, saving, and executing it at runtime. The core flow of the decoding routine is as follows.
1) The numeric array ($VIUSBvejbawf) is split by spaces to construct a byte list. This byte sequence is the encrypted payload.2) A short hardcoded key string is converted into UTF-8 bytes. The key value differs for each variant.
3) For each byte, pw_num is calculated as the key byte plus 103, and the output byte is generated according to the following conditions. The key index is applied cyclically.
- If pw_num ≥ the encoded value, output = pw_num - encoded value.
- Otherwise, output = encoded value.
- The key index is applied cyclically.
4) The resulting byte sequence is restored as a UTF-8 string to obtain the second-stage PowerShell script.
5) The restored script is saved to "%AppData%\<random>.ps1" and then executed using Invoke-Expression.
The additive constant +103 is used across all 13 samples. In contrast, the decoder key string is configured differently for each variant. The identified key strings are as follows.
| Variant |
Decoder Key | Dropped Script Filename |
| Fund Disbursement/Security (0811) | N*32h^G | fgkpxjbgthy.ps1 |
| Fund Disbursement/Security (0813) | KK*3bU() | fgkpxjbgthy.ps1 |
| Customer Documents | N&*2hn | kvnourgr.ps1 |
| Store Master Data | k*5jhc# | kvnourgr.ps1 |
| Insurance Premium Payment/Policy Financing | *bebhj&U7 | kvnourgr.ps1 |
| Insurance Documents | 27%&G3j | fgkpxjbgthy.ps1 |
| Interest Payment (202608) | J83&^3 | kvnourgr.ps1 |
| Interest Payment | VNi^k | fgkpxjbgthy.ps1 |
| Certificate Renewal |
V&63bJ& | fgkpxjbgthy.ps1 |
| Visa5499 | OPu&6vh | fgkpxjbgthy.ps1 |
[Table 2-2] Comparison of Decoder Keys and Script Names by Variant
The reuse of the same algorithm, constant, and variable name while changing only the decoder key supports the assessment that multiple variants were generated using the same builder with different parameters.
2-4. Second-Stage PowerShell Loader Behavior
2-4-1. “20260811_자금집행.lnk”
Using "20260811_자금집행.lnk" as an example, the decoded second-stage script typically performs the following operations:
1) Prepare the Decoy Document- The script specifies "%TEMP%\자금집행첨부자료.pdf" as the destination path and first deletes any existing file at that location.
- The script loads a hardcoded PAT used to access GitHub Raw Content.
- The URL is split into individual strings, such as "h" + "t" + "t" + "p" + "s" + ..., and assembled at runtime. This technique is intended to evade static string detection. The resulting URL is “https://raw.githubusercontent[.]com/sven5500/firtfirter/main/”.
- Using authentication headers (Authorization: token <PAT> and Accept: application/vnd.github.v3.raw) and a meaningless custom header (aohvcoehfg=oxhdvshbrsregst), the script downloads the remote decoy file "xnciuegwpo.pdf". It then saves the file to "%TEMP%\자금집행첨부자료.pdf" and opens it immediately, leading the victim to believe that a legitimate document has been opened.
- The script creates "%AppData%\mlxchjvose.ps1". When executed, this script downloads the follow-on payload "SqpmvihdrgS.txt" from the same repository and saves it to "%AppData%\qpmvixibrg.ps1". It then launches PowerShell without displaying a window using the following command format: conhost.exe --headless powershell.exe -ExecutionPolicy Bypass -File <path>.
- The script registers a hidden scheduled task named "BitLockor Encrypter All Drives_102974298364124_skillerty". Although the name resembles BitLocker, a legitimate Windows feature, it uses the misspelling "BitLockor" as a form of masquerading. The task is configured to run for the first time five minutes after registration and subsequently at 10-minute intervals. The -Hidden option is also applied, making the task more difficult for users to notice.
- The script deletes itself using the command Remove-Item -Path $MyInvocation.MyCommand.Path -Force.
Launching PowerShell through conhost.exe --headless without displaying a window is a concealment technique intended to hide subsequent stages from the user.
The scheduled task names are also designed to resemble legitimate system tasks associated with BitLocker, MATLAB, and .NET Framework NGEN. Minor spelling variations are used across the variants, indicating an attempt to evade static signature-based detection.
2-5. Analysis Evasion Routines
2-5-1. “20260819_고객서류_No01.lnk”
This variant was found to contain analysis evasion code at the beginning of the first-stage script that was not described in the previous report. Its primary behaviors are as follows.
1) Check the Process Blocklist for Analysis and Virtualization Tools- The script checks for processes associated with VGAuthService, vmtoolsd (VMware Tools), ProcessHacker, x64dbg, PE-bear, CFF Explorer, Autoruns, procexp, procexp64, Procmon, Procmon64, tcpview, Dbgview, portmon, and other tools.
- The script records the Get-Process output in "%AppData%\1.txt" and searches it for the name of each tool. If any of these names are found, the script terminates execution.
- If the value of $env:username is Bruno, the script immediately deletes itself. Bruno is presumed to be a username used in an analysis environment.
- If an analysis environment is detected, the script deletes the PowerShell command history file "%AppData%\Microsoft\Windows\PowerShell\PSReadLine\ConsoleHost_history.txt". It then removes temporary files and terminates execution.
- If the analysis evasion checks are passed, the script uses the XLSX document "영수증.xlsx" as the decoy file. The remote filename is "NWfie.xlsx".
These behaviors indicate that the threat actor is enhancing its capabilities to counter automated analysis environments and reverse engineering tools.
They also reaffirm the limitations of determining whether content poses a threat based solely on the quality of the decoy document or the results observed when it is opened.
2-6. Pastebin-Based Alternative C2
2-6-1. “Visa5499.lnk”
This variant downloads and opens the PNG decoy file "Visa_5499.png" from GitHub Raw.
1) Persistence Script Behavior- The persistence script created at "%AppData%\p5234fop.ps1" retrieves remote code from Pastebin using the following URL.
- https://pastebin[.]com/raw/gybpx38s
- If the received code is not empty, the script immediately executes it in memory using iex (Invoke-Expression).
- The scheduled task is named "MATLAB R2022bsdugbvr Startup Acceleratorsdpvishdgreg" to make it appear to be a legitimate MATLAB-related task. The task is configured to run for the first time five minutes after registration and subsequently at 35-minute intervals.
Rather than relying solely on GitHub as a single channel, this variant also uses Pastebin, a legitimate text-sharing service, as a delivery channel for the second-stage payload.
This is assessed to be a channel diversification strategy intended to make it difficult to disable all C2 communications by blocking a specific domain alone.
2-7. Variant Classification and Infrastructure Correlation
The characteristics of the 13 malicious LNK files are summarized below. All samples were found to contain the same description in their properties.
| No | File Name | Decoy |
GitHub Account/Repository |
Scheduled Task Name | LNK Property Description (Identical Across All Samples) |
Notable Findings |
| 0 | 20260811_자금집행.lnk | 자금집행첨부자료.pdf | sven5500/firtfirter | BitLockor Encrypter All Drives_102974298364124_skillerty |
Type: Hangul Document Size: 2.84 KB Date modified: 10/20/2023 11:23 |
Shares the PAT, repository, and task name with sample No. 4 |
| 1 | 20260813_자금집행.lnk | 자금집행첨부자료.pdf | montry111/secsecon | BitLockor Encrypter All Drives_102974298364124_skillerty | Shares the PAT and repository with sample No. 5 and uses the same task name as samples No. 0 and No. 4, but with a different account | |
| 2 | 20260819_고객서류_No01.lnk | 영수증.xlsx | jamjack2026/zoysotor | BitLooktr Enerypteer AlLER DrLiivers_9734568237652345_updateers | Includes analysis evasion routines and typos in the task name | |
| 3 | 2026년 8월 매장 기준정보 변경 지침.lnk | 2026년 8월 매장 기준정보 변경 지침.pdf | urusa4400/yutyutb | BitLockor Encrypter AllER Drives_89643165878_skillerty | Uses the same task name as samples No. 7, No. 9, and No. 12, but with different accounts | |
| 4 | Security_20260811.lnk | 보험료 자동이체 입금 안내.pdf | sven5500/firtfirter | BitLockor Encrypter All Drives_102974298364124_skillerty | Shares the PAT, repository, and task name with sample No. 0 | |
| 5 | Security_20260813.lnk | 보험료 자동이체 입금 안내.pdf | montry111/secsecon | BitLockor Encrypter All Drives_102974298364124_skillerty | Shares the PAT, repository, and task name with sample No. 1 | |
| 6 | Visa5499.lnk | Visa_5499.png | jamestony88/confgiwr | MATLAB R2022bsdugbvr Startup Acceleratorsdpvishdgreg | Adds Pastebin as an alternative C2 channel and uses a PNG decoy | |
| 7 | 보험료 납부 안내_202608.lnk | 보험료 납부 안내_202608.pdf | baras6600P/oupouper | BitLockor Encrypter AllER Drives_89643165878_skillerty | Shares the PAT and repository with sample No. 12 | |
| 8 | 보험서류.lnk | 보험서류.pdf (오류 문서) |
jamjack2026/twotwo | .NET Framework NGEN v4.0.3031923879465346234523 | Uses the same account as sample No. 2, but a different repository | |
| 9 | 이자 납부 안내_202608.lnk | 이자 납부 안내_202608.pdf | choemiyang/openoper | BitLockor Encrypter AllER Drives_89643165878_skillerty | Uses the same task name as samples No. 3, No. 7, and No. 12, but with different accounts | |
| 10 | 이자납부 안내.lnk | 보험서류.pdf (오류 문서) |
jeni534/qmcoiuuer | .NETRUdKBIEGE FremeweRGe9287347235233 MHHEN t4.2-w3094729136848273523 | None | |
| 11 | 인증서 갱긴 안내.lnk | 인증서 갱긴 안내.pdf (오류 문서) |
urusa4400/vcgheeg | .NETRUNOUE FremeweRk12273268762345 NGEN t7.9sldjgo2193874124 | Uses the same account as sample No. 3, but a different repository | |
| 12 | 정책자금 안내 수정 사항_202608.lnk | 정책자금 안내 수정 사항_202608.pdf | baras6600P/oupouper | BitLockor Encrypter AllER Drives_89643165878_skillerty | Shares the PAT and repository with sample No. 7 |
[Table 2-3] Analysis of Variant Infrastructure and Correlations
The correlation analysis identified the following operational characteristics.
1) PAT and Repository Sharing by Date Set- The Fund Disbursement and Security variants share the same PAT and repository, as do the Insurance Premium Payment and Policy Financing variants. These cases demonstrate that different decoy themes were distributed simultaneously through the same infrastructure, forming a single campaign unit.
- The jamjack2026 and urusa4400 accounts were each reused to operate separate repositories.
- Samples No. 8, No. 10, and No. 11 lack the function call required to download the decoy document. Although the remote decoy URL and authentication headers are constructed, they are not used. The Korean word "갱신", meaning renewal, is also misspelled as "갱긴".
- Instead, the script creates a file of approximately 16 bytes containing only the string "error", assigns it a .pdf extension, and opens it. As a result, the user is shown an error document.
- However, the scheduled task registration and second-stage payload retrieval functions operate normally, so these cases should not be regarded as failed infections.
2-8. Indicators of AI-Generated Content and Production Infrastructure
This section analyzes the decoy documents downloaded from the GitHub C2 infrastructure by the malicious LNK files examined above.
Classification of the collected decoy files by hash identified approximately 11 unique documents. The remaining files are duplicates of the same documents redistributed under different randomized filenames.
Metadata analysis identified multiple indicators that AI tools were used during the document creation process.
2-8-1. Collection Overview and Duplicate Distribution Structure
All 11 unique documents used as decoys exist under at least two different filenames. Insurance premium-related documents were the most frequently reused. This indicates that the threat actor reuploads the same decoy documents to different repositories under randomized filenames.
| Category |
Quantity |
| Collected Files | 29 |
| Unique Documents (Based on MD5 Hash) | 11 |
| Duplicate Rate |
62% (18 duplicate files) |
| Formats | 9 PDF files / 2 XLSX files |
2-8-2. Classification by Authoring Tool
Metadata analysis of the 11 documents identified four distinct families based on the authoring tools used.
| Document Title | Format | Creator / Producer | Author | Creation Time (UTC) |
| Receipt | XLSX | Microsoft Excel (AppVer 12.0000) | AzureUser | 2026-08-18 18:32:08 |
| Deposit Account Reconciliation Ledger | XLSX | Microsoft Excel (AppVer 12.0000) | AzureUser | 2026-08-18 18:34:14 |
| Insurance Claim Form and Detailed Consent Form_2026.08 | Adobe Illustrator 26.0 (Windows) / Adobe PDF library 16.03 | - | 2026-04-03 01:15:04 | |
| Interest Payment Notice | HeadlessChrome/151.0.0.0 / Skia/PDF m151 | - | 2026-08-10 19:30:41 | |
| Insurance Premium Payment Notice (August 2026) | opencode / opencode | anonymous | 2026-08-16 03:00:00 | |
| Fund Disbursement Attachment | HeadlessChrome/151.0.0.0 / Skia/PDF m151 | - | 2026-08-10 19:46:01 | |
| Automatic Transfer Deposit Notice | HeadlessChrome/151.0.0.0 / Skia/PDF m151 | - | 2026-08-10 19:42:04 | |
| August 2026 Policy Financing Support Guide | opencode / opencode | anonymous | 2026-08-16 03:00:00 | |
| Interest Payment Notice (August 2026) |
opencode / opencode | anonymous | 2026-08-16 03:00:00 | |
| Insurance Premium Automatic Transfer Deposit Notice |
HeadlessChrome/151.0.0.0 / Skia/PDF m151 | - | 2026-08-10 19:27:58 | |
| Store Master Data Change Management Guidelines (August 2026) |
opencode / opencode | anonymous | 2026-08-16 03:00:00 |
The document families are summarized below. Multiple documents were found to have been created using opencode, an AI coding agent.
| Family | Authoring Tool | Creation Time Characteristics |
| A. opencode Family | AI coding agent opencode | All four documents have exactly the same timestamp, 2026-08-16 03:00:00, down to the second. |
| B. HeadlessChrome Family | Headless Chrome print output | Creation was concentrated within approximately 18 minutes, from 2026-08-10 19:27 to 19:46 |
| C. Adobe Family | Adobe Illustrator 26.0 | Created on 2026-04-03, more than four months apart from the other families |
| D. Excel Family |
Microsoft Excel / AzureUser | Created within approximately two minutes, from 2026-08-18 18:32 to 18:34 |
2-8-3. AI Coding Agent opencode Recorded as the Producer
In the metadata of some PDF documents, both the Creator and Producer fields are recorded as opencode. opencode is a terminal-based, open-source AI coding agent that automatically writes code and generates files based on natural language instructions.
[Figure 2-3] opencode Interface
These values are not typically generated by conventional document authoring software and strongly suggest that the documents were generated programmatically through an AI agent rather than manually created using document authoring tools. The Author field is also set to anonymous across all of these documents, indicating that the tool's default value was left unchanged.
The body text of the opencode family documents contains unreplaced placeholder text that appears to have been generated by an LLM.
- Payment schedule: Monthly payment date (placeholder)
- Payment grace period: 14 days from the payment date (placeholder)
- Working capital: Up to KRW 100 million per company at a fixed annual interest rate of 2.0% (placeholder)
This indicates that during the document generation process, the model marked figures it could not determine as placeholders and that the threat actor distributed the documents without replacing them with actual values. This suggests that little or no subsequent human review was performed during document production. It also represents a key artifact that directly indicates AI-based automated generation.
The timestamp information further supports the possibility that the documents were generated in a batch rather than created individually. The CreationDate values of all identified opencode family documents are identical down to the second at 2026-08-16 03:00:00 UTC, and no separate ModDate values were identified. When converted to Korea Standard Time (KST, UTC+09:00), the timestamp corresponds to 2026-08-16 12:00:00.
The fact that multiple documents have creation timestamps that are identical down to the second differs from a typical workflow in which a user creates or edits each document sequentially. This suggests that multiple documents may have been generated in a batch through a single automated process or script.
[Figure 2-4] opencode Entry in PDF Properties
Text similarity analysis of the HeadlessChrome family documents found that some documents were more than 80% identical. Comparison of the actual sentences shows that only the topic keywords were replaced, while the sentence structure remained unchanged.
- 이자 납부와 관련하여 처리 완료된 납부 내역을 안내드리오니, 각 담당자께서는 해당 내용을 확인하여 주시기 바랍니다.(We are providing details of the completed interest payments. Each person in charge is requested to review the relevant information.)
- 보험료 자동이체와 관련하여 처리 완료된 입금 내역을 안내드리오니, 각 담당자께서는 해당 내용을 확인하여 주시기 바랍니다.
(We are providing details of the completed automatic insurance premium transfer deposits. Each person in charge is requested to review the relevant information.)
[Figure 2-5] Comparison of HeadlessChrome Family Decoy Documents
Common boilerplate phrases such as "prepared for internal review and business management purposes," "request for confirmation," and "each person in charge is requested to review the relevant information" also appear identically across multiple documents. This is assessed to be a typical pattern of mass generation in which only the topic is changed within a single prompt or document template.
HeadlessChrome-based PDF generation is commonly used in AI and LLM-based document automation pipelines. An LLM generates the document body and HTML/CSS formatting based on natural language instructions, and Headless Chrome renders the HTML without displaying a screen and saves it as a PDF.
[Figure 2-6] Metadata of the Interest Payment Notice PDF Document
Therefore, when PDF metadata contains the values Creator: HeadlessChrome and Producer: Skia/PDF, it suggests that an HTML document generated by an LLM or script may have been converted to PDF through browser automation rather than being manually created using a conventional document editor.
The identical creation and modification timestamps, which indicate no subsequent editing, and the sequential generation of multiple documents within approximately 18 minutes further support the use of automation.
This family uses a table-based official document format and is more polished than the opencode family. No exposed artifacts such as "(placeholder)" were identified. This suggests that document quality was improved through a two-stage pipeline in which AI generated the HTML formatting and a browser rendered it.
For the two XLSX documents, both the author and last modified by fields in "docProps/core.xml" are recorded as AzureUser. AzureUser is a default administrator account name commonly used on Microsoft Azure virtual machines, suggesting that the threat actor may have created the documents in a cloud VM environment. This is also consistent with the common operational practice of state-sponsored threat groups using cloud instances to evade tracking.
The pattern of using AI to create decoy documents, identified in last month's report, is more clearly demonstrated in this campaign. In particular, the following three findings were newly identified.
- Identification of the Tool
- Previously, the use of AI was inferred only from the writing style and document structure. In this analysis, however, the AI coding agent opencode is recorded directly in the PDF Producer field, explicitly identifying the tool used.
- Two Distinct Production Pipelines
- Simple AI generation through direct opencode output and a two-stage AI plus rendering process involving HTML generation followed by Headless Chrome conversion are used in parallel. The latter produces more polished documents, indicating that the threat actor is improving its production pipeline to enhance quality.
- Lack of Review
- The "(placeholder)" text remained in the distributed documents as many as nine times. Although AI enabled greater production speed and volume, the documents were distributed without adequate quality review.
3. Threat Attribution
3-1. Same Threat Actor as the Operation GitPower Cluster
Based on the following evidence, this campaign is assessed to have been conducted by the same threat actor behind Kimsuky's Operation GitPower.
1) Matching LNK Masquerading Fingerprints- The Chrome icon, the forged "Hangul Document / 2.84 KB / 10/20/2023 11:23" property description, and approximately 300 leading spaces exactly match the fingerprints described in the Operation GitPower report.
- The abnormally long command-line arguments and the method of combining URL fragments in the form of "ht"+"t"+"ps" represent the same evasion tactics.
- The use of an arithmetic substitution-based custom decoder instead of the standard FromBase64String function is a recurring characteristic observed within the same cluster.
- The Accept: application/vnd.github.v3.raw header, token <PAT> authentication, and insertion of meaningless custom headers are identical to the C2 operation methods used in Operation GitPower.
- The registration of scheduled tasks masquerading as legitimate software such as BitLocker, MATLAB, and .NET, followed by deletion of the original script, represents the same persistence and trace removal routine.
- While maintaining the existing pattern of masquerading as financial, legal, and business documents, the decoy themes have become more specialized to target Korean financial and retail business operations.
| Tactic | Technique | Description |
| Initial Access | T1566.001 Spearphishing Attachment | Distribution of malicious LNK files in ZIP archives |
| Execution | T1059.001 PowerShell / T1204.002 User Execution | PowerShell loader launched after LNK execution |
| Execution/Defense Evasion | T1202 Indirect Command Execution | PowerShell executed without a visible window through "conhost.exe" using the --headless option |
| Defense Evasion | T1027 Obfuscated Files or Information / T1140 Deobfuscate/Decode Files or Information | Custom decoder, URL splitting, and file size inflation |
| Defense Evasion | T1036.005 Match Legitimate Resource Name or Location | Chrome icon, forged properties, and task names masquerading as legitimate software |
| Defense Evasion | T1497 Virtualization/Sandbox Evasion | Analysis tool and username checks |
| Defense Evasion | T1070.003 Clear Command History | Removal of PSReadLine command history |
| Persistence | T1053.005 Scheduled Task | Registration of hidden scheduled tasks and periodic execution |
| Command and Control | T1102 Web Service | GitHub Raw / Pastebin (New) C2 |
| Exfiltration | T1041 Exfiltration Over C2 Channel | Upload of system information to GitHub |
4. Conclusion and Response
4-1. Threat Campaign Conclusions
The intrusion chain used in this campaign is identical to that of Kimsuky's existing Operation GitPower. However, this analysis shows that the cluster is not static and continues to evolve toward greater evasion and diversification.
The introduction of analysis evasion routines, the use of Pastebin as an alternative C2 channel, and the diversification of decoy formats all demonstrate a clear intent to increase the cost of detection and analysis. In particular, when combined with the trend highlighted in the previous report involving improvements in decoy quality through the use of AI, defensive approaches that rely solely on assessing the decoy content itself are no longer sufficient.
The focus of defense should therefore shift toward behavior-based correlation detection. We recommend connecting and analyzing the following sequential anomalies within a single attack context.
- Execution of an LNK file created immediately after archive extraction
- PowerShell execution initiated by an LNK file, with abnormally long command-line arguments containing thousands of characters and a large number of leading spaces
- Custom decoding using variable names similar to $VIUSBvejbawf and space-delimited numeric arrays
- Execution of PowerShell without a visible window through "conhost.exe" using the --headless option
- Creation and immediate execution of randomly named .ps1 files in the "%AppData%" and "%TEMP%" directories
- Registration of hidden scheduled tasks masquerading as legitimate software such as BitLocker, MATLAB, and .NET, with repeated execution at intervals of 5 to 35 minutes
- Use of the Authorization: token ghp_... and Accept: application/vnd.github.v3.raw headers when accessing raw.githubusercontent[.]com
- Combined Invoke-RestMethod and iex calls to pastebin[.]com/raw/...
- Evasion activities such as enumerating analysis tool processes and deleting "ConsoleHost_history.txt"
- Self-deletion of the original script or LNK file
4-2. Key Indicators for Threat Hunting
AI is improving the quality of decoy documents and accelerating attack preparation, while evasion techniques continue to become more sophisticated. However, it remains difficult to completely conceal the execution, persistence, C2 communication, and payload-loading activities that occur on endpoints.
An EDR-centered integrated response framework is therefore required to continuously incorporate the latest indicators of compromise, analyze correlations between attack stages, and rapidly block anomalous behavior.
- Files with an LNK property description matching the following values
- Type: Hangul Document
- Size: 2.84 KB
- Date modified: 10/20/2023 11:23
- LNK files with an icon masquerading as "chrome.exe" while the actual target is "powershell.exe" or "cmd.exe"
- LNK command-line arguments containing at least 300 leading spaces
- PowerShell processes accessing raw.githubusercontent[.]com using GitHub PATs unrelated to legitimate business operations
- Scheduled task name pattern hunting
- Tasks with slight spelling variations resembling legitimate task names or with meaningless numeric strings of at least 10 digits appended to the end of the task name
4-3. Integrated Response Strategy Based on Genian Insights E
This campaign is a multi-stage attack that gains initial access using malicious LNK files and decoy documents assessed to have been created with the AI agent opencode and HeadlessChrome. It then executes obfuscated PowerShell through a custom decoder, establishes persistence using hidden scheduled tasks masquerading as legitimate software, and communicates with C2 infrastructure through GitHub PATs and Pastebin.
Some variants also include analysis evasion capabilities such as analysis tool detection and command history deletion. The following sequential anomalies should therefore be connected and analyzed within a single attack context.
Genian Insights E is an integrated endpoint security platform that correlates various endpoint events, including process trees, command lines, file creation, scheduled tasks, and network connections. This makes it possible to visualize LNK execution, PowerShell activity, connections to GitHub and Pastebin, and subsequent payload execution as a single attack flow, even when individual events may appear legitimate in isolation.
LnkTarget information can also be used to identify the targets and commands referenced or executed by an LNK file from the initial stage. This allows the masquerading characteristics of this campaign, including abnormally long command-line arguments and leading spaces, to be identified early. Subsequently created scripts, child processes, persistence activity, and external communications can then be correlated and tracked.
This visibility provides a foundation for effectively responding to attacks that abuse legitimate cloud services and development platforms such as GitHub and Pastebin for C2 communications or attempt to evade detection by terminating execution when an analysis environment is detected.
Ultimately, even if AI improves the quality and volume of decoy documents and accelerates attack preparation, it cannot conceal all execution, persistence, communication, and payload activity occurring on endpoints. Effective response to this campaign therefore requires an EDR-centered integrated response framework that continuously incorporates the latest indicators of compromise, analyzes correlations between attack stages, and rapidly blocks anomalous behavior.
![[Figure 4-1] Malicious LNK Detection Using EDR](https://www.genians.co.kr/hs-fs/hubfs/undefined-Sep-01-2026-06-22-11-6656-AM.png?width=1378&height=1114&name=undefined-Sep-01-2026-06-22-11-6656-AM.png)
[Figure 4-1] Malicious LNK Detection Using EDR
Genian Insights E's Attack Storyline feature enables the rapid detection of malicious LNK files created when ZIP files delivered through spearphishing are extracted and provides visibility into the associated sequence of activities.
This allows malicious activity to be identified early during the initial stage of a threat intrusion and helps effectively prevent further damage and threat propagation through a rapid response.
[Figure 4-2] Analysis of an Obfuscated PowerShell Command Line
When a malicious LNK file is executed, an associated PowerShell process is launched, followed by a sequence of malicious activities, including the execution of additional commands through an obfuscated command line.
Genian Insights E analyzes these process execution flows and behavior-based events in real time. It also provides intuitive visibility into obfuscated command lines executed through PowerShell, allowing attack activity to be rapidly identified and addressed.
[Figure 4-3] GitHub C2 Connection via PowerShell
After the PowerShell command is executed, the attacker uses persistence mechanisms such as scheduled tasks in Task Scheduler to configure malicious activities to run repeatedly at regular intervals. The infected system then periodically communicates with the GitHub-based C2 server to receive additional commands or payloads and continuously performs subsequent malicious activities intended by the threat actor.
Genian Insights E can correlate and analyze scheduled task creation and execution history, process behavior involving PowerShell and other processes, and recurring external network communication patterns.
This enables the identification of anomalous communication and execution flows that differ from legitimate GitHub usage. It also helps security administrators rapidly recognize C2 communication and persistence activities and take the necessary response measures, including blocking threats and preventing further propagation.
[Figure 4-4] Dedicated Analysis Interface in Genian Insights E
Through its dedicated Analysis interface, Genian Insights E provides intuitive access to key information about detected threats and anomalous behavior identified through XBA. Rather than simply listing individual events, it allows the primary processes, behaviors, and network activities associated with an attack flow to be understood at a glance.
In particular, XBA-based anomaly detection results can be reviewed visually, allowing anomalous execution patterns and suspicious behavior to be quickly distinguished from normal activity. Correlations between related events also enable efficient analysis of the cause and progression of a threat.
This allows security administrators to rapidly understand the severity and context of a detected threat and perform the necessary actions more quickly and efficiently, from detailed analysis and impact assessment to blocking and follow-up response.
5. IoC (Indicator of Compromise)
5-1. MD5 Hash
10780939962b54addc9d31f57d80edfc
1523a2fcc901965ab4568d9fe829e4af
500e0bc0d7579fb338912770964076fe
685bfc6b2c29fbc16cfad908894add55
7a53089053b1381742856a5cf2b95f8b
8db2f20b719dcb7029d6296505622093
900e832c10d851bbdef3fb191a15db0e
a2015665a3e18bf0ef86e3931245c7e6
bb88940e915b11f6330b7446f6037f5b
ce5932b88f879f26006df81f2fa7667e
d0894d4626aae0f96d6b84ca3bb71a36
e50f2ae7fb03675a1ef58b1cf9cda6d1
f648bdd3c2cd902e239149de86d43e8f
5-2. GitHub Accounts
github[.]com/sven5500
github[.]com/montry111
github[.]com/jamjack2026
github[.]com/urusa4400
github[.]com/jamestony88
github[.]com/baras6600P
github[.]com/choemiyang
github[.]com/jeni534
5-3. Pastebin
pastebin[.]com/raw/gybpx38s
5-4. E-Mail
baras6600@proton[.]me
choemiyang@hotmail[.]com
dustinharrise91@outlook[.]com
jackal3300@proton[.]me
jametony8@outlook[.]com
jamjack2026@proton[.]me
montry111@proton[.]me
sven5500@proton[.]me
taini7700@outlook[.]com
urusa4400@proton[.]m
![[Figure 1-1] Comparison of Placeholders in Decoy Documents](https://www.genians.co.kr/hs-fs/hubfs/undefined-Sep-01-2026-06-22-13-0472-AM.png?width=1902&height=1952&name=undefined-Sep-01-2026-06-22-13-0472-AM.png)
![[Figure 2-1] Padding Data](https://www.genians.co.kr/hs-fs/hubfs/undefined-Sep-01-2026-06-22-12-0750-AM.png?width=647&height=608&name=undefined-Sep-01-2026-06-22-12-0750-AM.png)
![[Figure 2-2] LNK Execution Arguments](https://www.genians.co.kr/hs-fs/hubfs/undefined-Sep-01-2026-06-22-10-6944-AM.png?width=2048&height=511&name=undefined-Sep-01-2026-06-22-10-6944-AM.png)
![[Figure 2-3] opencode Interface](https://www.genians.co.kr/hs-fs/hubfs/undefined-Sep-01-2026-06-22-10-2383-AM.png?width=1924&height=986&name=undefined-Sep-01-2026-06-22-10-2383-AM.png)
![[Figure 2-4] opencode Entry in PDF Properties](https://www.genians.co.kr/hs-fs/hubfs/undefined-Sep-01-2026-06-22-14-5260-AM.png?width=1446&height=1456&name=undefined-Sep-01-2026-06-22-14-5260-AM.png)
![[Figure 2-5] Comparison of HeadlessChrome Family Decoy Documents](https://www.genians.co.kr/hs-fs/hubfs/undefined-Sep-01-2026-06-22-12-5037-AM.png?width=1931&height=1317&name=undefined-Sep-01-2026-06-22-12-5037-AM.png)
![[Figure 2-6] Metadata of the Interest Payment Notice PDF Document](https://www.genians.co.kr/hs-fs/hubfs/undefined-Sep-01-2026-06-22-11-1088-AM.png?width=1774&height=1150&name=undefined-Sep-01-2026-06-22-11-1088-AM.png)
![[Figure 4-2] Analysis of an Obfuscated PowerShell Command Line](https://www.genians.co.kr/hs-fs/hubfs/undefined-Sep-01-2026-06-22-09-8748-AM.png?width=1134&height=856&name=undefined-Sep-01-2026-06-22-09-8748-AM.png)
![[Figure 4-3] GitHub C2 Connection via PowerShell](https://www.genians.co.kr/hs-fs/hubfs/undefined-Sep-01-2026-06-22-14-1080-AM.png?width=1331&height=1073&name=undefined-Sep-01-2026-06-22-14-1080-AM.png)
![[Figure 4-4] Dedicated Analysis Interface in Genian Insights E](https://www.genians.co.kr/hs-fs/hubfs/undefined-Sep-01-2026-06-22-09-6220-AM.png?width=1120&height=320&name=undefined-Sep-01-2026-06-22-09-6220-AM.png)