查看: 1550|回复: 1

SilentTrinity-学习记录7.1.1-Use AutoIt script to create a keylogger

[复制链接]

665

主题

1234

帖子

6573

积分

xdtech

Rank: 5Rank: 5

积分
6573
发表于 2020-3-4 11:36:35 | 显示全部楼层 |阅读模式
0x00 前言
在之前的文章中介绍过如何利用PSR来监控Windows桌面,但是PSR最明显的缺点是无法记录键盘的操作,所以这次就介绍一种实现键盘记录的好方法——AutoIt script
图片来自 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、下载安装AutoIt2、编写第一个测试脚本
新建文件1.au3,写入如下代码
#!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文件
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进程后写入记录的键盘操作并保存
如图
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
实现方式很多,本文简单介绍通过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
如图 成功绕过拦截
64系统,执行:#!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


2、下载AutoIt源码,重新编译尝试绕过
下载链接:
https://github.com/ellysh/au3src

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的运行很有必要,但是结合白名单绕过的技巧还是可以绕过拦截,防御方法有待升级。

回复

使用道具 举报

665

主题

1234

帖子

6573

积分

xdtech

Rank: 5Rank: 5

积分
6573
 楼主| 发表于 2020-3-4 11:37:49 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表