使用 LUA 脚本绕过 Applocker 的测试分析
0x00 前言
在之前的文章《Bypass Windows AppLocker》曾对绕过 Applocker 的方法进行过学习,而最近看到一篇文章介绍了使用 LUA 脚本绕过 Applocker 的方法,学习之后产生了以下疑问:绕过原理是什么呢?能绕过哪种 AppLocker 的规则呢?适用条件又是什么呢?
文章地址:https://homjxi0e.wordpress.com/2018/03/02/whitelisting-bypassing-using-lua-lanuage-wlua-com/
0x01 简介
本文将要介绍以下内容:
- LUA 脚本简介
- 绕过测试
- 绕过原理
- 适用条件
- 防御方法
0x02 LUA 脚本简介
- 轻量小巧的脚本语言
- 用标准 C 语言编写
- 可以被 C/C++ 代码调用
- 可以调用 C/C++的函数
- 在目前所有脚本引擎中的速度最快
0x03 Windows 系统下执行 LUA 脚本
1、安装 Lua for Windows,下载地址:http://files.luaforge.net/releases/luaforwindows/luaforwindows
2、输出 hello world
脚本内容:
print"Hello,world!"
cmd:
lua.exe 1.txt
如下图
3、调用 Windows API
脚本内容:
require "alien"
MessageBox = alien.User32.MessageBoxA
MessageBox:types{ret ='long',abi ='stdcall','long','string','string','long'}
MessageBox(0, "title for test","LUA call windows api",0)
执行如下图
4、c++执行 LUA 脚本
参考代码如下:
extern "C" {
#include "lua.h"
#include <lauxlib.h>
#include <lualib.h>
}
int main(int argc,char* argv[])
{
lua_State *L = lua_open();
luaL_openlibs(L);
luaL_dofile(L, argv[1]);
lua_close(L);
return 0;
}
工程需要做如下设置:
(1) 修改 VC++ 目录
包含目录
,添加 C:\Program Files\Lua\5.1\include
库目录
,添加 C:\Program Files\Lua\5.1\lib
(2) 链接器
- 输入
- 附加依赖项
,添加
lua5.1.lib
lua51.lib
执行如下图
c++执行 LUA 脚本来调用 Windows API,需要在同级目录添加支持文件,执行如下图
0x04 测试使用 LUA 脚本绕过 Applocker
测试一:
测试系统: Win7x86
安装 Lua for Windows
开启 Applocker,配置默认规则
使用 lua.exe 执行脚本:
成功绕过 Applocker 的拦截
如下图
测试二:
测试系统: Win7x86
安装 Lua for Windows
开启 Applocker,配置默认规则,添加规则: 拦截 lua.exe
未绕过 Applocker 的拦截
如下图
注:
还可以使用 wlua.exe 执行 lua 脚本
测试三:
测试系统: Win7x64
未安装 Lua for Windows
开启 Applocker,配置默认规则,系统禁止执行脚本
lua.exe 同级目录放置 lua5.1.dll(来自 Lua for Windows 安装路径)
使用 lua.exe 执行脚本:
未绕过 Applocker 的拦截
如下图
补充:将 lua.exe 换成 wlua.exe,脚本内容修改为 POC 内容,地址如下:https://gist.githubusercontent.com/homjxi0e/fd023113bf8b1b6789afa05c3913157c/raw/6bf41cbd76e9df6d6d3edcc9e289191f898451dc/AppLockerBypassing.wlua
测试结果均相同
0x05 最终结论
经过以上测试,得出最终结论:
使用 LUA 脚本,在一定程序上能绕过 Applocker,但需要满足以下条件:
- 当前系统已安装 Lua for Windows
- Applocker 的规则未禁止 lua.exe 和 wlua.exe
0x06 小结
本文对 LUA 脚本的开发做了简要介绍,测试使用 LUA 脚本绕过 Applocker 的 POC,得出最终结论。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论