This is a fictional training exercise created for educational purposes as part of the VisualNotes OSINT Training Series. All persons, companies, domains, IP addresses, and events described in this case file are entirely simulated and do not represent real individuals or entities.
The techniques described are documented for defensive security awareness and analyst training only. Readers should not apply any OSINT methodology against real individuals without proper legal authorization. Unauthorized investigation of real persons may violate privacy laws including GDPR, IT Act 2000, and equivalent legislation in your jurisdiction.
Part of the VisualNotes OSINT Training Series · TLP:AMBER · For training use only · visualnotes.tech
Scenario Overview
Organization Context
NexaStack Technologies is a mid-size B2B SaaS company (~220 employees) headquartered in Bengaluru, India, with a distributed engineering team across Europe and Southeast Asia. The company offers cloud-based network monitoring software primarily targeting enterprise customers in the financial and telecommunications sectors.
Thread A — The Remote Hire
On 14 February 2024, NexaStack's engineering department onboarded a new senior backend engineer via a fully remote hiring process. The candidate — who applied under the name Arjun Mehta — presented strong credentials: 9 years of experience, references from two reputable Indian tech firms, a polished GitHub portfolio, and a LinkedIn profile with 600+ connections.
Three weeks after onboarding, the DevSecOps team flagged an anomaly: Arjun's work laptop was generating outbound DNS queries to an unusual subdomain not associated with any NexaStack project. Concurrently, the IT team noticed his stated home city (Pune, Maharashtra) did not correlate with his VPN login geolocations, which consistently resolved to Chişinău, Moldova and occasionally Kyiv, Ukraine.
HR reviewed the original application and discovered that one of the listed reference companies — Pinnacle DevWorks Pvt Ltd — does not appear in any official MCA registry, GST database, or LinkedIn company listing.
Thread B — The Brand Impersonation
Two weeks prior to Arjun's hiring (approximately 29 January 2024), NexaStack's marketing team received a complaint from a long-standing enterprise customer: they had received a phishing email appearing to originate from noreply@nexastack-support.com — a domain NexaStack does not own. The email directed the customer to a convincing clone of NexaStack's login portal to "validate their license renewal."
Threat intel from a third party later revealed the impersonation domain nexastack-support[.]com was registered on 22 January 2024 — eight days before the phishing emails started, and thirteen days before Arjun's job application was submitted.
Investigation Urgency
Arjun currently retains READ access to the production customer database and has been granted temporary credentials to the internal API documentation portal. Access has been suspended pending this investigation, but evidence collection must proceed before the actor detects the suspension and begins destroying traces.
Investigation Objectives
Thread A — Remote Hire
- Verify true identity of "Arjun Mehta" — confirm or refute the claimed persona
- Validate employment history and listed references
- Map all digital accounts linked to the applicant's provided identifiers
- Identify alias accounts and alternative personas
- Investigate GitHub portfolio for code provenance and plagiarism
- Correlate VPN/geolocation inconsistencies against the claimed background
- Assess insider-threat posture and data access during the tenure
- Determine if the CV photo is AI-generated or stolen
Thread B — Brand Impersonation
- Attribute the registration and operation of nexastack-support[.]com
- Perform full infrastructure analysis of the phishing domain
- Identify hosting, mail servers, and potential sister domains
- Extract Whois history and identify registrant artefacts
- Correlate infrastructure to known threat actor TTPs
- Map the phishing kit deployed on the clone portal
- Establish timeline overlap between Thread A and Thread B
- Identify additional targeted organizations if campaign is wider
Cross-Thread Objective
Determine with confidence whether "Arjun Mehta" and the operator of the nexastack-support[.]com infrastructure are the same individual or coordinated group, and reconstruct the full attack chain.
Initial Intelligence Package
The following data was collected from the HR application file, IT logs, and preliminary threat intel. This is your starting point — not your conclusion.
| Identifier Type | Value | Source | Confidence |
|---|---|---|---|
| Full Name (claimed) | Arjun Mehta | CV / HR File | MEDIUM — unverified |
| Email (personal) | arjun.mehta.dev@gmail.com | Application | MEDIUM |
| Email (alt, recovered) | a.mehta91@proton.me | GitHub commit history | MEDIUM |
| LinkedIn Profile URL | linkedin.com/in/arjun-mehta-dev | Application | LOW — check creation date |
| GitHub Username | github.com/arjunmdev | CV | MEDIUM |
| Phone (WhatsApp) | +91 98XX XX 4471 | HR Onboarding | MEDIUM |
| Claimed Location | Pune, Maharashtra, India | CV / Aadhaar copy | LOW — VPN evidence contradicts |
| Claimed Employer 1 | Hexagon InfoSystems (2018–2022) | CV | MEDIUM |
| Claimed Employer 2 | Pinnacle DevWorks Pvt Ltd (2022–2024) | CV | LOW — MCA not found |
| Phishing Domain | nexastack-support[.]com | Customer complaint / Threat Intel | HIGH |
| Phishing Domain Registrar | Namecheap (WhoisGuard enabled) | Whois lookup | HIGH |
| Phishing Domain IP | 185.220.101.XX (Tor exit node range) | DNS resolution | MEDIUM |
| Outbound DNS Query (flagged) | sync.arjunmdev.workers[.]dev | DevSecOps alert | HIGH |
| VPN Geolocation 1 | Chişinău, Moldova (MD) | IT login logs | HIGH |
| VPN Geolocation 2 | Kyiv, Ukraine (UA) | IT login logs | HIGH |
| Telegram Handle (unconfirmed) | @devmehta_91 | Anonymous tip from Bug Bounty forum | LOW — not validated |
Hidden Complexities & Analytical Traps
The following elements are deliberately embedded to test investigative discipline. Each represents a common failure mode in real investigations.
Username Collision Traps
Investigation Phases
Goal: Determine whether "Arjun Mehta" is a real person, a stolen identity, or a fully fabricated persona.
- Reverse image search LinkedIn photo across Google Images, TinEye, Yandex, Bing Visual Search
- Analyze photo EXIF metadata from original HR document upload
- Run AI-face detection tools (e.g., Hive Moderation, FotoForensics, Illuminarty)
- Cross-reference name + email + phone against breach databases (IntelX, Dehashed)
- Validate Aadhaar QR code structure against official format spec
- Check email address creation date via Holehe, Epioes
- Search Gmail address against Google account first-seen signals
- LinkedIn photo: AI-generated (Firefly metadata), sourced from real person's likeness
- Gmail account created ~November 2023 — not consistent with claimed 9-year career
- ProtonMail address found in November 2023 breach dataset from a Russian cybercrime forum
- Phone number registered to a ported SIM, original owner traceable via TRAI public data
- Aadhaar document: font inconsistency in QR error-correction level — fabricated
Goal: Map all social accounts linked to the suspect's known identifiers and uncover alias accounts.
- Run Sherlock and Maigret against username variants: arjunmdev, arjunmehta, devmehta91, a_mehta91
- Search Telegram via username @devmehta_91 and correlate posts
- Check LinkedIn profile creation date via Google Cache / Wayback Machine
- Search GitHub email in git log: git log --format='%ae' | sort -u
- Pivot ProtonMail address through breach data for associated usernames
- Search Twitter/X, Reddit, Stack Overflow, HackerNews for email/username cross-hits
- Check dark web forums (IntelX, Ahmia) for the Telegram handle
- LinkedIn profile created Dec 2023 — 6 years after claimed career start
- Telegram @devmehta_91: posts in a Russian-language hacking forum (topics: phishing kits, remote job scams)
- Stack Overflow account from 2017 with same username — but different email, different writing style, different timezone patterns. Likely a real developer's account the suspect is name-mirroring.
- Reddit account u/arjunmdev: posts about "remote work IN → EU salary arbitrage" in late 2023
- GitHub repo commit email reveals a third address: vdev.works91@gmail.com
Goal: Fully map the phishing domain, Cloudflare Workers endpoint, and any connected infrastructure. Establish shared hosting or registrant artifacts linking Thread A and Thread B.
- Passive DNS lookup for nexastack-support[.]com via SecurityTrails, Passive Total
- Enumerate all subdomains (subfinder, amass, crt.sh)
- Pull TLS certificate history via Censys, crt.sh — pivot on Subject CN and SANs
- Shodan search: org and hosting ASN — find co-hosted domains
- VirusTotal passive DNS to identify historically co-resolved domains on same IP
- Check arjunmdev.workers[.]dev Cloudflare account — any public worker routes?
- Examine mail headers from the phishing email (SPF/DKIM/DMARC alignment)
- Check Wayback Machine for snapshot of the clone portal — extract phishing kit artifacts
- TLS certificate for nexastack-support[.]com issued by Let's Encrypt, SAN also covers mail.nexastack-support[.]com and nexastack-helpdesk[.]com — a sibling domain not yet actioned
- Shodan reveals the hosting server also serves 3 other impersonation domains targeting Indian SaaS companies
- The Cloudflare Workers subdomain arjunmdev.workers.dev is registered to an account with billing email vdev.works91@gmail.com — matching the third email found in Phase 2
- Phishing kit contains a hardcoded Telegram bot token for exfiltrating captured credentials
- This is the convergence point linking Thread A and Thread B.
Goal: Reconstruct the actor's activity timeline to establish planning, execution sequence, and intent.
Goal: Analyze behavioral signals across both threads to build an actor profile and assess attribution confidence.
- Work hours: Login activity consistently 13:00–22:00 IST (correlates to 11:00–20:00 EET — Eastern European working day)
- Language: Internal Slack messages show occasional Cyrillic keyboard artifact characters in auto-corrected words
- Git style: Commit messages use British English ("colour", "organise") inconsistent with claimed Pune upbringing
- Salary ask: Requested payment in USD to a Wise account — unusual for an Indian resident with claimed local employment history
- Interview pattern: Technical interview conducted entirely via text chat (claimed "mic issues") — consistent with using a pre-coached script or AI assistance
- Reference calls: HR's call to the Pinnacle DevWorks reference number was answered immediately in under 1 ring — suggests a forwarded VoIP number, not a real company landline
- Remote job fraud targeting Indian tech companies with Eastern European operators is a documented pattern — see Group-IB and CERT-In advisories from 2023
- Phishing kit structure (Telegram bot exfil + Let's Encrypt TLS + Namecheap registrar) matches TTPs associated with a Ukrainian cybercriminal cluster catalogued as UNC-4771 in internal threat intel (training pseudonym)
- The use of Cloudflare Workers as a covert C2 relay is a documented technique in the 2023 MITRE ATT&CK framework (T1102.002 — Web Service: Bidirectional Communication)
- DNS tunneling pattern (large TXT record responses, nightly schedule) aligns with iodine or dnscat2 tooling
Goal: Ensure all collected evidence meets evidentiary standards before reporting. Prevent false-positive attribution.
- Screenshots: Capture with browser extension that embeds SHA-256 hash + timestamp (Hunchly preferred)
- Web archives: Submit all URLs to archive.org AND archive.ph immediately — pages may be taken down
- DNS records: Export full passive DNS with timestamps from SecurityTrails; do not rely on live DNS alone
- Git forensics: Clone the full repo with git clone --mirror and inspect raw objects; do not trust the web UI display dates
- Email headers: Preserve original MIME source with full Received chain — do not forward the email
- Metadata files: Document extraction tool, version, operator, timestamp for every artifact
- ☐ Cross-corroborate every attribution claim with ≥2 independent sources
- ☐ Document all negative findings (what you searched and did NOT find)
- ☐ Record confidence score per claim (High / Medium / Low)
- ☐ Flag all inferential claims vs. directly evidenced claims
- ☐ Run all IPs/domains through VirusTotal before including in report — note if already flagged
- ☐ Confirm the real "Arjun Mehta" developer is NOT the suspect before any external disclosure
- ☐ Legal review before sharing with law enforcement — jurisdiction matters (IN vs EU vs UA)
Goal: Quantify the damage already done and assess ongoing risk to NexaStack and its customers.
- Customer data exposure: Staging table accessed contained ~4,200 customer records including license keys and contact details
- API documentation: Full internal API endpoint map accessed — enables targeted exploitation of customer integrations
- Credential phishing: At least 1 confirmed enterprise customer credential compromised; scope unknown
- Sibling domain active: nexastack-helpdesk[.]com still live — additional phishing waves may be in preparation
- DNS exfiltration volume: Estimated 180 DNS requests over 18 days; average payload ~512 bytes per request ≈ ~90KB total — likely config files, API keys, or credential dumps
- 🔴 Request takedown of nexastack-support[.]com and nexastack-helpdesk[.]com via Namecheap abuse and hosting provider
- 🔴 Rotate all API keys accessible to Arjun's account
- 🔴 Notify affected enterprise customer of credential compromise
- 🔴 Issue DMARC/DKIM hardening advisory to block further spoofing
- 🟡 File abuse report with Cloudflare for arjunmdev.workers.dev
- 🟡 Preserve all access logs before 30-day retention window expires
- 🟡 Brief legal counsel for potential CERT-In disclosure obligation
Goal: Synthesize all findings into a professional intelligence report suitable for executive briefing, legal action, and law enforcement referral.
See Section 9 for required deliverables. The report must clearly separate:
- Confirmed facts — directly evidenced, multi-source verified
- Assessed conclusions — logically derived from evidence with stated confidence
- Speculation — noted explicitly and not included in executive summary
Recommended Tools by Phase
Confidence Scoring Table
Complete this table as evidence is gathered. Sample expected findings shown — trainee must validate independently.
| Claim | Evidence Basis | Sources | Confidence | Score Bar |
|---|---|---|---|---|
| "Arjun Mehta" identity is fabricated | AI-generated photo, Gmail created Nov 2023, Aadhaar QR anomaly | ExifTool, Epieos, Forensic review | HIGH | |
| Suspect operated phishing domain | Cloudflare billing email overlap (vdev.works91@gmail.com) | Phase 2 + Phase 3 convergence | HIGH | |
| DNS tunneling exfiltration occurred | Large TXT payloads, nightly pattern, workers.dev endpoint | DevSecOps logs, passive DNS | MEDIUM | |
| Suspect is Eastern European (not Indian) | VPN geolocations, login hours, Cyrillic keyboard artifacts, British English | IT logs, Slack, git commits | MEDIUM | |
| Pinnacle DevWorks is a fabricated entity | No MCA/GST record, Clutch/Justdial listings created Jan 2024 | MCA portal, Justdial, Clutch timestamps | HIGH | |
| Telegram @devmehta_91 belongs to suspect | Anonymous tip only; no corroborating digital evidence yet | Unverified tip | LOW | |
| Campaign targets other Indian SaaS companies | 3 co-hosted impersonation domains found on same server via Shodan | Shodan, passive DNS | MEDIUM |
Analyst Traps — Quick Reference
These are the deliberate failure-mode tests embedded in this case. Falling into any constitutes a grading deduction.
| Trap | Incorrect Analyst Action | Correct Analyst Action | Impact if Wrong |
|---|---|---|---|
| 01 | Reports the real Arjun Mehta developer as the suspect based on username match | Distinguishes accounts by email, timeline, commit metadata, writing style | False accusation of innocent person |
| 02 | Attributes the Chennai Instagram food blogger's account to the suspect | Establishes that account predates suspect's LinkedIn — real person, stolen image | False positive; violates innocent party's privacy |
| 03 | Spends hours pivoting on the WhoisGuard privacy email | Skips to TLS cert SAN analysis and passive DNS for infrastructure correlation | Wasted investigation time; delayed findings |
| 04 | Accepts Clutch.co and Justdial listings as validation of Pinnacle DevWorks | Checks listing creation timestamps; finds all created in Jan 2024 | Accepts fabricated evidence; misses ghost employer flag |
| 05 | Reports GitHub portfolio as evidence of 5-year development career | Clones with --mirror, examines raw commit objects for author/committer timestamp delta | Corroborates the suspect's false credentials |
| 06 | Reports the LinkedIn photo as simply "AI-generated" without nuance | Documents: real person's likeness used as style reference; Instagram account is victim, not suspect | Incomplete analysis; potential misidentification |
| 07 | Geolocates the phishing host to Moldova based on Tor exit node IP | Notes Tor exit nodes don't reveal origin; pursues cert/ASN correlation instead | Incorrect attribution; misleads law enforcement |
| 08 | Dismisses the workers.dev domain as normal developer activity | Checks domain ownership, query timing pattern, payload size — identifies as C2 relay | Misses active exfiltration channel |
Final Deliverables
Grading Rubric
| Criterion | Weight | Pass Standard | Fail Indicators |
|---|---|---|---|
| False Positive Avoidance | 25% | Correctly excluded all 3 innocent parties (real developer, food blogger, real Arjun Mehta if exists) | Any innocent party named as a suspect in report |
| Infrastructure Attribution | 20% | Identified cert SAN overlap, co-hosted domains, and Cloudflare billing email convergence | Stopped at Tor IP; missed sibling domain; missed workers.dev link |
| Evidence Integrity | 20% | All claims cited with source, confidence, and preservation method | Unarchived screenshots; no hash; claims without citation |
| Timeline Accuracy | 15% | Correct ordering of persona creation → infra setup → phishing launch → infiltration → exfil | Conflated investigation threads; incorrect event ordering |
| Analytical Rigor | 10% | Clearly distinguished confirmed vs. assessed vs. speculative claims; confidence-scored all major claims | Binary conclusions; no uncertainty expressed; overclaiming |
| Reporting Quality | 10% | Executive summary usable by non-technical leadership; deliverables complete | Jargon-heavy; missing deliverables; speculation presented as fact |
Advanced Expansion Tasks
For analysts who complete the primary investigation. These tasks add operational depth and simulate real escalation scenarios.
The Shodan search revealed 3 co-hosted impersonation domains. Identify the target companies, assess whether they have been notified, and determine if a coordinated industry disclosure is appropriate. Who would you contact, and through which channel (CERT-In, sector ISAC, direct outreach)?
The phishing kit collected card details alongside credentials. Investigate whether any known cryptocurrency addresses are linked to the Telegram bot token's owner. Use on-chain analytics (Chainalysis Reactor concepts, Etherscan for public wallets) to trace any wallets found in the phishing kit's backend code.
Determine whether any of NexaStack's own employee credentials (not just customers) appear in breach databases. Scope: check all emails in the @nexastack.com domain against IntelX, HaveIBeenPwned enterprise, and DeHashed. Assess whether the suspect may have had pre-existing credential access before the remote hire.
Map the LinkedIn connection graph for "Arjun Mehta's" account. Are the 600+ connections real professionals or bot accounts? Sample 20 connections and assess account authenticity using profile age, posting history, and connection reciprocity. Estimate what percentage of the connection network is fabricated.
Following access suspension, assume the actor attempts to delete the GitHub account and Telegram profile. Using cached data (Google cache, archive.ph, crt.sh logs, passive DNS history), reconstruct as much of the deleted profile as possible. Document what evidence survives deletion and what is lost — this is a lesson in pre-collection urgency.
Map all observed actor TTPs to MITRE ATT&CK Enterprise and PRE-ATT&CK framework techniques. Produce a navigator layer JSON file showing coverage. This enables detection engineering teams to build SIEM rules targeting the specific techniques used in this campaign.