这是一系列的介绍CrackMapExec的很多功能的文章。下面是对CrackMapExec这个工具的一个概况性的介绍。
它是一个后渗透工具,像Veil-Pillage, smbexec一样
它是一种在域渗透过程中使各种渗透测试框架联合起来的 "胶水 "
可以完全并行的在同一时间连接,攻击多台主机.
它有一个内部数据库可以用来存储获得的凭据,同时来追踪具有管理员权限的用户.
它的功能是基于多种现有的工具
它是"安全": 该工具做的所有事情不是通过在内存中运行,就是使用各种 WinApi或者是windows的一些内建工具.
第一部分会介绍一些基础知识包括:使用凭据, dump凭据,以及使用payload模块来执行命令.
探索目标网络环境
探索目标网络环境显然是非常重要的,进入内网,你想干的第一件是应该是搞清楚目标内网中到底有些什么.
在上面我们给CWE(CrackMapExec)提供了一个 192.168.0.0/24的参数,这样他就会去扫描整个C段的主机信息.可以看到最后他发现了5台位于LAB域中的主机.默认情况下他会使用100线程,我们可以使用 -t 参数来指定线程数.
到目前为止,我们已经知道了我们的目标网络中到底有些什么东西.一旦我们拿到了一些用户凭据(这里假定已经拿到了一个普通域用户的账号密码,在实际的域渗透过程中,这也是很简单的.),我们就会想知道我们能访问什么.首先我们来侦查下:
这里我们使用拿到的凭据,登录到目标机器并且使用了 --pass-pol 参数,这会把域密码策略给dump下来.从输出中我们可以看到没有账号锁定阈值或持续时间.所以我们不需要担心帐户锁定,下面我们来试试在所有c段使用这个凭据去认证下,看看能拿到什么样的成果.
接下来让我们来列出所有的共享.
程序的输出给出了所以共享的名称以及你使用的凭据对他们的权限.同时注意到192.168.0.12的右边显示了黄色的"Pwn3d!"这意味着我们在这台机器上拥有管理员权限.
Dump SAM哈希并且执行命令
目前为止我们已经有了192.168.0.12这台机器上的管理员权限,首先我们看看谁登录到了这台机器上:
看起来好像域管理员登录到了这台机器上.我们来检验下
如果使用 -x 来执行命令的话,程序会默认使用WMI来执行命令(这里我们使用了一个--exec-method参数来指定使用smbexec方式来执行命令,这将允许我们以系统权限来执行命令.),我使用了一个net user Administrator /domain命令来验证该用户是否在 域管理员组中.在继续干其他事情之前我们先把本地机器的hash给dump下来.
现在我们已经拿到了很多hash,我们可以在之后使用 -H参数来进行 hash传递攻击(这些拿到的hash会被存储到CWE的数据库以及logs目录下),但是如果能拿到明文密码那就更好了.但是问题是现在这台机器是一台win10的机器,因而我们不能从内存中dump明文密码,但是真的不能吗?其实我们可以通过创建UseLogonCredential注册表键值来重新启用WDigest,接着我们就可以从 LSA内存中dump明文密码了.
现在我们只需要等着用户注销然后重新登录,就可以dump用户的明文密码了.当然我们可以强制让某个用户下线,比如下面让yomama用户下线了.
Payload 模块
用户可以自己来创建模块,程序自带的模块位于 modules目录下.因为此时我们需要明文密码所以我们使用mimikatz模块,使用 -m 参数指定模块路径.
好,现在我们已经拿到了域管理员的账号密码了.
其中有些模块需要一些参数,我们可以使用-o来指定
如果要查看模块的说明可以使用 --module-info
显然所有的这些功能都可以同时对多台主机使用.
总结
本文介绍了CME的基本用法,使用CME可以简化我们的工作,尽可能的少做些重复性的工作.