我们定期撰写有关黑客如何经常依靠非恶意黑客技术来避免检测的文章。他们使用标准Windows工具从字面上“生存在草地上”,从而绕过防病毒和其他实用程序来检测恶意活动。作为防御者,我们现在被迫应对这种聪明的黑客技术所带来的可怕后果:位置良好的员工可以使用相同的方法来秘密地窃取数据(公司知识产权,信用卡号)。而且,如果他花时间,并且工作缓慢而未被注意,那么使用这种正确的方法和正确的工具来检测这种活动将非常困难-但仍然可能。
另一方面,我不想妖魔化员工,因为没人想直接在Orwell 1984年的商业环境中工作。幸运的是,有许多实用的步骤和生活技巧可以使内部人的生活更加艰难。我们将研究具有一定技术背景的员工对黑客使用的隐形攻击方法。再进一步,我们将讨论降低此类风险的方案-我们将研究采取行动的技术和组织方案。
PsExec有什么问题?
无论是否正确,爱德华·斯诺登(Edward Snowden)都已成为内部数据盗窃的代名词。顺便说一句,不要忘了看一下这篇有关其他内部人士的文章,他们也应享有一定的声誉。关于斯诺登使用的方法,需要强调的重要一点是,据我们所知,他没有安装任何外部恶意软件!
相反,斯诺登应用了一些社会工程学,并以其作为系统管理员的身份来收集密码和创建凭据。没什么花哨的-没有mimikatz,中间人攻击或metasploit。
组织并不总是处于斯诺登的独特地位,但是从“放牧生存”的概念中可以吸取很多教训,即不要执行任何可以检测到的有害行为,并且在使用凭据时要格外小心。记住这个想法。
Psexec及其堂兄crackmapexec给无数的测试者,黑客和信息安全博客作者留下了深刻的印象。当与mimikatz结合使用时,psexec允许攻击者在网络中导航而无需知道明文密码。
Mimikatz从LSASS进程中拦截NTLM哈希,然后传递令牌或凭证-所谓的。“通过哈希”攻击-在psexec中,允许攻击者代表另一个用户登录到另一台服务器。随后,随着每次迁移到新服务器,攻击者都会收集其他凭据,从而扩大了查找可用内容的能力范围。
刚开始使用psexec时,对我来说,它似乎很神奇-多亏了psexec天才开发人员Mark Russinovich-但我也知道它的嘈杂成分。他从不秘密!
关于psexec的第一个有趣的事实是,它使用了Microsoft极其复杂的SMB网络文件协议。 Psexec使用SMB发送小二进制文件通过将文件放置在C:\ Windows文件夹中,将文件复制到目标系统。
接下来,psexec使用复制的二进制文件创建Windows服务,并以极其“意外”的名称PSEXECSVC启动它。同时,您实际上可以像观看远程机器一样看到所有这些内容(参见下文)。
Psexec电话卡:“ PSEXECSVC”服务。它启动一个二进制文件,该文件放在SMB的C:\ Windows文件夹中。
作为最后一步,复制的二进制文件将打开与目标服务器的RPC连接,然后接受控制命令(默认情况下-通过Windows cmd shell),运行控制命令并将输入和输出重定向到攻击者的家用计算机。在这种情况下,攻击者会看到基本命令行-与直接连接一样。
大量的组件和一个非常嘈杂的过程!
Psexec复杂的内部流程解释了几年前在我的第一次测试中令我感到困惑的消息:“正在启动PSEXECSVC ...”,然后在命令行出现之前先暂停一下。
Impacket的Psexec确实显示了幕后情况。
难怪:psexec在后台做了很多工作。如果您对更详细的说明感兴趣,请在此处查看此详细说明。
显然,当用作psexec的原始目的的系统管理工具时,所有这些Windows机制的嗡嗡声并没有错。但是,对于攻击者而言,psexec会带来麻烦,而对于像斯诺登,psexec或类似实用程序这样的谨慎而狡猾的内部人来说,这样做的风险太大。
然后是Smbexec
SMB是在服务器之间传输文件的一种聪明而隐秘的方法,并且黑客已经直接渗透到SMB了几个世纪。我想每个人都知道您不应该打开Internet的SMB端口445和139,对吗?
在2013年的Defcon会议上,Eric Milman(brav0hax)发布了smbexec,以便渗透测试人员可以尝试进行秘密的SMB黑客攻击。我不了解整个故事,但是随后Impacket进一步完善了smbexec。实际上,为了进行测试,我从Github的python中从Impacket下载了脚本。
与psexec不同,smbexec避免将可能检测到的二进制文件传输到目标计算机。而是,该实用程序通过运行本地Windows命令行完全脱离了草丛。
这就是它的作用:它通过SMB将来自攻击机的命令发送到一个特殊的输入文件,然后创建并运行一个复杂的命令行(例如Windows服务),Linux用户对此似乎很熟悉。简而言之:它将启动本机Windows cmd shell,将输出重定向到另一个文件,然后通过SMB将其发送回攻击者的计算机。
理解这一点的最好方法是研究命令行,我能够从事件日志中获取该命令行(见下文)。
这不是重定向I / O的最好方法吗?顺便说一句,服务创建具有事件ID 7045。
像psexec一样,它也创建了一个服务来完成所有工作,但是该服务随后被删除-它仅用于运行命令一次,然后消失!监视受害机器的信息安全人员将无法检测到明显的攻击迹象:没有恶意可执行文件,没有安装持久性服务,也没有证据表明使用了RPC,因为SMB是唯一传输数据的方法。辉煌!
同时,攻击者可以使用“伪外壳”,在发送命令和接收响应之间会有延迟。但这对于攻击者(已经有立足点的内部人员或外部黑客)开始寻找有趣的内容已经足够了。
要将数据从目标计算机输出回攻击者的计算机,请使用smbclient。是的,这是相同的Samba实用程序,但由Impacket针对Python脚本进行了修改。实际上,smbclient允许您秘密地通过SMB传输组织FTP。
让我们退后一步,思考一下它可以为员工做什么。在我的虚拟场景中,假设允许博客作者,财务分析师或高薪安全顾问使用个人笔记本电脑进行工作。经过一些神奇的过程,她在公司里发脾气,全力以赴。根据笔记本电脑的操作系统,它使用Impact的Python版本或Windows版本的smbexec或smbclient作为.exe文件。
像斯诺登一样,她可以通过偷窥别人的肩膀来学习另一个用户的密码,或者她很幸运,并且偶然发现了带有密码的文本文件。有了这些凭据,她便开始以新的特权级别来研究系统。
入侵DCC:我们不需要任何愚蠢的Mimikatz
在我以前的笔试帖子中,我经常使用mimikatz。这是拦截凭据的绝佳工具-NTLM哈希,甚至隐藏在笔记本电脑中并等待使用的明文密码。
时代变了。监视工具在检测和阻止mimikatz方面变得更好。信息安全管理员还获得了更多选择,以减轻与散列攻击通过相关的风险(以下称为PtH)。
那么,精明的员工在不使用mimikatz的情况下必须如何收集其他凭证?
Impacket包含一个称为secretsdump的实用程序它从域凭据缓存(简称DCC)中获取凭据。据我了解,如果域用户登录到服务器但域控制器不可用,则DCC允许服务器对用户进行身份验证。无论如何,secretsdump允许您转储所有这些哈希(如果有)。
DCC哈希不是NTML哈希,不能用于PtH攻击。
好吧,您可以尝试破解它们以获取原始密码。但是,Microsoft在DCC方面变得越来越聪明,破解DCC哈希表变得极为困难。是的,有hashcat(“世界上最快的密码选择器”),但是它需要GPU才能有效运行。
相反,让我们尝试像斯诺登一样思考。员工可以进行面对面的社会工程,并可能找到有关她想要破解其密码的人的一些信息。例如,找出此人的在线帐户是否曾被黑客入侵,并检查其明文密码以查找任何线索。
这就是我决定采用的方案。让我们假设一个内部人发现他的老板Cruella在不同的Web资源上遭到了多次黑客攻击。在分析了其中几个密码后,他意识到Cruella更喜欢使用棒球队名称“ Yankees”,后跟本年度的“ Yankees2015”。
如果您当前正在尝试在家复制此内容,则可以下载一个小的“ C”实现DCC哈希算法并对其进行编译的代码。开膛手约翰(John Ripper)新增了DCC支持,因此您也可以使用它。让我们假设内部人员不想参与关于开膛手约翰的学习,并且喜欢在旧版C代码中运行“ gcc”。
在描绘内部人员的角色时,我进行了几种不同的组合,最后我发现Cruella的密码是“ Yankees2019”(请参见下文)。任务完成!
借助一点社会工程学,一点算命和一点点Maltego,您就可以破解DCC哈希。
我建议结束这一点。我们将在其他文章中再次讨论这个问题,并研究更慢和更隐蔽的攻击方法,同时继续依赖Impacket出色的实用程序集。