-
-
[原创]Linux入侵排查
-
发表于: 2025-5-11 12:13 1798
-
前言
结合常见攻击事件及实际应急响应案例,系统整理了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 |
增强命令功能
异常信息查询
异常端口
1 | netstat -antlp| more |
查看pid所对应的进程文件路径
1 2 3 | # $PID 为对应的pid 号 ls -l /proc/ $PID /exe file /proc/ $PID /exe |
异常进程
1 | ps aux | grep pid |
异常文件
- 查看敏感目录,如/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 授权执行命令日志
1 | sudo -l |
定时任务
如果攻击者执行了反弹shell命令,可以通过这种方式找出来。
1 | cat /etc/crontab |
赞赏
他的文章
- [原创]Linux入侵排查 1799
- [原创]Linux权限控制 1780
- [原创]Linux提权具体方法 2339
- Fastjson 漏洞复现 1402
赞赏
雪币:
留言: