转载

渗透技巧——Use AutoIt script to create a keylogger

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,写入如下代码:

#!cpp #include <Constants.au3> MsgBox($MB_SYSTEMMODAL, "test", "test") 

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下:

#!bash AutoIt3.exe 运行的脚本名称 

如图

渗透技巧——Use AutoIt script to create a keylogger

0x04 键盘记录实例

1、在Github上开源的有如下两个项目,大家可以结合开发文档进行学习

  • https://github.com/pyrroman/AutoLog
  • https://github.com/roanvanbao/keylogger

注:

开发文档为安装目录下的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下执行:

#!bash Autoit3.exe keylogger.a3x 

演示如图

渗透技巧——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

尾部添加如下内容;

#!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在通过powershell加载时会报错

32位系统,执行:

#!bash PowerShell.exe -ExecutionPolicy Bypass -File a.ps1 

如图 成功绕过拦截

渗透技巧——Use AutoIt script to create a keylogger

64系统,执行:

#!bash C:/Windows/SysWOW64/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -File a.ps1 

如图,成功绕过拦截

渗透技巧——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

参考链接:

  • https://gist.github.com/subTee/00cdac8990584bd2c2fe
  • http://drops.wooyun.org/tips/8701

注:

需要修改代码

0x06 小结

技术不分好坏,坏的是人

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

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

原文  http://drops.wooyun.org/tips/17211
正文到此结束
Loading...