|
| 1 | +# SurfManager - Virus Detection False Positive Explanation |
| 2 | + |
| 3 | +## Summary |
| 4 | + |
| 5 | +SurfManager.exe di-flag oleh beberapa antivirus/sandbox sebagai suspicious, padahal ini adalah **FALSE POSITIVE**. Dokumen ini menjelaskan kenapa detection terjadi dan kenapa app ini aman. |
| 6 | + |
| 7 | +--- |
| 8 | + |
| 9 | +## Detection Details |
| 10 | + |
| 11 | +### Sigma Rule Triggered: |
| 12 | +> **"Suspicious Loading of Dbgcore/Dbghelp DLLs from Uncommon Location"** |
| 13 | +> |
| 14 | +> Detects loading of dbgcore.dll or dbghelp.dll from uncommon locations such as user directories. These DLLs contain the MiniDumpWriteDump function, which can be abused for credential dumping purposes or in some cases for evading EDR/AV detection by suspending processes. |
| 15 | +
|
| 16 | +### VirusTotal Results: |
| 17 | +- **Detection Score:** 2/72 (Very Low - False Positive) |
| 18 | +- **Flagged by:** DeepInstinct (MALICIOUS), Trapmine (Malicious.moderate.ml.score) |
| 19 | +- **Community Score:** Positive |
| 20 | +- **Sandbox Results:** No actual malware behavior detected |
| 21 | + |
| 22 | +**Note:** 2/72 = 2.7% detection rate. Industry standard considers <5% as likely false positive, especially when flagged by ML-based engines (DeepInstinct, Trapmine) rather than signature-based engines. |
| 23 | + |
| 24 | +--- |
| 25 | + |
| 26 | +## Why DeepInstinct & Trapmine Flag This |
| 27 | + |
| 28 | +### About These Engines: |
| 29 | + |
| 30 | +| Engine | Type | Known For | |
| 31 | +|--------|------|-----------| |
| 32 | +| **DeepInstinct** | ML/AI-based | High false positive rate on Go/Wails apps | |
| 33 | +| **Trapmine** | ML-based | Behavioral heuristics, flags process management | |
| 34 | + |
| 35 | +### Why ML Engines Flag Wails/Go Apps: |
| 36 | + |
| 37 | +1. **Go binaries are large** (~10MB) - ML sees this as suspicious |
| 38 | +2. **Static linking** - Go includes all dependencies, looks "packed" |
| 39 | +3. **WebView2 behavior** - Loading debug DLLs triggers heuristics |
| 40 | +4. **Process management** - Killing processes looks like malware |
| 41 | + |
| 42 | +### Common False Positives: |
| 43 | + |
| 44 | +Many legitimate Go/Wails apps get flagged: |
| 45 | +- Wails framework apps |
| 46 | +- Electron apps |
| 47 | +- Any app using WebView2 |
| 48 | +- Backup software with process management |
| 49 | + |
| 50 | +--- |
| 51 | + |
| 52 | +## Why This Detection Happens (False Positive) |
| 53 | + |
| 54 | +### 1. Wails Framework Uses WebView2 |
| 55 | + |
| 56 | +SurfManager dibangun dengan **Wails** framework yang menggunakan **Microsoft WebView2** untuk rendering UI. WebView2 adalah komponen resmi Microsoft yang: |
| 57 | + |
| 58 | +- Berbasis Chromium/Edge |
| 59 | +- Load berbagai system DLLs termasuk debug-related DLLs |
| 60 | +- Digunakan oleh banyak aplikasi legitimate (Microsoft Teams, VS Code, dll) |
| 61 | + |
| 62 | +``` |
| 63 | +Wails App |
| 64 | + └── WebView2 (Microsoft Edge Runtime) |
| 65 | + └── Loads dbghelp.dll, dbgcore.dll (normal behavior) |
| 66 | +``` |
| 67 | + |
| 68 | +### 2. Process Management Features |
| 69 | + |
| 70 | +SurfManager memiliki fitur untuk: |
| 71 | +- **Close/Kill processes** sebelum backup/restore (untuk release file locks) |
| 72 | +- **Check if app is running** |
| 73 | + |
| 74 | +Fitur ini menggunakan library `gopsutil` yang legitimate, tapi behavior-nya mirip dengan malware yang juga perlu manage processes. |
| 75 | + |
| 76 | +```go |
| 77 | +// Legitimate code untuk close app sebelum backup |
| 78 | +func (k *Killer) SmartClose(appName string, processNames []string) error { |
| 79 | + // Gracefully close app, then force kill if needed |
| 80 | +} |
| 81 | +``` |
| 82 | + |
| 83 | +### 3. Network Communication |
| 84 | + |
| 85 | +Detected IPs adalah **Google/Microsoft services**: |
| 86 | +- `173.194.193.94` - Google (untuk WebView2 updates/telemetry) |
| 87 | +- `74.125.201.95` - Google |
| 88 | +- `edge.microsoft.com` - Microsoft Edge/WebView2 |
| 89 | +- `config.edge.skype.com` - Microsoft services |
| 90 | + |
| 91 | +**Ini semua legitimate Microsoft/Google endpoints**, bukan C2 servers! |
| 92 | + |
| 93 | +### 4. Memory Pattern URLs |
| 94 | + |
| 95 | +URLs yang terdeteksi di memory adalah dari: |
| 96 | +- **WebView2 cache** - Normal browser behavior |
| 97 | +- **PKI/Certificate URLs** (`c.pki.goog`) - Certificate validation |
| 98 | +- **Microsoft telemetry** - WebView2 standard behavior |
| 99 | + |
| 100 | +--- |
| 101 | + |
| 102 | +## Evidence This Is NOT Malware |
| 103 | + |
| 104 | +### ✅ Open Source |
| 105 | +- Source code 100% available di GitHub |
| 106 | +- Anyone can audit the code |
| 107 | +- No obfuscated or hidden code |
| 108 | + |
| 109 | +### ✅ Very Low Detection Rate |
| 110 | +- VirusTotal: **2/72 detections** (2.7% - likely false positive) |
| 111 | +- Only ML-based engines flagged (DeepInstinct, Trapmine) |
| 112 | +- No signature-based engines detected malware |
| 113 | +- ML engines are known for high false positive rates on legitimate apps |
| 114 | + |
| 115 | +### ✅ Legitimate Use Case |
| 116 | +- App untuk backup/restore VSCode/Cursor sessions |
| 117 | +- Process management needed to release file locks |
| 118 | +- Network traffic is to Microsoft/Google (WebView2) |
| 119 | + |
| 120 | +### ✅ Signed Dependencies |
| 121 | +- Uses official Microsoft WebView2 |
| 122 | +- Uses well-known Go libraries (gopsutil, wails) |
| 123 | + |
| 124 | +--- |
| 125 | + |
| 126 | +## Technical Breakdown |
| 127 | + |
| 128 | +### DLLs Loaded (Normal for WebView2 apps): |
| 129 | + |
| 130 | +| DLL | Purpose | Why Loaded | |
| 131 | +|-----|---------|------------| |
| 132 | +| `dbghelp.dll` | Debug helper | WebView2/Chromium crash reporting | |
| 133 | +| `dbgcore.dll` | Debug core | WebView2/Chromium diagnostics | |
| 134 | +| `webview2loader.dll` | WebView2 | UI rendering | |
| 135 | + |
| 136 | +### Process Management Code: |
| 137 | + |
| 138 | +```go |
| 139 | +// File: internal/process/killer.go |
| 140 | +// Purpose: Close apps gracefully before backup/restore |
| 141 | + |
| 142 | +func (k *Killer) KillProcess(pid int) error { |
| 143 | + proc, err := process.NewProcess(int32(pid)) |
| 144 | + // ... graceful termination, then force kill |
| 145 | +} |
| 146 | +``` |
| 147 | + |
| 148 | +**This is NOT credential dumping!** It's just closing apps so we can backup their data files. |
| 149 | + |
| 150 | +--- |
| 151 | + |
| 152 | +## MITRE ATT&CK Explanation |
| 153 | + |
| 154 | +| Detected Technique | Our Legitimate Use | |
| 155 | +|-------------------|-------------------| |
| 156 | +| T1059 (Command Execution) | Running backup/restore operations | |
| 157 | +| T1027 (Obfuscation) | WebView2 JavaScript bundling (normal) | |
| 158 | +| T1036 (Masquerading) | FALSE - we don't masquerade | |
| 159 | +| T1082 (System Discovery) | Checking if apps are installed/running | |
| 160 | +| T1071 (App Layer Protocol) | HTTPS to Google/Microsoft (WebView2) | |
| 161 | + |
| 162 | +--- |
| 163 | + |
| 164 | +## How to Verify Safety |
| 165 | + |
| 166 | +### 1. Check Source Code |
| 167 | +``` |
| 168 | +https://github.com/[repo]/SurfManager |
| 169 | +``` |
| 170 | +All code is open source and auditable. |
| 171 | + |
| 172 | +### 2. Build From Source |
| 173 | +```bash |
| 174 | +git clone [repo] |
| 175 | +cd SurfManager |
| 176 | +wails build |
| 177 | +``` |
| 178 | +You can build the exact same binary yourself. |
| 179 | + |
| 180 | +### 3. Check Network Traffic |
| 181 | +All network traffic goes to: |
| 182 | +- `*.google.com` - WebView2 |
| 183 | +- `*.microsoft.com` - WebView2/Edge |
| 184 | + |
| 185 | +No suspicious C2 servers. |
| 186 | + |
| 187 | +--- |
| 188 | + |
| 189 | +## Recommendations for Users |
| 190 | + |
| 191 | +### If Your Antivirus Flags This: |
| 192 | + |
| 193 | +1. **Add Exception** - Whitelist `SurfManager.exe` in your antivirus |
| 194 | +2. **Check VirusTotal** - Confirm 0 detections on actual malware engines |
| 195 | +3. **Build From Source** - If paranoid, build the app yourself from GitHub |
| 196 | + |
| 197 | +### For Antivirus Vendors: |
| 198 | + |
| 199 | +This is a **false positive** caused by: |
| 200 | +- WebView2 loading debug DLLs (normal Chromium behavior) |
| 201 | +- Process management features (legitimate for backup software) |
| 202 | +- Network traffic to Google/Microsoft (WebView2 telemetry) |
| 203 | + |
| 204 | +Please whitelist this application or improve heuristics to not flag WebView2-based apps. |
| 205 | + |
| 206 | +--- |
| 207 | + |
| 208 | +## Conclusion |
| 209 | + |
| 210 | +SurfManager is **NOT malware**. The detection is a **false positive** caused by: |
| 211 | + |
| 212 | +1. **WebView2** loading debug DLLs (standard Chromium behavior) |
| 213 | +2. **Process management** features that look suspicious but are legitimate |
| 214 | +3. **Network traffic** to Google/Microsoft services (WebView2) |
| 215 | + |
| 216 | +The app is: |
| 217 | +- ✅ Open source |
| 218 | +- ✅ 2/72 VirusTotal detections (very low, ML-based only) |
| 219 | +- ✅ Uses official Microsoft WebView2 |
| 220 | +- ✅ All network traffic to legitimate endpoints |
| 221 | +- ✅ No signature-based engine detected malware |
| 222 | + |
| 223 | +--- |
| 224 | + |
| 225 | +**Author:** SurfManager Team |
| 226 | +**Date:** 2026-01-04 |
| 227 | +**Status:** False Positive - Safe to Use |
0 commit comments