一自行编译

下载源码: 
https://github.com/shadow1ng/fscan/tree/main

直链下载地址

https://lp.lmboke.com/fscan-main.zip

用命令进行编译,编译完成之后,会生成mian.exe。

go build -ldflags="-s -w " -trimpath main.go

发现还是会被火绒查杀!

火绒为什么可以直接查杀出来呢,首先感觉肯定有明文的fscan字符串,使用strings工具查找一下。

strings .main.exe | findstr "fscan"

通过查找结果可以发现,fscan字符串主要出现在github.com/shadow1ng/fscan/Plugins/、github.com/shadow1ng/fscan/WebScan/、github.com/shadow1ng/fscan/common这三个导入包中,还有一处是出现在fscan version:地方。那是不是可以就可以将这三个包,替换成本地导入的方式。

将fscan源码拖入到VScode中,并打开mian.go,可以看到导入包中存在github.com/shadow1ng/fscan/Plugins、github.com/shadow1ng/fscan/common。

进行全局替换,将github.com/shadow1ng/fscan替换为main,替换为你想替换的任意字符都行。

在common/flag.go文件中,将fscan version替换为fs version,这里也是替换为你想替换的字符就行。

接下来,在GOPATH下的src目录中,新建一个main目录。并将fscan源码中的common、Plugins、WebScan目录,全部”复制/剪切”到新建立的main目录中。

(如果以上操作未成功, 请直接从以下步骤开始编译......)

二.使用garble混淆

既然使用go编译会进行报毒,那么换一种编译工具进行编译,这里使用garble(go必须是1.22.10版本)对fscan进行编译。

garble -literals build main.go

这个混淆偏移是我一般在使用的

garble -literals -tiny -seed=random build -o appwudi.exe main.go

garble(混淆库):

  -tiny              删除额外信息             

  -literals          混淆文字

  -seed=random       base64编码的随机种子

编译后得到 appwudi.exe

如果! 如果! 如果! 报错没有成功, 就把刚刚复制的三个文件夹删掉再试试.

三.加壳压缩

使用kali 的 upx压缩一下.(当然其他的加壳工具也行)

upx appwudi.exe

四.签名

一般程序被执行得时候,杀软都会检测是否存在数字签名,所以很有必要再加一层数字签名

我这里选择了一款一直在用的签名劫持软件

 https://github.com/langsasec/Sign-Sacker

直链地址下载:https://lp.lmboke.com/Sign-Sacker-main.zip

这里我们掠夺超级无敌的QQ签名,嘻嘻!

最后,要把文件名字进行修改,尽量不要出现 fscan 或者 Signed 字眼,这里我们改为fc.exe, 正常情况某绒,De某der ,3某0, GW某绿球,等都是能免杀的。

测试Defender 是否免杀

某绒

3某0

GW 某緑球

免责声明

本文仅用于技术讨论与学习,利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本平台和发布者不为此承担任何责任。