vCenter获取锁屏Hash之volatility

声明

出品|先知社区(ID:LeeH)

以下内容,来自先知社区的Bamboo作者原创,由于传播,利用此文所提供的信息而造成的任何直接或间接的后果和损失,均由使用者本人负责,长白山攻防实验室以及文章作者不承担任何责任。

前言

VMware vCenter ESXI中经常会装一些非常重要的业务虚拟服务器,Linux一般都是登录状态的,但是Windows机器锁屏较多,想要获取服务器权限,一般需要把vmem文件下载下来,用内存分析工具进行hashdump等,以突破其锁屏获取服务器权限。笔者在对volatility工具进行了解后,对分析vmem文件的手法进行了一定优化,可以提升解决锁屏问题的效率。

思路

在了解了volatility内存取证工具后,想到了几种办法:

python3版本

  • VMware vCenter ESXI中自带了python3.6.8,可以尝试直接在esxi中部署volatility3项目;

  • 利用pyinstaller将volatility3进行打包,生成可执行文件拖到esxi中使用。根据打包环境不同,又有两种思路:

  • 在esxi上部署volatility3项目后,打包出来的会更适用;

  • 在其他Linux中部署volatility3项目(环境尽可能接近esxi),打包出来用。

  • python2版本:

    最一开始对项目了解的不够深入,没注意到项目团队已经把volatility2制作成了可执行文件,导致前期一直在死磕打包volatility3,后来在小伙伴的提醒下,发现3gstudent师傅研究了利用volatility2进行Windows锁屏问题解决,在此先膜拜下师傅。

    不过官方团队并没有打包volatility3的可执行程序,原因写的是打包出来的packages会被识别为恶意软件,解决了这个问题就会出可执行程序了。

    过程

    思路一、直接在esxi中部署volatility3项目

    Linux环境下的esxi,这个思考很快就被证明不太可行了,volatility3需要多个系统库和pip库:

    yum install zlib &&\yum install zlib-devel &&\yum install bzip2-devel &&\yum install ncurses-devel &&\yum install sqlite-devel &&\yum install readline-devel &&\yum install gcc &&\yum install libffi &&\yum install libffi-devel &&\yum install gcc-c++\yum install openssl-devel\yum install tk-devel

    需要pip3

    yum install xz-develyum install epel-releaseyum install python35-devel

    需要n多个系统依赖以及n多个pip依赖

    pip3 install pefile==2018.8.8  -i http://pypi.douban.com/simple --trusted-host pypi.douban.compip3 install backports.lzma -i http://pypi.douban.com/simple --trusted-host pypi.douban.compip3 install pycryptodomepip install importlib-metadata==0.6

    思路二、打包Vol进行后利用

    1.选好合适的系统

    CentOS 7.9跟exsi的GLIBC库版本一致,自带python3.6,比较合适。

    安装编译后续可能会用到的依赖::

    yum install zlib &&\yum install zlib-devel &&\yum install bzip2-devel &&\yum install ncurses-devel &&\yum install sqlite-devel &&\yum install readline-devel &&\yum install gcc &&\yum install libffi &&\yum install libffi-devel &&\yum install gcc-c++ &&\yum install openssl-devel &&\yum install tk-devel

    2.下载Volatility3项目

    GitHub地址:https://github.com/volatilityfoundation/volatility3

    3.安装pip依赖

    正常安装到yara的时候应该会报错,需要安装python-dev库才行

    CentOS系统:# 安装EPEL源yum install epel-release -y# 默认安装python3.6开发包yum install python3-devel -yUbuntu系统:apt-get install python3-dev

    装好python-dev之后,安装依赖即可。

    pip3 install -r requirements.txt

    也可以这么安装

    pip3 install -r requirements.txt -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

    4.安装Volatility3

    需要先更新下setuptools不然等下安装编译 Python的相关包安装会报错:

    pip3 install --upgrade setuptools

    安装Volatility3

    python3 setup.py install

    完成安装后,测试是否能正常使用

    python3 vol.py

    查看运行是否有异常提示:

    python3 vol.py -vv

    测试功能是否正常

    python3 vol.py -f xxx.vmem windows.infopython3 vol.py -f xxx.vmem windows.hashdump

    5.安装pyinstaller

    pip3 install pyinstaller==3.6

    6.打包Volatility3

    修改spec,默认只有vol.py,增加了hashdump和yarascan;还增加了vol_coll使打包出来的是一个文件夹。打包,默认是放在dist目录下。

    pyinstaller vol-new.spec

    需要把打包完成的vol文件夹中base_library.zip解压一下,解压至当前目录即可。

    7.使用

    从CentOS7中把vol压缩下,搞到目标esxi服务器上解压,给好权限应该就能用了。

    PS:Volatility3做Windows内存文件分析时,需要联网到微软网站那边下一个字符库,所以需要目标esxi能出网。

    8.踩坑过程

    8.1. GLIBC版本问题

    使用Ubuntu16及kali之类的系统,打包出来的vol在exsi中无法运行

    查看esxi的GLIBC版本,发现为2.17:

    尝试将高版本的so文件拷贝到esxi系统中,尝试将libc-2.27.so修改为libc.2.17.so,系统立马就GG了,还好mobax的sftp还能用:

    需要找GLIBC版本一致,或更低版本的系统,打包vol才可以运行:

    centos6.6服务器的glibc默认版本为2.12

    centos7系统的默认glibc版本已经升级2.17

    其中vultr中默认的CentOS7版本就可以:

    strings /usr/lib64/libc.so.6 | grep GLIBC

    以及centos7.9版本也是可以的

    8.2. No module named 'encodings'

    在esxi中运行打包好的vol会提示No module named 'encodings'

    解决办法,把base_library.zip解压出来即可,注意需要解压到当前目录,不能解压到base_library文件夹里。

    8.3. spec打包问题

    左边是打包为单一文件,右边是打包为一个文件夹

    8.4. 正常打包后功能异常

    解决方法:

    其实就是作者写vol.spec的时候,有些pip库没有打包上,增加上hashdump和yarascan就行了。

    vol_analysis = Analysis(['vol.py',                        'volatility3/framework/plugins/windows/hashdump.py',                        'volatility3/framework/plugins/yarascan.py'],

    9. 联网问题

    在esxi中直接运行打包好的Volatility,在联网的情况下,已经可以完成hashdump。但是在无法联网的时候,无法下载到symbols文件,也就是pdb(program

    database)文件,且该文件无法直接通过浏览器下载到。通过对项目的深入了解,发现作者有提供了下载pdb文件的解决办法。

    作者并没有在readme中写明下载pdb文件的方法,在断网状态下调试脚本运行过程的时候,才发现作者留的小惊喜,上述调试信息中,关键点是:

    Symbol file could not be downloaded from remote serverRequired symbol library path not found: ntkrnlmp.pdb\118018959D8D7CA5AAB45B75AED5A976-1The symbols can be downloaded later using pdbconv.py -p ntkrnlmp.pdb -g 118018959D8D7CA5AAB45B75AED5A9761

    也就是说用pdbconv.py可以下载到所需的pdb文件:

    将下载好的symbols文件放入以下目录,重新运行vol.py进行hashdump即可:

    /tmp/vol/volatility3/framework/symbols/windows/ntkrnlmp.pdb/

    坑点

    这里遇到了个小问题就是pycharm可以正常运行该脚本进行下载,但是本地命令行运行脚本会提示No module named 'volatility3',网上搜了下说是环境变量的问题,加上打印环境变量的语句,pycharm和命令行分别运行了下,确实是pycharm多了些路径:

    print("当前工作目录:",os.getcwd())print("python搜索模块的路径集合:",sys.path)

    定位到问题后,根据网上的解决办法,在pdbconv.py中加上缺少的路径即可正常使用该脚本:

    sys.path.append("D:\\PythonDev\\project\\volatility3-develop")sys.path.append("D:\\Program\\PyCharm\\PyCharm 2022.2.3\\plugins\\python\\helpers\\pycharm_display")sys.path.append("D:\\Program\\PyCharm\\PyCharm 2022.2.3\\plugins\\python\\helpers\\pycharm_matplotlib_backend")


    总结

    目前不出网状态解一个windows的hash大概需要3-7分钟,如果优化这个工具确实有很高实用价值,后续会继续进行优化,争取能3分钟解决战斗。发现问题,解决问题,总结经验,分享方法,共同进步。


    欢迎关注长白山攻防实验室微信公众号

    定期更新优质文章分享

    ©著作权归作者所有,转载或内容合作请联系作者
    • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
      沈念sama阅读 206,214评论 6 481
    • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
      沈念sama阅读 88,307评论 2 382
    • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
      开封第一讲书人阅读 152,543评论 0 341
    • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
      开封第一讲书人阅读 55,221评论 1 279
    • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
      茶点故事阅读 64,224评论 5 371
    • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
      开封第一讲书人阅读 49,007评论 1 284
    • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
      沈念sama阅读 38,313评论 3 399
    • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
      开封第一讲书人阅读 36,956评论 0 259
    • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
      沈念sama阅读 43,441评论 1 300
    • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
      茶点故事阅读 35,925评论 2 323
    • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
      茶点故事阅读 38,018评论 1 333
    • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
      沈念sama阅读 33,685评论 4 322
    • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
      茶点故事阅读 39,234评论 3 307
    • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
      开封第一讲书人阅读 30,240评论 0 19
    • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
      开封第一讲书人阅读 31,464评论 1 261
    • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
      沈念sama阅读 45,467评论 2 352
    • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
      茶点故事阅读 42,762评论 2 345

    推荐阅读更多精彩内容