Python编写后门连接Kali NetCat时出现WinError 10060错误是什么原因?
错误原因分析
你遇到的WinError 10060属于TCP连接超时错误,本质是运行脚本的主机无法和Kali虚拟机的4444端口建立TCP连接,和代码内部的语法错误无关,常见触发原因如下:
- 网络层连通性故障:Kali虚拟机和运行脚本的主机不在同一可达网段,虚拟机网络配置错误(比如NAT模式未做端口映射、桥接模式网段不匹配),Kali系统内置防火墙/宿主机防火墙拦截了4444端口的连接请求
- NetCat监听配置错误:监听时绑定了127.0.0.1环回地址,导致只有Kali本机可以访问该端口,外部主机无法连接;监听命令缺少必要参数导致端口未正常监听
- IP配置错误:代码中填写的
VMKaliIP不是Kali虚拟机的真实网卡IP,填写了环回地址、错误网段IP导致无法路由到目标主机
解决方案
按以下优先级排查修复:
- 验证网络连通性
- 在Kali虚拟机中执行
ip a,查看对应网卡(桥接模式看ens33/eth0,NAT模式看对应NAT网卡)的真实IP地址,确认和运行脚本的主机IP属于同一网段 - 在运行脚本的主机上执行
ping [Kali真实IP],确认能正常连通,如果无法ping通先修正虚拟机网络配置 - 关闭Kali系统防火墙,执行命令
sudo ufw disable,同时关闭运行脚本主机的系统防火墙临时测试,排除拦截问题
- 在Kali虚拟机中执行
- 修正NetCat监听命令
在Kali中停止原有监听进程,执行正确的监听命令:
参数说明:nc -lvnp 0.0.0.0 4444-l开启监听模式,-v打印详细日志,-n不做域名解析,-p指定监听端口,绑定0.0.0.0表示监听所有网卡的请求 - 修正代码中潜在的运行错误(连接成功后会触发的报错)
现有代码存在2个语法/兼容性问题,需要提前修正:subprocess.check_output的参数拼写错误,把shel=True改为shell=True- Python3中
socket.send()只接受字节类型数据,需要把字符串转码,修改示例:# 发送连接提示转字节 connection.send(b"connected") # 命令执行结果转字节再发送 connection.send(command_result.encode('utf-8'))
内容的提问来源于stack exchange,提问作者An0nym0us-py
相关产品推荐
相关产品推荐

