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

请注意,本文编写于 1548 天前,最后修改于 1403 天前,其中某些信息可能已经过时。

自己写马子太痛苦了。
然后发现了,cs,msf这些工具又很香。只是碍于这些东西。
没办法,重!启!上!线!
免杀什么的其实都是小意思。主要还是重启上线等一堆功能。
所以就打算在这里记录一下,从零开始的,打造一款无弹窗免杀的shellcode吧。
为了不吊大家胃口,我就直接写出原理吧。
其实也不难。

就是一个写一个shellcode带有socket+rc4加密跑远端加密后的cs的payload下载下来后执行。然后利用启动项劫持技术,绕过杀软的启动保护。

再高级一点的话,就是把启动项劫持,改成用masm编写超迷你型的shellcode装载器,然后插入目标的PE空隙中,然后修改OEP指向我们的空隙然后执行完shellcode后再跳转到入口点。

启动项劫持的原理就是,360虽然禁止对启动项进行增改,但是删和查是可以的,并且对于启动项/服务项中的目标程序并没有进行保护。所以我们可以对启动项的程序进行劫持替换修改都是没问题的。或者不对启动项劫持进行替换,而是找到一个运行中的服务,kill掉它的进程,然后对服务源程序进行劫持也是可以的。原理都差不多。

总之就是这样,考完了应该会去研究一波。

至于payload,有两个方案。

可以自己写,难度有点高,可以参考

二进制入门-打造Linux shellcode基础篇

但是这种东西,一般顶天给你整个下载者。和cs那种全部功能纯shellcode还是不一样的。你下载者最终还是需要下载的你的二进制文件,达不到“负载无文件”(不是纯无文件,毕竟你的shellcode还是需要的),可能会导致你的马子被检测到。

payload难主要难在,对于API地址的定位,不过一般只要找到LoadLibrary的地址,其实还算是好说的啦。
还有难就难在栈平衡这些。
下次研究一波。
实在不行,直接整个PELOADER,自建一个RVA导入,不过传输EXE的话可能会被杀软拦截emmm,但是都能传shellcode了,传个加密的PE到内存理论上也是没关系的吧,

所以还是推荐直接使用cs或者msf,简单粗暴。

最后研究出的地址在这里

shellcode-9bie

带有直接运行和服务启动效果。
怎么用我懒得说了,只能说不添加 启动的话,能无弹窗过360+主防吧。
目前发现还不能过诺顿,待我研究一波。

同时吐槽一下遇到的一些坑。

c++的string,是非常的香的。不需要free(char );(char)malloc();这种操作的。
但是,还是碍于X问题,0会被截断。
千万不要使用str开头的函数来处理std::string.c_str()的东西。str开头的函数遇到0会自动截断,被这东西坑了好久= =
建议使用mem开头的,而且带_s,指定长度,合理控制内存。

添加新评论

已有 12 条评论

您的粉丝_小白 您的粉丝_小白

源码成功调试出来,但仍然无效反弹上线,不知哪里出错了。望大神指导下方针。

⑨BIE ⑨BIE 回复 @您的粉丝_小白

你py里的顶payload改了吗?改完了payload,找服务器运行了么?运行完之后,源码里的获取payload的地址指向了你服务器的payload分发器了么

您的粉丝_小白 您的粉丝_小白 回复 @⑨BIE

payload 分发器改了并python运行起来,我是 cobaltstrike 生成payload.c 复制到分发器里面,然后单独运行purebin.exe ,不知道为什么无法上线。是我操作有误吗感谢大牛指导

⑨BIE ⑨BIE 回复 @您的粉丝_小白

你cs的话,可以生成py的payload,之后替换掉py里面的buf就行,运行起来,py会跑一个web服务,这个web服务的地址你得确保purebin里面能访问到,purebin里面有个target和port,这两个地址得修改成你py所开启web服务的地址

⑨BIE ⑨BIE 回复 @您的粉丝_小白

有tg的话可以直接找我@bakabie就行,没有的话你说一声,我待会儿邮件给你个流程

您的粉丝_小白 您的粉丝_小白 回复 @⑨BIE

有的,大神我就来了

您的粉丝_小白 您的粉丝_小白

大神能出一个编译的过程吗。本人小白无法从git源码成功调试出来。哭泣中实在太难了

你的github上那个项目打不开啊

请教一下,启动项劫持指的是dll劫持吗?
以及「改成用 masm 编写超迷你型的 shell­code 装载器,然后插入目标的 PE 空隙中,然后修改 OEP 指向我们的空隙然后执行完 shell­code 后再跳转到入口点。 」这一段有如何做的参考资料吗?

⑨BIE ⑨BIE 回复 @GeeBees

可以dll劫持,原理就是360对于已经在启动项中的文件并不会进行保护,所以已经在启动项中的程序你无论做什么都没问题,比如捆绑啊,或者dll劫持(IAT劫持啊,类似lpk那种的劫持也行)。
只遇修改OEP指向空隙的,看雪有很多,然而这个有一个问题就是缺少IAT,一般解决方法是shellcode里手动寻址,找到kernel32里的loadbrary然后操作
简单的比如:https://blog.csdn.net/qq_19459853/article/details/50676272
或者这个:https://bbs.pediy.com/thread-151304.htm

可以换主题了

太牛了,我是连做出来的正经软件都被误判为有病毒。。。。。