Shellpop 专注于弹出 shell。使用此工具,您可以生成简单或复杂的反向或绑定 shell 命令,以帮助您在渗透测试期间使用。
需要 Python 2.7。
3.0+ 版本将无法工作。
所需依赖安装
root@kali# apt-get install python-argcomplete metasploit-framework -y
root@kali# pip install -r requirements.txt
设置安装
root@kali# python setup.py install
注意:安装后,Tab 键自动补全只有在重启终端后才能生效。
要快速列出此工具的所有可用选项,请使用 --help。
root@kali# shellpop --help

您可以使用 --list 选项列出所有可用的 shellpop shell。
root@kali# shellpop --list

现在 shellpop 已具备自动补全功能。要使用它,您需要忽略 --number 和(--reverse 或 --bind),只需使用 --payload 参数即可。如下图所示:

不要浪费时间。此工具的核心就是节省时间。因此,您可以在所有生成的 payload 上使用 --clip 选项,它们将自动复制到您的剪贴板。
此程序中有两种类型的 payload:Bind 或 Reverse。
反向 Shell 使用您的攻击机作为“服务器”。在此类 payload 中,您需要 --host 和 --port 都指向您的机器。必须设置一个处理程序。
绑定 Shell 使用远程主机来提供连接。在此类 payload 中,您只需要使用 --port 选项并提供一个有效的端口号。


目前有两种主要的混淆方法可用于生成的 payload:
将 payload 中的所有变量替换为随机命名的变量。自动应用于每个 payload。

混淆 payload 所使用的 IP 地址和端口
由 @vysecurity 提出的 IPfuscation 利用了这样一个鲜为人知的事实:IP 地址可以转换为十进制、八进制和十六进制数字,或三者的组合,并且仍然可以使用。
端口混淆是通过将端口号替换为一个计算结果为端口号的数学表达式来实现的。

这里生成的 payload 中的 IP 地址是不同数字基数的组合。第一部分是正常的十进制表示,第二和第三部分是将 2 和 3 转换为八进制并用随机零填充,第四部分是将 4 转换为十六进制,也带一些零填充。IP 地址每个部分所使用的基数选择是随机的,用于十六进制和八进制数字的零填充数量也是随机的。
端口混淆是通过将 443 替换为一个计算结果为 443 的表达式来实现的。该表达式也是随机生成的。
尽管 IPfuscation 是可选的,但现在所有 payload 都会自动强制应用随机变量混淆。如果 payload 的大小确实是个问题,您可以使用 --obfuscate-small 选项,使混淆对 payload 大小的增加最小化。使用此选项时,变量名、IP 地址和端口号将显著缩短。

编码器是您在生成 shellpop payload 时可以使用的特殊选项。
目前有三种编码方法可以单独或同时应用,它们是:
使用随机数字密钥(1-255)混淆 payload,并添加解密存根来解密它。
对 payload 数据进行简单的 base64 编码,并添加解密存根来解密它。
对最终 payload 进行简单的 URL 编码。






处理程序是一种“处理” socket 服务的机制,用于接收传入的连接或自行连接到服务器端点,从而建立您的 shell。
目前支持以下 TCP 处理程序:
这意味着每个 TCP shell 都可以在其命令行参数中添加 --handler 选项。从而无需操作员自行启动处理程序(可能是 ncat 或 nc)。

这个功能是使用该工具的用户广泛要求的。现在,从技术上讲,可以将所有 shellpop shell 升级为 meterpreter,因为自 0.3.6 版本起,处理程序默认使用 Metasploit Framework 来获取 shell。

分段器是一种分阶段提供 payload 的机制。有时 payload 的复杂性或大小可能会带来麻烦。在这种情况下,您可以制作一个小型 payload,然后由它请求并执行更大的 payload。
目前支持以下分段器协议:
ShellPop 有以下 HTTP 分段器集合,可满足您可能遇到的任何场景:
要使用 HTTP 分段,请在命令行中追加 --stager http,并且,如果您想指定 HTTP 服务器端口,可选的 --http-port 标志会将您的端口号放在预定义的端口之前。

目前支持两种协议来获取 shell:

此代码由 Andre Marques (@zc00l) 和本项目的贡献者编写。
它在发布到此 GitHub 之时即为公开。
由本工具造成的任何损害,任何贡献者(包括作者)均不承担责任。
我们衷心感谢所有贡献者。