0x00 前言


在之前的文章中介绍过如何利用PSR来监控Windows桌面,但是PSR最明显的缺点是无法记录键盘的操作,所以这次就介绍一种实现键盘记录的好方法——AutoIt script

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

图片来自http://www.getlinkyoutube.com/watch?v=51iuVOHGUHs

0x01 简介


AutoIt:

是用以编写并生成具有 BASIC 语言风格的脚本程序的免费软件, 它被设计用来在Windows GUI(用户界面)中进行自动操作.
通过它可以组合使用模拟键击,鼠标移动和窗口/控件操作等来实现自动化任务, 而这是其它语言所无法做到或尚无可靠方法实现的
(比如VBScript和SendKeys). AutoIt 非常小巧,完全运行在所有windows操作系统上,并且不需要任何运行库.

支持的功能:

  • 运行exe
  • 执行cmd命令
  • 模拟键盘鼠标操作
  • 对窗口及其控件操作
  • 对剪贴板操作
  • 对注册表操作
  • COM支持
  • 直接调用外部DLL 和 Windows API 函数

注:
以上介绍参考自http://www.autoitx.com/Doc/

AutoIt下载地址:
https://www.autoitscript.com/site/autoit/downloads/

0x02 使用方法示例


1、下载安装AutoIt

2、编写第一个测试脚本

新建文件1.au3,写入如下代码:

3、使用AutoIt3.exe加载运行脚本

双击AutoIt3.exe,选择1.au3,运行

如图

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

0x03 AutoIt的特点


1、AutoIt解释器自带数字签名

也就是安装目录下的AutoIt3.exe,自带数字签名

如图

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

注:
卸载PE文件的证书可以使用unsigntool.exe

2、移植性高

例如上面的例子,将AutoIt3.exe和1.au3放在一个未安装AutoIt的系统下,仍能够正常使用

注:
3.3版本不支持xp以前的系统

3、可对脚本加密

运行Aut2exe.exe可选择将脚本分别编译成exe和a3x格式

如图

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

exe:

顾名思义,就是编译成一个独立的exe,在其他系统上运行时不再需要AutoIt3.exe

a3x:

将au3文件及其需要包含的支持文件封装为1个加密的a3x文件,需要AutoIt3.exe对其加载

4、可在cmd下运行

cmd下:

如图

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

0x04 键盘记录实例


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的安装目录下获取,此测试版本对支持文件做了简要修改,提醒读者注意

0x05 实际测试


1、本地测试

双击Autoit3.exe,加载keylogger.au3,脚本运行后在当前目录生成log.txt,在结束Autoit3.exe进程后写入记录的键盘操作并保存

如图

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

2、远程测试

(1)使用Aut2exe.exe将au3文件连同其需要的Include文件封装为a3x文件

如图

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

(2)上传Autoit3.exe和keylogger.a3x

(3)cmd下执行:

演示如图

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

注:
部分杀毒软件不会对此操作拦截
此脚本仅供测试,在功能实现上选择只有退出程序后才会保存键盘操作的记录,该实现方式在实际应用的过程中存在bug,以避免该脚本被滥用

0x05 扩展


部分安全防护软件会直接拦截AutoIt3.exe的操作

如图

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

绕过方法

1、内存加载AutoIt3.exe

实现方式很多,本文简单介绍通过Powershell绕过的方法

(1)修改脚本

https://github.com/PowerShellMafia/PowerSploit/blob/master/CodeExecution/Invoke-ReflectivePEInjection.ps1

尾部添加如下内容;

(2)1.au3的内容为:

(3)测试

以下系统均安装某安全防护软件

AutoIt3.exe为32位的程序,版本:3.3.8.1

注:
实际测试最新版本的AutoIt3.exe在通过powershell加载时会报错

32位系统,执行:

如图 成功绕过拦截

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

64系统,执行:

如图,成功绕过拦截

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

注:
之前对32位程序在64位系统下运行中需要注意的重定向问题做过研究,链接为http://drops.wooyun.org/tips/14831
再加上近期的学习对其有了新的认识,例如通过Powershell加载exe,不一定必须选择64位的exe,也可以在64位系统上选择启动32位的powershell来加载32位的exe,正如上面的示例,在64位系统下选择32位的powershell加载32位的AutoIt3.exe

2、下载AutoIt源码,重新编译尝试绕过

下载链接:
https://github.com/ellysh/au3src

vc6可直接编译成功

版本为3.1.0.15

如图

渗透技巧——Use AutoIt script to create a keylogger-安全盒子

注:
目前最新版本为3.3.14.2,暂未找到最新版本的源代码,需要注意版本间的区别,低版本不支持某些函数功能,需要持续开发

3、利用InstallUtil.exe

参考链接:

注:
需要修改代码

0x06 小结


技术不分好坏,坏的是人

本文仅作技术研究,着重介绍了如何通过AutoIt script来实现keylogger,对绕过拦截的方法点到为止,请勿滥用。公开资料显示该方法早在2014年已被使用(或许更早)。站在防御的角度,拦截并提示AutoIt.exe的运行很有必要,但是结合白名单绕过的技巧还是可以绕过拦截,防御方法有待升级。

如果发现问题,请及时指出,欢迎交流,共同进步