电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 3329 人浏览分享

权限维持:几种常用后门的介绍与...

[复制链接]
3329 0
本帖最后由 zhaorong 于 2021-4-20 15:29 编辑

l 常用后门的制作(实战情况下需要对后门程序进行免杀处理):

1、粘滞键后门  2、放大镜后门
3、注册表自启动 4、映像劫持
5、计划任务启动


l 0×01  粘滞键后门的使用:

之前设置粘滞键的后门很简单 直接将 sethc 程序替换成 cmd 程序 sethc 即粘滞键程序 在 c:/windows/system32 下删除
sethc 或者重命名备份一下重命名后5下 shift 依然会调用粘滞键 且文件名修改成 sethc 的 cmd 也会执行然后复制cmd修
改成 sethc 即可 这时在目标机登录页面连续按5下 shift 可调出cmd 命令行。

clipboard(3).png

如果目标主机系统是 winvista版本 以上的 即 winvista 之后的更高版本 修改 sethc 会提示需要trustedinstaller 权限
trustedinstaller 是一个安全机制 即系统的最高权限
权限比 administrator 管理员高 windows 权限分为三种从低到
高依次是 user,administrator,system。而 trustedinstaller 比 administrator 高但没有 system高 这么做的好处
是避免了一些恶意软件修改系统文件的可能,坏处就是自己不能直接操作了 所以要先修改 sethc 需要将其所有者改
为改为我们当前管理员用户。

69.png

当你获得一个管理员账号登录进目标的RDP中的时候 可以采用这个方法留后门。

修改所有者需要在 sethc 右键属性 安全 高级 更改权限处 切换到所有者选项卡把
所有者更改成你所需要操作的用户 如下图:


68.png

67.png

在修改所有者之前 直接编辑其权限都是灰色的不能修改 有了所有权之后 便可以编辑其用户与用户组的权限
这里需要给予自己用户对该文件的完全控制权限 勾选完全控制 如下图:


66.png

因为这里笔者已经修改过 修改成管理员组的权限 在管理员组下的用户可以对该文件
进行完全控制的权限操作。


之后将修改好文件名的 cmd.exe >sethc.exe 覆盖原来的sethc可执行文件

65.png

63.png

锁屏后连按五次shift键调出使用粘滞键 发现cmd命令行出现,而且是系统权限。

62.png

之后管理员修改了用户密码也可以使用System权限的shell环境 美滋滋。

细节扩展:

那我们在实战中 是以远程登录界面为基础的。这时 我们又要拓展另一个权限 userauthentication
权限 用于远程连接的身份验证。


我们以图片直观地查看该权限开启与关闭的区别:

开启状态:

61.png

关闭状态:

60.png

重点!!!:

鉴权开启的时候 如果管理员修改了密码 我们就无法进入到主机登录页面从而调用各项快捷功能工具如粘滞键放大镜等等
所以说我们需要关闭这个鉴权模式 然后对粘滞键进行调用后调出我们拥有system权限的cmdshell。

如何关闭鉴权模式我们采用如下命令:
REG ADD"HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer\WinSta
tions\RDP-Tcp" /v UserAuthentication /t REG_DWORD /d 0

0代表关闭 1代表开启

关闭鉴权模式还不够 还需要关闭securitylayer安全层验证  :


具体指:0 就是连接前使用 rdp 协议进行身份验证rdp即远程桌面连接 相当于关闭验证1是
指在连接前两端协商来进行身份验证2就是使用tls协议来进行。

将其参数设置为0 命令如下:
REG ADD"HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer\WinSt
ations\RDP-Tcp" /v SecurityLayer /t REG_DWORD /d 0

在笔者测试中 两个参数同时关闭也存在关掉一个参数而不用验证的情况 但最好还是两个参数都关闭
才可以不用输入正确凭证进入3389的登录页面进行调用粘滞键和放大镜后门。

59png.png

以上操作的基础是目标机开启了远程桌面连接 所以我们这里也记录下如何开启远程桌面连接首先
是配置一下防火墙 设置为允许远程桌面连接 命令行运行以下命令:
netshadvfirewall firewall add rule name="Remote Desktop" protocol=TCP
dir=in localport=3389 action=allow

netsh 是windows 的网络配置命令 advfirewall firewall 意思是防火墙高级设置 add rule是添加一条规则name
指定规则名称 protocol 指定协议 dir 指定是出战还是入站 localport 指定端口 action 指定动作allow允许。

设置后 我们再通过注册表来设置一下允许远程桌面连接 命令行运行以下命令:
REG ADD"HKLM\SYSTEM\CurrentControlSet\Control\TerminalServer"
/vfDenyTSConnections /t REG_DWORD /D0 /f

至此 我们的粘滞键后门就已经完成了 远程桌面连接输入ip就会直接跳到目标锁屏页如果用户没有设置密
码则可以直接登录如果有密码而又不知道密码的情况下 则可以用shift 调出命令行来执行一些操作。

不用凭证验证进入到登录页面:

58.png

分界线-
-----------------------------------------------------------------

0×02  容易忽视的放大镜后门:

实验环境:Win10 x64专业版 虚拟机

实验简介:跟粘滞键后门一样的思路但放大镜后门被关注性较低 重命名替换系统自带的工具程序
利用登录界面的“轻松访问工具”进行调用我们所替换的后门。


所做标记的为轻松访问工具栏:

56.png

52.png

方法①:

批量处理bat脚本自动生成后门(cmd.exe的替换)

#切换目录到c:\windows\system32;
cd c:\windows\system32
#更改文件名为magnify.exe的所有者为当前用户;
takeown /f magnify.exe
#将当前用户所在的组(管理员组)赋予完全访问权限;
icaclsmagnify.exe /grant administrators:F
#将可执行文件magnify.exe更名为magnify_back.exe;
ren magnify.exemagnify_back.exe
#将cmd.exe复制并更名为magnify.exe;

完整bat处理脚本代码:
cdc:\windows\system32
takeown/f magnify.exe
icaclsmagnify.exe /grant administrators:F
renmagnify.exe magnify_back.exe
copycmd.exe magnify.exe

51.png

双击运行bat脚本 即可修改成功。
来到锁屏页面 打开 轻松访问  工具栏 使用放大镜 在没有输入用户名和密码的情况下弹出了系统权限的
cmdshell成功执行cmd.exe。可以利用以上思路 修改代码 加载其他的后门程序

50.png

方法②:

图形化操作在成功连接登录进RDP后进行的操作 如何开启RDP登录界面并调用相关工具请回到上文 关闭鉴权
更换放大镜程序执行获得cmdshell根据情况更换所执行的程序或后门


1)进入目录C:\Windows\System32,找到mangify.exe 将其重命名为:mangify_backup.exe发现无法
重命名 这时候需要我们去更改文件的控制权限 与上文的粘滞键后门操作一致。

29.png

2)右键打开mangify.exe调出工具栏打开属性来到  安全--高级下根据情况修改文件所有者

28.png

3)根据情况再次修改对于用户/用户组 对文件的控制权限 设置为 完全控制笔者这里测试的权限为管理员
实际情况下根据自己所获得的用户权限进行更改 万变不离其宗

26.png

4)查看Administrator的权限可以看到权限是完全控制。

22.png

5)然后我们将原来的放大镜程序mangify.exe 修改为 mangify_backup.exe 再将cmd.exe
复制一份并改名为mangify.exe 让系统调用执行程序的时候cmd.exe认为是mangify.exe。

21.png

6)打开RDP登录页面或者重新启动 可以看到右下角 轻松访问工具栏 的标识。

20.png

7)打开后 就直接弹出cmdshell 权限为system 替换的程序执行成功!

19.png

思维扩展:

两种不同的操作方法 可以根据环境和需要进行选择 但所执行的程序需要具有一定的免杀效果。

-------------------------------------------------------分界线-----------------------------------------------------------

0×03  注册表自启动项:

MSF的Persistence模块利用的就是写注册表自启动项来实现的 一般自启动项是这两个键:Run和RunOnce两者的区别如下:
1.     Run:该项下的键值即为开机启动项 每一次随着开机而启动。
2.     RunOnce:RunOnce和Run差不多 唯一的区别就是RunOnce的键值只作用一次 执行完毕后就会自动删除 。

常见注册表启动项键的位置:

用户级每个用户的启动项键值设置是不同 独立的 登录不同用户 那个用户所自启动的
程序是互不干扰的 可以针对某个用户执行某个程序:
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\R

系统级(所有用户的启动项键值设置是相同的 只要登录这台计算机 不管是谁 都dei被执行拿下):
\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\Windo

创建个新的字符串值名为 test(值名字随意) 其值为要执行的后门文件的路径
(Win7下执行文件的物理路径要用双引号括起,Win10无所谓 但最好还是养成习惯用双引号括起来)

18.png

保存退出 当电脑启动或重启的时候 过一段时间会自动执行所指向的程序 成功利用如下图:

17.png

-------------------------------------------------------分界线---------------------------------------------------------------
0×04  映像劫持:

1、什么是映像劫持(IFEO hijack):

也许你曾遇到过这种情况:无论你将软件安装在什么地方 在运行的时候总会出现 系统找不到指定的文件 的错误提示
导致软件无法运行。如果你将软件的exe文件改个名称 就可以正常运行了。这种现象就叫做映像劫持 IFEOhijack映像
劫持是一种影响系统正常运转的手段 这种手段可以阻止AV。简单来说,就是要执行A程序的时候 A程序被劫持不能正
常执行 却执行了B程序 。

2、映像劫持的原理:

映像劫持是利用Windows的IFEO Image FileExecution Options 功能来实现的。IFEO实际上是Windows的一项正常功能
主要用于调试程序 其初衷是在程序启动的时候开启调试器来调试程序 这样一来可以在调试器中观察程序在难以重现的环境
中的行为。例如 某个程序在随用户登录自动启动时会出错 但在登录后手动启动时却一切正常 这就可以通过IFEO设置一个
调试器 无论程序何时启动,都会开启这个调试器对其进行调试,以便找出问题。

映像劫持并不等于IFEO 反之亦然。映像劫持的正式英文名称其实是Image Hijack

Windows NT系统在执行一个从命令行调用的可执行文件运行请求时首先会检查这是否是一个可执行文件
如果是 又是什么格式的,然后就会检查是否存在(HKLM为HKEY_LOCAL_MACHINE的缩写):[HKLM\S
OFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options\ImageName]

如果存在首先会试图读取这个键值:
[HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File
Execution Options\ImageName]

所用的参数为Debugger "Debugger"="所要执行的程序路径"如果存在 就执行所设置的程序

目前已知的IFEO参数有:
ApplicationGoo
Debugger
PageHeapFlags
DisableHeapLookAside
DebugProcessHeapOnly
PageHeapSizeRangeStart
PageHeapSizeRangeEnd
PageHeapRandomProbability
PageHeapDllRangeStart
PageHeapDllRangeEnd
GlobalFlag
BreakOnDllLoad
ShutdownFlags

在HKLM\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Image File Execution Options\ 该项
中新建一个项该项为要劫持的可执行程序的文件名 可以设置劫持为后门程序
并添加字符串键值键名为参
数Debugger  值为要执行的程序:

16.png

设置好后 执行Origin.exe 这个程序 发现程序被劫持并执行为系统自带的计算器程序calc.exe
所需要劫持和执行的程序根据情况配置。

15.png

也可以命令行管理员直接执行:
REGADD "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image FileExecution
Options\notepad.exe" /t REG_SZ /v Debugger/d"C:\windows\system32\cmd.exe" /f

思路扩展:

在这种情况下 被劫持的文件无法正常执行所以说我们需要利用社工或者一定的代码构造进行更近
一步的诱导或者隐蔽性的优化 比如:在执行后门程序的情况下被劫持的文件也被索引然后正常执
行可以达到混淆管理员的作用。

0×05 计划任务启动后门:

方法:①At 计划任务 ; ②schtasks

在Windows8及以上已经废用At命令创建计划任务了所以说我们需要按情况选用方法进行创建任务。

两种计划的主要不同之处:At命令在win7 08等高版本的windows中是不能将任务在前台执行的
也就是只会打开一个后台进程 而schtasks是将定时的任务在前台执行

比如:
利用At命令创建的任务进行执行计算器程序calc.exe只会在后台执行这个程序 不会弹出计算器
的GUI图形页面而利用schtasks命令创建的任务执行计算器程序calc.exe会在前台执行 意思是
会弹出计算器的GUI图形页面如下图:

13.png

Schtasks命令的使用demo:

schtask语法:
schtasks /create /tn TaskName /tr TaskRun /sc schedule [/mo modifier]
[/d day] [/m month[,month...] [/i IdleTime]

参数的解析:

/tn:(要创建或删除的)任务名;

/tr:要执行的程序路径;


/sc:指定计划类型进行执行 有效值为 MINUTE按分钟HOURLY按小时DAILY按每天WEEKLY按每周MONTHLY每月ONCE
任务在指定的日期和时间运行一次ONSTART(任务在每次系统启动的时候运行。可以指定启动的日期或下一次系统启动的
时候运行任务。ONLOGON每当用户任意用户登录的时候任务就运行。可以指定日期或在下次用户登录的时候运行任务ON
IDLE。要系统空闲了指定的时间任务就运行。可以指定日期或在下次系统空闲的时候运行任务。

/mo modifier:指定任务在其计划类型内的运行频率。这个参数对于MONTHLY 计划是必需的对于
MINUTEHOURLYDAILY 或WEEKLY 计划这个参数有效 但也可选 默认值为 1。

命令Demo:

①计划任务每天运行一次:

下面的范例计划MyApp程序在每天的 8:00 A.M. 运行一次直到2001年12月31日结束由于它
忽略了/mo 参数所以使用默认间隔1来每天运行命令。
schtasks /create/tn "My App" /tr c:appsmyapp.exe /sc daily /st 08:00:00 /ed12/31/2001

②计划任务每隔一天运行一次:
下面的范例计划MyApp程序从2001年12月31日起每隔一天在1:00 P.M. 13:00)运行
命令使用 /mo参数来指定两 (2) 天的间隔。
schtasks /create/tn"My App" /tr c:appsmyapp.exe /sc daily /mo2 /st 13:00:00 /sd12/31/2001

③:计划任务每隔一周在周五运行
下面的命令计划任务每隔一周在周五运行。它使用 /mo 参数来指定两周的间隔使用 /d参数来指定是一周
内的哪一天如计划任务在每个周五运行 要忽略 /mo 参数或将其设置为1。
schtasks /create/tn "My App" /tr c:appsmyapp.exe /sc weekly /mo 2 /dFRI

利用At命令进行创建任务:
语法:AT[\\computername] time [/INTERACTIVE] [ /EVERY:date[,...] | /NE
XT:date[,...]]"command"

命令Demo:

在下午16:20 运行/every 代表指定日期 Monday 是星期一在星期一的16:20分运行mkdir.bat
这个批处理程序运行批处理程序要使用绝对路径 记得用 双引号 括起来。
at16:20 /every:Monday "C:\Users\Administrator\Desktop\mkdir.bat"

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.