<menu id="guoca"></menu>
<nav id="guoca"></nav><xmp id="guoca">
  • <xmp id="guoca">
  • <nav id="guoca"><code id="guoca"></code></nav>
  • <nav id="guoca"><code id="guoca"></code></nav>

    vCenter獲取鎖屏Hash之volatility

    VSole2022-12-22 09:59:33

    前言

    VMware vCenter ESXI中經常會裝一些非常重要的業務虛擬服務器,Linux一般都是登錄狀態的,但是Windows機器鎖屏較多,想要獲取服務器權限,一般需要把vmem文件下載下來,用內存分析工具進行hashdump等,以突破其鎖屏獲取服務器權限。筆者在對volatility工具進行了解后,對分析vmem文件的手法進行了一定優化,可以提升解決鎖屏問題的效率。

    思路

    在了解了volatility內存取證工具后,想到了幾種辦法:

    python3版本

    1. VMware vCenter ESXI中自帶了python3.6.8,可以嘗試直接在esxi中部署volatility3項目;
    2. 利用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 -y
    Ubuntu系統: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使打包出來的是一個文件夾。

    # This file is Copyright 2019 Volatility Foundation and licensed under the Volatility Software License 1.0# which is available at https://www.volatilityfoundation.org/license/vsl-v1.0#
    import osimport sys
    from PyInstaller.building.api import PYZ, EXE,COLLECTfrom PyInstaller.building.build_main import Analysisfrom PyInstaller.utils.hooks import collect_submodules, collect_data_files, collect_dynamic_libs
    block_cipher = None
    binaries = []try:    import capstone
        binaries = collect_dynamic_libs('capstone')except ImportError:    pass
        # Volatility must be findable in sys.path in order for collect_submodules to work    # This adds the current working directory, which should usually do the tricksys.path.append(os.path.dirname(os.path.abspath(SPEC)))
    vol_analysis = Analysis(['vol.py',                         'volatility3/framework/plugins/windows/hashdump.py',                         'volatility3/framework/plugins/yarascan.py'],                        pathex = [],                        binaries = binaries,                        datas = collect_data_files('volatility3.framework') + \                        collect_data_files('volatility3.framework.automagic', include_py_files = True) + \                        collect_data_files('volatility3.framework.plugins', include_py_files = True) + \                        collect_data_files('volatility3.framework.layers', include_py_files = True) + \                        collect_data_files('volatility3.schemas') + \                        collect_data_files('volatility3.plugins', include_py_files = True),                        hiddenimports = collect_submodules('volatility3.framework.automagic') + \                        collect_submodules('volatility3.framework.plugins') + \                        collect_submodules('volatility3.framework.symbols'),                        hookspath = [],                        runtime_hooks = [],                        excludes = [],                        win_no_prefer_redirects = False,                        win_private_assemblies = False,                        cipher = block_cipher,                        noarchive = False)
    vol_pyz = PYZ(vol_analysis.pure, vol_analysis.zipped_data,              cipher = block_cipher)vol_exe = EXE(vol_pyz,              vol_analysis.scripts,              [('u', None, 'OPTION')],              exclude_binaries=True,              name = 'vol',              icon = os.path.join('doc', 'source', '_static', 'favicon.ico'),              debug = False,              bootloader_ignore_signals = False,              strip = False,              upx = True,              runtime_tmpdir = None,              console = True)vol_coll = COLLECT(vol_exe,                   vol_analysis.binaries,                   vol_analysis.zipfiles,                   vol_analysis.datas,                   strip=False,                   upx=True,                   upx_exclude=[],                   name = 'vol')
    

    打包,默認是放在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文件的方法,在斷網狀態下調試腳本運行過程的時候,才發現作者留的小驚喜:

    (venv) PS D:\PythonDev\project\volatility3-develop> python vol.py -vv -f "F:\Attck\Win10-TH-2.0\Windows 10 x64-490103e9.vmem" windows.hashdumpVolatility 3 Framework 2.4.1INFO     volatility3.cli: Volatility plugins path: ['D:\\PythonDev\\project\\volatility3-develop\\volatility3\\plugins', 'D:\\PythonDev\\project\\volatility3-develop\\volatility3\\framework\\plugins']INFO     volatility3.cli: Volatility symbols path: ['D:\\PythonDev\\project\\volatility3-develop\\volatility3\\symbols', 'D:\\PythonDev\\project\\volatility3-develop\\volatility3\\framework\\symbols']INFO     volatility3.framework.automagic: Detected a windows category pluginINFO     volatility3.framework.automagic: Running automagic: ConstructionMagicINFO     volatility3.framework.automagic: Running automagic: SymbolCacheMagicINFO     volatility3.framework.automagic: Running automagic: LayerStackerDEBUG    volatility3.framework.automagic.windows: Detecting Self-referential pointer for recent windowsDEBUG    volatility3.framework.automagic.windows: DtbSelfRef64bit test succeeded at 0x1ad000DEBUG    volatility3.framework.symbols.windows.pdbconv: Failed with <urlopen error [WinError 10060] 由于連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗。>DEBUG    volatility3.framework.symbols.windows.pdbconv: Attempting to retrieve http://msdl.microsoft.com/download/symbols/ntkrnlmp.pdb/118018959D8D7CA5AAB45B75AED5A9761/ntkrnlmp.pd_DEBUG    volatility3.framework.symbols.windows.pdbconv: Failed with <urlopen error [WinError 10060] 由于連接方在一段時間后沒有正確答復或連接的主機沒有反應,連接嘗試失敗。>WARNING  volatility3.framework.symbols.windows.pdbutil: Symbol file could not be downloaded from remote serverDEBUG    volatility3.framework.symbols.windows.pdbutil: Required symbol library path not found: ntkrnlmp.pdb\118018959D8D7CA5AAB45B75AED5A976-1INFO     volatility3.framework.symbols.windows.pdbutil: The symbols can be downloaded later using pdbconv.py -p ntkrnlmp.pdb -g 118018959D8D7CA5AAB45B75AED5A9761INFO     volatility3.framework.automagic: Running automagic: SymbolFinderINFO     volatility3.framework.automagic: Running automagic: KernelModule
    

    上述調試信息中,關鍵點是:

    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文件:

    將下載好的symbos文件放入以下目錄,重新運行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分鐘解決戰斗。

    發現問題,解決問題,總結經驗,分享方法,共同進步。

    附:python2版本與python3版本對比

    vol2

    Windows 7(ok)

    Windows 10(不ok)

    Linux環境下測試也是一樣的結果:

    Windows Server 2008(ok)

    Windows Server 2012(不ok)

    Windows Server 2016

    估計是不ok的

    vol3

    Windows 7(ok)

    Windows 10(ok)

    Windows Server 2012(ok)

    Windows Server 2016(ok)

    Windows Server 2019(ok)

    esxiyum
    本作品采用《CC 協議》,轉載必須注明作者和本文鏈接
    筆者在對volatility工具進行了解后,對分析vmem文件的手法進行了一定優化,可以提升解決鎖屏問題的效率。不過官方團隊并沒有打包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
    ESXI環境搭建和配置
    2022-05-09 13:32:39
    ESXI環境搭建和配置
    近日,Vmware發布安全公告,修復了VMware ESXi中存在身份驗證繞過漏洞(CVE-2021-21994)和拒絕服務漏洞(CVE-2021-21995),攻擊者可利用這兩個漏洞繞過身份驗證和發起拒絕服務攻擊。目前官方已發布安全版本進行漏洞修復,建議受影響用戶盡快更新至安全版本進行防護,做好資產自查以及預防工作,以免遭受黑客攻擊。
    漏洞公告2020年10月20日,VMware官方更新發布了VMware ESXi、VMware Workstation Pro/Player、VMware Fusion Pro/Fusion、NSX-T、VMware Cloud Foundation等多個產品存在安全漏洞的公告,其中VMware ESXi漏洞風險較高,CVE編號:CVE-2020-3992, 相關鏈接參考:... 根據公告,在VMware ESXi中使用的OpenSLP服務存在UAF漏洞,惡意攻擊者可以通過OpenSLP服務端口427實施攻擊,成功利用漏洞能實現遠程代碼執行效果,從而獲得目標系統管理權限,建議盡快測試漏洞修復的版本并及時升級。
    VMware 今天修補了一個 VMware ESXi 零日漏洞,該漏洞被某國贊助的黑客組織利用來后門 Windows 和 Linux 虛擬機并竊取數據。“受損的 ESXi 主機可能會迫使 VMware Tools 無法驗證主機到客戶的操作,從而影響客戶虛擬機的機密性和完整性。”VMware 在今天的安全公告中表示。
    美國安全廠商SentinelOne公司的研究員Alex Delamotte表示,“這些變體在2022年下半年至2023年上半年開始出現,表明對Babuk源代碼的利用呈現出上升趨勢。”許多大大小小的網絡犯罪團伙都將目光投向ESXi管理程序。
    安全內參5月12日消息,多個惡意黑客團伙利用2021年9月Babuk 勒索軟件泄露的源代碼,構建了多達9個針對VMware ESXi系統的不同勒索軟件家族。許多大大小小的網絡犯罪團伙都將目光投向ESXi管理程序。自2022年9月出現以來,Royal勒索軟件已在其泄露網站上宣稱對157家組織的事件負責,其中大多數攻擊針對美國、加拿大和德國的制造、零售、法律服務、教育、建筑及醫療服務組織。
    VMware ESXi是美國威睿公司的一款服務器虛擬化軟件,在全球被廣泛使用,其OpenSLP服務存在堆溢出高危漏洞,該漏洞發現于2021年2月,可導致遠程代碼執行,從而獲得目標系統管理權限。工業和信息化部網絡安全威脅和漏洞信息共享平臺將持續做好相關情況監測。相關組織或個人可向平臺報送網絡產品安全漏洞的情況,共筑安全網絡環境。
    VSole
    網絡安全專家
      亚洲 欧美 自拍 唯美 另类