当前位置:首页 > 热点

如何通过端口入侵电脑

端口不是何通门,它更像一扇窗——很多窗户根本没关严。过端去年我帮朋友看一台被黑的口入机器,登录日志里塞满了来自巴西和荷兰的侵电SSH尝试,目标端口22。何通密码是过端“admin123”。对方连暴力破解脚本都懒得换,口入直接拿现成字典撞了四十分钟就进去了。侵电这件事让我意识到,何通大多数人讨论“端口入侵”时,过端脑子里浮现的口入是电影里那种敲几行代码就攻破防火墙的画面,实际发生的侵电事往往无聊得多。

先搞清楚一个事实:端口本身没有漏洞。何通漏洞在监听这个端口的过端程序里。80端口跑着Apache,口入问题出在Apache的某个模块;3389端口开着远程桌面,问题出在Windows那个版本的RDP实现上。所以“通过端口入侵”这个说法其实省略了中间最关键的一环——你真正攻击的是端口后面那个服务。

扫描:知道对方开了哪些窗

nmap是最常用的工具,一条命令就能扫出一台机器对外开放的端口。nmap -sV 192.168.1.100,它会告诉你22端口跑着OpenSSH 7.4,3306端口是MySQL 5.7.26。版本号很关键,因为老版本意味着已知CVE。我见过一台对外服务器还跑着vsftpd 2.3.4,这个版本有个著名的笑脸后门——登录时用户名末尾加个“:)”,服务器直接给你开shell。扫描结果出来那一刻,攻击面就确定了。

入口通常比你想的简单

弱口令排第一,没有悬念。Redis默认没有密码,绑在0.0.0.0上的话,直接redis-cli -h 目标IP就能连上去。写个SSH公钥到authorized_keys目录,或者直接写crontab反弹shell,整个过程不需要任何exploit。MongoDB早年默认无认证,暴露在公网上的实例被拖库的案例数不胜数。Elasticsearch 9200端口,curl http://目标:9200/_cat/indices就能列出所有索引,数据直接可读。

再说一个真实案例。某次渗透测试,目标是一台Windows Server,445端口开着。永恒之蓝补丁没打,用Metasploit的ms17_010模块,设置好RHOST和payload,exploit回车,两分钟后拿到system权限。整个过程没有手工编写任何代码,工具全现成。这就是端口入侵的真相:大部分时候不是“攻破”,而是“找到没锁的门然后走进去”。

拿到shell之后的事

进去只是开始。提权、留后门、横向移动,这些才是真正花时间的部分。Linux上sudo -l看看当前用户能跑什么,有SUID文件就翻GTFOBins找利用方式。Windows上用whoami /priv查令牌权限,SeImpersonatePrivilege开着的话,JuicyPotato直接提权到system。留后门的方式也很多,SSH的authorized_keys加一把自己的密钥最省事,或者写个systemd服务,开机自启,名字伪装成系统进程。

防守端在做什么

改默认端口有用,但有限。把SSH从22挪到22222,能过滤掉大部分自动化扫描,但针对性的扫描照样能找到。真正有效的做法是:只监听内网地址、用密钥认证禁用密码登录、fail2ban限制尝试频率、防火墙白名单只放行必要来源IP。Redis和MongoDB这类服务,永远不要绑0.0.0.0,bind 127.0.0.1再加个密码,能挡住九成以上的机会主义攻击。

我自己的VPS上,22端口只允许密钥登录,fail2ban封禁阈值设成三次失败即封一小时。半年下来,日志里被封的IP超过两千个。这些IP背后的人未必是针对性攻击,大部分只是全网扫描的僵尸网络。但只要你有一个端口开着、服务有漏洞、密码够弱,你就从“被扫描”变成“被入侵”。区别只在于对方有没有顺手试一下。

端口入侵这件事,技术门槛在逐年降低。工具越来越傻瓜化,自动化脚本满地都是。防守方要做的不是指望没人来敲窗户,而是确保每扇开着的窗户后面,没有放着值钱的东西,也没有留着一把能打开整栋楼的钥匙。

分享到: