在之前的文章中介绍过如何利用PSR来监控Windows桌面,但是PSR最明显的缺点是无法记录键盘的操作,所以这次就介绍一种实现键盘记录的好方法——AutoIt script
图片来自 http://www.getlinkyoutube.com/watch?v=51iuVOHGUHs
是用以编写并生成具有 BASIC 语言风格的脚本程序的免费软件, 它被设计用来在Windows GUI(用户界面)中进行自动操作.
通过它可以组合使用模拟键击,鼠标移动和窗口/控件操作等来实现自动化任务, 而这是其它语言所无法做到或尚无可靠方法实现的
(比如VBScript和SendKeys). AutoIt 非常小巧,完全运行在所有windows操作系统上,并且不需要任何运行库.
注:
以上介绍参考自 http://www.autoitx.com/Doc/
AutoIt下载地址:
https://www.autoitscript.com/site/autoit/downloads/新建文件1.au3,写入如下代码:
#!cpp #include <Constants.au3> MsgBox($MB_SYSTEMMODAL, "test", "test")
双击AutoIt3.exe,选择1.au3,运行
如图
也就是安装目录下的AutoIt3.exe,自带数字签名
如图
注:
卸载PE文件的证书可以使用unsigntool.exe
例如上面的例子,将AutoIt3.exe和1.au3放在一个未安装AutoIt的系统下,仍能够正常使用
注:
3.3版本不支持xp以前的系统
运行Aut2exe.exe可选择将脚本分别编译成exe和a3x格式
如图
顾名思义,就是编译成一个独立的exe,在其他系统上运行时不再需要AutoIt3.exe
将au3文件及其需要包含的支持文件封装为1个加密的a3x文件,需要AutoIt3.exe对其加载
cmd下:
#!bash AutoIt3.exe 运行的脚本名称
如图
1、在Github上开源的有如下两个项目,大家可以结合开发文档进行学习
注:
开发文档为安装目录下的chm文件
AutoIt中文论坛: http://www.autoitx.com/index.php
2、在这里也把我的测试版本共享一下,地址为:
https://github.com/3gstudent/AutoIt-Keylogger
keylogger.au3为源代码
Include文件夹下是需要引用的支持文件
Autoit3.exe和Aut2exe.exe未上传,需要去官网下载
注:
支持文件可在AutoIt的安装目录下获取,此测试版本对支持文件做了简要修改,提醒读者注意
双击Autoit3.exe,加载keylogger.au3,脚本运行后在当前目录生成log.txt,在结束Autoit3.exe进程后写入记录的键盘操作并保存
如图
(1)使用Aut2exe.exe将au3文件连同其需要的Include文件封装为a3x文件
如图
(2)上传Autoit3.exe和keylogger.a3x
(3)cmd下执行:
#!bash Autoit3.exe keylogger.a3x
演示如图
注:
部分杀毒软件不会对此操作拦截
此脚本仅供测试,在功能实现上选择只有退出程序后才会保存键盘操作的记录,该实现方式在实际应用的过程中存在bug,以避免该脚本被滥用
部分安全防护软件会直接拦截AutoIt3.exe的操作
如图
实现方式很多,本文简单介绍通过Powershell绕过的方法
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")
以下系统均安装某安全防护软件
AutoIt3.exe为32位的程序,版本:3.3.8.1
注:
实际测试最新版本的AutoIt3.exe在通过powershell加载时会报错
#!bash PowerShell.exe -ExecutionPolicy Bypass -File a.ps1
如图 成功绕过拦截
#!bash C:/Windows/SysWOW64/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File a.ps1
如图,成功绕过拦截
注:
之前对32位程序在64位系统下运行中需要注意的重定向问题做过研究,链接为 http://drops.wooyun.org/tips/14831
再加上近期的学习对其有了新的认识,例如通过Powershell加载exe,不一定必须选择64位的exe,也可以在64位系统上选择启动32位的powershell来加载32位的exe,正如上面的示例,在64位系统下选择32位的powershell加载32位的AutoIt3.exe
下载链接:
https://github.com/ellysh/au3srcvc6可直接编译成功
版本为3.1.0.15
如图
注:
目前最新版本为3.3.14.2,暂未找到最新版本的源代码,需要注意版本间的区别,低版本不支持某些函数功能,需要持续开发
参考链接:
注:
需要修改代码
本文仅作技术研究,着重介绍了如何通过AutoIt script来实现keylogger,对绕过拦截的方法点到为止,请勿滥用。公开资料显示该方法早在2014年已被使用(或许更早)。站在防御的角度,拦截并提示AutoIt.exe的运行很有必要,但是结合白名单绕过的技巧还是可以绕过拦截,防御方法有待升级。
如果发现问题,请及时指出,欢迎交流,共同进步