2026 年 9 月 23 日,InTimeSec 全天候監控服務團隊(MDR Team)偵測到一波異常的 SQL Injection 攻擊。調查後確認,攻擊者從 Web 應用程式的 SQL Injection 弱點進入,開啟並濫用資料庫的 xp_cmdshell 功能,取得作業系統層級的指令執行權限。8 小時內共執行 4,283 筆有效指令,產生 300 多個檔案。
攻擊者的目的是把這台主機變成散布節點,竄改 FTP 更新派送目錄下的更新包與描述檔,植入自行編譯的後門,讓下游客戶端在例行更新時下載到被動過手腳的版本。影響範圍也因此從單一主機擴及各客戶端。
STAGE 1 – 入侵途徑
攻擊集中在凌晨時段。8 小時內送出 4,283 筆 xp_cmdshell,平均每小時 535 筆,指令內容幾乎不重複。這個速度已超出人工操作的範圍,應由自動化工具送出;而指令幾乎不重複這一點,也讓我們無法排除過程中有 AI 協助生成。

4,283 筆指令中有 81%(3,483 筆)採用一致的包裝格式,其中的 echo N 為盲注確認。此一致性顯示指令係由工具統一組裝,研判攻擊者使用半自動化操作框架,而非互動式 shell。

攻擊指令以四位數遞增標籤管理(i2601–i3453,共 43 個批次),各批次於 C:\Windows\Temp\i#### 建立專屬工作目錄,顯示攻擊者具備成熟的行動管理習慣。
攻擊呈現人工決策特徵(指令間隔 5–8 秒、可見試錯修正),惟其操作強度已超出人力持續負荷範圍,近 8 小時不間斷、無節奏衰減。研判操作過程中有 AI 輔助介入。
STAGE 2 – 攻擊行為分析
- 偵察與組態蒐集
- 通道驗證:攻擊者以 ping -n 與 timeout 指令測試回應延遲,確認盲注之可用性與時序基準;接著在 C:\inetpub\wwwroot、C:\wwwroot、D:\wwwroot 各寫入一個標記檔 i2601.txt,確認哪些 Web 目錄可寫。
- 主機與網域盤點:攻擊者依序執行 whoami /priv、systeminfo、ipconfig /all、tasklist /svc、netstat -ano、route print 與 arp -a 等指令,蒐集受害主機之權限配置、系統資訊、網路組態、執行中服務、連線狀態、路由資訊及鄰近主機清單。
- 組態與憑證蒐集:攻擊者針對 IIS 組態檔、各站台之 web.config、ASP.NET machineKey 設定值及憑證私鑰進行全面搜索,蒐集其中所含之連線字串、加密金鑰與憑證資料。

- Webshell 後門植入
- 攻擊者寫入 C# WebShell。該程式讀取 Request[“c”] 參數後,以 ProcessStartInfo 呼叫 cmd.exe /c 執行指令;若未帶入參數,則回應固定字串 i2653ok,用來確認後門是否還在。

- 攻擊者寫入 C# WebShell。該程式讀取 Request[“c”] 參數後,以 ProcessStartInfo 呼叫 cmd.exe /c 執行指令;若未帶入參數,則回應固定字串 i2653ok,用來確認後門是否還在。
- 憑證與資料竊取
- 本機憑證竊取:攻擊者匯出系統登錄檔 Hive 與 DPAPI 相關資料,以離線方式擷取本機帳號憑證及受 DPAPI 保護之機敏資料。

- 本機憑證竊取:攻擊者匯出系統登錄檔 Hive 與 DPAPI 相關資料,以離線方式擷取本機帳號憑證及受 DPAPI 保護之機敏資料。
- 供應鏈派送
- 該主機同時為 FileZilla Server 之軟體更新派送來源,更新包與更新描述檔存放於 D:\FTP\。攻擊者依下列順序完成派送作業:
- 分段把 Base64 內容寫進 C:\Windows\Temp\i2869\p.cs.b64,再用 certutil 或 FromBase64String 還原成 p.cs。
- 以系統內建的 .NET 編譯器 csc.exe 在本機編譯,產出後門執行檔,全程沒有任何檔案下載行為。
- 把原始更新包備份到 C:\Windows\Temp\i2869\bak\*.zip.bak,保留原檔。
- 以 Compress-Archive 或 ZipFile::CreateFromDirectory 重新封裝,覆寫 D:\FTP 路徑下的兩份更新包。
- 執行 manifest.ps1 改寫更新描述檔,讓它與換過的更新包對得上;再以 verify.ps1 計算 payload 的 SHA-256 雜湊值做自我驗證,並用 self2.ps1 進行實地測試。
- 派送完成後,攻擊者反覆查看 FileZilla 記錄檔與 port 21 的連線狀態,從行為判斷,是在確認有多少下游端點已經下載到這份更新包。

- 該主機同時為 FileZilla Server 之軟體更新派送來源,更新包與更新描述檔存放於 D:\FTP\。攻擊者依下列順序完成派送作業:
- 橫向移動
- 攻擊者拿竊得的 Administrator NTLM Hash,透過 Invoke-TheHash 工具組存取內網主機的管理共用,試著寫入 WebShell 並遠端執行指令。

- SSH 通道建立:在 C:\Windows\Temp\i3203\ 與 C:\Windows\Temp\i3313\ 兩處寫入 plink.exe,用來建立 SSH 通道。
- Tomcat Ghostcat 弱點測試:放置 AJP 協定封包(指令碼 ajp_ghost.b64、ajp_ghost2.b64),針對內網主機之 8009 埠進行 CVE-2020-1938(Ghostcat)任意檔案讀取測試。
- 內網掃描:以 PowerShell TcpClient 掃描 10.10.50.0/24、192.168.87–91.x 及 10.212.134.105,涵蓋 SMB、RDP、WinRM、資料庫與 Tomcat 等 17 個常見服務埠。
- 攻擊者拿竊得的 Administrator NTLM Hash,透過 Invoke-TheHash 工具組存取內網主機的管理共用,試著寫入 WebShell 並遠端執行指令。
- 資料外傳手法
- 攻擊者沒有另外建立 C2 外連通道,而是直接沿用 SQL Injection 的回傳通道分段帶出檔案,因此在網路層很難察覺。
- 外傳的做法是 [Convert]::ToBase64String([IO.File]::ReadAllBytes(<檔案>)).Substring(<位移>, 3800):檔案先轉成 Base64,再以固定位移逐段切取,分批經回傳通道送出。
- 檔案較大時,會先用 GZipStream 壓縮再做 Base64 編碼,減少分段往返的次數。
- 攻擊者沒有另外建立 C2 外連通道,而是直接沿用 SQL Injection 的回傳通道分段帶出檔案,因此在網路層很難察覺。
STAGE 3 – MITRE ATT&CK Techniques
| Tactics | Techniques | Note |
| Initial Access | T1190 – Exploit Public-Facing Application | Web 應用程式 SQL Injection |
| Execution | T1059.003 – Command and Scripting Interpreter: Windows Command Shell | sqlservr.exe執行cmd.exe |
| T1059.001 – Command and Scripting Interpreter: PowerShell | -EncodedCommand / -ExecutionPolicy Bypass | |
| T1505.001 – Server Software Component: SQL Stored Procedures | xp_cmdshell 取得系統指令執行 | |
| T1047 – Windows Management Instrumentation | wmic process call create 脫離父程序行為樹 | |
| Persistence | T1505.003 – Server Software Component: Web Shell | |
| T1554 – Compromise Host Software Binary | 覆寫 D:\FTP\ 更新包與更新描述檔 | |
| Defense Evasion | T1127 – Trusted Developer Utilities Proxy Execution | csc.exe 本機編譯 payload,無檔案下載行為 |
| T1140 – Deobfuscate/Decode Files or Information | certutil -decode、FromBase64String 分段還原 | |
| T1027 – Obfuscated Files or Information | base64 分段寫入、GZip 壓縮編碼 | |
| T1070.004 – Indicator Removal: File Deletion | del /f /q *.b64 清除中間檔 | |
| Credential Access | T1003.002 – OS Credential Dumping: Security Account Manager | reg save HKLM\SAM / SYSTEM / SECURITY |
| T1552.001 – Unsecured Credentials: Credentials In Files | findstr 蒐集 web.config 連線字串與 machineKey | |
| T1555.004 – Credentials from Password Stores: Windows Credential Manager | 蒐集 Credentials 與 DPAPI Protect 目錄 | |
| Discovery | T1046 – Network Service Discovery | PowerShell TcpClient 多網段連接埠掃描 |
| T1018 – Remote System Discovery | nltest / net view / nslookup 網域與主機列舉 | |
| T1083 – File and Directory Discovery | dir /s /b、where /r 全碟搜尋組態與憑證 | |
| Lateral Movement | T1550.002 – Use Alternate Authentication Material: Pass the Hash | Invoke-SMBClient / Invoke-SMBExec |
| T1021.002 – Remote Services: SMB/Windows Admin Shares | ||
| T1021.004 – Remote Services: SSH | plink.exe 連線 | |
| T1210 – Exploitation of Remote Services | AJP 封包測試 Ghostcat (CVE-2020-1938) | |
| Command and Control | T1105 – Ingress Tool Transfer | 自 GitHub 取得 Invoke-TheHash 工具組 |
| Exfiltration | T1041 – Exfiltration Over C2 Channel | base64 / GZip 分段經 SQL外傳 |
| T1048.003 – Exfiltration Over Alternative Protocol | FTP |
STAGE 4 – 結論
- 攻擊者取得指令執行通道後,45 分鐘內植入 WebShell、1 小時 28 分內竊得多組帳號密碼、2 小時 53 分內完成供應鏈派送檔案之替換。全程歷時約 8 小時,共執行 4,283 筆指令,產生300個檔案,指令間隔中位數為 5.5 秒。同一條攻擊鏈若以人工滲透方式進行,通常以「日」為單位計算。
- 代理式操作並未使攻擊者更為隱蔽,AI 放大的是速度與廣度,而非隱蔽性。密集且重複的操作樣態反而成為明確的偵測訊號,這正是本次能在攻擊仍進行、攻擊者仍在線上時即予攔截的原因。


