Skip to content
CyberSmithSECURE
Under Attack

VAPT

VAPT of Thick Client Applications

Thick clients are the applications that never got a security review. They predate the web team, they run on machines the user controls, and they frequently hold database credentials in a configuration file because that was normal when they were written. Testing covers the binary, the host it runs on and the backend behind it, since a client running on the user's desktop is an attacker-controlled component of the system.

Methodology

  1. 01

    Binary and dependency analysis

    Executable and library inventory, compiler protections, code signing, installer behaviour and the versions of every bundled third-party component.

  2. 02

    Decompilation and static review

    For managed code, decompilation to source and review for hardcoded credentials, connection strings, cryptographic keys and authorisation logic. Native binaries are disassembled where the risk justifies it.

  3. 03

    Local storage and privilege assessment

    Configuration files, registry keys, local databases, temporary files and log output examined for secrets. Installation directory and service permissions checked for local privilege escalation.

  4. 04

    Inter-process communication testing

    Named pipes, COM objects, local sockets, shared memory and Windows services exposed by the application, tested for authentication and authorisation from a low-privileged context.

  5. 05

    Traffic interception

    Network traffic proxied, including non-HTTP protocols and direct database connections. Where the client talks to a database directly, that connection is the finding.

  6. 06

    Runtime manipulation

    Memory inspection and patching, control flow modification, and testing whether authorisation decisions made in the client are re-checked by the server.

  7. 07

    Backend testing

    Every service the client calls tested independently for authentication, authorisation and injection.

  8. 08

    Reporting and retest

    Technical report and executive summary together, then a retest evidencing closure.

Approach to testing

  • The client is treated as attacker-controlled. Any control implemented only in the binary is assumed bypassed, and the test is whether the server notices.
  • Direct database connectivity from the client is tested explicitly. Where present it is usually the most severe finding, because every user holds credentials that reach the data directly.
  • Testing runs from a standard, non-administrative Windows account, because that is how the application is deployed and privilege escalation from that position is the realistic risk.
  • The installer is assessed as part of the application — DLL search order, service creation permissions and update mechanisms are common escalation paths.
  • Grey box by default: an installable build, test credentials for at least two roles, and documentation of the backend interfaces.

Types of assessment

Grey box (default)

Installable build with credentials for multiple roles. Best coverage per unit of effort.

White box

Full source and build pipeline. Necessary where the client contains significant business logic or cryptography.

Privilege escalation focus

Narrow scope on whether the application allows a standard user to gain local administrator on the host. Common requirement for managed desktop estates.

Backend-only

Where the client is legacy and unchangeable, testing concentrates on whether the server can defend itself against a malicious client.

Frameworks and standards

OWASP ASVS 4.x
Verification controls applied to the client and its backend.
CWE Top 25
Weakness taxonomy, which fits desktop software better than web-specific lists.
NIST SP 800-115 / PTES
Testing lifecycle and exploitation standard.
CIS Microsoft Windows Benchmarks
Host baseline where the client's installation affects it.
CVSS v3.1
Severity scoring, with local attack vector reflected honestly rather than inflated.

Tools used

Tooling is where testing starts, not where it ends. Every automated result is reproduced by hand before it reaches a report.

dnSpy / ILSpy

Decompilation and runtime patching of .NET assemblies.

JD-GUI / Procyon

Java decompilation.

Ghidra

Disassembly and analysis of native binaries.

Process Monitor / Process Explorer

File, registry and process activity, and DLL search order analysis.

Burp Suite with a non-HTTP proxy

Traffic interception including protocols Burp does not natively handle.

Wireshark

Raw protocol analysis, particularly for direct database connections.

Frida

Runtime hooking and memory manipulation.

AccessChk / icacls

File, service and registry permission assessment for escalation paths.

Checklist approach

The checklist is the floor, not the ceiling. It guarantees coverage so nothing standard is missed; the findings that matter usually come from what a tester does after it is complete.

Secrets and configuration

  • Connection strings and credentials in configuration files or the registry
  • Hardcoded cryptographic keys in the binary
  • Secrets written to logs or temporary files
  • Credentials cached locally after authentication
  • Encryption of local configuration and its key storage

Local privilege escalation

  • Write permissions on the installation directory
  • Unquoted service paths and weak service permissions
  • DLL search order hijacking opportunities
  • Scheduled tasks or services running as SYSTEM with user-writable inputs
  • Update mechanism integrity and signature verification

Inter-process communication

  • Named pipe permissions and authentication
  • COM object registration and access control
  • Local listening sockets and their authentication
  • Shared memory access control

Network and backend

  • Direct database connectivity from the client
  • TLS usage and certificate validation on all connections
  • Authorisation re-checked server-side for every client action
  • Injection through parameters the client sends
  • Session handling and token storage

Binary protections

  • Code signing on executables and libraries
  • ASLR, DEP and stack protections on native binaries
  • Obfuscation of managed assemblies where business logic warrants it
  • Anti-tamper and integrity verification
  • Third-party component versions against known CVEs

How findings are scored

Every finding is scored on CVSS 3.1 and placed in one of five levels. The executive summary adds a sixth band — Compliant — so components that passed appear on the same chart as those that did not.

Critical
Immediate measures must be taken. These vulnerabilities can allow an attacker to take complete control of the application or server — stealing user data, tricking users into supplying sensitive information, or defacing the site.
High
Maximum risk associated with a specific vulnerability instance. May enable an attacker to compromise the application and its data, partially or completely, or to modify application behaviour beyond its intended purpose. To be handled with utmost priority.
Medium
Considerable risk. May enable an attacker to exploit the application to a particular level, gaining low-level information that can be used to craft more specific attacks.
Low
Lowest risk. May allow an attacker to gain some information about the application that was not intended to be known, without an exploitation technique currently available at that instance.
Informational
A functionality or component is missing best-practice implementation. Not a risk today, but may become one as the application changes or as exploitation techniques, policy or legal requirements evolve.

Scan types selected

  • Safe Checks
  • Standard / OWASP Top 10
  • Destructive
  • SANS Top 25
  • Business Logic Vulnerability Testing

Standard toolset by stage

OSINT
Datasploit, Google Dorks, Shodan
Enumeration & Scanning
Nmap, Wfuzz, Unicornscan
Domain Enumeration
Nikto, DnsRecon, Knock
Crawling & Fuzzing
Burp Suite, Acunetix, Netsparker
Vulnerability Analysis
OpenSSL, sqlmap, CVE-Details
Exploitation
Metasploit, Netcat, Exploit-DB

How CSS tests

A unified swarm of agents, for blind spot detection

AI agents drive several testing tracks against the same target at once, then cross-check each other. A single tester works one hypothesis at a time; parallel agents cover the space a sequential pass leaves behind.

  • File and registry permission enumeration across an installation is exhaustive machine work, and the one writable path that grants SYSTEM is rarely the obvious one.

  • DLL search order analysis requires tracing every library load under every code path — a tester samples the startup path and misses the one loaded on a rarely used feature.

  • Managed binaries decompile to thousands of methods; enumerating those touching cryptography, authentication or connection strings is search rather than insight.

  • Agent findings are cross-checked against manual testing so nothing unreproduced reaches the report.

Every agent finding is validated by a human tester on a real host before it reaches the report. The swarm decides what to look at; it does not decide what is true.

Why this differs

What CSS does that most vendors do not

Every one of these is checkable. Ask any vendor for the same and compare the answers.

The backend is in scope

Many thick client assessments stop at the binary. The server is tested against a malicious client, which is the only assumption that holds once the binary is on the user's machine.

Exploited, not scanned

Escalation and bypass are demonstrated on a real host with reproducible steps, not inferred from a decompiler.

Both reports, always

Technical report and executive summary together.

Fixation, not a backlog

Thick client remediation often means architectural change. CSS works the sequencing with the team and retests to evidence closure.

Reporting

Two documents, two audiences

Both are produced for every engagement. They are not the same document at two lengths — they answer different questions and are written separately. The structure below is the one CSS actually issues.

Technical assessment report

For the engineers who will fix it

  • Disclaimer, and Limitations on Disclosure and Use
  • Risk Level & Description — the five levels above, scored on CVSS 3.1
  • Scan Type — which of the five assessment types were selected
  • Assessment Scope — the control areas covered
  • Assessment Date — the exact testing window
  • Objective of the Assessment — objectives listed against completion status
  • Tools Utilization — manual and automated tooling by stage
  • Summary of the Assessment
  • Overall Recommendations, split into Must Have and Should Have
  • Vulnerability Overall Classifications as per Organization
  • Security Issues Highlighted
  • The Key Findings — each with evidence and detailed recommendation
  • Summary of Findings & Conclusion

For this assessment specifically

  • Scope, application version, host operating system and the test window
  • Every finding with CVSS v3.1 vector and CWE reference
  • Reproduction steps including the exact host state required
  • Evidence: decompiled excerpts, permission output, captured traffic
  • Local privilege escalation paths demonstrated end to end
  • Backend findings reported separately from client findings
  • Retest results appended against each original finding

Executive summary

For the people who will fund the fix

  • Objectives, each against a completion status
  • Overall Finding of the Assessment — total threats identified, broken down by component and severity
  • Summary of the Assessment
  • Artefacts of the Assessment — the key findings as a numbered register with severity
  • Observation of the Assessment — the major attacks the organisation should be prepared for, given what was found
  • Overall Recommendation, including a Business Enabling Recommendation sequence
  • Must Have and Should Have actions

For this assessment specifically

  • What a user of this application can do to the host and to the data behind it
  • Severity distribution and movement since the previous assessment
  • The three things that most need funding, with an honest note where the fix is architectural
  • Regulatory exposure where the client handles regulated data
  • Remediation timeline and retest date
  • One page

Case studies

What this finds in practice

Representative engagement patterns. Sector and scale only — no client is named, and no detail is included that could identify one.

A distribution company's order management client, roughly 600 desktop users.

Finding
The application connected directly to the SQL Server database with a shared credential stored, lightly obfuscated, in a configuration file next to the executable. Every user effectively held read and write access to the entire database, independent of their role in the application.
Recommendation
Move to an application server between the client and the database so credentials never reach the desktop, and enforce role checks server-side. As an interim control, restrict the shared account to stored procedures only.
Outcome
The interim control shipped in three weeks and removed direct table access. The application server followed over two quarters, which was the correct fix but not one available quickly.

An engineering firm's licence-managed CAD integration tool.

Finding
The updater service ran as SYSTEM and read its update package from a directory writable by all users. Placing a crafted package there executed arbitrary code as SYSTEM on the next update check, giving any standard user local administrator.
Recommendation
Restrict the update directory to administrators, and verify the package signature before execution rather than after download.
Outcome
Both implemented. The signature check was the more important of the two, since it closed the class rather than one instance of it.

A bank's internal treasury client used by around 40 staff.

Finding
Transaction approval limits were enforced in the client's UI and re-checked nowhere. Patching a single comparison in the decompiled assembly allowed a junior user to approve transactions above their authorised limit, and the server accepted them.
Recommendation
Enforce approval limits server-side against the authenticated user's role. Treat the client as a presentation layer with no authority.
Outcome
Server-side enforcement implemented before the next release. A reconciliation against historical transactions confirmed no prior abuse, which made the finding closable rather than an incident.

Next

Scope this assessment

Most scopes are settled in one call. Tell us what the application does and who uses it, and we will tell you what testing it properly involves.