我业余时间做的一个小工具,竟成了黑客的“靶场”

引言

我前两个月用业余时间开发了一个学习英语的工具,长下面这个样子。

Language Leap预览

这个工具可以帮助我收集一些工作中经常遇到的英语表达,然后自动配上翻译和发音,这样方便我进行学习。

服务器性能问题

这个工具部署在一台云服务器上,服务器的配置也很低,2核2G + 3M带宽。我最近发现有的时候刷新网页会很慢,就登录到服务器上检查了一下。

发现大量攻击

首先是检查了access 日志,没想到发现了大量的攻击和扫描记录。

1. 常见攻击模式

其中最多的是这种记录:

1
206.123.145.173 - - [28/Jul/2025:12:59:03 +0800] "GET /.env HTTP/1.1" 200 1739 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36" "-"

.env 文件通常存放着应用的密钥和敏感配置。很明显,这是有人在碰运气,看能不能直接把我的配置文件“拿”走。

还有这种:

1
117.235.52.235 - - [28/Jul/2025:12:42:39 +0800] "GET /boaform/admin/formLogin?username=adminisp&psd=adminisp HTTP/1.0" 301 169 "-" "-" "-"

这是在尝试用默认的弱密码登录某些嵌入式设备的管理后台。我的小工具根本没用这些设备,显然对方只是在批量扫描。

2. 复杂攻击模式

上面几种是比较简单的,我一眼就能识别出来的,还有一些攻击日志我根本都看不懂。

比如这个:

1
185.170.144.3 - - [28/Jul/2025:06:40:09 +0800] "\x03\x00\x00/*\xE0\x00\x00\x00\x00\x00Cookie: mstshash=Administr" 400 157 "-" "-" "-"

日志里混杂着乱码和一个“Administr”的关键词,感觉就很像是攻击行为,但是我又看不懂,就把这样日志发给了AI,让AI帮忙分析一下。
AI的分析结果证实了我的猜测:这是一种试图通过HTTP隧道进行RDP攻击的手法。

side-project-RDP-over-http

更复杂的还有这种:

1
2
3
4
5
6
147.185.132.188 - - [28/Jul/2025:05:06:45 +0800] "\x00\x00\x001\xFFSMBr\x00\x00\x00\x00\x18Eh\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xB5}\x00\x00\x01\x00\x00\x0E\x00\x02NT LM 0.12\x00\x02\x00" 400 157 "-" "-" "-"
147.185.132.188 - - [28/Jul/2025:05:06:45 +0800] "\x00\x00\x00f\xFESMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456$\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x001234567890123456\x00\x00\x00\x00\x00\x00\x00\x00\x02\x02" 400 157 "-" "-" "-"
147.185.132.188 - - [28/Jul/2025:05:06:45 +0800] "\x00\x00\x00f\xFESMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456$\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x001234567890123456\x00\x00\x00\x00\x00\x00\x00\x00\x10\x02" 400 157 "-" "-" "-"
147.185.132.188 - - [28/Jul/2025:05:06:46 +0800] "\x00\x00\x00f\xFESMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456$\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x001234567890123456\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03" 400 157 "-" "-" "-"
147.185.132.188 - - [28/Jul/2025:05:06:46 +0800] "\x00\x00\x00f\xFESMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456$\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x001234567890123456\x00\x00\x00\x00\x00\x00\x00\x00\x02\x03" 400 157 "-" "-" "-"
147.185.132.188 - - [28/Jul/2025:05:06:47 +0800] "\x00\x00\x00\xAC\xFESMB@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x001234567890123456$\x00\x01\x00\x01\x00\x00\x00\x00\x00\x00\x001234567890123456h\x00\x00\x00\x02\x00\x00\x00\x11\x03\x00\x00\x02\x00\x06\x00\x00\x00\x00\x00\x02\x00\x02\x00\x01\x00\x00\x00\x01\x00,\x00\x00\x00\x00\x00\x02\x00\x02\x00\x01\x00\x01\x00 \x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" 400 157 "-" "-" "-"

同样使用AI分析,发现这是一个SMB协议攻击。

side-project-smb

攻击分析

这些都只是一些发生次数最多的案例,实际上攻击非常非常多。我中午分析一下一个小时的access日志,就有超过620条攻击日志。

所有的这些攻击都没有成功,我也没有任何实际损失。而且就算我的服务器真的被攻破了,对方也得不到什么,因为服务器上没什么有价值的数据。

我发了一个短视频记录这个事情,有很多人评论说,其实并不是有人估计攻击我这个服务,只是有一些扫描器在全网扫描,只要对公网暴露端口就会被扫描。

结合攻击日志来看,被扫描的可能性很大。

安全防护建议

我最后把这个工具使用的技术栈信息发给AI,让它提出防护建议,给了下面这几个建议,都是比较实用的,而且几乎不会额外增加成本:

1. 基础安全配置

  • 隐藏组件版本信息
  • 添加nginx的安全头配置
  • 禁用不必要的HTTP方法

2. 请求限制和过滤

  • 限制请求大小
  • 限制请求频率

3. 恶意请求过滤

  • 阻止常见攻击模式
  • 阻止可疑文件扩展名
  • 阻止SQL注入和XSS尝试
  • 阻止路径遍历攻击

4. IP黑名单

AI帮了个大忙

说实话,在分析这些攻击日志时,AI帮了我大忙。那些看不懂的乱码,比如RDP和SMB攻击,我只要把日志原文发给AI,几分钟内就能得到一个清晰的解释。这让我省了不少功夫。

想想以前没有大模型的时候,遇到这种不熟悉的攻击手法,我可能得查资料、看文档,花上一两个小时甚至更久才能搞明白。

尤其最后那一堆安全防护建议,如果让一个刚入行的工程师来做,估计没个几天很难总结出来。