文章目录
应急响应基本流程
- 信息收集
系统基础信息
进程分析
网络连接
计划任务/服务 - 痕迹取证
内存取证
临时文件
日志分析 - 攻击链重建
- 清除与恢复
- 撰写报告
linux排查思路
信息收集
last
查看用户登录/登出历史记录(按时间顺序列出会话)
last
各列含义
第一列:用户名
第二列:终端类型(tty7:本地图形界面终端,pts/X:伪终端,远程登陆)
第三列:登录来源(本地登录:显示终端设备号,远程登录:显示来源IP地址)
第四列:登陆时间(用户登录的具体日期和时间,格式:星期 月 日 时:分)
第五列:登出状态/时间( -时:分:正常登出时间,gone - no logout:连接异常断开,still logged in:用户仍在登陆中)
第六列:会话持续时间(仅在正常登出时显示)
uptime
快速查看 系统的运行时间、当前登录用户数以及系统平均负载
基本语法:
uptime [选项]
功能:
常用选项:
· -p,–pretty :更易读的显示运行时间
· -s,–since :显示系统启动的具体时间
拿uptime举例,说明各列含义
第一列:当前系统时间(时:分:秒)
第二列:系统已经运行时间(up:表示系统正在运行,后面的时间:系统自上次启动以来已经持续运行的时间)
第三列:当前登录用户数
第四列:系统平均负载
(load average: 0.03, 0.03, 0.03,)
第一个数值(0.03):系统在过去 1 分钟的平均负载
第二个数值(0.03):系统在过去 5 分钟的平均负载
第二个数值(0.03):系统在过去 15 分钟的平均负载
who
显示当前登录系统的用户信息(用户名、终端、登录时间等)
基本语法:
who [选项]
常用选项:
· -a:显示所有信息
· -H:显示列标题(表头)
· -u:显示空闲时间和进程ID
· -b:显示系统最近启动的时间
· -q:快速模式(只显示用户名和用户数)
拿who -H举例,说明各列含义
NAME:登录用户名
LINE:使用的终端设备(tty:本地图形终端,pts:伪终端,远程登录)
TIME:登录时间
COMMENT:来源信息(本地登录:显示终端设备号,远程登录:显示来源IP地址)
w
显示更详细的信息(用户 + 系统负载 + 用户当前活动),相当于uptime + who
基本语法:
w [选项] [用户名]
常用选项:
· -h:隐藏标题行
· -f:切换显示来源IP(默认显示)
· -s:简洁模式
拿w举例,说明各列含义
第一行(系统摘要)
当前时间 , 运行时间 , 登录用户数 , 系统负载
第二行
USER:用户名
TTY:终端设备
FROM:来源IP
LOFIN@:登录时间
IDLE:空闲时间
JCPU:终端关联的所有进程消耗的总CPU时间(分钟:秒)
PCPU:当前进程(WHAT列)消耗的CPU时间
WHAT:用户当前正在执行的命令(最重要的列)
users
只显示登录用户名
基本语法:
users
排查用户信息
/etc/passwd
存储用户账户信息的核心文件,所有用户可读(权限 644)
查看 /etc/passwd(所有用户可读)
cat /etc/passwd #显示全部用户
grep '用户名' /etc/passwd #查看特定用户
文件格式(每行一个用户,7个字段用冒号分隔)
username : password : UID : GID : User_Info : Home_Dir : Shell
各自段含义
username:用户名
password:密码占位符,x 表示密码存储在 /etc/shadow
UID:用户ID,0 = root 用户,1 ~ 999 = 系统用户,1000+ = 普通用户
GID:主组ID,用户初始组的数字标识
User_Info:用户信息
Home_Dir : 家目录,用户登录后的初始目录
Shell:登录shell
shell常见值:
/bin/bash 标准shell
/usr/sbin/nolongin 禁止登录
/bin/false 禁止交互
/etc/shadow
存储用户密码和安全策略的加密文件,仅 root 可读(权限 640)
查看 /etc/shadow(仅 root 可访问)
cat /etc/shadow #显示全部密码信息
grep '用户名' /etc/shadow #查看特定用户
文件格式(每行一个用户,9个字段用冒号分隔)
例:nobody : * :20173 : 0 : 99999 : 7 : : :
- 第一列:用户名,与 /etc/passwd 对应
- 第二列:加密密码,
密码格式:$ id $ salt $ hash ,$ 6 $ =SHA-512(最安全),$ 1 $ = MD5(已过时),$ y $ = Yescrypt(最新算法),
特殊值:! 或 !! = 账户被锁定,* = 账户禁用,空 = 无需密码登录 - 第三列:最后修改日期
- 第四列:密码最短有效期(0=随时可改)
- 第五列:密码最长有效期(99999=永不过期)
- 第六列:过期警告期
- 第七列:宽限期
- 第八列:账户过期日(空 = 永不过期)
- 第九列:保留字段
用户管理命令
查看账户状态
grep 用户名 /etc/passwd
grep 用户名 /etc/shadow
锁定账户
# 方式1:passwd命令
passwd -l kali # 相当于在shadow密码前加"!!"
# 方式2:usermod命令
usermod -L kali # 效果同上
解锁账户
# 方式1:passwd命令
passwd -u kali
# 方式2:usermod命令
usermod -U kali
强制用户下线
# 强制终止
pkill -kill -t pts/1
-kill:杀死一个进程(也可以用9代替,如:-9)
-t:指定目标终端
例如:
查询目标,并杀死目标进程
靶机状态(这里的靶机我设置了切断后重连,所以直接重新连接了)
一般情况下,踢出用户之后,就紧接着执行锁定账户命令了,所以不会出现这种情况,下面只是演示: