前面介绍过一些利用漏洞进入Windows系统,然后进行提权。但是我们总不能每次都通过漏洞进入目标系统吧,所以我们要想办法获取目标系统的管理员账户密码,这样就可以避免漏洞被打补丁、木马被查杀后失去目标系统的控制权。当然遇到喜欢频繁更换密码的管理员,我们偶尔获取了一次管理员账户密码也没用。 这里就来介绍一种在Windows系统中获取账户密码的工具:WCE。其实这种工具已经被很多安全查杀工具添加到了特征库中,所以你想使用wce需要关闭目标电脑中的安全查杀工具。 Windows身份认证的过程首先来介绍一下Windows身份认证的过程: - 在登录目标系统时,会将输入的密码进行LMhash和NThash加密;
- 然后将加密后的密码与SAM账户数据库进行比对,如果比对匹配,则成功登录操作系统;
- 如果是远端的主机尝试进行登录目标系统,也是通过远端主机自身将输入的密码进行LMhash和NThash计算,将加密后的密文通过网络进行传输到目标主机。
从上面的认证过程可以看出,不论是本地还是远端登录操作系统,密码都是以密文的形式进行传输,相对安全,当然也可以用hash碰撞的方式进行爆破。 有一点需要注意,在登陆的目标服务系统后,有一个wdigest安全包,直接从内存总读取账户信息,会在本地缓存一个明文密码,当注销登陆后,该账户信息会被删除。 WCE(Windows credential editor)WCE的全称是Windows身份验证信息编辑器,是一款功能强大的windows平台内网渗透的工具,使用WCE必须要有管理员的权限,所以在之前介绍了怎么在Windows下进行提权。 kali中有WCE的执行文件,可以到这个目录下找:/usr/share/windows-resources/wce/ kali的wce文件夹里面存放了32位和64位的执行文件,还有一个wce-universal.exe可执行文件,这文件可以判断系统类型后选择执行的逻辑,一般我们都会选择使用wce-universal.exe。 WCE的功能简单概括可以列举登陆会话,并且可以添加、改变和删除相关凭据。在内网渗透中能起到非常强大的作用。 先查看当前系统中的现有账户: net user 通过wce查看当前已经登录的账户和加密的密码: wce-universal.exe -l 计算机名也会被当做用户来显示,上面BLANKCHEN是计算机的名字。 在登录几个账户后,再次执行上面的命令: wce-universal.exe -l 可以看到多了一个账户被显示出来。 用wce查看登录状态用户的详细信息: wce-universal.exe -lv 获取的信息中包括LUID、账户、加密后的密码等。 wce查看详细信息时,首先尝试安全模式,直接从内存中读取信息,读取失败后,会尝试注入模式,可能对系统造成损害。 Logon Sessions中显示的包含一些用于启动服务的账号。所以执行结果下面部分中,不会将所有Logon Sessions中的账号都显示用户名和密码。 wce提供实时显示信息,只要通过参数-r就能实现,5s刷新一次: wce-universal.exe -r 从上面可以看到多出来一个b账户的密码信息。 wce还提供了一个-e参数,也是类似功能,只要有新的登录会话出现,就会显示出来,但是实际使用时没有效果,可能是wce太久没更新,有点适应不了新的系统版本了。 通过wce删除指定账户的Logon Sessions: wce-universal.exe -d 00145C7Ah 虽然删除成功了,但是我有点不明白删除这个有什么用,难道是为了隐藏自己的会话?有清楚具体作用的同学请告知我一下。 wce有一个-g参数,可以用来计算明文密码对应的加密后的值: wce-universal.exe -g a 不过这个其实不适用,有把握蒙几个还行,真要人手动破解就不现实了。 wce还有一个最实用的参数-w,会以明文显示读取到的密码: wce-universal.exe -w wce还有一种使用方式,修改用户的登录会话,将a用户的登录会话修改成b用户: wce-universal.exe -i xxx -s xxxx 个人感觉这样操作的目的应该是为了隐藏自己。 防御WCE攻击系统通过Digest Authentication Package维护明文密码,默认自启动,可在注册表(regedit)中关闭默认启动,就能达到防御wce攻击的目的。 防御wce攻击 删除最后一个wdigest,换行符也删除,然后点击确定并重启计算机后,就能生效。 这时再去执行wce命令,就无法获取到账户密码了。顺便提一句,现在的Windows10都是能够防御wce攻击的。
|