【WEB安全-Linux入侵排查】此文章归类为:WEB安全。
前言
结合常见攻击事件及实际应急响应案例,系统整理了Linux服务器入侵后的排查与处置方法,形成了一套清晰的排查思路,既适用于实战中的安全事件响应,也可用于CTF 决赛中的 Linux 系统信息收集与分析。
账号安全
用户信息文件/etc/passwd
1 2 3 | 用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
root:x:0:0:root: /root : /bin/bash
daemon:x:1:1:daemon: /usr/sbin : /usr/sbin/nologin
|
影子文件/etc/shadow
1 2 | 用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
root:$6$ezldJFu3$sIpyVyoliD/k1Qlk8rMrWaMnyOGT0hqqYnninWjW85kwodPVUPGCWsdVSGD35p7fvhjRXOAcPdJe/uZ9KW/QL0:20186:0:99999:7:::
|
who、w、uptime
1 2 3 | who 查看当前登录用户(tty本地登陆 pts远程登录)
w 查看系统信息,想知道某一时刻用户的行为
uptime 查看登陆多久、多少用户,负载
|

入侵排查
特权用户查询
1 | awk -F: '$3==0{print $1}' /etc/passwd
|
远程登录的帐号信息
1 | awk '/\$1|\$6/{print $1}' /etc/shadow
|
sudo权限查询
1 | more /etc/sudoers | grep - v "^#\|^$" | grep "ALL=(ALL)"
|
历史命令
历史命令查询
- history命令查询

- .bash_history文件查询
1 | cat .bash_history >> history .txt
|
增强命令功能
异常信息查询
异常端口

查看pid所对应的进程文件路径
1 2 3 | ls -l /proc/ $PID /exe
file /proc/ $PID /exe
|
异常进程
异常文件
- 查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性
- 得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件?
可以使用find命令来查找,如 find /opt -iname "*" -atime 1 -type f
找出 /opt 下一天前访问过的文件
- 针对可疑文件可以使用stat进行创建修改时间。
系统日志
日志信息
1 2 3 4 | cat /var/log/
more /etc/rsyslog .conf
|
日志文件 |
说明 |
/var/log/cron |
记录了系统定时任务相关的日志 |
/var/log/cups |
记录打印信息的日志 |
/var/log/dmesg |
记录了系统在开机时内核自检的信息,也可以使用dmesg命令直接查看内核自检信息 |
/var/log/mailog |
记录邮件信息 |
/var/log/message |
记录系统重要信息的日志。这个日志文件中会记录Linux系统的绝大多数重要信息,如果系统出现问题时,首先要检查的就应该是这个日志文件 |
/var/log/btmp |
记录错误登录日志,这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看 |
/var/log/lastlog |
记录系统中所有用户最后一次登录时间的日志,这个文件是二进制文件,不能直接vi,而要使用lastlog命令查看 |
/var/log/wtmp |
永久记录所有用户的登录、注销信息,同时记录系统的启动、重启、关机事件。同样这个文件也是一个二进制文件,不能直接vi,而需要使用last命令来查看 |
/var/log/utmp |
记录当前已经登录的用户信息,这个文件会随着用户的登录和注销不断变化,只记录当前登录用户的信息。同样这个文件不能直接vi,而要使用w,who,users等命令来查询 |
/var/log/secure |
记录验证和授权方面的信息,只要涉及账号和密码的程序都会记录,比如SSH登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中 |
SSH 爆破排查
定位爆破 root 账户的 IP 地址
1 | grep "Failed password for root" /var/log/auth .log | awk '{print $11}' | sort | uniq -c | sort -nr | more
|
定位所有进行爆破的 IP
1 | grep "Failed password" /var/log/auth .log | grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | uniq -c
|
被爆破的用户名统计
1 | grep "Failed password" /var/log/auth .log | perl -e 'while($_=<>){ /for (.*?) from/; print "$1\n"; }' | uniq -c | sort -nr
|
登录成功日志排查
登录成功的 IP 地址统计
1 | grep "Accepted " /var/log/auth .log | awk '{print $11}' | sort | uniq -c | sort -nr | more
|
登录成功的详细信息(时间、用户名、IP)
1 | grep "Accepted " /var/log/auth .log | awk '{print $1, $2, $3, $9, $11}'
|
用户操作审计
增加用户 kali
的日志记录
1 | grep "useradd" /var/log/auth .log
|
删除用户 kali
的日志记录
1 | grep "userdel" /var/log/auth .log
|
sudo 授权执行命令日志
定时任务
如果攻击者执行了反弹shell命令,可以通过这种方式找出来。
更多【WEB安全-Linux入侵排查】相关视频教程:www.yxfzedu.com