关于网上一个加密的shell脚本的解密过程【爆破】

最近网友安装pptp vpn,到网上找了个脚本,我下下来Sublime Text3用看了下,代码第44行是乱码,因为代码后面被加密了,不过看加密的方式,使用gzexe加密的,其实就是被gzexe压缩了而已,网上看了下,用于加密的shell代码,很长,打算过段时间再写代码分析,这次就直接采用爆破的方式来直接得到解密后的shell脚本代码。

 

有兴趣的可以看下:这个用来加密其他脚本的shell脚本:

 

如果想安装pptp vpn 可以参考我写的《centos6.4安装搭建pptp vpn服务(附pptp vpn 一键安装包)|大步’s blog

 

被加密的hot-pptp-vpn-v1.0.6.sh脚本下载地址:  地址一           地址二

开始,我google了下,用网上到处贴的gzexe解压缩命令来还原这个加密的shell脚本

#gzexe -d  m hot-pptp-vpn-v1.0.6.sh     #http://www.dabu.info/?p=4403

,但是无效,估计是压缩和改名的顺序不同了,我也懒得去看使用的加密代码了,直接走捷径。所以,这算不得真正的解密,因为没把算法给弄出来,不过不难。

思路:因为是通过压缩改名的方式加密shell脚本,所以,必定有个解压的过程,以此得到可执行的shell脚本。但是为什么我们看不到被解密还原的shell脚本呢?那是因为作者在解压执行后,删除了被还原的shell脚本,所以我们找不到。只要我们在删除命令之前,插入一条cat命令,将临时还原的shell脚本导入到a.txt里就可以了。

具体方法如下:#http://www.dabu.info/?p=4403
首先大概了解这个加密脚本的执行过程,因为即使加密了,他其实还是shell脚本,可以加上-x参数,来看加密脚本的执行过程。
我这里被加密的脚本名为:hot-pptp-vpn-v1.0.6.sh  是一个pptp vpn 一键安装脚本,不得不说这脚本的作者,真tm的小气,居然这玩意也加密,而且又用这样简单的方式,还不如不加密,省了麻烦。

#sh -x hot-pptp-vpn-v1.0.6.sh   #-x参数是让shell一步一步显示执行过程

运行显示结果如下:

+ skip=44
+ tab=’    ‘
+ nl=’

+ IFS=’

++ umask
+ umask=0022
+ umask 77
+ gztmpdir=
+ trap ‘res=?
test -n “
gztmpdir” && rm -fr “gztmpdir”
(exit
res); exit res
‘ 0 1 2 3 5 10 13 15
+ type mktemp
++ mktemp -dt
+ gztmpdir=/tmp/tmp.VGXMV11806
+ gztmp=/tmp/tmp.VGXMV11806/hot-pptp-vpn-v1.0.6.sh
+ case
0 in
+ case `echo X | tail -n +1 2>/dev/null` in
++ echo X
++ tail -n +1
+ tail_n=-n
+ tail -n +44
+ gzip -cd
+ umask 0022
+ chmod 700 /tmp/tmp.VGXMV11806/hot-pptp-vpn-v1.0.6.sh
+ /tmp/tmp.VGXMV11806/hot-pptp-vpn-v1.0.6.sh
=========================================================================
* Hot CentOs install pptp vpn v1.0.6 Installer.Organized by blog.7QY.Com *
=========================================================================
*                                                                       *
*   This machine system: CentOS release 5.10 (Final)                     *
*                                                                       *
*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*
*                                                                       *
*   Tips: Select < 1 > to CentOs 5.x install pptp VPN                   *
*   Tips: Select < 2 > to CentOs 6.x install pptp VPN                   *
*                                                                       *
=========================================================================

Please input ( 1 or 2 ) to CentOs install pptp vpn
>> Or press Ctrl+C to cancel the installation (Ctrl+C?€?哄.瑁..?.
Select: (1) CentOs 5.x install pptp vpn |  (2) CentOs 6.x install pptp vpn
( 1/2):

直接看到:

+ chmod 700 /tmp/tmp.VGXMV11806/hot-pptp-vpn-v1.0.6.sh
+ /tmp/tmp.VGXMV11806/hot-pptp-vpn-v1.0.6.sh

会将临时解密的shell脚本放到/tmp/tmp.VGXMV11806/目录下,

而找到加密的shell脚本中,修改脚本执行权限的命令想对应的地方:

  umask umask
chmod 700 “
gztmp”             #这行修改临时解密shell脚本为700权限,”gztmp”就是临时解密的shell脚本
(sleep 5; rm -fr “
gztmpdir”) 2>/dev/null &      #这样就会把执行完后的临时解密shell脚本所在目录删除,”gztmpdir”就是临时目录
gztmp” {1+”@”}; res=$?

所以,我们将这其中的:

chmod 700 “$gztmp”

改成:

  cat  “$gztmp”  >a.txt

然后再次执行:

#sh hot-pptp-vpn-v1.0.6.sh

就可以在这个当前脚本所在目录看到一个a.txt的文件,就是被解密的shell脚本了。

####################over!!!!###########################################
很简单吧,确实如此。爆破确实容易,但是乐趣也少了很多,过段时间再把这个用于加密的shell脚本代码分析然后贴出来,最近什么都不想做,懒得没话说。

如果有人想完全的通过解压缩来获得原文件,那么我这说下大概的思路:
源代码有个skip变量,等于44。而用vi查看源代码,从第44行开始就是乱码了,说明要从第44行开始导入到另外一个文件中,来解压缩还原。
其中还有tail命令,所以,只要用-x参数稍微分析下,就可以得到完整的还原过程了。

 

##########################3

对了,忘了贴出解密后的shell脚本了,这个脚本的相关的软件下载地址失效了,不过只要稍微改下就可以用了

如下:

 

打赏
Bookmark the permalink.
0 0 投票数
文章评分
订阅评论
提醒
guest

0 评论
内联反馈
查看所有评论