Analysis of a large brute force attack campaign against Windows Remote Desktop
trunc.org
trunc.org
# VPS They all look similar to this
iptables -L INPUT -n -v | grep TAR | sort -r | awk '{print $1"\t" $3"\t" $11}'
2680 TARPIT dpt:23
2657 TARPIT dpt:6379
170K TARPIT dpt:445
1186 TARPIT dpt:80
882 TARPIT dpt:22
757 TARPIT dpt:443
591 TARPIT dpt:5900
311 TARPIT dpt:21
296 TARPIT dpt:3389
119 TARPIT dpt:873
Some poorly coded bots appear to get stuck on 445 indefinitely. On the other hand I do see a vast increase on my home network to 5900 VNC. It is usually about double the hits to 3389 RDP # Home
iptables -L INPUT -n -v | grep TAR | sort -r | awk '{print $1"\t" $3"\t" $11}'
9013 TARPIT dpt:5900
1628 TARPIT dpt:22
1274 TARPIT dpt:23
1092 TARPIT dpt:445
119 TARPIT dpt:3389
40 TARPIT dpt:21
[Edit]
Here is a second home connection that has a higher uptime. Running tcpdump it looks like the latest VNC bots do not recognize and avoid tarpits. # Second Home connection
iptables -L INPUT -n -v | grep TAR | sort -r | awk '{print $1"\t" $3"\t" $11}'
50532 TARPIT dpt:22
44301 TARPIT dpt:445
33520 TARPIT dpt:23
6718 TARPIT dpt:80
6439 TARPIT dpt:3389
184K TARPIT dpt:5900
1091 TARPIT dpt:21
271 TARPIT dpt:1900https://www.fail2ban.org/wiki/index.php/Main_Page
I avoided running servers since people are jerks but if I did that would be on my checklist of things to set up if I intended one to stick around long term.
People seem to reinvent concepts from long ago for reasons I do not understand.
You never reach the point "I'm secure" you simply reach the point "adding more security measures costs more than the risk it removes".
Logging failed login attempts would definitely fall under legitimate interest so you can reenable them. It's not like the attackers would complain anyway.
I'd love to see one of their Data Subject Access Requests.
Dear Victim,
Can you wipe my failed login attempts from your servers.
Yours,
The Hacker!
https://docs.microsoft.com/en-us/azure/active-directory/auth...
It's also supported to publish behind the Azure App Proxy, avoiding the need for any port forwards at all:
https://docs.microsoft.com/en-us/azure/active-directory/app-...
Is this working well? I've tried setting this up a few weeks ago and found it to be somewhat brittle. The MFA requests would sometimes be delayed long enough that the GW would timeout. I've tested this on Windows 2022.
I will say however, the only MFA it supports is push (ie, TOTP doesn't work), and if you're not familiar with that, be aware many Android installations snooze that app and the push doesn't work unless you specifically have the app open at the time you logon.
The second there are other people with dumb passwords, or many other risk factors at play, I'd really suggest you need something doing MFA which unfortunately, MS doesn't offer out of the box on RDP.
README…
It's basically a fail2ban for windows. Its goals are also mainly what we love about fail2ban:
pre-configured no-initial-ducking-around-with-scripts-or-config-files install-and-forget You can download it here ( v2.1.5 - April 2022 ) .
Also, we love issues!
If anyone needs something or has questions about something, please feel free to open an issue. We are especially happy to get issues about log-entry samples we don't react on, or ideas of how we can support more protocols.
A bit more detailed description of what EvlWatcher does.
Scenario: there are those bad people out there, hammering your service (RDP and whatnot) with brute force attempts.
You can see them and their IPs clearly in the Windows Event-Log.
You have searched the web and yea, there are plenty of tools, scripts, and all that, to read the event-log and automatically ban the attackers IP.
You however, are lazy. You need something like fail2ban, with a preconfigured set of rules to just RUN right away and it works.
But then, it still needs enough flexibility for you to completely configure it, should you wish to do so. EvlWatcher does that. It scans the Windows-Event-Log, and reacts.
It works by installing a service that scans the event log for unsuccessful login attempts. When one of its rules are violated (e.g. trying to log in without correct credentials, more than 5 times in 2 minutes), it will place that poor bastard into a generic firewall rule, and thereby ban the attacker for 2 hours.
Also, when someone is repeatedly trying, there is a permanent ban list for that, where people defaultly land on when they've had three strikes.
You can, of course, adjust the rules to your liking. They are basically a consisting of an event source, and a Regex to extract an IP, its pretty simple.
I opted to go with a WMI Event Sink rather than polling the Event Log. I've never done a benchmark to see which architecture would use less CPU, but I can say the WMI event sink causes nearly instantaneous reaction.
As an aside: I'd love to hear if somebody tries ts_block on Windows Server 2022. It works fine on 2012 R2 thru 2019 but I've never tried it on 2022.
Windows Server 2012 R2 removed the IP address from the Event Log entry for failed RDP logons (to be fair, it's really that the just didn't include it in failed RDP logons when the TLS security layer is used-- reverting to the old RDP security layer in Windows Server 2012 R2 restores the IP address). Without doing something dodgy like trying to correlate closed TCP connections to Event Log entries there's no simple way to ascribe IP addresses to failed RDP logons on that version of Windows.
In Windows Server 2016 and 2019 Microsoft put the IP address back into the Event Log entry, restoring ts_block's functionality.
If I ever bother to work on ts_block again I'm definitely going to implement all the features you added. (I'm aware you've already written the code but, for me, half the fun is writing the code. >smile<)
I trust SSH much more than RDP to not have RCE/auth bypass bugs. SSH is also much easier to setup key auth or 2FA than in RDP if one like they mentioned in post are more used to setting up Linux boxes.
After reading this blog post - I would not send any logs to their servers.
They literally opened a server without firewall rules for anyone to connect to their RDP port, and wrote a blog article to brag about it. They also have a Windows agent but they brag about not using Windows in the past 20 years…
Given the frequency with which these incidents happen, I am more inclined to think they are a bulletproof hoster of some kind ...
At a certain point it becomes difficult to attribute things to “incompetence” rather than malicious intent
Would be interesting to create a server daemon that listens on TCP port 3389 and implements the login portion of the RDP protocol to 1) Be able to gather information about the passwords used and 2) Experiment with ways to lock up or stall the scanners.
https://research.nccgroup.com/2021/10/21/cracking-rdp-nla-su...
Imagine if any networks where constant and ongoing illegal activity happens, and the network operators do nothing, eventually result in those networks being taken away. Things would change drastically.