Executive Summary
§ 1This report presents the findings of a security audit commissioned in response to a reported cyber attack targeting the customer's IT infrastructure. The scope of this investigation was to determine whether the QND web application and its associated host infrastructure were used as an ingress or egress vector in the reported attack.
The audit covered a 30-day observation window (February 22 – March 22, 2026), analysing all available log sources across the application stack, perimeter proxy, host system, and database. Five audit phases were conducted in sequence, with each phase informing the next.
The overall conclusion is unambiguous: the QND application and its underlying infrastructure showed no evidence of compromise, unauthorised access, or complicity in any malicious activity. All external attack probes detected during the window were automatically blocked by the perimeter proxy (Traefik) and fail2ban. No attacker IP ever received a successful HTTP 200 response from the application. All authenticated sessions in the application logs correspond to known, named users performing normal business operations.
Infrastructure Audited
§ 2| Layer | Component | Location / Address |
|---|---|---|
| Perimeter Proxy | Traefik Docker (reverse proxy) | proxmox (192.168.0.13) — ports 80/443 |
| Application Server | IIS 10 on Windows Server 2022 | vv-webserver (192.168.0.11) |
| Application | QND (ASP.NET / ABP framework) | IIS ports 9004 (prod), 9007 (staging), 9008 (testing) |
| Database | SQL Server 2022 (MSSQL 16) | vv-webserver |
| Remote Access Protection | SSH + fail2ban | proxmox |
| Host Firewall | Proxmox VE Firewall | proxmox |
Data Sources
§ 3Findings
§ 4Clean Findings — 7 Items
Scanning / Threat Actor Activity — 4 Categories (All Blocked)
Three Azure-hosted IPs conducted systematic HTTP scanning of the Traefik perimeter across the audit window: 20.151.11.236 (9,641 requests), 172.190.142.176 (2,927 requests), and 4.232.184.93 (358 requests). All requests received non-200 responses.
The origin ASN (Microsoft Azure) suggests automated reconnaissance infrastructure — common in credential stuffing and vulnerability scanning campaigns. The scanning pattern shows no evidence of application-layer exploitation success.
Informational — 7 Items
/.env, /wp-admin, /phpinfo.php). None of these paths exist in the QND application. This rate is within expected range for an internet-facing application and does not represent a security finding.returnUrl ParameterreturnUrl query parameter that is not validated against an allow-list. This is a known ABP framework behaviour pattern. While not exploited during the audit window, it represents a phishing vector risk (open redirect) that should be addressed in an upcoming application release with an explicit returnUrl allow-list.inspectionReportDocument/GetFilteredinspectionReportDocument/GetFiltered endpoint does not enforce a maximum result-set size. Under load or with a malformed query, this can return large payloads causing HTTP 500 errors. No evidence of abuse was found in the audit window, but the endpoint should be hardened with server-side paging limits to prevent both DoS-style overload and potential data over-exposure./dev/sdt SMART Pre-Failure Warning on Proxmox/dev/sdt (USB external archive drive, VR archive storage) shows a pre-failure attribute. This drive is not in the QND application stack and has no impact on the audit scope. However, drive replacement should be scheduled to avoid archive data loss. This is a hardware maintenance item, not a security finding.Resolved — 2 Items
Phase 2: Supplemental Findings
§ 5Phase 2 extended the initial IIS analysis to include the staging (W3SVC2, port 9007) and testing (W3SVC6, port 9008) sites. These sites are not publicly accessible via Traefik — they are LAN-only and protected by IP restriction rules.
The supplemental analysis revealed no evidence of unauthorised access to either the staging or testing environments. All authenticated sessions map to known developers and testers. No attacker IP appeared in W3SVC2 or W3SVC6 logs.
A separate recommendation was raised to scan the W3SVC6 (testing) IIS logs more thoroughly for application-level errors that could indicate dependency vulnerabilities — separate from external access concerns.
Phase 3: Network Gateway
§ 6Phase 3 focused on the network perimeter via the UniFi Dream Machine SE (UDM-SE) acting as the LAN gateway (192.168.0.1). Gateway-level traffic was analysed for evidence of:
- Outbound command-and-control (C2) connections from any host in the 192.168.0.0/24 subnet
- Lateral movement between VLAN segments — cross-subnet traffic from vv-webserver
- DNS anomalies — queries to newly registered or suspicious domains from any host
- Inbound port-scanning or connection attempts not blocked at the Proxmox / Traefik layer
The gateway analysis found no evidence of outbound C2 traffic, lateral movement, or DNS anomalies attributable to any host in the QND application stack. All outbound connections from vv-webserver and the proxmox host were to known legitimate endpoints (Microsoft update infrastructure, Let's Encrypt ACME, NTP servers).
Phase 4: Traefik Log Correlation
§ 7Phase 4 conducted a detailed cross-correlation between Traefik access logs and IIS W3SVC production logs to determine whether any attacker IP that appeared in Traefik logs also appeared in IIS logs — which would indicate a bypass of perimeter controls.
Result: No attacker IP appeared in IIS logs. The complete list of identifying attacker IPs from Traefik was compared against all IIS log IP fields for the same period. Zero matches were found. This confirms that Traefik's middleware (LAN-allow-list, geo-block, rate limiting) successfully prevented all scanning traffic from reaching the IIS application layer.
IP attribution via WHOIS / ASN lookups confirmed the following sources:
- 20.151.11.236 — Microsoft Azure (US East) — likely automated scanning infrastructure or a compromised Azure tenant
- 172.190.142.176 — Microsoft Azure (US East) — same cluster / campaign as above
- 4.232.184.93 — Microsoft Azure (Canada Central)
- 104.28.246.116 — Cloudflare exit node (proxy evasion technique to obscure true attacker origin)
- 94.156.152.15 — Bulgarian ASN, commercial hosting, associated with scanning infrastructure in public threat intelligence databases
Phase 5: Third-Party Advisory (PTC Windchill)
§ 8Phase 5 was initiated in response to a published security advisory from PTC relating to Windchill, an upstream system with potential integration points to the QND application. The advisory referenced a remote code execution (RCE) vulnerability in a specific version of the Windchill web interface.
The assessment determined:
- The QND application's integration with PTC Windchill is read-only and one-directional — QND consumes Windchill data but does not write back or expose any Windchill-controlled surface area
- The specific CVE referenced in the advisory affects the Windchill web interface directly, which is not exposed through the QND application
- The QND host infrastructure (vv-webserver, proxmox) does not run any Windchill components
Conclusion for Phase 5: The PTC Windchill advisory does not affect the QND application or its host infrastructure. No remediation action is required on the QND side. The customer should consult with the Windchill system owners to determine if their Windchill deployment requires patching independently.
Traffic Summary
§ 9IIS Production HTTP Status Breakdown
| HTTP Status | Requests | Share | Assessment |
|---|---|---|---|
| 200 OK | 146,596 | 88.8% | Normal application traffic — all authenticated users |
| 404 Not Found | 9,577 | 5.8% | Automated path scanning (/.env, /wp-admin, etc.) — no QND paths exposed |
| 304 Not Modified | 5,774 | 3.5% | Normal browser cache validation — expected |
| 302 Redirect | 1,677 | 1.0% | Normal application redirects (login, logout, HTTPS enforcement) |
| 500 Internal Server Error | 549 | 0.3% | Application errors — no spike pattern, candidates for result-set limiting |
| 403 Forbidden | 140 | 0.08% | Access control enforcing correctly — no privilege escalation attempts |
| 401 Unauthorized | 52 | 0.03% | Failed login attempts — within expected range, no brute-force pattern |
Recommendations
§ 10admin account credentialsinspectionReportDocument/GetFilteredreturnUrl parametertraefik-critical jail thresholds/dev/sdt SMART pre-failure warning on proxmoxConclusion
§ 11Final Verdict: No Evidence of Compromise
The QND application was not used as an ingress or egress vector in the reported cyber attack. The audit examined all accessible log sources across five phases: IIS production and staging logs, Traefik perimeter proxy logs, fail2ban records, UniFi gateway traffic, SQL Server authentication logs, Windows Event Log, and a third-party PTC Windchill advisory.
All attack probes detected during the 30-day window were correctly rejected at the Traefik perimeter. No attacker IP received a successful HTTP 200 response. All authenticated activity in the application logs is from named users performing normal business operations. The database, SSH, Windows authentication, and network gateway layers show no signs of unauthorised access or lateral movement.
The remaining 9 open recommendations are purely operational in nature — covering hardening hygiene: credential rotation, result-set limits, open-redirect validation, Windows Firewall logging, MSSQL log archival, and SMART monitoring. None represent evidence of past compromise; all are standard post-audit improvements applicable to any mature IT infrastructure.