提取大学老师提供的『带壳』PPT

警告:请勿将本文中所介绍之方法用于侵犯著作权等违法或违背道德的行为,技术无罪,在合理合法之范围中运用你掌握的技术!

我所就读院校的高数老师下发给我们的课件PPT是EXE格式,运行后会自动调用打包的Microsoft PowerPoint Viewer来阅览幻灯片。学校方面采用此方法,显然意在阻止学生将其修改后(尤其是去除校徽等版权相关标识)二次传播。

但作为『智能设备时代』的学生,课件在Android机或是Mac OS X上无法阅览——后者尚可用虚拟机解决,前者则毫无办法。向老师索要*.ppt格式的原文件,老师也并不同意……所以只得自己动手丰衣足食。

于是我便进行了如下尝试:

  1. 直接将*.exe的程序重命名为*.zip并提取(失败)
  2. 用HxD从该文件中找出解压密码(失败)
  3. 用DiskPulse监视磁盘动作,从临时文件中提取(失败)
  4. Dump出该程序运行后的内存,用HxD提取(失败)
  5. 通过Windows的文件权限管理使其创建的临时文件无法删除,进而提取(成功)

1.直接将exe的程序重命名为zip

直觉告诉我这种exe的程序多数是由压缩软件创建的"自解压包",于是将其重命名为zip并用BandiZip打开。结果如下图

得以知晓这个压缩包里有什么文件了。但是问题来了——其一,没发现.ppt或.pptx的文件;其二,每个文件的名称后面都有一个星号*,代表这个文件被加密了,需要输入密码才能解压出来.

印象中zip的密码似乎比较容易暴力破解*1,用一款『还原zip密码』的软件在虚拟机中运行,试图暴力破解。但该软件并不识别改后缀名后的zip文件

此方法就此失败.


2.用HxD*2打开这个.exe文件,在其中搜索passwordpasswdcodecryptcipher等关键词,试图一次找到解压密码或文件加密的密钥,亦无果。


3.运行DiskPulse*3,之后运行该.exe文件,监视其对磁盘的操作。该程序向临时文件夹写入大量以『PPT+4位HEX』为文件名、tmp为后缀名的文件,每个*.tmp文件大小2KiB,显然与PPT大小不符。

该程序对文件操作有如下流程

  1. 解压压缩包中除OLECONL1.DLL外的所有文件到临时文件夹,后删除
  2. 在临时文件夹生成大量*.tmp文件
  3. OLECONL1.DLL解压到临时文件夹,后删除
  4. 其他压缩包中的文件,直到该程序关闭才被从临时文件夹中删除

有了此发现后我试图用资源管理器访问C:\Users\Hardrain\AppData\Local\Temp\ch1_1.exe\目录,但我一旦点击ch1_1.exe文件夹,资源管理器窗口立刻被关闭,猜测是该软件的保护措施。但我还是设法知晓了其中的文件*4

cd C:\Users\Hardrain\AppData\Local\Temp\ch1_1.exe\ 
dir .\

命令行返回了该目录中的文件,与压缩包中的文件相比,OLECONL1.DLL并不存在。这也符合DiskPluse提供的数据。

根据压缩包中OLECONL1.DLL的大小及该程序对此文件"特殊对待",我认为其就是ppt文件,只是被这个软件伪装为dll文件(改后缀名)罢了。后续研究也证明了我的猜测正确。


4.Dump内存后使用HxD试图完成提取

纯粹是突发奇想、不切实际的东西。曾听闻一家俄罗斯公司制造了能"破解"TrueCrypt、Bitlocker等磁盘加密的工具,破解二字加引号是因为它无法做到密码学意义上的破解,而是通过内存转储文件*5或休眠文件来获取密钥进而解密,换言之,称为『盗取密钥』比『破解』更为合适。

我希望以此原理取得密钥,可我哪有如此高的技术水平……


5.这一步操作为防止对我的主机造成安全威胁(参考"江民炸弹"*6事件),转到虚拟机完成.

执行该程序,用任务管理器查看pv.exe*7的命令行,发现OLECONL1.DLL正是被伪装成dll的ppt文件,与我之前的猜测一致.

清空C:\Users\Myuser\AppData\Local\Temp文件夹,并通过权限设置,禁止所有人:

  1. 删除此文件夹
  2. 删除此文件夹中的任何文件/文件及
  3. 对此文件夹取得所有权
  4. 更改此文件夹的权限

之后再次运行此程序并退出,发现OLECONL1.DLL*8果然没被删除,将其拷贝到主机上,更名为1_1.ppt后发现其可被PowerPoint 2013打开.

就此完成——其实只要会看任务管理器中的命令行并熟悉Windows的文件权限,不用工具亦可完成此次尝试中的全部内容,提取出PPT原文件.


*1.ZIP使用私有算法(ZipCrypto),并被证实强度低于AES-128,甚至与DES相当.
*2.HxD:一种十六进制编辑器
*3.DiskPulse:磁盘操作监控软件
*4.Windows/DOS的命令行中路径使用反斜杠\,而Linux/Unix使用斜杠/;此外,我还几次在Windows的命令行中用ls -Al试图列出目录,而应该使用dir...
*5.按照默认设置,Windows宕机时会被创建
*6.江民公司为打击盗版,利用MBR分区表设计之漏洞,向盗版杀毒软件用户硬盘中注入"逻辑锁",使系统无法正常运行,后因此被政府部门罚款方才停止此行为
*7.Microsoft Powerpoint Viewer的进程名
*8.有时OLECONL1.DLL会被该程序更名为OLECONL*.DLL,*为1位数字

12条评论

  1. 博主你好,这样的课件怕学生发布出来,“保护版权”仅仅是个掩饰敷衍的笑话说辞,水平太低内容太烂才是真正原因之一。

    1. @广西大学 : 其实我不这么认为.
      这样做不能阻止课件被学生发布,而是能阻止课件被学生去除版权信息后发布.

  2. 我想提醒你,刚刚我进入你的网站,被HPKP给挡在外面了。此外,我刚刚发现你Apache设的加密套件不对,在Windows 7/Firefox 49下访问异常。很多浏览器默认利用服务器发送的101 Upgrade协商指令(这是Apache 默认的,一般没人这么干了,用ALPN,但是无论哪种协商方式和后面提到的后果一致)升级h2时,浏览器直接就会因为服务器强制在h2下使用不安全套件(server prefer ciphers=on)而强行报错断开。

    1. @云间守望 : 我也有注意到你所提及之问题:

      1. 关于PKP导致SSL报错的问题:由于最近为解决SNI在某些浏览器上不被支持而更换了本站SSL证书(停用Positive SSL而是用Let's Encrypt)导致的,更换完后我也发现了此问题
      2. 关于加密套件:这个应该是由于使用AES-CBC的Cipher Suites造成的,有些浏览器不支持AES-GCM,因此还不能将其停用。不知你有何解决方法?
    2. @云间守望 : 问题2解决了:
      SSLCipherSuite从很简单的HIGH:3DES:!aNULL修改成ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-SHA256:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES256-SHA:AES128-SHA256:AES128-SHA:CAMELLIA:3DES:!aNULL,手动定义加密套件的顺序

      1. @HardRain : 把ECDSA-GCM-AES-SHA2这一类提前,后面接ECDSA-CBC,再是RSA+AES。DSA等弱算法抛弃,最后只留下3DES+CBC作为XP+Chrome的Fallback。

    1. @云间守望 : 并没有破解Office PowerPoint生成的PPS文件
      经查是老师使用"www.china-drm.org"网站提供的『课件加密工具』打包的
      其实这个工具想的很周到,比如:

      1. 阻止用户用资源管理器查看其临时文件
      2. 禁用截图软件
      3. 伪装成dll的ppt文件加载至内存后便从临时文件夹删除

      但可能因为过于古老,栽在了Windows的权限管理上.

评论已关闭。