首页
社区
课程
招聘
[原创][shellcode框架(一)] 认识shellcode,部署shellcode开放框架
发表于: 2017-3-24 15:27 14793

[原创][shellcode框架(一)] 认识shellcode,部署shellcode开放框架

2017-3-24 15:27
14793

[shellcode框架(二)] 完善shellcode框架

https://bbs.pediy.com/thread-216661.htm

[shellcode框架(三)] 修复shellcode框架的小bug

https://bbs.pediy.com/thread-216673.htm

[shellcode框架(四)] shellcode编程小技巧

https://bbs.pediy.com/thread-216674.htm

[shellcode框架(五)] 多文件shellcode框架

https://bbs.pediy.com/thread-217040.htm


   倾其所学,做此系列,希望初入此道者,莫走弯路 。

  认识shellcode 

  Shellcode实际是一段代码(也可以是填充数据),是用来发送到服务器利用特定漏洞的代码,一般可以获取权限。另外,Shellcode一般是作为数据发送给受攻击服务器的。 Shellcode是溢出程序和蠕虫病毒的核心,提到它自然就会和漏洞联想在一起,毕竟Shellcode只对没有打补丁的主机有用武之地。网络上数以万计带着漏洞顽强运行着的服务器给hacker和Vxer丰盛的晚餐。漏洞利用中最关键的是Shellcode的编写。由于漏洞发现者在漏洞发现之初并不会给出完整Shellcode,因此掌握Shellcode编写技术就显得尤为重要。(来自百科 http://baike.baidu.com/link?url=3YqpOe7gRddlo6xMoMwEYhtprTNBTtWdvNTuaVq5Xo8Nucd9Kb7DZj1_GmWX1DGb8MN2iGIiJ6jIBgsOKbLnJD58lp0m0_PECdGTXPXSqgW)

   

   shellcode编写考虑因素


多态技术躲避IDS检测。

这些问题是百科上提出的,这也正是shellcode开发要解决的问题。其实还有很多问题要解决,这里我先不一一列举,在以后的开发中很多问题就会暴露出来,到时我们再来探讨暴露的问题,这样记忆更深刻。

这里我就此系列来简单的回答以上问题:

1. 语言,这里我们用c语言,开发环境使用vs(10),部分代码使用汇编内联到代码中(如,获取TEP、PEB特殊地址),c语言开发简单易懂,大大降低了入门的门槛;移植性好,配合vs做简单修改后可以直接生成arm、x64的shellcode ;vs的强大调试功能可以帮助我们发现其中的bug,从此告别OD。

2.重定位。

3.API地址定位,这里我们使用最流行的通过比对函数名hash来查找函数地址。其工作原理是将函数名计算成hash(DWORD),当遍历dll导出表时,将函数名先计算为hash再和shellcode中存放的hash比较来确定API,从而找到其地址。这里不直接在shellcode中存放函数名是为了减小shellcode的体积。

4.编码问题。

5. 躲避IDS检测,我们随便加上异或编码、解码功能、解压缩、加解密等等 就可以产生千差万别的shellcode;总有一款适合你。


部署shellcode c语言框架


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (22)
雪    币: 465
活跃值: (667)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
2
谢谢分享,接着看续集。另外再开个msf框架使用的帖子就更好了。
2017-3-24 16:39
0
雪    币: 17053
活跃值: (4328)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
感谢分享,学习一下~!
2017-3-24 20:31
0
雪    币: 990
活跃值: (877)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
学习下。
2017-3-27 13:24
0
雪    币: 139
活跃值: (1175)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
5. 将 void __declspec(naked) StartSign (){} 不掉, 这个什么意思?
2017-3-31 10:48
0
雪    币: 139
活跃值: (1175)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
没弹出calc,win10系统,放虚拟机XP下 win7下 也没有弹出。
2017-3-31 10:56
0
雪    币: 69
活跃值: (270)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
msf
7
hackbs 没弹出calc,win10系统,放虚拟机XP下 win7下 也没有弹出。
是不是开启了GS
2017-4-4 12:14
0
雪    币: 1380
活跃值: (116)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
8
1>Shellcode.obj  :  error  LNK2001:  无法解析的外部符号  __imp____acrt_iob_func
1>Shellcode.obj  :  error  LNK2001:  无法解析的外部符号  __imp____stdio_common_vfprintf
1>Shellcode.obj  :  error  LNK2001:  无法解析的外部符号  __imp__getchar
这是什么情况?
2017-4-4 16:57
0
雪    币: 69
活跃值: (270)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
msf
9
ixiaohuo 1>Shellcode.obj : error LNK2001: 无法解析的外部符号 __imp____acrt_iob_func 1>Shellcode.obj : error LNK ...
#include  <winsock2.h>
#include  <windows.h>
#include  <stdlib.h>
#include  <stdio.h>
#include  <fcntl.h>
2017-4-5 09:07
0
雪    币: 1380
活跃值: (116)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
10
msf #include #include #include #include #include
不行,我头文件都加了还是不可以,估计编译器编译的函数名出错了
2017-4-5 16:10
0
雪    币: 1140
活跃值: (102)
能力值: ( LV4,RANK:48 )
在线值:
发帖
回帖
粉丝
11
输出了shellcode,但是不启动calc,win10  64位,是为什么啊
2017-4-5 17:42
0
雪    币: 1140
活跃值: (102)
能力值: ( LV4,RANK:48 )
在线值:
发帖
回帖
粉丝
12
ixiaohuo 不行,我头文件都加了还是不可以,估计编译器编译的函数名出错了
我把  #pragma  comment(ENTRY,"main");注释掉就不报错了,否则跟你一样的问题
2017-4-5 17:43
0
雪    币: 1380
活跃值: (116)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
13
大只狼 我把 #pragma comment(ENTRY,"main");注释掉就不报错了,否则跟你一样的问题
谢谢,的确是这个问题
2017-4-5 21:17
0
雪    币: 1
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
dll的shellcode和exe的shellcode运行起来有什么区别吗。
2017-7-17 14:46
0
雪    币: 206
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
源码下不了,能传到百度网盘么
2017-7-23 00:00
0
雪    币: 34
活跃值: (76)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
没弹出calc,win7虚拟机没有弹出。
2017-12-25 22:01
0
雪    币: 13
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
改成  #pragma  comment(  linker,"/ENTRY:mainCRTStartup"  )(多字节工程)即可
2018-4-2 17:23
0
雪    币: 189
活跃值: (267)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
为什么会使用到如此复杂的写法 shellcode 实际上根本不需要单独写成二进制 文件 然后在申请内存拷贝进去运行 
其实我们只需要针对目标进程 是x86 还是x64 在自身写代码使用虚表函数 在重定位目标进程的虚表不就搞定了吗
2018-4-3 22:27
0
雪    币: 207
活跃值: (133)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
有用,mark
2018-4-4 09:57
0
雪    币: 123
活跃值: (316)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
用框架写shelk  code似乎不方便,汇编代码取出loadlibrary和getprocaddress地址,不就可以做任何事情了吗?hash加密也可以用汇编代码实现
2018-4-7 05:01
0
雪    币: 296
活跃值: (236)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
21
学习,mark
2018-4-21 18:01
0
雪    币: 259
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
感谢楼主
2018-4-21 20:52
0
雪    币: 123
活跃值: (316)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
ShellCodeSize = (DWORD)EndSign - (DWORD)ShellCode;
有时候获取负数,优化问题?

2020-5-3 10:59
0
游客
登录 | 注册 方可回帖
返回
//