使用 LUA 脚本绕过 Applocker 的测试分析

发布于 2024-10-04 05:42:55 字数 4106 浏览 8 评论 0

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

如下图

Alt text

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)

执行如下图

Alt text

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

执行如下图

Alt text

c++执行 LUA 脚本来调用 Windows API,需要在同级目录添加支持文件,执行如下图

Alt text

0x04 测试使用 LUA 脚本绕过 Applocker

测试一:

测试系统: Win7x86

安装 Lua for Windows

开启 Applocker,配置默认规则

使用 lua.exe 执行脚本:

成功绕过 Applocker 的拦截

如下图

Alt text

测试二:

测试系统: Win7x86

安装 Lua for Windows

开启 Applocker,配置默认规则,添加规则: 拦截 lua.exe

未绕过 Applocker 的拦截

如下图

Alt text

注:

还可以使用 wlua.exe 执行 lua 脚本

测试三:

测试系统: Win7x64

未安装 Lua for Windows

开启 Applocker,配置默认规则,系统禁止执行脚本

lua.exe 同级目录放置 lua5.1.dll(来自 Lua for Windows 安装路径)

使用 lua.exe 执行脚本:

未绕过 Applocker 的拦截

如下图

Alt text

补充:将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

提笔落墨

暂无简介

0 文章
0 评论
23 人气
更多

推荐作者

内心激荡

文章 0 评论 0

JSmiles

文章 0 评论 0

左秋

文章 0 评论 0

迪街小绵羊

文章 0 评论 0

瞳孔里扚悲伤

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文