Linux应急响应
1、入侵排查思路
账号安全 -> 历史命令 -> 检查异常端口 -> 检查异常进程 -> 检查开机启动项 -> 检查定时任务 -> 检查服务 -> 检查异常文件。
2、操作步骤
1、账户安全
| 1、查询特权用户特权用户(uid 为0) |
| ①(以冒号为分隔符,打印文件当中第三个内容(uid)为0的第一列信息) |
| [root@localhost ~]# awk -F ":" '$3==0{print $1}' /etc/passwd |
| root |
| ②(打印符合条件的整列) |
| [root@localhost ~]# awk -F ":" '$3==0{print $0}' /etc/passwd(补充) |
| root:x:0:0:root:/root:/bin/bash |
| |
| 2、查询可以远程登录的帐号信息(除了root用户外,其余用户没有密码就无法登入) |
| (当查询的文件当中密码位出现$1或$6时(\$:转义成字符串$;$6$:sha加密,$1$:md5加密),将改行全打印出来) |
| [root@localhost ~]# awk '/\$1|\$6/{print $1}' /etc/shadow |
| root:$6$gzV7F7XygZZLiLMs$q3xIpzL6.tLwg.PkqiIynm2gtkED2pu7oRLlUvfk516Pt/nVgnmISbMW0HOeHoQbjx1bcpD/xpKaL1xwT6dnx.::0:99999:7::: |
| xzm:$6$kC0HzY8pch7Wdaxx$8HOwj8.INvh8JF3bfrf/GUcWM8BkdDnJeZuSXXsbtb2vglnTTwW3AUWaZ4Ujih0qjlnzONkzQob/j1x4.zfXv0::0:99999:7::: |
| |
| 3、除root帐号外,其他帐号是否存在sudo权限。如非管理需要,普通帐号应删除sudo权限 |
| (是否存在用户有sudo权限;查看文件时过滤注释和空行,且只看该字符串ALL=(ALL)) |
| [root@localhost ~]# more /etc/sudoers | grep -v "^#\|^$" | grep "ALL=(ALL)" |
| root ALL=(ALL) ALL |
| %wheel ALL=(ALL) ALL |
| sudo命令:赋予一次root用户命令的权限。(暂时将该命令用root身份运行) |
| %wheel,是个组,该组成员具有sudo权限。 |
| |
| 4、禁用或删除多余及可疑的帐号(一般都是先禁用账户,而不直接删除) |
| ①usermod命令(大写) |
| -L(Lock):表示锁定用户(临时锁定用户),被锁定用户的密码前出现“!”表示无法登录(与passwd相似) |
| -U(Unlock):表示解除对用户的锁定 |
| usermod -L/U user:锁定帐号(letc/shadow第二栏为!开头)/解锁账号 |
| userdel -r user:将删除user用户,并且将/home目录下的user目录一并删除(userdel user 删除user用户) |
| ②passwd命令(小写) |
| -l:暂时锁定用户(被锁定的用户不能使用密码登入--密码前加“!!”),但对root用户无效,照样可以登入。仅root用户可用 |
| -u:解锁用户。仅root用户可用 |
| -S:查询用户密码的密码状态。仅root用户可用 |
| passwd -S user 查看账户密码状态 |
2、历史命令
Linux当中以点开头的都是隐藏文件。使用命令:ls/ll -a:显示所有信息
| 1、(黑客一般只删除自己操作的命令记录) |
| [root@localhost ~]# history |
| [root@localhost ~]# history -c |
| |
| [root@localhost ~]# cd ~ |
| [root@localhost ~]# ls -a |
| . .bash_logout .config Documents initial-setup-ks.cfg Public .viminfo |
| .. .bash_profile .cshrc Downloads .local .tcshrc |
| anaconda-ks.cfg .bashrc .dbus .esd_auth Music Templates |
| .bash_history .cache Desktop .ICEauthority Pictures Videos |
| [root@localhost ~]# less .bash_history |
| [root@localhost ~]# echo "" > .bash_history |
| 环境文件: |
| /etc/profile:全局环境文件(针对全体) |
| .bash_profile:个人的环境文件(针对个人;在用户的家目录下的隐藏文件) |
| |
| |
| 2、为历史的命令增加登录的IP地址、执行命令时间等信息: |
| |
| sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile (安全加固文件) |
| |
| USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'` |
| |
| |
| 命令解读: |
| [root@localhost ~]# who |
| root :0 2022-09-28 20:28 (:0) #该行表示本地登入记录(有登入都要该记录) |
| root pts/0 2022-10-20 14:56 (:0) #pts/0:表示打开第一个会话窗口 |
| [root@localhost ~]# who -u (显示进程号) |
| root :0 2022-09-28 20:28 ? 1873 (:0) |
| root pts/0 2022-10-20 14:56 . 57402 (:0) |
| [root@localhost ~]# who -u am i |
| root pts/0 2022-10-20 14:56 . 57402 (:0) |
| [root@localhost ~]# who -u am i 2>/dev/null |
| root pts/0 2022-10-20 14:56 . 57402 (:0) |
| [root@localhost ~]# who -u am i 2>/dev/null | awk '{print $NF}' |
| (:0) |
| [root@localhost ~]# who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g' |
| :0 |
| [root@localhost ~]# USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'` |
| |
标准输入与输出
| 输出:标准输出、标准错误 |
| [root@localhost Desktop] |
| 123 //标准输出(output)【1>常常将1省略只写>】:一个命令字或者程序正常运行的结果 |
| [root@localhost Desktop] |
| bash: ca: command not found... //标准错误(error)【2>/dev/null(标准错误的2>后不能省略)】:一种状态或者错误的信息 |
| Similar commands are:: |
| 'ac' |
| 'sa' |
| 输入: |
| 标准输入(input)【0<】:连接至输入设备(键盘等) |
| |
| 使用方法: |
| 1.标准输出-1>常常省略(输出) |
| 2.标准错误-吃掉错误报告(标准错误使用--输出) |
| [root@localhost Desktop] |
| root pts/0 2022-10-20 14:56 . 57402 (:0) |
| [root@localhost Desktop] |
| 3.标准输入(输入) |
| [root@localhost Desktop] |
| 123 |
| [root@localhost Desktop] |
| 123 |
| //Linux当中cat定义为表示标准输入命令字。当cat后面不加参数时为键盘输入;cat后面加东西/文件时为将文件标准输入后再标准输出 |
| |
| cat创建新文件: |
| [root@localhost Desktop] |
| 123132131 |
| ^C //在另一行终止进程 |
| [root@localhost Desktop] |
| 123132131 |
3、检查异常端口、进程
| ①使用netstat网络连接状态命令,分析可疑端口、IP、PID |
| 命令:netstat -antlp | more |
| |
| ②查看下pid所对应的进程文件路径 |
| 命令:ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号) |
| |
| ③检查异常进程,使用ps命令,分析进程 |
| 命令:ps aux | grep pid |
4、检查开机启动项
| 查看运行级别命令runlevel |
| 运行级别 含义 (七个运行模式) |
| 0 关机 |
| 1 单用户模式,可以想象为windows的安全模式,主要用于系统修复 |
| 2 不完全的命令行模式,不含NFS服务 |
| 3 完全的命令行模式,就是标准字符界面 |
| 4 系统保留 |
| 5 图形模式/桌面模式(GUI界面) |
| 6 重启动 |
| |
| 开机启动配置文件: |
| /etc/rc.local |
| /etc/rc.d/rc[0~6].d |
切换运行模式
| 临时切换运行模式:(N 5--图像模式下的命令模式) |
| ctrl+alt=f3 |
| ctrl+alt=f1 |
| 永久切换运行模式:(5 3--图形模式切换成永久命令模式) |
| init 3/5 |
| |
| 查看默认允许模式: |
| [root@localhost ~]# systemctl get-default |
| graphical.target |
| systemctl set-default multi-user.target |
| systemctl:内核管理工具 |
5、入侵排查
| 重点关注以下目录(计划目录)中是否存在恶意脚本: |
| /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/* |
| 小技巧: |
| more /etc/cron.daily/* 查看目录下所有文件 |
6、查询已安装的服务
| 1、RPM包安装的服务 |
| chkconfig --list 查看服务自启动状态,可以看到所有的RPM包安装的服务 |
| ps aux | grep crond 查看当前服务 |
| 系统在3与5级别下的启动项 |
| chkconfig --list | grep "3:on\|5:on" |
| |
| 2、源码包安装的服务 |
| 查看服务安装位置 ,一般是在/usr/local/ |
| service httpd start |
| 搜索/etc/rc.d/init.d/ 查看是否存在 |
| |
| |
| systemctl list-unit-files //查看所有服务与状态 |
7、检查异常文件
| 1、查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“.”为名的文件夹具有隐藏属性 |
| |
| 2、得到发现WEBSHELL、远控木马的创建时间,如何找出同一时间范围内创建的文件? |
| 可以使用find命令来查找,如 find /opt -iname "*" -atime 1 -type f 找出 /opt 下一天前访问过的文件 |
| |
| 3、针对可疑文件可以使用stat进行创建修改时间。 |
| |
8、日志分析技巧
| 1、定位有多少IP在爆破主机的root帐号: |
| grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more |
| |
| 2、定位有哪些IP在爆破: |
| grep "Failed password" /var/log/secure|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 |
| |
| 3、爆破用户名字典是什么? |
| grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr |
| |
| 4、登录成功的IP有哪些: |
| grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more |
| |
| 5、登录成功的日期、用户名、IP: |
| grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11} ‘ |
| |
| 6、增加用户日志: |
| grep "useradd" /var/log/secure |
| |
| 7、删除用户kali日志: |
| grep "userdel" /var/log/secure |
| |
| 8、su切换用户 |
| more /var/log/secure | grep 'su:' |
| |
9、病毒查杀
| ①chkrootkit: |
| 网址:http://www.chkrootkit.org |
| 使用方法: |
| wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz |
| tar -zxf chkrootkit.tar.gz |
| cd chkrootkit-0.55 |
| ./chkrootkit |
| |
| ②Clamav: |
| ClamAV的官方下载地址为:http://www.clamav.net/download.html |
| 使用方法: |
| yum -y install epel-release |
| yum install –y clamav clamav-update |
| freshclam |
| clamscan -r /home |
| |
| ③河马webshell查杀 |
| 网址:https://www.shellpub.com/ |
| 使用方法: |
| https://www.shellpub.com/doc/hm_linux_usage.html |
| 深信服Webshell网站后门检测工具 |
| 网址:https://edr.sangfor.com.cn/ |
| |
| |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步