Use this repeatable workflow to check a suspicious link without opening it on a normal workstation, exposing credentials, or treating a single scanner result as proof of safety. The checklist covers initial triage, passive URL analysis, controlled sandboxing, evidence collection, and reporting.
Overview
A suspicious link can lead to a phishing page, malware delivery site, fake customer support portal, credential-harvesting form, or a legitimate service that has been compromised. The visible text is not enough to establish where a link goes. Attackers can use URL shorteners, redirects, lookalike domains, compromised websites, and tracking parameters to conceal the destination.
The safest default is simple: do not click the link from your everyday browser, do not sign in to any page reached through it, and do not paste sensitive information into an online scanner. Treat a scanner as one source of evidence, not a verdict. A new domain may have little reputation data, while a compromised legitimate domain may initially appear trustworthy.
For routine triage, separate the work into four stages:
- Preserve: retain the original message, sender details, timestamp, and complete link.
- Inspect passively: examine the URL, domain, registration details, DNS history, and reputation without loading the destination.
- Test in isolation: if necessary, open the link only in an approved sandbox or disposable analysis environment.
- Respond: record indicators, block or monitor them, notify the relevant owner, and report the abuse.
If the link was already opened, prioritize containment rather than repeated testing. Disconnect a suspected device from the network when appropriate, preserve evidence, reset potentially exposed credentials from a known-clean device, and follow your incident-response process. The post-click phishing response plan covers the next steps.
Checklist by scenario
Scenario 1: A link arrives in email, chat, or a text message
- Save the original. Keep the message in its original format if possible. Record the sender address or number, display name, subject, delivery time, and any attachment or QR code.
- Copy the destination without clicking. On a desktop, use the context menu to copy the link address. In a mobile app, use a safe preview or copy function. Do not rely on the visible label, such as “Review document” or “Track package.”
- Decode only what is necessary. Expand obvious URL encoding and inspect the hostname, but do not automatically follow redirects. A shortened link should be treated as an unknown destination until resolved in a controlled way.
- Compare the domain with the expected organization. Look for misspellings, extra words, misleading subdomains, unusual top-level domains, and domains that place a trusted name before an unrelated registered domain. In
login.example.attacker.test, the meaningful registrable domain is not necessarily the first familiar-looking word. - Check the request itself. Urgency, threats, unexpected payment changes, requests for passwords or one-time codes, and instructions to bypass normal approval are strong reasons to stop and verify through a separate channel.
For sender and message context, see How to Analyze Phishing Email Headers and Links Safely. A text message that asks you to open a delivery, toll, banking, or account link should be handled as a potential smishing alert, even when the wording appears familiar.
Scenario 2: Passive URL and reputation analysis
Use more than one source, and note the time of each lookup. Results can differ because databases have different coverage and update schedules.
| Source or tool | Useful for | Important caution |
|---|---|---|
| VirusTotal | Comparing multiple reputation and malware-detection results for a URL, domain, or file. | Review the submission and sharing terms before uploading private links, tokens, customer data, or internal hostnames. |
| URLScan | Reviewing captured page behavior, redirects, requests, screenshots, and observed domains when a scan is available. | Public scans can expose the URL and related page details. Use an appropriate visibility setting and avoid confidential links. |
| Google Safe Browsing | Checking whether a browser safety reputation source has identified a URL as dangerous. | A clean result does not prove that a new, targeted, or previously unseen page is safe. |
| PhishTank | Looking for community-submitted phishing reports and submitting confirmed or suspected phishing pages where appropriate. | Absence from the database is not evidence of legitimacy. |
| Passive DNS | Examining historical resolutions, related hostnames, and infrastructure changes without directly browsing to the site. | Interpret shared hosting and cloud infrastructure carefully; shared infrastructure alone is not proof of malicious activity. |
| WHOIS or registration data | Reviewing registrar, creation information, nameservers, and registration patterns. | Privacy services, proxies, and incomplete records are common. Registration age is a clue, not a verdict. |
Record the exact URL, hostname, resolved IP address when relevant, redirect chain, lookup time, and tool result. Do not submit an internal password-reset link, private document link, or URL containing a live session token to a public scanner. Redact or replace sensitive parameters first, while preserving a restricted internal copy for authorized investigation.
Scenario 3: Controlled active analysis
Active analysis means loading the destination, so it should happen only in an approved environment. Use an isolated virtual machine or sandbox with no access to production credentials, shared drives, internal services, personal browser profiles, password managers, or hardware security keys. Disable automatic clipboard sharing and unnecessary folder sharing. Use a test account with no privileges and never enter real credentials, payment details, recovery codes, or customer information.
Capture the page URL, redirects, DNS requests, outbound connections, downloaded files, certificate details, and visible prompts. Stop if the page asks for an unexpected login, launches a download, requests browser permissions, or attempts to contact internal resources. A screenshot can support an investigation, but it should not replace logs or the original evidence.
Scenario 4: Terminal-based triage
These examples are for a controlled workstation and perform limited inspection. They do not establish that a URL is safe.
# Extract headers only; redirects and server behavior may still be meaningful
curl -I --max-time 10 'https://example.test/path'
# Inspect DNS records without opening the web page
dig +short A example.test
dig +short AAAA example.test
dig +short MX example.test
# Check the domain registration record, where available
whois example.test
# Inspect a URL's components locally with Python
python3 -c "from urllib.parse import urlparse; u=urlparse('https://example.test/path?a=1'); print({'scheme':u.scheme,'host':u.hostname,'port':u.port,'path':u.path,'query':u.query})"
Replace the example domain only with an approved test value during practice. Avoid commands that download, execute, or follow a suspicious payload on a production device.
What to double-check
- Hostname boundaries: Confirm which domain controls the resource. A familiar brand in a subdomain or path does not make the registrable domain trustworthy.
- Redirects: Follow the chain only in a sandbox or through a trusted analysis service. Record every hop and distinguish a legitimate tracking redirect from an unexpected domain change.
- Encoding and obfuscation: Check percent encoding, punycode, excessive subdomains, unusual ports, and embedded credentials. These features can be legitimate, but they deserve review.
- Context: Ask whether the message was expected, whether the business process normally uses that channel, and whether the request can be verified using a known phone number, bookmarked portal, or established contact.
- Files and forms: Treat downloads, macro-enabled documents, browser extensions, and requests for one-time passwords as separate risk events. A page can be malicious even if no file is downloaded.
- Business payment changes: Never approve a changed bank account or invoice payment solely from a link or email. Use the independent verification steps in the BEC and fake invoice playbook.
Use a confidence label such as benign, suspicious, malicious, or inconclusive, and explain the evidence behind it. “No detection” and “not enough information” should remain distinct outcomes.
Common mistakes
- Clicking to see what happens: A browser may send identifying data, execute scripts, load a credential prompt, or trigger a download before the page looks suspicious.
- Trusting HTTPS: Encryption protects the connection; it does not certify the operator or the content.
- Relying on one scanner: Detection gaps, delayed reporting, false positives, and newly created domains are normal limitations.
- Uploading confidential URLs: Query strings may contain reset tokens, document identifiers, email addresses, or internal references. Sanitize before using public services.
- Ignoring the original evidence: Forwarding a message can alter headers or remove context. Preserve the original and work from a copy.
- Blocking only the exact URL: Record the domain, subdomains, redirectors, IPs, file hashes, sender infrastructure, and related indicators according to your organization’s process.
- Reporting without containment: A takedown request does not remove an existing email from inboxes or prevent a second domain from being used.
When to revisit
Use this checklist every time a suspicious link arrives, during monthly phishing-training exercises, and whenever an IOC update needs validation. Recheck the workflow before seasonal planning cycles and after changes to browsers, mail security, sandboxing, URL-scanning services, or internal approval procedures.
Maintain a short internal record with these fields:
Case ID:
Received time and source:
Original sender and message location:
Complete URL and sanitized public-search URL:
Hostname, redirects, IPs, and related indicators:
Passive-analysis results and lookup times:
Sandbox findings, if authorized:
Assessment: benign / suspicious / malicious / inconclusive
Containment actions:
Reports or takedown requests:
Owner and next review date:
For reporting, include the original URL, timestamps with time zone, screenshots or logs, message headers where available, and a concise explanation of the suspected behavior. Do not include passwords, active tokens, or unnecessary personal data. The scam reporting evidence checklist can help organize the submission.
Finally, update your detections when the investigation produces reliable indicators. Add domains, URL patterns, sender traits, or file hashes only after considering false positives and the scope of the evidence. Re-run this workflow when the campaign changes, a provider changes its lookup process, or a previously inconclusive link becomes relevant to a new incident.