Home
VAPT Web Application PentestAPI PentestMobile App PentestInfrastructure PentestAI & LLM PentestOT / ICS PentestIoT PentestPenetration TestingAll VAPT services
Red Team Red Team EngagementAdversary SimulationAssumed BreachPurple TeamingSocial Engineering
CompanyResourcesBlogFree Consultation

What your backend should catch during a mobile app pentest

A mobile app runs on a device you do not control, so detection lives on the backend. This is what your API should log during a pentest, and what to fix when it stays quiet.

Joel Aviad OssiJoel Aviad OssiRed Team Lead, RedTeam Security
8 min read
A dark isometric scene: a smartphone on the left joined by glowing red lines to a server block on the right, where a brass listening horn and a lens inspect the incoming lines, most dim and one lit red.

Key takeaways

  • A mobile app runs on a device the attacker controls, so every client side defence can be switched off. The detection that counts during a mobile pentest lives on the backend.
  • The cheapest server side signal is a valid session token used from a device it was never issued to. The backend only sees it if it records a device identifier or an attestation verdict.
  • A standard API access log cannot support a mobile detection rule: it omits the device, the app integrity result, the object owner and the authorisation decision.
  • Agree deconfliction before the test: tester addresses, devices and a shared clock. Without it you cannot tell a missed alert from a suppressed one.
  • Sort the gaps by the damage each would do against what it costs to see them. Record every decision not to detect, so nobody rediscovers the same gap at the next test.

Detection has to live on the backend

A mobile app runs on hardware the user owns and an attacker can borrow. Every control you put in the client runs on a device the tester fully controls, and each one can be switched off: certificate pinning, root and jailbreak checks, code obfuscation. That is the starting position for a mobile app pentest. The app is not a trusted witness to its own security, so a detection review asks what the server sees once the app's defences are gone, rather than what the app blocks.

The attacks that matter most against a mobile app happen after the tester has defeated the client protections. Bypassing pinning to read the API traffic, covered in breaking a mobile app's certificate pinning, defeats the client and raises no error on the server. The backend still answers a well formed request. If the only record of that request is a web server access line, nothing downstream can tell it apart from a genuine one.

Any signal that exists only on the device is a signal you will lose, because the device is the thing under test. A detection review for mobile starts at the backend and works outward. It asks which of the attacker's moves leave a mark the server can keep.

What a mobile pentest does that the server can see

Set the client aside and a mobile pentest still produces traffic with a shape. The tester replays a stolen token from a machine that is not the phone. Traffic arrives through an intercepting proxy whose TLS fingerprint and headers do not match the shipped app. The app runs on a rooted device that no longer passes attestation. Identifiers get walked to read other users' records. Each of these reaches the backend, and each leaves something a server can record, if the server was built to record it.

The table below is the short list to check first. The right hand column is worth reading twice. In most rows the request succeeds and the application answers it correctly, so the control holds and only the record is absent. The same token theft this list turns into a signal is the one described in what a mobile app leaves on the phone, read here from the defensive side. OWASP places security logging and monitoring failures in its top ten because the record is so often the thing missing.

Five things a mobile tester does, the server-side signal each one leaves, and why it usually goes unnoticed.
Tester activityServer-side signalWhy it is missed
Replaying a token from a laptopA known session used from a new device fingerprintThe API trusts the bearer token and never recorded a device
Running through an intercepting proxyClient TLS and headers that are not the shipped appNothing compares the request against the app's normal shape
Driving the app on a rooted deviceAttestation absent or failed on otherwise valid callsThe attestation verdict is checked at login only, or not at all
Walking object identifiersMany records read in one short sessionEach call returns a normal 200 and sits with real traffic
Brute forcing an OTP endpointA burst of failures against one accountThe rate limit lived on the client, which the attacker skipped

A token from a new device is the cheapest signal

The clearest server side signal a mobile pentest generates is a valid session used from somewhere the app never ran. The tester reads a token off the device and replays it from a laptop. If the backend proves identity from the bearer token alone, the call succeeds. The token is not bound to the device it was issued to, so the server cannot see that the phone changed.

That binding is also the detection. If the backend records a device identifier or an attestation verdict beside each token, a known session arriving from an unknown device is a rule that writes itself. Testing whether the backend enforces any of this belongs to an API pentest, because the flaw and its fix both live on the server. The chain below shows where the only observable moment sits.

A three column sequence. The tester reads a session token off the phone through a backup, replays it from a laptop, the mobile API accepts it with no device binding check, the marked weakness, and returns the account data to the tester.
The one point a backend can see this attack: a valid token arriving from a device the server never issued it to.

The fields a mobile access record needs

A default API access log is a web server format: an address, a timestamp, a method, a path and a status code. It counts traffic. It cannot say who made the request, from what device, running which build of the app, against whose data, and no rule can test a field that was never written. NIST's guide to computer security log management sets out the general field list, and the OWASP logging cheat sheet turns it into concrete events.

For a mobile backend, two fields carry most of the weight and neither is in the standard line. The first is the device: an identifier and the result of a platform attestation check, so a token used from a new device shows up. The second is the client integrity result, which says whether the request came from an unmodified app on an untampered device. The stack below orders one record from the identity down to the authorisation decision, with the mobile specific layer marked.

The two layers a standard API log omits, the device verdict and the app integrity result, are the two a mobile-aware rule needs.

Score the test twice, and agree the ground rules first

Deconfliction keeps a defender from spending a night chasing a paid tester. It is also what makes the detection result readable. Record the tester's source addresses, the device or devices in use, the test window and a shared timestamp reference, then keep a note of what fired and when. Without that note, a missing alert and a suppressed one look identical after the fact. A purple team engagement runs this comparison on purpose. Reading it from a pentest costs almost nothing extra.

Ask the tester for a timeline of significant actions with timestamps, and compare it against what your platform produced. Each line lands in one of four places, and each leads to different work with a different owner. Only one of them costs real money. Write the technique names against a shared vocabulary such as MITRE's ATT&CK knowledge base so you can compare this year's scorecard with next year's.

The four outcomes of comparing a tester's timeline against your alerts, and who owns each one.
Comparison resultWhat it meansWho owns the fix
An alert fired inside the windowRule and telemetry both work. Record the time to detect.Nobody. Keep the rule under test
The signal was there, nothing firedA detection engineering gap, the cheapest to closeDetection team, this quarter
The signal was not collectedThe app or backend never emitted the device verdictProduct engineering, in a release
An alert fired on the tester's addressA rule keyed to the source, not the behaviourDetection team, before the next test

Sort the gaps before writing a single rule

A first scorecard usually lists more gaps than a team will close in a quarter, and closing them in the order they were found is the wrong order. Two questions sort the list. What would it cost the business if this were abused for real? What does it take to see it at all? The second question holds the surprises. Emitting a device attestation verdict is a code change with an owner and a release date, while writing a rule over data you already collect is an afternoon's work.

The grid below sorts on those two questions. The bottom right cell is the one teams skip. Writing down that you have chosen not to detect something, with a reason and a date, is a real output, and it stops the same gap being rediscovered at the next test. A penetration test report orders its findings the same way, cheap high value changes first, and it is worth agreeing before the wider method in how a mobile app pentest is run even begins.

How to order a first mobile scorecard's gaps, once you separate what would hurt from what it costs to make visible.

What this means for teams in Dubai and Abu Dhabi

A mobile app that cannot be monitored fails the same expectation whether it ships from Dubai or Abu Dhabi, and what differs is the regulator that reads the gap. A bank or payments app answers to the Central Bank of the UAE, whose information security expectations require security events to be logged and reviewed. A Dubai government entity, or a supplier building an app for one, is measured against the standard published by the Dubai Electronic Security Centre, which asks for evidence of monitoring rather than a description of it.

At the federal level the UAE Information Assurance Standard published through NESA asks the same of sensitive systems, and a healthcare app used in Abu Dhabi also falls under ADHICS. None of these regimes can tell you whether your own backend emits enough for a rule to fire on a stolen token. A dated detection scorecard from a mobile pentest is evidence an assessor in either emirate can read. Where the backend is hosted or operated outside the country, settle before the test which side holds the logs and for how long, because a provider's default retention may be shorter than the window a UAE assessor asks about.

Frequently asked questions

What is detection during a mobile app pentest?

It is reading a mobile penetration test from the defensive side. While the tester attacks the app and its backend, you check whether your own logs and alerts show the activity. Because the app runs on a device the tester controls, the useful signals are server side, in the API and identity logs rather than on the phone. The output is a list of what your monitoring saw, missed, or never collected.

How does mobile pentest detection differ from web application pentest detection?

The classes of gap are similar, but the trust boundary moves. In a web test the browser holds few of the controls, and the client code is still largely the vendor's. In a mobile test the client runs on a device the attacker controls, so root detection, pinning and obfuscation can all be defeated and none of them can be trusted as a signal. Mobile detection leans harder on the backend: device binding, attestation verdicts and token reuse across devices.

Why can't client side protections like root detection be used for detection?

Because they run on the device under test. A tester who has rooted a phone or patched the app can disable a root check, a jailbreak check or pinning, and can also stop the app from reporting that it did so. A signal the attacker can switch off is not a signal. Anything you want to rely on has to be produced and checked on the server.

What backend signals reveal a stolen mobile session token?

A known session appearing from a new device fingerprint, a new address with an implausible location change, or a request that lacks the attestation the real app attaches. None of these are visible unless the backend records the device the token was issued to and the attestation verdict on each call. If identity is proven by the bearer token alone, a replayed token looks exactly like the real user.

Should we tell our security operations team that a mobile app pentest is running?

Yes, for a standard penetration test. Share the test window, the tester's source addresses and the devices in use, and keep a note of what fired. If you specifically want to know whether the team notices without warning, that is a Red Team or adversary simulation objective and should be scoped as one, not read opportunistically from a pentest.

What is device attestation, and does it help detection?

Device attestation is a platform check that reports whether a request came from a genuine, unmodified app on an untampered device. Recorded on each sensitive call rather than only at login, its verdict is one of the strongest mobile detection signals: a valid token arriving with a failed or absent attestation is a clear anomaly. The app cannot be trusted to enforce it alone, so the backend has to receive the verdict and store it.

How long should we keep mobile backend logs for this comparison?

Long enough to cover the test window plus the time to receive and read the report, which is weeks rather than days. Retention shorter than that gap means the tester's timeline arrives after the evidence has expired and the comparison cannot be made. Agree the retention period during scoping, alongside the test dates and the devices.

Can certificate pinning be relied on to stop token theft?

No. Pinning makes intercepting the app's traffic harder, but a tester can bypass it on a device they control, and it does nothing about a token already written to disk on the phone. Pinning and storage are separate controls that fail independently, so neither one substitutes for backend detection of a replayed token.

The engagements this applies to

API Pentest

Object and function level authorisation, tokens, rate limits

Joel Aviad Ossi, Red Team Lead at RedTeam Security
Joel Aviad OssiRed Team Lead, RedTeam Security

Joel Aviad Ossi is Red Team Lead at RedTeam Security, the Dubai-licensed trading brand of WebSec FZCO. He scopes and runs objective-based engagements across the UAE.

Let's talk about your security

Tell us the objective you want tested. We will come back with a scope, a timeline and a quote, under NDA from the first conversation.

Email [email protected]
IFZA Business Park, Building A2
Nadd Hessa, Dubai Silicon Oasis
Dubai, United Arab Emirates