背景
最近有客户中勒索病毒。导致业务数据丢失,幸好有快照备份,顺利恢复到最近数据。查中毒计算机日志,有大量用户验证失败的记录。猜测对方通过开放在公网上的远程桌面RDP协议,频繁尝试密码,暴力破解远程桌面的用户密码后控制服务器并加密文件勒索。
业务需要,有些服务器远程桌面无法关闭。用户可能随时随地登录,不能加IP范围限制。使用VPN又增加用户登录难度和需要加软硬件配置。网络上也未找到相应的应对工具。
解决方案
本着业务自动化,数据规范化的思路。周末两天,断断续续工作成果如下。
程序主界面
程序运行后添加防火墙规则(红色阻止规则)
程序原理
统计一段期间内(通常是一天),同一IP地址密码验证失败次数,超过设定的阀值,把这个IP加入黑名单,用Windows系统防火墙拦截此IP继续连接验证登录。
程序构成
程序包含,一个绿色版exe和一个ini配置文件。无需安装,双击exe即可运行。ini配置文件记录程序运行的参数。如运行时没有配置文件会在exe文件目录生成初始配置的ini文件。
程序界面说明
点击搜索按钮,搜索指定时间范围内,登录失败的记录。结果显示在下方表格。
黑名单显示可加入防火墙阻止列表的IP地址,已经按照配置文件筛选的结果。如同一ip,一天内密码验证失败超过3次的IP会被加入黑名单。
点击“添加规则”按钮,添加黑名单IP到防火墙阻止规则列表。
如图右上角绿色框选区域,勾选“自动执行”,每间隔10秒,自动执行搜索,并把符合条件的IP加入黑名单,间隔时间在后方设置。
自动执行时,黄色框选区域,小绿灯闪烁,并显示已经执行的次数。
取消勾选“自动执行”,停止程序自动执行。
右上角的帮助,打开本文链接,查看帮助说明。
表头字段说明
- FailureReason:失败原因
- Status:状态
- EventType:事件类型,SuccessAudit是成功验证登录,FailureAudit是验证失败
- EventCreateTime:事件创建的时间
- IP:对方IP地址
- UserName:对方验证的用户名
- FailureCount:搜索时间范围内,验证失败的次数
- IpPort:端口
- EventMessage:事件详细信息
程序配置文件说明
本程序除了界面上的设置,更多设置写在配置文件中,用记事本打开可修改配置。删除配置文件在程序运行时会自动重建,配置值为初始值。
以下是配置说明,可复制“#—–”内区域,保存到配置文件。
#———————————————
#程序设置部分
[Setting]
#规则最后更新时间
LastUpdated=2022-09-18 00:00:00
#过滤器默认过滤事件范围,”Application”应用程序, “Security”安全, “System”系统
Filters=Security
#自动执行刷新时间间隔,单位秒
Refreshtime=60
#程序启动是否自动运行
AutoRun=false
#搜索起始日期天数,0为当天;前一天填-1;正数1为明天,填写1会导致无法搜索出结果。
BeginDate=0
#登录验证失败默认是否勾选
FailureAudit=true
#登录验证成功默认是否勾选
SuccessAudit=false
#扩展事件ID,能让程序搜索更多类型的事件
ExtEventIDs=
#程序运行MAC物理地址,用于识别程序运行机器,不同机器拷贝后首次运行会清空黑名单IP地址。
MacAddress=005056C00001
#是否隐藏帮助链接
HideHelpLink=false
#程序规则部分
[Rules]
#最大失败验证次数
MaxFailures=5
#黑名单IP地址
[BlackIPs]
#程序记录执行后加入防火墙阻止规则列表的黑名单IP地址
IP=
#白名单IP地址
[WhiteList]
#白名单IP地址不会加入防火墙地址列表,多个请逗号分隔
IP=127.0.0.1
UserNames=
#———————————————
程序下载
点击按钮下载,最后更新时间:2022年9月18日 15点46分
其他说明
- 本程序针对网络暴力尝试远程桌面密码的特征增加防火墙规则,病毒使用其他方式的破解登录无防范。
- 程序适合无人值守的服务器运行使用,Windows10 等系统运行需要以管理员权限运行,否则会报错。
- 需要开启Windows防火墙,配合本程序使用。否则无法正常防护。
- 程序仅供学习参考,完整防护勒索病毒,请配合其他文件备份方案使用,或联系我们提供数据备份方案。
- 需要源码请联系我们,程序未加壳。欢迎交流探讨。
7 条评论
#程序启动是否自动运行
这部分的意思是开机自动运行吗?
这个做了个winform程序,可以添加到开始菜单,需要每次登录下系统。
理想的状态是改成系统服务,这样启动就自动运行了。
后面有空了想改成web程序,rdp规则可以设置成仅允许白名单。登录前通过web程序加个白名单IP。
登录前通过web程序加个白名单IP,这个蛮实用,毕竟都是动态IP。我现在的一个防护措施是黑名单和计算机名。
IP 这一列是空的,失败的日志也读到了,也没有添加到防火墙,不知是哪里原因
程序的原理是读取服务器的安全日志,分析日志记录是否有多次密码尝试登录。如果有的话把IP加防火墙的黑名单,来阻止继续尝试密码。如果日志记录不到对方的IP,那这个方法就无效了。
应该和你服务器本身的网络配置有关,找下网络管理员咨询下。
点击搜索按钮显示:应用程序尝试执行安全策略不允许的操作。若要授予该应用程序所需的权限,请与系统管理员联系,或使用Microsoft 。NET Framework配置工具。
试试看右击以管理员权限执行。