关于
一个完全可配置和可扩展的 Bash 混淆框架。该工具旨在帮助红队和蓝队
使用文档
https://bashfuscator.readthedocs.io/en/latest/index.html
什么是 Bashfuscator?
Bashfuscator 是一个用 Python 3 编写的模块化且可扩展的 Bash 混淆框架。它提供了多种不同的方法来使 Bash 语句或脚本更难以理解。它通过生成复杂的、随机的 Bash 代码来实现这一点,这些代码在运行时评估原始输入并执行它。Bashfuscator 使生成高度混淆的 Bash 命令和脚本变得容易,无论是从命令行还是作为 Python 库。
该项目的目的是让红队能够绕过 Linux 系统上的静态检测,并获得编写更好的 Bash 混淆技术的知识和工具。
该框架也是在蓝队的考虑下开发的。借助此框架,Blue Team 可以轻松生成数千个独特的混淆脚本或命令,以帮助创建和测试 Bash 混淆检测。
媒体/幻灯片
这是有关 Bashfuscator 的所有媒体(即 YouTube 视频)或幻灯片链接的列表。
有效负载支持
尽管 Bashfuscator 确实可以在 UNIX 系统上运行,但它生成的许多有效负载却不能运行。这是因为大多数 UNIX 系统使用 BSD 风格的实用程序,而 Bashfuscator 是为与 GNU 风格的实用程序一起使用而构建的。将来可能会添加 BSD 有效负载支持,但目前使用 Bashfuscator 生成的有效负载应该可以在具有 Bash 4.0 或更高版本的 GNU Linux 系统上运行。
安装和要求
Bashfuscator 需要 Python 3.6+。
在基于 Debian 的发行版上,运行以下命令来安装依赖项:
sudo apt-get update && sudo apt-get install python3 python3-pip python3-argcomplete xclip
在基于 RHEL 的发行版上,运行以下命令来安装依赖项:
sudo dnf update && sudo dnf install python3 python3-pip python3-argcomplete xclip
然后,运行以下命令来克隆并安装 Bashfuscator:
git clone https://github.com/Bashfuscator/Bashfuscator
cd Bashfuscator
python3 setup.py install --user
仅支持基于 Debian 和 RHEL 的发行版。Bashfuscator 已在某些 UNIX 系统上进行了测试,但在这些系统上不受支持。
用法示例
对于简单的使用,只需传递你想要混淆的命令-c
,或者你想要混淆的脚本-f
。
$ bashfuscator -c "cat /etc/passwd"
[+] Mutators used: Token/ForCode -> Command/Reverse
[+] Payload:
${@/l+Jau/+<b=k } p''"r"i""n$'t\u0066' %s "$( ${*%%Frf\[4?T2 } ${*##0\!j.G } "r"'e'v <<< ' "} ~@{$" ") } j@C`\7=-k#*{$ "} ,@{$" ; } ; } ,,*{$ "}] } ,*{$ "} f9deh`\>6/J-F{\,vy//@{$" niOrw$ } QhwV#@{$ [NMpHySZ{$" s% "f"'"'"'4700u\n9600u\r'"'"'$p { ; } ~*{$ "} 48T`\PJc}\#@{$" 1#31 "} ,@{$" } D$y?U%%*{$ 0#84 *$ } Lv:sjb/@{$ 2#05 } ~@{$ 2#4 }*!{$ } OGdx7=um/X@RA{\eA/*{$ 1001#2 } Scnw:i/@{$ } ~~*{$ 11#4 "} O#uG{\HB%@{$" 11#7 "} ^^@{$" 011#2 "} ~~@{$" 11#3 } L[\h3m/@{$ "} ~@{$" 11#2 } 6u1N.b!\b%%*{$ } YCMI##@{$ 31#5 "} ,@{$" 01#7 } (\}\;]\//*{$ } %#6j/?pg%m/*{$ 001#2 "} 6IW]\p*n%@{$" } ^^@{$ 21#7 } !\=jy#@{$ } tz}\k{\v1/?o:Sn@V/*{$ 11#5 ni niOrw rof ; "} ,,@{$" } MD`\!\]\P%%*{$ ) }@{$ a } ogt=y%*{$ "@$" /\ } {\nZ2^##*{$ \ *$ c }@{$ } h;|Yeen{\/.8oAl-RY//@{$ p *$ "}@{$" t } zB(\R//*{$ } mX=XAFz_/9QKu//*{$ e *$ s } ~~*{$ d } ,*{$ } 2tgh%X-/L=a_r#f{\//*{$ w } {\L8h=@*##@{$ "} W9Zw##@{$" (=NMpHySZ ($" la'"'"''"'"'"v"'"'"''"'"''"'"'541\'"'"'$ } &;@0#*{$ ' "${@}" "${@%%Ij\[N }" ${@~~ } )" ${!*} | $@ $'b\u0061'''sh ${*//J7\{=.QH }
[+] Payload size: 1232 characters
您可以使用 将混淆的有效负载复制到剪贴板--clip
,或使用 将其写入文件-o
。
对于更高级的用法,请使用该--choose-mutators
标志,并准确指定您想要按什么顺序使用哪些混淆模块或变异器。还可以使用-s
参数来控制所使用的混淆级别。
bashfuscator -c "cat /etc/passwd" --choose-mutators token/special_char_only compress/bzip2 string/file_glob -s 1
[+] Payload:
"${@#b }" "e"$'\166'"a""${@}"l "$( ${!@}m''$'k\144'''ir -p '/tmp/wW'${*~~} ;$'\x70'"${@/AZ }"rin""tf %s 'MxJDa0zkXG4CsclDKLmg9KW6vgcLDaMiJNkavKPNMxU0SJqlJfz5uqG4rOSimWr2A7L5pyqLPp5kGQZRdUE3xZNxAD4EN7HHDb44XmRpN2rHjdwxjotov9teuE8dAGxUAL'> '/tmp/wW/?
??'; prin${@#K. }tf %s 'wYg0iUjRoaGhoNMgYgAJNKSp+lMGkx6pgCGRhDDRGMNDTQA0ABoAAZDQIkhCkyPNIm1DTQeppjRDTTQ8D9oqA/1A9DjGhOu1W7/t4J4Tt4fE5+isX29eKzeMb8pJsPya93' > '/tmp/wW/???
' "${@,, }" &&${*}pri''\n${*,}tf %s 'RELKWCoKqqFP5VElVS5qmdRJQelAziQTBBM99bliyhIQN8VyrjiIrkd2LFQIrwLY2E9ZmiSYqay6JNmzeWAklyhFuph1mXQry8maqHmtSAKnNr17wQlIXl/ioKq4hMlx76' >'/tmp/wW/??
';"${@, }" $'\x70'rintf %s 'clDkczJBNsB1gAOsW2tAFoIhpWtL3K/n68vYs4Pt+tD6+2X4FILnaFw4xaWlbbaJBKjbGLouOj30tcP4cQ6vVTp0H697aeleLe4ebnG95jynuNZvbd1qiTBDwAPVLTtCLx' >'/tmp/wW/?
?' ; ${*/~} p""${@##vl }ri""n''tf %s ' pr'"'"'i'"'"'$'"'"'n\x74'"'"'f %s "$( prin${*//N/H }tf '"'"'QlpoOTFBWSZTWVyUng4AA3R/gH7z/+Bd/4AfwAAAD8AAAA9QA/7rm7NzircbE1wlCTBEamT1PKekxqYIA9TNQ' >'/tmp/wW/????' "${@%\` }" ;p''r""i$'\x6e'''$'\164'"f" %s 'puxuZjSK09iokSwsERuYmYxzhEOARc1UjcKZy3zsiCqG5AdYHeQACRPKqVPIqkxaQnt/RMmoLKqCiypS0FLaFtirJFqQtbJLUVFoB/qUmEWVKxVFBYjHZcIAYlVRbkgWjh' >'/tmp/wW/?
' ${*};"p"rin''$'\x74f' %s 'Gs02t3sw+yFjnPjcXLJSI5XTnNzNMjJnSm0ChZQfSiFbxj6xzTfngZC4YbPvaCS3jMXvYinGLUWVfmuXtJXX3dpu379mvDn917Pg7PaoCJm2877OGzLn0y3FtndddpDohg'>'/tmp/wW/?
?
' && "${@^^ }" pr""intf %s 'Q+kXS+VgQ9OklAYb+q+GYQQzi4xQDlAGRJBCQbaTSi1cpkRmZlhSkDjcknJUADEBeXJAIFIyESJmDEwQExXjV4+vkDaHY/iGnNFBTYfo7kDJIucUES5mATqrAJ/KIyv1UV'> '/tmp/wW/
???' ${*^}; ${!@} "${@%%I }"pri""n$'\x74f' %s '1w6xQDwURXSpvdUvYXckU4UJBclJ4OA'"'"' |""b${*/t/\( }a\se$'"'"'6\x34'"'"' -d| bu${*/\]%}nzi'"'"'p'"'"'${!@}2 -c)" $@ |${@//Y^ } \ba\s"h" ' > '/tmp/wW/
??
' ${@%b } ; pr"i"\ntf %s 'g8oZ91rJxesUWCIaWikkYQDim3Zw341vrli0kuGMuiZ2Q5IkkgyAAJFzgqiRWXergULhLMNTjchAQSXpRWQUgklCEQLxOyAMq71cGgKMzrWWKlrlllq1SXFNRqsRBZsKUE' > '/tmp/wW/??
?'"${@//Y }" ;$'c\141t' '/tmp/wW'/???? ${*/m};"${@,, }" $'\162'\m '/tmp/wW'/???? &&${@^ }rmd\ir '/tmp/wW'; ${@^^ } )" "${@}"
[+] Payload size: 2062 characters
更详细的用法和示例请参考文档。
扩展框架
向框架添加新的混淆方法很简单,因为 Bashfuscator 被构建为一个模块化且可扩展的框架。Bashfuscator 的后端完成了所有繁重的工作,因此您可以专注于编写强大的混淆方法(有关添加模块的文档即将推出)。
作者和贡献者
- Andrew LeFevre ( capnspacehook ):项目负责人和创建者
- 慈善巴克(cpbarker):团队成员
- Nathaniel Hatfield ( 343iChurch ):编写 RotN Mutator
- Elijah Barker ( Elijah-barker ):编写十六进制哈希、文件夹和文件全局变量
- Sam Kreischer:很棒的标志
制作人员
- danielbohannon的优秀Invoke-Obfuscation和Invoke-DOSfuscation项目给了capnspacehook开始编写 Bashfuscator 的想法,并深入了解了如何编写健壮的混淆方法。
- DissectMalware,其关于 Bash 混淆的推文构成了一些 Mutators 的支柱,并为其他混淆技术提供了想法。
- ConsciousHacker,他的洞察力和建议给团队带来了很大帮助。
- Bash 徽标最初来自https://github.com/odb/official-bash-logo。
免责声明
Bashfuscator仅出于教育目的而创建,仅在您明确许可的计算机或网络上使用。Bashfuscator 团队对本项目中发生的任何非法或恶意行为不承担任何责任。
项目地址:
https://github.com/Bashfuscator/Bashfuscator