使用 Core dump 解密加密的sh脚本

linux core dump 从内存中读取shell脚本

Fython 发布

使用 Core dump 解密加密的脚本

之前遇到网上的集成的shell脚本有点问题想手动修改下,发现脚本是加密的,网上找了好久发现有gzexeshc加密方法都尝试了一遍,可惜解密都不成功,最后用了一个粗暴的办法就是任何程序总要加载到内存运行的吧,那就直接中断coredump查看内存里的内容,以下是具体方法。

root用户执行如下命令

ulimit -c unlimited
echo "/core_dump/%e-%p-%t.core" > /proc/sys/kernel/core_pattern
mkdir /core_dump

以上第一句是设置内核coredump大小,这里设置不限制。第二句是设置coredump存储位置和格式,%e代表可执行程序名,%p代表pid, %t代表生成时间。然后去执行脚本如xxx.sh

./xxx.sh 6 start & (sleep 0.01 && kill -SIGSEGV $!)

之后会输出类似[1]+ Segmentation fault (core dumped)...的提示,然后查看/core_dump文件夹下,就会有dump出来的文件了,直接vim打开查看会有一些乱码手动处理一下就可以了。

如果在core_dump文件夹下没有dump出来的文件,可使用如下命令测试然后查看是否有文件生成。

sleep 15 &
killall -SIGSEGV sleep

正常情况下core_dump文件夹下会有以sleep开头的文件。

分享

1 评论    Fython's Blog
  • 最近刚好也遇到了这个问题 网上查的资料说用unshc 没错 大部分都可以正常解密 但总是有少部分不可以 猜测可能是因为作者修改了shc源码 用了非官方shc加密的脚本就不能用一般方法解密了 这种脚本也非常多 于是我业余进行了一些探究 下面说一说自己用过的一些方法 1.枚举解密。用objdump -Tt a.sh.x|grep "push %rbp"可以看到多个函数地址有push操作,一般xsh函数就在这里面的某个地址里 所以写脚本try_arc4_addr_crack.sh,依次提取每个地址然后用unshc -a $addr解密,实测这个方法一般可以找出正确地址。 2.hook execve函数。仔细看shc处理shell脚本后生成的c代码可知 脚本内容编码后放在data中 在xsh函数中完成解密 解密后的内容保存在scrpt变量中 再通过execve执行 相当于模板 因此可以hook execve函数 待其执行时获取执行参数 即可知道shell脚本原文 。

    最终使用第二个方法成功解密了非官方shc加密的elf可执行文件

免登录入口