Strobesstrobes
Platform
Solutions
Resources
Customers
Company
Pricing
Book a Demo
Strobesstrobes

Strobes connects every exposure signal to autonomous action, so security teams fix what matters, prove what works, and stop chasing noise.

Book a DemoTalk to an expert
ISO 27001SOC 2CREST
  • Platform
  • Platform Overview
  • Agentic Exposure Management
  • AI Agents
  • Integrations
  • API & Developers
  • Workflows & Automation
  • Analytics & Reporting
  • Solutions
  • Exposure Assessment (EAP)
  • Attack Surface Management
  • Application Security Posture
  • Risk-Based Vulnerability Management
  • Adversarial Exposure Validation (AEV)
  • AI Pentesting
  • Pentesting as a Service
  • CTEM Framework
  • By Industry
  • Financial Institutions
  • Technology
  • Retail
  • Healthcare
  • Manufacturing
  • By Roles
  • CISOs
  • Security Directors
  • Cloud Security Leaders
  • App Sec Leaders
  • Resources
  • Blog
  • Customer Stories
  • eBooks
  • Datasheets
  • Videos & Demos
  • Exposure Management Academy
  • CTEM Maturity Assessment
  • Pentest Health Check
  • Security Tool ROI Calculator
  • Company
  • About Strobes
  • Meet the Team
  • Trust & Security
  • Contact Us
  • Careers
  • Become a Partner
  • Technology Partner
  • Partner Deal Registration
  • Press Release

Weekly insight for security leaders

CTEM research, agentic AI trends, and what's actually moving the needle.

© 2026 Strobes Security Inc. All rights reserved.

Privacy PolicyTerms of ServiceCookie PolicyAccessibilitySitemap
Back to Blog
Thick Client Penetration Testing Guide
Offensive SecurityApplication Security

Thick Client Penetration Testing Guide

Akhil ReniNovember 21, 20259 min read

Table of Contents

  • What is thick client penetration testing?
  • How does two-tier differ from three-tier architecture?
  • How do you intercept thick client traffic?
  • Why does insecure local storage matter?
  • How do you reverse engineer the binary?
  • What is DLL hijacking in thick clients?
  • What does a thick client engagement deliver?
  • Frequently asked questions
  • Sources and references

Authors

A
Akhil Reni

Share

Table of Contents

  • What is thick client penetration testing?
  • How does two-tier differ from three-tier architecture?
  • How do you intercept thick client traffic?
  • Why does insecure local storage matter?
  • How do you reverse engineer the binary?
  • What is DLL hijacking in thick clients?
  • What does a thick client engagement deliver?
  • Frequently asked questions
  • Sources and references

Authors

A
Akhil Reni

Share

TL;DR
  • ✓Thick clients are desktop apps (often .NET, Java, or C/C++) that run business logic locally and talk to a backend, so attack surface lives on the host and on the wire.
  • ✓Two-tier clients talk straight to a database; three-tier clients route through an application server, which changes how you intercept and tamper.
  • ✓Core test areas are traffic interception (proxy-aware and proxy-unaware), local storage, registry, memory, binary protections, and DLL hijacking.
  • ✓Echo Mirage, Wireshark, Burp with proxychains, Frida, dnSpy, IDA/Ghidra, and CFF Explorer cover most of the workflow.
  • ✓Many findings are old-school: hardcoded secrets, cleartext config, weak crypto, and binaries that load DLLs from writable paths.

Thick client penetration testing targets desktop applications that run real logic on the user's machine instead of in a browser. Think trading terminals, ERP front-ends, healthcare apps, and admin consoles built in .NET, Java, or native C/C++. Because the binary, its config, and often credentials all sit on the host, you get a much larger local attack surface than a typical web app.

This guide walks the methodology end to end: mapping two-tier versus three-tier architecture, intercepting both proxy-aware and proxy-unaware traffic, digging through local storage and the registry, decompiling managed binaries, and abusing DLL search order. It names the exact tools for each step so you can build a repeatable workflow.

What is thick client penetration testing?

Thick client penetration testing is the security assessment of a fat or rich desktop application that executes business logic locally and communicates with one or more backend services. Unlike a thin client (a browser rendering server-side pages), a thick client ships compiled code, local config, and sometimes an embedded database to the endpoint.

That changes your scope. You are testing the binary, the data it writes to disk and the registry, the memory it holds at runtime, and the network protocol it speaks, which is frequently a custom TCP protocol rather than plain HTTP. The discipline overlaps with both application and host testing, and it sits alongside other specialized engagements you can read about in our overview of types of penetration testing.

  • Local attack surface: files, registry keys, named pipes, memory, loaded DLLs.
  • Network attack surface: the protocol between client and server (or client and database).
  • Binary attack surface: anti-tamper, obfuscation, and reverse-engineering resistance.
Two-tier vs three-tier thick clients
AspectTwo-tierThree-tier
DB connectionClient connects directly to DBApp server holds DB credentials
Where you tamperRaw protocol / SQLAPI and middleware boundary
Top riskHardcoded connection stringsBroken authorization at middle tier
Key toolsEcho Mirage, Wireshark, dnSpyBurp Suite, Frida, custom proxy

How does two-tier differ from three-tier architecture?

The architecture decides how data flows and where you intercept it. A two-tier (client-server) app talks directly to a database. The client holds the DB connection string and often the SQL, so a decompile or a memory dump can hand you database credentials and let you query the backend directly, bypassing application-layer controls entirely.

A three-tier app inserts an application server between the client and the database. The client calls an API or a middleware service, and the DB credentials live server-side. Here your tampering happens at the API boundary, which is closer to web and API testing. The same broken-object-level-authorization issues you would hunt in network and service testing apply once you reach that tier.

  • Two-tier: hunt for hardcoded connection strings, direct SQL, and trust placed in the client.
  • Three-tier: focus on the API contract, authorization, and parameter tampering at the middle tier.

How do you intercept thick client traffic?

Start by classifying the traffic, then pick the right interception method. If the app speaks HTTP/HTTPS and honors the system proxy, point it at Burp Suite and install Burp's CA so you can read TLS. Many thick clients ignore proxy settings, so you need lower-level tools.

For proxy-unaware or non-HTTP protocols, Echo Mirage and Wireshark earn their keep. Echo Mirage hooks the application's socket calls and lets you view and edit raw traffic, including custom TCP protocols. Wireshark captures everything on the wire for protocol analysis. When the app pins or uses non-HTTP transport, Frida lets you hook the TLS or send/recv functions at runtime to dump and modify payloads before encryption.

  • HTTP, proxy-aware: Burp Suite with the CA trusted.
  • HTTP, proxy-unaware: force traffic with proxychains, or redirect via hosts file plus an invisible proxy listener.
  • Custom TCP: Echo Mirage to edit, Wireshark to analyze.
  • Pinned or obfuscated transport: Frida hooks on the crypto or socket layer.

Why does insecure local storage matter?

Insecure local storage is where thick clients leak the most, because developers assume the user's machine is trusted. You routinely find credentials, API keys, and connection strings sitting in cleartext config files, INI files, the Windows registry, or an embedded SQLite database. Sometimes they are base64-encoded and called encryption.

Enumerate everything the app writes. Use Process Monitor to watch file and registry activity at launch and login, then inspect each artifact. Check %APPDATA%, %LOCALAPPDATA%, ProgramData, and HKCU/HKLM registry hives. CFF Explorer and a hex editor help you pull strings and resources out of the binary itself, where hardcoded secrets love to hide.

  • Cleartext or weakly encoded credentials in config, INI, or XML files.
  • Sensitive values in registry keys readable by the local user.
  • Embedded SQLite or local DB files with cached PII or tokens.
  • Hardcoded secrets and endpoints baked into the binary's strings.

How do you reverse engineer the binary?

Your decompiler depends on the runtime. For .NET (managed) binaries, dnSpy and ILSpy decompile assemblies back to near-original C# or VB, so you can read logic, patch checks, and find secrets. For Java thick clients, JD-GUI or CFR recover source from class files. For native C/C++ binaries, IDA Pro or the free Ghidra give you disassembly and decompilation to pseudo-C.

Reverse engineering exposes client-side authentication, license checks, hidden features, and crypto routines you can then attack. When obfuscation gets in the way, attach Frida or a debugger to read values at runtime instead of statically. This same instrument-at-runtime mindset shows up across modern offensive work, including the AI-driven approach in our guide to agentic pentesting.

What is DLL hijacking in thick clients?

DLL hijacking abuses the Windows library search order: if an application loads a DLL by name without a full path, and an attacker can drop a malicious DLL earlier in the search path, the app loads attacker code with its own privileges. In a thick client install that writes to a world-writable directory, this is a fast path to code execution and privilege escalation.

Hunt for it with Process Monitor filtered on CreateFile or LoadImage events ending in NAME NOT FOUND for .dll files. Each missing DLL in a writable path is a candidate. Confirm by planting a proof-of-concept DLL that pops calc or logs to a file. Also check for unquoted service paths and insecure file permissions on the install directory, which compound the impact.

  • Use Process Monitor to find DLLs loaded from writable or non-existent paths.
  • Check ACLs on the install folder with icacls.
  • Test named pipes and IPC channels for missing authentication.
  • Report alongside any unquoted service path or weak service permissions.
Thick client test checklist
Local host
  • ✓Config, INI, and registry for cleartext secrets
  • ✓Embedded SQLite / local DB files
  • ✓File and folder ACLs (icacls)
  • ✓DLL hijacking and unquoted service paths
Network
  • ✓Classify protocol (HTTP vs custom TCP)
  • ✓Intercept with Burp / Echo Mirage / Wireshark
  • ✓Tamper parameters and replay
  • ✓TLS pinning bypass with Frida
Binary
  • ✓Decompile (dnSpy, JD-GUI, IDA/Ghidra)
  • ✓Find hardcoded secrets and endpoints
  • ✓Bypass client-side auth and license checks
  • ✓Review crypto and anti-tamper

What does a thick client engagement deliver?

A good engagement delivers reproducible findings mapped to impact, not just a tool dump. Each issue should include the artifact (file, registry key, packet, or function), the steps to reproduce, the privilege or data it exposes, and a concrete fix. Group them by the categories above so the client can prioritize.

Tie remediation to standards where you can: OWASP ASVS for storage and crypto controls, and CWE references for DLL hijacking (CWE-427) and cleartext storage (CWE-312). For teams that want this validation running continuously rather than once a year, see how we frame ongoing network and host testing and feed results into a single remediation queue.

Frequently asked questions

What is a thick client application?
A thick client (or fat client) is a desktop application that runs significant business logic and processing locally rather than in a browser. Examples include trading platforms, ERP front-ends, and admin consoles built in .NET, Java, or native C/C++. Because code and data live on the endpoint, they expose a larger local attack surface than web apps.
Which tools are used for thick client penetration testing?
Common tools are Burp Suite and Echo Mirage for traffic interception, Wireshark for protocol analysis, Frida for runtime hooking, dnSpy and ILSpy for .NET decompilation, IDA Pro and Ghidra for native reversing, and CFF Explorer plus Process Monitor for binary and host inspection. proxychains helps force proxy-unaware traffic through Burp.
How do you intercept HTTPS traffic from a proxy-unaware thick client?
If the app ignores system proxy settings, redirect its hostname to localhost via the hosts file and run an invisible Burp listener, route it through proxychains, or hook the socket and TLS functions with Frida. Echo Mirage can intercept and edit raw socket traffic for non-HTTP custom protocols.
What is the difference between two-tier and three-tier thick clients?
A two-tier client talks directly to a database, so it often holds the connection string and SQL, which makes hardcoded credentials and direct DB access the main risk. A three-tier client routes through an application server that holds the DB credentials, shifting your testing toward the API and authorization at the middle tier.
Is DLL hijacking still a real thick client risk?
Yes. Many desktop apps load DLLs by name without a full path and install into writable directories, so an attacker can plant a malicious DLL that runs with the app's privileges. Process Monitor filtered on NAME NOT FOUND DLL loads quickly surfaces candidates, and it is often chained with unquoted service paths for privilege escalation.
How is thick client testing different from web application testing?
Web testing focuses almost entirely on the server-side request/response. Thick client testing adds the local host (files, registry, memory, DLLs) and the binary itself (decompilation, anti-tamper, hardcoded secrets), plus protocols that are frequently custom TCP rather than HTTP. You need reversing and host-analysis skills on top of web skills.

Sources and references

  • OWASP ASVS
  • CWE-427: Uncontrolled Search Path Element
  • CWE-312: Cleartext Storage of Sensitive Information
  • Frida Dynamic Instrumentation Toolkit
A
Akhil Reni
Co-founder and CTO, Strobes
Akhil Reni is co-founder and CTO of Strobes, building AI-driven penetration testing and exposure management for security teams.
Tags
Thick Client SecurityPenetration TestingOffensive Security

Stop chasing vulnerabilities Start reducing exposure

See how Strobes AI agents validate and fix your most critical exposures automatically.

Book a Demo
Continue Reading

Related Posts

How to Catch Blind Bugs Scanners Miss
Penetration TestingOffensive Security

How to Catch the Blind Bugs Scanners Miss

Out-of-band validation detects blind SSRF, blind SQLi, and out-of-band XXE that return no in-band response. Learn how it works and why it matters.

May 29, 202613 min
5 Vulnerabilities in Every Vibe-Coded App
Application SecurityLLM Security

5 Vulnerabilities in Every Vibe-Coded App

The 5 security flaws AI coding assistants ship by default: missing authz, leaked secrets, weak JWTs, IDOR, eval RCE — with detection queries and fixes for each.

May 29, 202613 min
Black-Box Agentic Scanners Strengths and Their Ceiling
Penetration TestingOffensive Security

Black-Box Agentic Scanners: Strengths and Their Ceiling

Black box agentic pentesting finds real CVEs fast and proves them, but where does it hit a ceiling? An honest, category-level verdict.

May 29, 20268 min