·9 min read·Blog

The Art of Digital Deception: How I Built and Baited a Windows Honeypot to Trap Real Attackers

Rakshit Shetty

Security Expert

SecurityAnalyticsSecurityOperations

This is a two-part blog series where I share my journey of turning a Windows machine into a publicly exposed honeypot designed to lure, log, and learn from real-world attackers.

  • Part 1: Behind the Screens of a Trap Machine.I will walk you through setting up a Windows EC2 instance on AWS. This setup includes open services like SSH, RDP, HTTP(S), FTP, and Telnet. We will explore how each fake service was designed to look vulnerable while being safely monitored. All logs were forwarded to DNIF SIEM for real-time visibility.
  • Part 2: The Day I Became a Digital Beekeeper.This part dives into what happened once the trap went live. From Chile brute-force bots to SQL injection attempts from Vietnam, I break down the attacks, examine behaviors, and gather useful threat intelligence. Real tools. Real techniques. Real learning.

Whether you’re a red teamer, defender, or just curious about cybersecurity, this series gives you a close-up look at the reality of life on the edge of the internet.

Part 1: Building a Windows Honeypot – Behind the Screens of a Trap Machine

Prelude: Why Build a Honeypot, Anyway?

It started with a simple idea: What if we could watch attackers in their natural habitat? Honeypots aren’t new. Still, running a high-interaction Windows honeypot on a public IP with real-looking services brings a thrilling risk.

I wasn’t just pretending to be in danger; I wanted to attract attention.

“The moment you expose a service to the internet, someone, somewhere, is trying to break into it.”

Overview: What We Built

We designed a honeypot hosted on Windows EC2 on AWS, publicly exposed to gather real-world attack telemetry. Here’s a quick summary of what went live:

22Fake SSHSimulate remote access and log brute-force attempts.80HTTP HR PortalMimic an internal HR login system.443HTTPS Fake CorpSimulate a secure corporate intranet site.3389RDPCommon brute-force target.21FTPOften used for data exfiltration attempts.23TelnetEmulate outdated access protocols.445SMBSMB trap mimicking EternalBlue vulnerabilities

Each service was custom-coded or wrapped using Python modules to create a believable experience. The attacker should feel like they’ve hit an exposed internal server in a misconfigured corporate network.

Hosting Architecture: The Danger Zone

  • Platform: AWS EC2 (Windows 10 Pro)
  • Security Groups: 0.0.0.0/0 allowed on all major ports
  • Isolation: No VPC peering, no outbound connections
  • Monitoring: Log files + Windows Event Forwarding + DNIF SIEM

This machine was intentionally vulnerable. It had no updates, no firewalls, weak passwords, and fake credentials in plaintext files.

Inside the Services: A Quick Tour

1. ssh_service.py – The Troll Tunnel

Using Python’s paramiko, we created a fake SSH server. Attackers were able to connect and issue commands, but every response was rigged.

Behavior:

  • Logs IP, attempted credentials, commands
  • Accepts weak passwords (admin:admin), then drops into a fake shell
  • Mimics real command responses before sarcastically shutting them down

Below is how the logs would be logged at our honeypot end.

2. hrms.py – The HR Portal Trap (Port 80)

Mimics a vulnerable HRMS portal with fake credentials and SQL injection-vulnerable parameters. Attracts both bots and human attackers:

  • Login form with fake user accounts
  • Password reset button that always “fails”
  • SQLi-prone GET parameters (e.g., employee?id=105 OR 1=1)

What it lures: Script kiddies, bots, or more advanced attackers who scan for open web ports and look for login pages.

Below is how the page would look to the attacker:

Login page for a corporate HR management system featuring username and password fields. Screenshot of a corporate HR management system dashboard titled 'CorpHRMS' with navigation options for HR Profiles, Internal Mail, Timesheets, and Internal Docs. A reminder message is displayed, emphasizing the need to update staff records by the end of the quarter. A webpage titled 'Finance Department - Internal Documents' displaying a list of confidential documents available for download, including 'budget-2024-draft.csv', 'executive-bonus-plan.pdf', and 'Q1-Payroll-Report.csv'.

3. https_service.py – Fake Corporate Dashboard (Port 443)

This site mimics a corporate finance dashboard, hosted via HTTPS.

  • Login form with TLS
  • Routes like /admin, /payroll, /upload
  • Triggers fake file upload responses or access denied

Below is how the page would look to the attacker:

Login form for a corporate intranet, featuring input fields for username and password, along with a login button. A dashboard interface for HelpDeskX support system displaying metrics such as open tickets, resolved tickets, pending escalation, and SLA breaches. A screenshot of an internal support documents portal, displaying a list of files with their names, sizes, last modified dates, and download buttons. A webpage displaying an index of directories in a Linux file system, including links to 'passwd', 'shadow', 'hostname', 'resolv.conf', 'ssh', and 'ssl'.

Behavior:

  • Logs IP, attempted credentials
  • Accepts weak passwords (admin: admin), then drops into a fake website
  • Mimics a real website with vulnerabilities like SQLi, Directory traversal, etc.

Below is how the logs would be logged at our honeypot end.

Key difference from HRMS:

  • HTTPS makes it feel secure
  • More high-value illusion (appears privileged)
  • Built to entice credential stuffing attacks

4. rdp_listener.ps1 – RDP Honeyport

Real RDP port (3389) is exposed, but backed with a PowerShell listener that logs handshake attempts and failed auth.

5. ftp_service.py – Data Exfil Lure

Pretends to be an FTP server with shared folders named:

  • Backups
  • Config

Attackers can list files but downloading always fails. Every interaction is logged.

Behavior:

  • Logs IP, attempted credentials, commands
  • Accepts weak passwords (admin:admin), then drops into a fake shell
  • Mimics real command responses before sarcastically shutting them down

Below is how the logs would be logged at our honeypot end.

6. telnet_fake.py – Legacy Admin Login

Old-school login prompt that just echoes back text. Most bots immediately attempt default passwords.

Logging Format

Each service logs with this unified format:

Example:

Logs are stored locally, forwarded to Windows Event Log, and parsed into DNIF.

Related articles

Detecting Covert Exfiltration Through Kernel Signature Analysis: A Dual-Stream Network Research Lab

Executive Summary In the ever-evolving landscape of cybersecurity, adversaries continuously refine their techniques to evade detection. One of the most challenging threats to detect is low-and-slow data exfiltration – attacks that deliberately mimic legitimate traffic patterns to avoid triggering security controls. This blog post presents a research methodology for distinguishing between legitimate TCP streams and […]

Project MSFDefender

The Threat Research & Intelligence (TRI) team at Bloo conducted a structured evaluation of Windows payloads from the Metasploit Framework. The intent was not exploitation for its own sake, but defensive research to observe how these payloads behave at runtime and to collect high-quality endpoint telemetry that could directly support the  Detection Engineering (DE) team. […]

Radar Vision for the SOC: Using Micro-Doppler Physics to Spot Invisible C2 Beaconing

The Core Concept: Radar to Response The Micro-Doppler Effect refers to frequency modulations around the main Doppler shift caused by small periodic movements (e.g., a rotating helicopter blade). In physics, these modulations reveal a target’s unique characteristic signature. From Counter-UAV Defense to Cyber Defense My inspiration comes directly from Defense Radar Signature Analysis. In a […]

We use cookies to provide essential site functionality and, with your consent, to analyze site usage and enhance your experience. View our Privacy Policy