跳转到帖子

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

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

TheHackerWorld官方

通过单声道(跨平台网运行环境)执行外壳代码

精选回复

发布于

0x00 前言

在上篇文章《通过Boolang语言执行shellcode的利用分析》 介绍了利用博朗语言执行外壳代码的方法,本文将按照同样的思路,使用单声道(跨平台。网运行环境)实现执行外壳代码的功能,分析利用思路,给出防御建议

0x01 简介

单声道的简介

单声道的使用示例

通过单声道的执行外壳代码的方法

利用分析

防御检测

0x02 Mono简介

参考资料:

https://www.mono-project.com/

https://github.com/mono/mono

单声道的是微软100 .净框架的开源实现

包括C#编译器和通用语言架构

单声道的项目不仅可以运行于Windows操作系统操作系统系统上,还可以运行于Linux,FreeBSD,Unix,OS X和Solaris

0x03 Mono使用示例

开发环境:Win7x64

下载单声道的安装包,地址如下:

https://www.mono-project.com/download/stable/#download-win

默认安装路径:C:\Program Files\Mono\

1.编译程序输出hello world

HelloWorld.cs的内容如下:

使用系统;

公共类HelloWorld

{

公共静态void Main(string[] args)

{

控制台WriteLine(' Hello Mono World ');

}

}

使用mcs.exe进行编译,命令如下:

c:\ Program Files \ Mono \ bin \ MCS ' hello world。铯

生成HelloWorld.exe

2.编译程序调用Messagebox

Messagebox.cs的内容如下:

使用系统;

使用系统窗户。形式

命名空间MessageboxTest

{

班级计划

{

静态void Main(string[] args)

{

消息框.show(' Hello World ');

}

}

}

使用mcs.exe进行编译,命令如下:

“c:\ Program Files \ Mono \ bin \ MCS”消息框。cs-r:系统.窗户。Forms.dll

注:

需要加-r参数指定引用的dll,否则报错提示如下:

Messagebox.cs(2,22):错误CS0234:类型或命名空间名称"表格"在命名空间“系统。Windows "中不存在。是否缺少“系统。Windows.Forms "程序集引用?

编译失败:1个错误,0个警告

3.编译程序执行shellcode

Shellcode.cs已上传至GitHub,地址如下:

https://github。com/3g学生/C-Sharp之家/blob/master/shellcode。铯

使用mcs.exe进行编译,命令如下:

c:\ Program Files \ Mono \ bin \ MCS的外壳代码。铯

生成Shellcode.exe

0x04 通过Mono执行shellcode的方法

在0x03简单介绍了使用mcs.exe编译程序的方法

这一节着重介绍利用单声道的的特性绕过静态检测的方法

1.将启动shellcode的代码和payload分离

(1)将payload作base64加密并保存在文件中

部分示例代码如下:

使用系统。木卫一;

byte[]shell代码64=new byte[276]{ XXX };

String AsBase64String=Convert .转换为base 64字符串(外壳代码64);

StreamWriter SW=new StreamWriter(@ ' C:\ test \ shellcodebase 64。txt’);

西南write(作为base 64字符串);

西南。关闭()

base64编码后的有效载荷已上传至GitHub,地址如下:

https://github。com/3g student/home-of-C-Sharp/blob/master/shellcodebase 64。文本文件(textfile)

(2)从指定文件读取payload,作base解密后加载shellcode

实现代码已上传至GitHub,地址如下:

https://github。com/3g学生/C-Sharp之家/blob/master/read shellcode。铯

2.使用csc将生成的文件编译成只能通过Mono加载的形式

使用计算机科学硕士编译出来的程序可以直接运行,这有可能被查杀

使用乡村基进行编译可选的选项更多,我在乡村基帮助文件中发现可以生成只能通过单声道的加载的形式,参数说明如下:

-target:appcontainerexe构建Appcontainer可执行文件(缩写:-t:appcontainerexe)

因此完整的编译命令如下:

c:\ Program Files \ Mono \ bin \ CSC '读取shell代码。cs-target:appcontainerexe

生成文件ReadShellcode.exe,无法直接执行,只能通过单声道的加载,加载的命令如下:

c:\ Program Files \ Mono \ bin \ Monoexe ' ReadShellcode.exe

3.构造精简的Mono运行环境

如果我们要在另一系统执行以上文件,不必安装单声道的的安装包

经过测试只需要以下文件:

/bin/mono-2.0-sgen.dll

/bin/mono.exe

/bin/ReadShellcode.exe

/bin/ShellcodeBase64.txt

/lib/mono/4.5/mscorlib.dll

树形图如下图

2-1.png

注:

调用Messagebox引用系统窗户。Forms.dll时所需文件的树形图如下图

2-2.png

0x05 利用分析

通过单声道(跨平台。网运行环境)执行外壳代码,有以下两个优点:

1.通过Mono.exe加载启动程序,启动程序不包括恶意的功能,有效负载可保存在另一个脚本文件中

2.Mono可以构建一个. Net环境,可以解决一些程序对。Net环境。

例如:

该程序只能在下运行。Net 4,但目前的系统不支持。Net 4。Mono可以解决这个问题。

0x06 防御检测

通过跨平台执行外壳代码。NET运行时环境Mono,父进程是Mono.exe,这一点值得注意。

这种技术无法绕过对程序行为的检测,所以可以通过检测进程行为来防御。

0x07 小结

本文介绍了Mono(跨平台)的应用方法。NET运行时环境),分享几种绕过静态检测的方法,分析利用思路,给出防御建议。

留下回复

创建帐户或登录后发表意见

最近浏览 0

  • 没有会员查看此页面。