本该是风和日丽的一天,闲得无聊,打开了windows的事件查看器,诶,我不是换了rdp(远程桌面连接)的默认端口了吗,竟然还这么多登录日志,得~ 换端口果然是自欺欺人的事情。被爆破了。再仔细一看事件中竟然没有记录ip。那么,开搞吧。
安全事件日志
先说下我的环境,Windows Server 2012 R2,除了更换了3389的端口以外,没有做任何安全配置。
其实第一眼,看到日志,我本以为是SMB(445),NETBIOS(135,139)这些服务的锅,因为安全日志的事件ID为4625和4776。
前者的LogonProcessName
为NtLmSsp
,后者PackageName
为MICROSOFT_AUTHENTICATION_PACKAGE_V1_0
。
通过上面两个关键词,查到许多NtLm攻击相关的文章(后面发现其实和这个没关系...),我就先从SMB安全配置入手(绝招是直接关闭SMB,简单方便,读者可不做下面的操作。但我想探究这次的攻击究竟是怎样的)。
1、检查SMBv1状态的方法:
在Powershell中运行命令:
Get-SmbServerConfiguration | Select EnableSMB1Protocol
如果打印“Ture”,则说明SMBv1为开启状态。
2、关闭SMBv1的方法
在power shell中运行命令:
Set-SmbServerConfiguration -EnableSMB1Protocol $false
更多参考信息见微软文档
又因Freebuf的一篇Windows SMB请求重放攻击分析,我决定再启用SMB签名。
将注册表项"RequireSecuritySignature"设置为 1 可以启用 SMB 签名
可用powershell执行
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" RequireSecureNegotiate -Value 1 –Force
对本地组策略->计算机配置->Windows设置->安全设置->安全选项
中一些配置进行了修改。
例如:
网络安全: 限制 NTLM: 审核传入 NTLM 流量
设置为 为所有帐户启用审核
网络访问: 不允许匿名枚举 SAM 帐户
设置为启用
上述设置,我也不是非常清楚。这里就不展开了。 注意:错误的修改,可能会导致自身无法连接到服务器。 具体可看这篇文章保护内网安全之提高Windows AD安全性
进行上述的修改后,安全事件日志还是哗啦啦的警告,然后我一查看云服务器的安全组,我根本都没有开放445,139这类的端口。然后我注意到了在应用程序与服务日志
中的Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational
事件日志。
Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational
将信息级别的日志筛除后,得到了上图的结果。嗐!原来还是RDP爆破啊。并且有来源ip了,来,继续。
RDP爆破方式攻击防控思路梳理
通过上图大佬的总结,我优先使用了策略组进行配置,账户锁定策略。这个配置也比较简单。运行打开gpedit.msc
,按照下图配置即可。
账户锁定策略
但是配置后,即使等了一段时间后还是有大量的不同ip在进行爆破尝试。让我甚至一度怀疑这里的ip都是通过什么漏洞伪造的。
并且因为使用了云服务商的安全组策略,为避免多余的麻烦,没有开启windows防火墙,所以可能无法成功拦截?所以我只好继续
wail2ban,linux中有个很好用的工具,叫做fail2ban,wail2ban算是它的windows版本,做的事情大致相同,从日志(事件)匹配并提取ip,进行封禁。 Windows Server Wail2ban and Folder Sharing not working together - Error 4625 no IP 使用还是很简单的。
$EventTypes = "Application,Security,System,Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational"
,
$CHECK_COUNT
用来控制尝试次数,默认为5.[Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational]
140=RDP Logins
139=RDP Logins With Tls1.0
最后的139事件可不添加。后面会用到。
配置好后的效果如下:
wail2ban
这样一目了然的发现,还真的都是不一样的ip。 (并且似乎开启防火墙后,策略组的配置也生效了)
其实到此为止已经差不多了,但是我想肯定还是服务器有什么地方配置的脆弱了,才会受到此次攻击。我就想看看对方的RDP爆破和我正常的RDP连接有什么区别。
恩,Wireshark安装!
因为用到了TLS层,我后面甚至还做了解密(不做也可以)。具体方式见如何使用Wireshark解密Windows远程桌面(RDP)协议
我的捕获过滤器是 port 端口号
,显示过滤器为not ip.addr eq 本机ip
爆破数据包
正常登陆包
可以看到他协议用的是Tlsv1, 而我自身使用的是Tlsv1.2。Tls 1.0也不少问题,那么简单了,赶紧禁用Tls1.0吧。
计算机配置 \windows 组件 \ 远程桌面服务桌面会话安全
中设置远程 (RDP) 连接要求使用特定的安全层
为 TLS1.0。
你可能很疑惑...说好的不用1.0了,怎么你还强制1.0了。这个好像是微软的显示错误T_T,不过经我测试,的确也不好使...情况说明见微软文档 HKLM:\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server
项中新建一个名为Enabled的DWORD,值设置为0。
为了避免不必要的麻烦,设置好后我进行了重启。禁用TLS1.0后,再去查看事件,发现已经由原先的140事件,变为了139事件,描述为服务器安全层在协议流中检测到一个错误(0x80090304),并中断了客户端连接(客户端 IP:45.145.64.5)。
,攻击方的一次尝试也不能成功了!
wail2ban也可以继续开着,并且做一些配置,还可以防御更多的爆破事件。
最后我也照猫画虎的来一次威胁情报IOC,下面的ip是本次攻击事件中出现的。
193.106.30.234, 185.202.1.110, 113.65.153.144, 222.187.245.198, 202.146.219.27, 47.107.182.101, 43.248.186.80, 112.25.212.219, 111.40.223.9, 113.62.177.19, 185.202.1.105, 118.180.214.5, 37.71.141.162, 193.165.191.59, 45.145.67.173, 185.202.1.106, 185.202.1.113, 45.145.64.5, 185.202.1.103, 185.202.1.111, 106.52.138.52, 185.202.1.107, 193.106.29.82, 60.10.62.235, 121.151.155.170, 45.145.66.157, 185.202.1.148, 219.139.151.18, 223.78.106.25, 183.110.79.147, 58.120.225.117, 60.6.224.242, 185.202.1.109, 185.202.0.117, 117.146.37.90, 176.96.82.182, 220.179.227.205, 118.163.153.6, 60.167.165.166, 89.248.168.221, 58.120.225.122, 112.175.114.17, 218.6.9.84, 61.180.90.12, 223.99.164.133, 185.202.1.100, 185.202.1.96, 111.9.153.42, 60.22.91.240, 106.52.170.87, 185.202.1.104, 113.12.64.58, 36.99.161.37, 211.47.236.220, 185.202.1.102, 175.16.218.50, 180.168.74.70, 87.251.75.176, 222.178.239.184, 124.116.171.30, 142.11.249.99, 195.54.160.99