cnhackteam7 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 前言 在之前文章《渗透基础——从lsass.exe进程导出凭据》 介绍了本地导出凭据的方法,而在渗透测试中,经常遇到的情况是需要远程导出凭据,本文将要介绍远程导出凭据的思路和方法,记录细节 0x01 简介 本文将要介绍以下内容: 思路 实现方法 lsassy介绍 0x02 思路 在远程导出凭据时,需要考虑以下几点: (1)需要实现远程命令执行,关于远程命令执行,可以参考之前的文章《在远程系统上执行程序的技术整理》 (2)由于保护措施的限制,不同环境需要不同的导出方法 (3)远程导出lsass进程的倾销文件后,通常会选择将倾销文件复制到本地,解析得到口令哈希,而有的时候lsass进程的倾销文件很大,所以需要考虑传输文件的效率 (4)对于多个系统,重复劳动太多,效率不高 综合以上几点,我们需要一个方便快捷的方法:支持多种导出方法,能够直接解析出口令哈希,操作自动化以提高效率 这里可以使用开源工具伊莎西,地址为:https://github.com/Hackndo/lsassy 0x03 lsassy介绍 1.安装使用 安装命令: 点安装lsassy 测试命令: lsassy -u管理员-p密码1 192.168.1.1 在输出上,使用术语颜色添加了颜色显示,在默认Windows cmd下无法正常显示颜色,会导致显示格式不友好,存在一些乱码 为了解决Windows操作系统操作系统下格式乱码的问题,可以修改\ lib \ site-packages \ lsassy \ logger。py,代码如下: 导入日志记录 导入操作系统 导入系统 LsassyFormatter类(日志记录。格式化程序): def __init__(self): 伐木。格式化程序。_ _ init _ _(self,' %(bullet)s %(线程名)s %(消息)s ',无) if os.name=='nt ': 自我。蓝色,自我。白色,自我。黄色,自我。红色,自我NC='','','','',' ' 否则: 自我. BLUE=' \ 033[1;34米 自我WHITE=' \ 033[1;37米 自我. YELLOW=' \ 033[1;33米 自我. RED=' \ 033[1;31米 自我. GREEN=' \ 033[1;32米 自我. NC='\033[0m ' 定义格式(自身,记录): if record.levelno==logging .信息: record.bullet='[*]{} ' .格式(自我. NC) elif record.levelno==logging .调试: record.bullet='[*]{} ' .格式(自我. NC) elif record.levelno==logging .警告: record.bullet='[!]{}'.格式(自我. NC) elif record.levelno==logging .错误: record.bullet='[x]{} ' .格式(自我. NC) 否则: record.bullet='[ ]{} ' .格式(自我. NC) if record.exc_info和logging.getLogger().getEffectiveLevel()!=日志记录。调试: record.exc_info=无 返回日志记录Formatter.format(self,record) 定义高亮显示(消息): 返回消息 def init(quiet=False): 处理程序=日志记录StreamHandler(sys.stdout) 处理程序。设置格式化程序(lsassy formatter()) logging.getLogger().addHandler(处理器) logging.getLogger().设置级别(日志记录。信息) logging.addLevelName(25,"成功") setattr(logging,' success ',lambda message,*args: logging.getLogger()._log(25,message,args)) logging.getLogger().禁用=安静 2.打包成exe 这里可以使用pyinstaller,主程序代码为https://github。com/hack ndo/lsassy/blob/master/lsassy/console。巴拉圭 打包成单独可执行程序的扩展名的命令: pyinstaller -F console.py 生成console.exe后,在执行时会报错提示缺少组件 根据输出提示修改打包命令,添加引用模块: py安装程序-F控制台。隐藏导入unicode。后端。纯粹。隐藏导入unicode。后端。纯粹。隐藏-导入unicode。后端。纯粹。AES-hidden-import unicode。后端。纯粹。RC4 此时虽然能够正常启动console.exe,但是无法运行导出功能 调试方法:添加参数-vv,能够看到lsassy.dumpmethod.comsvcs找不到 添加所有依赖包,得到完整的打包命令: py安装程序-F控制台。隐藏导入unicode。后端。纯粹。隐藏导入unicode。后端。纯粹。隐藏-导入unicode。后端。纯粹。AES-hidden-import unicode。后端。纯粹。RC4-隐藏-进口lsassy。转储方法。隐藏-导入lsassy。转储方法。com SVCs _ stealth-hidden-import lsassy。导入lsassy。转储方法。dll注入隐藏导入lsassy。转储方法。杜(姓氏) 此时生成的console.exe可以正常使用 3.支持的导出方法 (1)comsvcs 使用c:\ windows \ system32 \ com SVCs。动态链接库的导出函数小型转储()获得lsass进程的倾销文件 细节可参考之前的文章《MiniDumpWriteDump via COM+ Services DLL》 的利用测试 可直接使用 (2)comsvcs_stealth 方法类似comsvcs,区别是先将c:\ windows \ system32 \ com SVCs。动态链接库复制到c:\windows\temp并重命名,使用新的动态链接库获得lsass进程的倾销文件 可直接使用 (3)dllinject 通过动态链接库注入的方式实现 美国动力会议注入的方法可参考《通过APC实现Dll注入——绕过Sysmon监控》 需要加入参数:-O loader_path=loader.exe,dll_path=inject.dll (4)dumpert 技术细节:https://github。com/包抄nl/Dumpert 通过API MiniDumpWriteDump()获得lsass进程的倾销文件 需要加入参数:-O dumpert_path=dumpert.exe (5)dumpertdll 方法同上,区别是使用动态链接库文件作为参数 需要加入参数:-O dumpertdll_path=dumpert.dll (6)edrsandblast 技术细节:https://github。com/wave stone-CDT/edr爆炸 利用带有签名的驱动程序获得lsass进程的倾销文件 需要加入参数:-O edr blaster _ path=edr blaster。exe,RTCore64_path=RTCore64.sys,ntoskrnl _ path=ntoskrnloffsets。战斗支援车 (7)mirrordump 技术细节:https://github。com/CCob/镜像转储 实现流程: 加载一个LSA SSP插件 在插件中泄露lsass.exe的进程句柄 通过API MiniDumpWriteDump()获得lsass进程的倾销文件 需要加入参数:-O mirrordump _ path=mirrordump。可执行程序的扩展名 (8)mirrordump_embedded 方法同上,不需要Mirrordump.exe作为参数 需要注意的是镜像转储无法自动清除已注册的LSA SSP插件,使用该方法后会留下以下痕迹: LSA SSP插件保存在C:\Windows\System32,名称为八位随机字符,后缀名为动态链接库 lsass进程中残留未卸载的动态链接库 痕迹如下图 清除痕迹的方法:先卸载lsass进程中加载的dll,再删除动态链接库文件 关于枚举和清除LSA SSP插件的细节可参考之前的文章《Mimikatz中SSP的使用》 可直接使用 (9)nanodump 技术细节:https://github。com/帮助系统/nanodump 优点是支持多种方式泄露lsass进程句柄 需要加入参数:-O nanodump_path=nanodump.exe (10)ppldump 技术细节:https://github.com/itm4n/PPLdump 支持Win10和服务器2019 能够绕过受保护的工艺灯对lsass进程的保护 相关细节: https://itm4n.github.io/lsass-runasppl/ https://博客。scrt。ch/2021/04/22/绕过-LSA-用户保护区/ 需要加入参数:-O ppldump_path=PPLdump.exe (11)ppldump_embedded 方法同上,不需要PPLdump.exe作为参数 可直接使用 (12)procdump 通过procdump.exe获得lsass进程的倾销文件 需要加入参数:-O procdump_path=procdump.exe (13)procdump_embedded 方法同上,不需要procdump.exe作为参数 可直接使用 (14)rdrleakdiag 目标系统需要在c:\ windows \系统32\下存在文件rdrleakdiag.exe 默认存在的系统: 视窗10 视窗8.1 视窗8 视窗7 windows Vista 6 . 0 . 6001 . 18000 只能执行一次,第二次执行需要重启操作系统。 可以直接使用。 (15)wer 技术详情:3359github.com/powershell黑手党/powersploit/blob/master/ex filtering/out-minidump . PS1 用Powershell调用API MiniDumpWriteDump()获取lsass进程的dmp文件。 可以直接使用。 0x04 小结 介绍了远程导出lsass.exe进程证书的思想,逐一介绍了Lsassy使用的导出方法,并对技术细节进行了分析。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子