17、Linux应急响应

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		//清空所有历史命令(但这只是一个缓存文件)
//在每个用户的家目录下都会存放一个历史命令的隐藏文件。通过.bash_history文件查看当前帐号执行过的真正所有系统命令。
[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 	//使用重定向删除所有的历史命令(需要重新启动该shell环境才生效)
环境文件:
/etc/profile:全局环境文件(针对全体)
.bash_profile:个人的环境文件(针对个人;在用户的家目录下的隐藏文件)


2、为历史的命令增加登录的IP地址、执行命令时间等信息:
//1)保存1万条命令(在该文件下将开头是HISTSIZE行的信息匹配上,将匹配上的所有消息替换成HISTSIZE=10000)
sed -i 's/^HISTSIZE=1000/HISTSIZE=10000/g' /etc/profile	(安全加固文件)
//2)在/etc/profile的文件尾部添加如下行数配置信息:
USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`	//筛选该用户是否为当前用户
//3)source /etc/profile让配置生效

命令解读:
[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		//'>'标准错误;出现错误时直接放到/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	//这里的-e多点编辑和-i效果相同;[()]表示锁定中括号当中的小括号内的内容;s/[()]//g表示将每行的小括号当中的的内容替换为一个空内容。“:0”表示本地登入
[root@localhost ~]# USER_IP=`who -u am i 2>/dev/null | awk '{print $NF}' | sed -e 's/[()]//g'`	//将反引号当中的内容解读完成之后赋值给一个变量USER_IP

标准输入与输出

输出:标准输出、标准错误
[root@localhost Desktop]# cat awk.txt
123		//标准输出(output)【1>常常将1省略只写>】:一个命令字或者程序正常运行的结果
[root@localhost Desktop]# ca awk.txt
bash: ca: command not found...		//标准错误(error)【2>/dev/null(标准错误的2>后不能省略)】:一种状态或者错误的信息
Similar commands are::
'ac'
'sa'
输入:
标准输入(input)【0<】:连接至输入设备(键盘等)

使用方法:
1.标准输出-1>常常省略(输出)
2.标准错误-吃掉错误报告(标准错误使用--输出)
[root@localhost Desktop]# who -u am i
root     pts/0        2022-10-20 14:56   .         57402 (:0)
[root@localhost Desktop]# wo -u am i 2>/dev/null
3.标准输入(输入)
[root@localhost Desktop]# cat awk.txt 		
123
[root@localhost Desktop]# cat 0< awk.txt 
123
//Linux当中cat定义为表示标准输入命令字。当cat后面不加参数时为键盘输入;cat后面加东西/文件时为将文件标准输入后再标准输出

cat创建新文件:
[root@localhost Desktop]# cat > cat.txt
123132131
^C		//在另一行终止进程
[root@localhost Desktop]# cat cat.txt
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	//切换3级别运行模式
ctrl+alt=f1	//切换回来
永久切换运行模式:(5 3--图形模式切换成永久命令模式)
init 3/5	//切换运行级别(在命令模式下输入init 5--返回图形化界面--命令模式更安全,可操作空间变少)

查看默认允许模式:
[root@localhost ~]# systemctl get-default 
graphical.target		//g开头表示桌面允许模式
systemctl set-default multi-user.target 	//设置默认运行级别(进入3模式)
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/#/index/home


posted @ 2023-11-02 00:30  gcc_com  阅读(140)  评论(0编辑  收藏  举报