设为首页 收藏本站
查看: 1110|回复: 0

[经验分享] [译]用python来玩转Volume Shadow copies

[复制链接]

尚未签到

发表于 2017-5-5 10:09:46 | 显示全部楼层 |阅读模式
原文地址:http://pen-testing.sans.org/blog/pen-testing/2013/04/12/using-volume-shadow-copies-from-python
Volume Shadow copies 提供管理员工具来访问Windows,包含最新删除的的文件,带锁的文件等。他们就像通道一样直达Windows文件系统,用来挖掘各种有价值的信息。
Volume Shadow copies对于渗透测试来说价值无限,他们包含很多有价值的信息。加入域管理员知道渗透测试要进行测试,删除password.txt怎么办?没问题。密码文件还存在Volume Shadow copies中等你挖掘。类似NTDS.DIT(AD数据库)这类文件会被系统锁住所以你没法获得他们。使用Volume Shadow copies可以解决问题。你可以创建一个新的Volume Shadow copies,然后抓取文件的copy,然后就可以掠夺域中的users了。
可以使用win32com模块和COM来和WIN32_ShadowCopy服务进行交互来做你想做的。参数在python中使用COM很麻烦,但是有现成的库了。
获得某个系统的Volume Shadow copies列表很简单。可以使用vssown.vbs,查询对应的python语句,然后转换成python代码。(vssown.vbs可以从这里下载http://ptscripts.googlecode.com/svn/trunk/windows/vssown.vbs)。然后创建一个object,连接到服务器,使用ExecQuery来获得系统的所有Volume Shadow Copies列表。然后可以使用循环来遍历每一个shadow copy,获得"DeviceObject"属性。需要使用"DeviceObject"属性来访问Volume Shadow Copies中的数据。
DSC0000.png
可以参考的一些例子:http://www.activexperts.com/admin/scripts/wmi/python/0274/
创建一个Volume Shadow Copy很难,所以我们必须调用Win32_ShadowCopy Com对象。首先,我们导入必须的模块,然后创建一个叫"wmi"的对象,该对象指向一个Win32_ShadowCopy Com的对象。可以使用下面两行代码实现:

import win32com.client
wmi=win32com.client.GetObject("winmgmts:\\\\.\\root\\cimv2:Win32_ShadowCopy")

我们需要为这个Win32_ShadowCopy对象调用"create"方法。执行一个模块需要使用wmi对象的ExecMethod()方法。例如 "wmi.ExecMethod(<method name> , <com object parameters>)"。第一个参数是目标方法名,第二个参数是一个含有目标方法名的COM对象。
首先,创建一个叫“createmethod”的对象指向“Create”方法。然后创建一个叫createparams的对象指向create方法的参数。然后使用createparams对象来检查参数设值。
DSC0001.png
CreateMethodCreateMethod指向Win32_ShadowCopy对象的create方法。CreateParams指向create方法的参数。可以看到create方法需要叫“Context”和“Volume”的参数。“Context”是第一个参数,“Volume”是第二个参数。然后我使用list来检查这些参数的当前值。可以看到"Context"的值是"ClientAccessible","Volume"的值是"None"。根据MSDN,我们必须为“Volume”参数设置一个盘符:
DSC0002.png
现在可以调用ExecMethod。结果将会在COM对象列表的Properties_属性中。第一项的“.value”是响应值。可以参考http://msdn.microsoft.com/en-us/library/windows/desktop/aa394428%28v=vs.85%29.aspx来了解响应码。
如果响应码是0,那么第二项将会含有新Volume Shadow Copy的ID。
DSC0003.png
我的shadow copy ID是4CDDDE4F-4B00-49FE-BF07-1D89B3325AD,现在检查VSSADMIN来看看它是否被创建了。
可以使用vssadmin list shadows命令来查看存在的volume。我们可以看到已经创建的shadow copy 4CDDDE4F-4B00-49FE-BF07-1D89B3325ADD
DSC0004.png
结合上面的代码,我们使用下面的代码来创建一个volume shadow copy:
DSC0005.png
现在可以像读系统文件一样读取Volume Shadow copies数据。注意:Volume Shadow copies只可以读,不可以写。
可以使用python文件系统接口来检查一个文件是否存在。
DSC0006.png
可与你想打开一个文件,读取内容,如下:
DSC0007.png
关于Volume Shadow copies,我需要做的只是vss_list()和vss_create()这两个函数。如果你需要其他东西,这两个函数可以变更成你需要的样子。代码下载地址
http://counterhack.net/vssown.py.txt
代码:
DSC0008.png

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-373316-1-1.html 上篇帖子: Python Web编程 :10分钟创建简易博客 下篇帖子: python入门(四)字符串和列表值
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表