bash -x打印日志中断 用BASH_XTRACEFD=3输出完整的bash -x日志
TL;DR
exec 3> bashx运行日志.log; BASH_XTRACEFD=3 bash -x 需要解密的脚本.sh
比较久以前, TG群里在讨论YGKKK对脚本混淆的事情.
有个群友发了一个 encoded.sh 说谁能解开 就 给一个 德鸡账户.
我上传到 github 了, 读者有兴趣可以自己玩玩.
当时我就用 bash -x 试了一下, 日志打印出来很多, 然后过一会儿就中断打印了.
打开文件看了一下, 第一层加密不难, 在解密tuic-yg脚本时遇到过.
把这一层解开, 只要把 eval ... 改为 echo ... > unpack1.sh 就行
也可以 在脚本的开头写一个"假"的 eval
eval () {echo "$@" >> unpack1.sh}
解开第1层的内容也上传Github了
到这一层的混淆/加密 我就解不开了. 卡了很久.
我把这个脚本保存了下来.
========
随着时间的流逝, 我时不时地会冒出一些想法.
比如, 修改bash.
甚至我都找到了一篇类似的操作记录 <Patch Bash5.0,让 -x 只打印而不执行,静态解混淆 Shell 脚本>
https://jiayu0x.com/2019/04/27/patch-bash5.0-for-deobfuscation/
但是我的需求和TA并不一样, 所以不能照抄修改, 我需要找到自己的修改方案. 实际动手难度很大.
比如, 设置一个虚拟机, 监控这个机器底层执行什么命令, 操作什么文件, 发出什么网络操作.
结果没有找到好方案.
======
不久前, 我实现了劫持 wget curl
这两天突然想起来, 再玩玩这个脚本.
就又燃起了兴致.
再加上现在GPT能力很强了. 我和各个GPT交流了很多.
有一些灵感是,
用 strace 跟踪实际上做了什么操作, 比如运行了什么, 读写了什么, ...
strace -f -s 65535 -o debug.log bash encoded.sh从日志中能看到一些中间状态, 但是看不到最终的"原始"脚本内容.
========
聊着聊着, 偶然从某个GPT得到一个灵感 (具体是哪个GPT告诉我的, 我已经记不得了)
把 FD3 定义到文件, 再把 bash -x 的xtrace输出定义到 FD3.
* FD = File Descriptors = 文件描述符
具体做法是这样
exec 3> bashx.log; BASH_XTRACEFD=3 bash -x encoded.sh
这样得到的日志文件 bashx.log 就是完整的 bash -x 记录了.
可以在末尾看到清晰的"原始"脚本内容






评论
发表评论