0x00 前言在之前的文章中介绍过如何利用PSR来监控Windows桌面,但是PSR最明显的缺点是无法记录键盘的操作,所以这次就介绍一种实现键盘记录的好方法——AutoIt script 图片来自 http://www.getlinkyoutube.com/watch?v=51iuVOHGUHs
0x01 简介
AutoIt:是用以编写并生成具有 BASIC 语言风格的脚本程序的 免费软件, 它被设计用来在Windows G UI(用户界面)中进行自动操作. 通过它可以组合使用模拟键击,鼠标移动和窗口/控件操作等来实现 自动化任务, 而这是其它语言所无法做到或尚无可靠方法实现的 (比如VBScript和SendKeys). AutoIt 非常小巧,完全运行在所有 windows操作系统上,并且不需要任何运行库.
支持的功能:- 运行exe
- 执行cmd命令
- 模拟键盘鼠标操作
- 对窗口及其控件操作
- 对剪贴板操作
- 对注册表操作
- COM支持
- 直接调用外部DLL 和 Windows API 函数
注:
https://www.autoitscript.com/site/autoit/downloads/
0x02 使用方法示例1、下载安装AutoIt2、编写第一个测试脚本#!cpp #include <Constants.au3> MsgBox($MB_SYSTEMMODAL, "test", "test") 3、使用AutoIt3.exe加载运行脚本双击AutoIt3.exe,选择1.au3,运行 如图 0x03 AutoIt的特点
1、AutoIt解释器自带数字签名也就是安装目录下的AutoIt3.exe,自带数字签名 如图 注: 卸载PE文件的证书可以使用unsigntool.exe
2、移植性高例如上面的例子,将AutoIt3.exe和1.au3放在一个未安装AutoIt的系统下,仍能够正常使用 注: 3.3版本不支持xp以前的系统
3、可对脚本加密运行Aut2exe.exe可选择将脚本分别编译成exe和a3x格式 如图 exe:顾名思义,就是编译成一个独立的exe,在其他系统上运行时不再需要AutoIt3.exe a3x:将au3文件及其需要包含的支持文件封装为1个加密的a3x文件,需要AutoIt3.exe对其加载 4、可在cmd下运行cmd下: #!bash AutoIt3.exe 运行的脚本名称 如图 0x04 键盘记录实例1、在Github上开源的有如下两个项目,大家可以结合开发文档进行学习 - https://github.com/pyrroman/AutoLog
- https://github.com/roanvanbao/keylogger
注: 开发文档为安装目录下的chm文件
2、在这里也把我的测试版本共享一下,地址为: https://github.com/3gstudent/AutoIt-Keylogger keylogger.au3为源代码 Include文件夹下是需要引用的支持文件 Autoit3.exe和Aut2exe.exe未上传,需要去官网下载 注: 支持文件可在AutoIt的安装目录下获取,此测试版本对支持文件做了简要修改,提醒读者注意
0x05 实际测试
1、本地测试双击Autoit3.exe,加载keylogger.au3,脚本运行后在当前目录生成log.txt,在结束Autoit3.exe进程后写入记录的键盘操作并保存 如图 2、远程测试(1)使用Aut2exe.exe将au3文件连同其需要的Include文件封装为a3x文件 如图 (2)上传Autoit3.exe和keylogger.a3x (3)cmd下执行: #!bash Autoit3.exe keylogger.a3x 演示如图 注: 部分杀毒软件不会对此操作拦截 此脚本仅供测试,在功能实现上选择只有退出程序后才会保存键盘操作的记录,该实现方式在实际应用的过程中存在bug,以避免该脚本被滥用
0x05 扩展部分安全防护软件会直接拦截AutoIt3.exe的操作 如图 绕过方法1、内存加载AutoIt3.exe(1)修改脚本https://github.com/PowerShellMafia/PowerSploit/blob/master/CodeExecution/Invoke-ReflectivePEInjection.ps1 尾部添加如下内容; #!js $PEBytes = [IO.File]::ReadAllBytes('c:/test/AutoIt3.exe') Invoke-ReflectivePEInjection -PEBytes $PEBytes -ExeArgs "1.au3" (2)1.au3的内容为: #!cpp #include <Constants.au3> MsgBox($MB_SYSTEMMODAL, "test", "test") (3)测试以下系统均安装某安全防护软件 AutoIt3.exe为32位的程序,版本:3.3.8.1 注: 实际测试最新版本的AutoIt3.exe在通过power shell加载时会报错
32位系统,执行:#!bash PowerShell.exe -ExecutionPolicy Bypass -File a.ps1 如图 成功绕过拦截 64系统,执行:#!bash C:/Windows/SysWOW64/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File a.ps1 如图,成功绕过拦截 注: 再加上近期的学习对其有了新的认识,例如通过Powershell加载exe,不一定必须选择64位的exe,也可以在64位系统上选择启动32位的powershell来加载32位的exe,正如上面的示例,在64位系统下选择32位的powershell加载32位的AutoIt3.exe
2、下载AutoIt源码,重新编译尝试绕过下载链接: https://github.com/ellysh/au3 src
vc6可直接编译成功 版本为3.1.0.15 如图 注: 目前最新版本为3.3.14.2,暂未找到最新版本的源代码,需要注意版本间的区别,低版本不支持某些函数功能,需要持续开发
3、利用InstallUtil.exe参考链接: - https://gist.github.com/subTee/00cdac8990584bd2c2fe
- http://drops.wooyun.org/tips/8701
注: 需要修改代码
0x06 小结 介绍了如何通过AutoIt script来实现keylogger,对绕过拦截的方法点到为止,请勿滥用。公开资料显示该方法早在2014年已被使用(或许更早)。站在防御的角度,拦截并提示AutoIt.exe的运行很有必要,但是结合白名单绕过的技巧还是可以绕过拦截,防御方法有待升级。
|