Linux系统应急响应
目录
当我们被告知一台Linux服务器被黑客入侵,黑客利用该服务器进行挖矿,并且在该服务器上放置了木马后门。现在我们需要对该服务器做排查,关闭和清除掉挖矿程序以及木马后门,探测出黑客是通过什么方式入侵该服务器的,并且最后要将该漏洞进行修补,以确保服务器的正常运行。
首先,当我们登陆主机后做的第一件事,应该先使用 history 查看主机的历史命令,虽然大部分黑客在入侵后会删除使用过的命令,但是不排除有些黑客没有删除使用过的命令。如果没有删除的话,我们就可以通过历史命令,知道黑客做了哪些操作,这样后续工作就非常简单了。传送门——> Linux中的.bash_ 文件详解
排查用户相关的信息
[code]whoami #查看当前用户身份 who #查看当前登录系统的所有用户 w #显示已经登陆系统的用户列表,并显示用户正在执行的指令 users #显示当前登录系统的所有用户的用户列表 id #当前用户信息 id || (whoami && groups) 2>/dev/null #当前用户信息 cat /etc/passwd | cut -d: -f1 #查看所有的用户名 cat /etc/passwd | grep "sh$" #查看拥有bash的用户 awk '/\$1|\$6/{print $1}' /etc/shadow #查看可以远程登录的用户 cat /etc/shadow #查看密码 cat /etc/group #查看组信息 last #查看登录历史 more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" #查看拥有sudo权限的用户 sudo -l #列出目前用户可执行与无法执行的指令 awk -F: '$3==0{print $1}' /etc/passwd #查看超级用户(uid=0),有些黑客将普通用户的uid改为0,则该普通用户也拥有了超级权限
相关文章:Linux系统登录相关
排查进程端口相关的信息
[code]top #动态查看进程 ls -l /proc/18176/exe #查看PID为18176的进程的可执行程序 lsof -p 18176 #查看PID为18176的进程打开的文件 lsof -c sshd #查看进程sshd打开的文件 lsof -i:33946 #查看33946端口对应的一些进程 ps -p PID -o lstart #查看进程的启动时间点 netstat -pantu | grep 18176 #查看端口连接情况,过滤含有18176的行,就可以查看连接的端口 fuser -n tcp 33946 #查看33946端口对应的进程PID ps aux / ps -ef #静态查看进程 pstree #查看进程树 ps aux --sort -pcpu #静态查看进程,根据cpu使用情况排行,从高到低 ps aux --sort -pmem #静态查看进程,根据内存使用情况排行,从高到低
查找恶意程序并杀掉
由上面我们可知,恶意进程的 PID 为 18176,进程占用的本地端口是33946,进程名字为 vvpKI1
当使用下面命令查找恶意进程的可执行程序时,发现恶意进程的可执行程序被删了,可知该木马是个无文件内存木马
[code]ls -l /proc/18176/exe
查看该进程打开的文件,有时候,恶意程序会打开一些隐藏的字典库,对内网其他主机进行爆破
[code]lsof -p 18176
跟踪异常进程运行情况
[code]strace -tt -T -e trace=all -p 1389 #跟踪1389进程运行情况
杀掉该恶意进程,但是大多数情况下,该进程还会再启动,因为有守护进程。
[code]kill -9 18176
斩草除根
当我们发现,杀掉了恶意进程后,过一段时间,该进程又会重新启动,则说明该进程有守护进程。则我们第一想到了就是crontab定时任务了。
可以使用以下命令查看定时任务
[code]crontab -l 或者 cat /var/spool/cron/root
我们也可以查看定时任务的日志文件
[code]more /var/log/cron
[code]#查找cron文件中是否存在恶意脚本 /var/spool/cron/* /etc/crontab /etc/cron.d/* /etc/cron.daily/* /etc/cron.hourly/* /etc/cron.monthly/* /etc/cron.weekly/ /etc/anacrontab /var/spool/anacron/* #查看指定目录最近3天内被修改的文件 find /etc/ /usr/bin/ /usr/sbin/ /bin/ /usr/local/bin/ -type f -mtime -3 | xargs ls -la #按时间排序,确认最近是否有命令被替换,可以结合rpm -Va命令 ls -alt /usr/bin /usr/sbin /bin /sbin /usr/local/bin | rpm -Va>rpm.log #查看是否有异常开机启动项 cat /etc/rc.local | chkconfig --list
我们就可以分析定时任务的命令,根据该命令找到恶意文件的源头,斩草除根!
还有一个我们要想到的地方就是 /root/.ssh/authorized_keys 这个文件,大多数黑客入侵后,会在该文件中写入ssh 私钥,以便于下次登录时直接登录。我们查看该文件,如果存在黑客写入的私钥,删除!
借助工具查杀病毒和rootkit
[code]#查杀rootkit chkrootkit (下载地址-http://www.chkrootkit.org)rkhunter (下载地址-http://rkhunter.sourceforge.net) #查杀病毒 clamav(下载地址-http://www.clamav.net/download.html) #查杀webshell cloudwalker(下载地址-http://github.com/chaitin/cloudwalker)
判断入侵方式,修复漏洞
在将黑客放入的恶意程序和木马删除干净后,我们就大概可以知道黑客是如何入侵该主机的,进而修改该漏洞,防止黑客再次入侵。
查看 /var/log/secure文件
[code]cat /var/log/secure* | grep Accepted #查看登录成功的记录 cat /var/log/secure* | grep Failed #查看登录失败的记录 grep "Accepted " /var/log/secure* | awk '{print $1,$2,$3,$9,$11}' #查看登录成功的日期、用户名及ip grep "Failed password for root" /var/log/secure | awk '{print $11}' #查看有哪些ip在爆破主机的root账号 grep "Failed password" /var/log/secure | awk {'print $9'} | sort | uniq -c | sort -nr #查看爆破用户名字典
总的来说,黑客入侵主机有下列几种情况:
- 通过 redis 未授权漏洞入侵(好多挖矿程序是通过这个)
- ssh 弱口令暴力破解
- Web 程序漏洞入侵
参考文章: 记一次Linux木马清除过程
相关文章:Redis未授权访问漏洞
- linux挂载硬盘和应急响应
- 一次应急响应事件处理过程-系统用户密码被爆破并下载木马
- 转载:Linux系统下6个常见紧急情况的应急处理方法
- Linux 系统 服务器 FSCK数据出错的灾难应急方案介绍
- SOC系统应急响应能力浅析
- 【应急响应】Linux安全加固
- 一个在Linux系统下的入侵响应案例
- Linux应急响应之账号检查篇
- Linux应急响应手册
- 一个在Linux系统下的入侵响应案例
- [linux] C语言Linux系统编程-socket开发响应HTTP协议
- 【转载】Linux安全事件应急响应排查方法总结
- Linux系统如何禁用ping响应
- 如何在无响应的 Linux 系统中杀掉内存消耗最大的进程
- 如何在无响应的 Linux 系统中杀掉内存消耗最大的进程 | Linux 中国
- 在Linux系统中使用xkill命令杀掉未响应的进程
- 如何在无响应的 Linux 系统中杀掉内存消耗最大的进程
- linux2.6下系统调用被信号中断时的响应
- 通过tcpdump确认Linux系统是否收到和响应ping包
- 一个在Linux系统下的入侵响应案例