Ladon免杀/.NET免杀/Exe2Ps1/Ps12Exe

<%

背景

有很多人和我说exe被杀了怎么办?我问大家一句mimikaz被杀了你怎么办,是不是用它的PowerShell版或者转成其它格式来免,当然也可以直接修改源码免,但由于是公开的里面很多函数都被杀软盯得很死,加上很多人根本不是很懂代码,对一个公开并且很受欢迎的工具做源码免杀也是很花时间的。所以网上有不少免杀MZ的方法,EXE不能用时大家也会去用PowerShell版远程加载读取等,怎么到Ladon这你们就不知道怎么办了呢?不是一样的原理吗?难道是因为PS版体积较大?有些PY或GO写的工具先不说一般最小就2-3M,有些工具甚至几M甚至几十M也就一个功能你都肯传到目标,而那个功能Ladon也有甚至可能比它还好。Ladon就算是PowerShell版也不过2-3M,能为了一个功能上传几十M,怎么就不能传2-3M的PS版Ladon?难道打算上传一堆几M或十几M的工具到目标?不是吧,阿SIR

由于PowerShell版我也很少用到,所以Github上只转到6.6版本,其它版本大家可以按需转

https://github.com/k8gege/PowerLadon (9.23测试,世界杀软网全免,本地卡巴全免)

免杀原理

由于很多杀软对于powershell脚本的查杀能力比较差,所以可以将.NET程序转成PowerShell脚本,当然并非是反编译EXE再将代码转成PowerShell,这种方法一是难度大又麻烦吃力不讨好,PowerShell的兼容性我想大家应该深受其害,有些函数在C#里可用,但转成powershell可能兼容问题,所以最佳方案是转成BYTE、HEX、BASE64、ASCII、AES等(当初Python版的SCRUN免杀CS的套路在任何语言都可用),比如说大家可能看到网上有利用GO语言AES加密免杀CS等文章,这些方法我说过几次了?所以再次强调一下要懂得举一反三,你可以百度搜索C语言AES算法,然后加密CS,或者其它语言也可以。

内存加载

首先因为大部分杀软只是把Powershell当成文本来样,目前应该没几个可以模拟PowerShell或Hook查看最终执行的杀软。所以稍威加密下我们的程序,杀软由于扫描文本未发现恶意字符串或特定函数,那么基本上就不杀了,静态全免,但是如果你再把加密数据还原成EXE,那它肯定又杀了,所以我们得直接内存加载,方法很多,我们用.NET自带函数反射加载执行程序即可,PowerShelle写法[Reflection.Assembly]::Load,再通过反射调用传参。

Ladon免杀

首先将需要转的exe直接拖放至文本框,如Ladon.exe,点击EXE->PowerShell会生成一个脚本。
image

源码自行反编译此程序查看即可(注意反编译和逆向是两个概念,点个按钮反编译没任何难度 )

复制红线所示@和@里的字符串很长可能有2M
image

替换Ladon6.6.ps1里面那个很长的字符串,注意长度那里也要替换如637440替换成1708544
image

接下来把新版本的新增的功能参数添加上去即可,看模块对应参数个数来加就可以了
image

EXE转PowerShell

上面教大家转Ladon,但是其它的EXE或DLL怎么用?以数学加法运算为例子

namespace Math
{
public class Methods
{
public Methods()
{
}
public static int add(int a, int b)
{
return a+b;
}

public int sub(int a, int b)
{
return a-b;
}
}
}

命令: csc.exe /target:library Math.cs
编译以上代码得到DLL,使用LadonGui一键转换得到PS1,在结尾处追加调用方法

其它程序同理,你写的EXE/DLL是什么命名空间、什么方法对应添加到最后一行
如图计算500+20的结果
image

为什么换其它语言就免杀?

由于语言结构特性等,特别新出的语言,杀软要查杀它前提是不是得去研究那门语言的结构特征,这就是为什么同样的方法换个语言就

九种混淆方法

Ladon九种PowerShell命令混淆加密免杀方法
http://k8gege.org/Ladon/PowershellEncode.html

Ladon下载

历史版本: https://github.com/k8gege/Ladon/releases
7.0版本:http://k8gege.org/Download
7.5版本:K8小密圈