渗透防火墙的Shellcode技术
作者:san@
内容摘要
1. 远程shellcode 的几种实现方式
2. 复用当前连接技术的一些问题及优势
3. Win32平台的具体实现
4. Linux x86 平台的具体实现
5. AIX PowerPC平台的具体实现
6. 特别感谢
7. 参考文档
第2 页
实现方式简介
• 1. 远程shellcode 的几种实现方式
1.1 监听端口
• 1.1.1 监听新的端口
• 1.1.2 重新使用原端口
• 端口复用
• 重新绑定
1.2 反向连接
1.3 复用当前连接的SOCKET
• 1.3.1 IIS 的ECB结构
• 1.3.2 getpeername
• 1.3.3 fcntl设置socket状态
• 1.3.4 ioctl(Linux/Unix) 和ioctlsocket(W in32)
• 1.3.5 使用OOB特性
• 1.3.6 Hook 系统的recv调用
第3 页
复用当前连接技术介绍
• 2. 复用当前连接技术的一些问题及优势
2.1 绑定shell
• Unix下可以直接把SOCKET作为“/bin/sh”的输入输出句柄。
• 在W in32下,socket()函数隐式指定了重叠标志,它创建的
SOCKET 重叠套接字(overlapped socket) ,不能直接将
cmd.exe 的stdin、stdout 、stderr转向到套接字上,只能用管道
(pipe)来与cmd.exe 进程传输数据。winsock推荐使用重叠套接
字,所以实际使用尽可能用管道。
• WSASocket()创建的SOCKET默认是非重叠套接字,可以直接
将cmd.exe 的stdin、stdout 、stderr转向到套接字上。
第4 页
复用当前连接技术介绍
2.2 多线程环境搜索SOCKET
-=-=-=-=-=- start sample code =-=-=-=-=-=-=
s = WSASocket(2,1,...)
bind(s,..)
listen(s,...)
s2 = accept(s,)
-=-=-=-=-=- end sample code =-=-=-=-=-=-
• 当s 处于accept状态时,任何对s操作的网络函数都会处于等待
状态,直到有连接建立。
• 先用WaitForSingleObjectEx处理句柄,当s 处于accept状态时
会返回WAIT_TIMEOUT,可用的句柄返回
WAIT_OBJECT_0 。然后再用ioctlsocket/recv处理判断是否当
前连接的socket。
第5 页
复用当前连接技术介绍
2.3 优势
• 复用当前连接的技术相对较隐蔽,而且对于W in32的用管道绑
定cmd.exe后,和服务器交互的数据可以用xor 的办法进行编
码,进一步躲避IDS的检测。
• 单单查找SOCKET 的shellcode可以写的相对比较短,在找到
SOCKET后,可以再继续接收一
您可能关注的文档
最近下载
- 哪吒V汽车说明书.docx VIP
- 人教版高中英语必修三单词默写版.doc VIP
- 2020新人教版高中英语必修三单词中译英默写.pdf VIP
- DB22T 2287-2015 蓝莓矿质营养诊断技术要求.docx VIP
- 2019新人教版高一英语必修三全册单词默写表格版.doc VIP
- 2025年江苏省南京市中考道德与法治真题试卷含详解.docx VIP
- 3套新版人教版小学数学五年级上册期末必备综合试卷(含答案解析).docx
- (完整word版)苏教版本二年级下册数学练习题.doc VIP
- 特定技能2号农业练习题11.docx
- 2026年在带头固本培元、增强党性等五个带头方面对照检查存在的问题、整改措施材料6份文.docx VIP
原创力文档

文档评论(0)