C\C++实现入侵防御简单小工具

2021-5-5 杰克 安全

       对于攻防双方来说,穷举暴力破解是一个在各种场景下都会用到的技术。有针对性的对某个应用系统进行暴力破解基本上每时每秒都在网络中发生着。现在有各种各样的软硬件产品可以规避这种渗透方式,不过从“最小系统原则”来看在一个典型的业务场景下,每多一个软硬件产品就多增加一份安全风险。无论这个产品是业务产品还是安全产品。我个人喜欢用系统自带的功能组合实现一些防御方法,我觉得目前的操作系统已经是非常的完善了。出现的一些攻击事件相当一部分都是“人”的问题。扯远了,下面介绍一种我在HW期间实现的一个简单的入侵防御小工具

       在Windows安全策略里面有个账户锁定策略,可以通过配置此策略对账户登陆密码超过特定错误次数后执行账户锁定的操作。但这个策略对内置管理员账户Administrator不生效。想要对管理员账户实现同样的效果需另想办法

pol.png


0x00  设计思路

1.Windows日志是一个很丰富的事件记录,对于账户登陆失败会产生一个ID为4625的事件记录。4625是登陆账户密码错误事件唯一的ID,不像其他事件会有多个ID值。也就是说只要登陆账户密码错误就一定会产生4625事件记录

event.png

2.计划任务也是Windows下一个很强大的存在,可以根据特定事件或时间执行各类特定任务。当然也能根据4625事件来触发执行一些操作

触发器.png

3.最后说下Windows防火墙,这个不是一个很强大的存在。至少我认为跟下一代防护墙相比差远了。可以做一些基于源目IP、端口、协议、等四层及以下的规则过滤,对于我入侵防御的实现倒是足够了


0x01  实现方法:

1.有了以上三个系统组件,我的实现方法就跃然纸上了:

登陆失败产生4625事件(触发计划任务) --- 执行程序读取安全日志(获取源IP等信息) --- 写入一个以源IP命名csv文件(同时判断是否达到超过三行“即错误3次”) --- 达到即执行添加防火墙规则阻止源IP访问(同时开始计时1800秒) --- 时间达到1800秒“即半小时”删除防火墙规则解除阻止

逻辑.png

2.实现代码如下

code1.png

获取日志及操作防火墙没有用到系统API实现,日志有个编码问题一直没解决就放弃了。至于防火墙的操作涉及COM组件的运用还有大量的指针操作,这个牛角尖我就没钻了。都直接调用命令实现,以后有时间再研究。有兴趣的可以自己研究:

日志读取API函数     https://docs.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-readeventlogw

防火墙操作函数       https://docs.microsoft.com/zh-cn/previous-versions/windows/desktop/ics/c-c--

系统Wevtutil命令     https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc732848(v=ws.11)

code2.png



0x02  测试效果:

1.测试之前先配置好计划任务,我的程序放在C:\根目录下。另外程序涉及防火墙的操作需要管理员权限运行

exe.png

2.将防火墙丢弃日志打开便于观察实现效果

firewall-setting.png

3.随便输入密码错误三次后即触发防火墙规则添加无法再连接了

3389.png

4.控制台登陆虚机查看防火墙入规则多了一条以源IP命名的阻止连接规则,对应的IP即是我的电脑IP

rule.png

5.根目录下的CSV文件也记录了我的计算机名、IP地址、登陆时间、账户名等信息

csv.png

6.查看防火墙日志,已经记录了我登陆操作系统的请求数据被防火墙丢弃的信息

firewall-log.png

7.查看进程详细信息(打开命令行栏),可以看到延时任务已经开始运行

cmd.png


0x03  总结:

      个人感觉程序还不够健壮,使用ping命令来计时不够准确会有误差。另外在没有开启系统防火墙的情况下则不适用以上方法。而需要创建IP安全策略,不过也可以用netsh命令创建。程序设计思路是基于IP进行阻止的,里面有个小BUG 同一个IP在尝试三次错误被封半小时后,第四次错误依旧会被封半小时,而不是第六次。解决办法是在创建完防火墙策略后删除达到三次记录的CSV文件即可。还有什么其他问题,欢迎指点

标签: 组策略 防火墙规则 计划任务 C\C++ 安全、黑客 入侵防御

发表评论:

Powered by emlog 京ICP备17037512-1 e-mail:jackhkyin@163.com QQ:393147796