应急响应入门篇-Linux分析排查技术(下)

 

一、Linux分析排查技术

1- 异常用户分析排查

在Linux中root用户是一个无敌的存在,可以在Linux上做任何事情。

新建用户 useradd username

设置密码 passwd username 输出密码

设置用户uid和gid都为0,(root用户uid为0,gid为0)修改问即可/etc/

cat /etc/passwd

grep “0:0” /etc/passwd

ls -l /etc/passwd

awk -F: “$3==0”{print$1}’ /etc/shadow或awk -F:’length($2)==0{print$1}’ /etc/shadow

1.cat /etc/passwd //查看etc/passwd目录下的用户

2.vim /etc/passwd 进入这个目录下,将test1的uid和gid改为0,0.

3.新建用户 useradd username

设置密码 passwd username 输出密码

4.使用su test1 切换到test1用户下。

5.使用grep “0:0” /etc/passwd来找gid和pid都为管理员用户的用户。

6.ls -l /etc/passwd 查看修改时间

7.还可以使用awk -F: “$3==0”{print$1}’ /etc/passwd或awk -F:’length($2)==0{print$1}’ /etc/passwd来对其进行查找

8.最后使用id来查看test1的用户属性

Linux所有用户都会在/etc/passwd、/etc/shadow、/etc/group文件中记录

cat /etc/passwd :查看是否有其他uid,gid为0的情况

less /etc/passwd:查看是否有新增用户

grep :0 /etc/passwd:查看是否有特权用户

ls -l /etc/passwd:查看passwd最后修改时间

awk -F: 'length($2)==0 {print $1}' /etc/shadow:查看是否存在空口令用户

2-历史命令分析history

在Linux系统中默认会记录之前执行的命令 /root/bash_history文件中

用户可以使用cat /root/bash_history进行查看或者使用history命令进行查看

特别注意:wget(可能下载远程木马)、ssh(连接内网主机)、tar zip 类命令(数据打包)、系统配置等(命令修改)

1.使用history可以查看历史命令。

2.然后对其进行查找一些比较特别的命令如wget、ssh、tar,zip等等命令。

3-计划任务排查-crontab

在Liunx系统中可以使用命令crontab进行计划任务的设定

其中-e 可以用来编辑设定计划任务,-l可以用来查看当前计划任务,-r用来删除计划任务。

特别注意计划任务中未知内容。

使用crontab -h 查看帮助信息

crontab -l 查看当前的计划任务。

新建一个计划任务。

然后把它保存到/bin/ls目录下。

常见计划任务位置:

/var/spool/cron/*
/var/spool/anacron/*
/etc/crontab
/etc/anacrontab
/etc/cron.*
/etc/anacrontab
/etc/rc.d/init.d/

4-开机启动项

在Linux(Debian)系统中,/etc/init.d/目录下保存着开机自启动程序的目录

用户可以直接使用/etc/init.d/程序名称查看status状态

使用update-rc.d 程序名称 disable 取消开机自启动。 enable开机启动

使用etc/init.d 查看开机自启动目录

查看apache2 开机启动项的状态

使用/etc/init.d/apche2 start 讲apache2 开启。

再次查看它的状态值,发现已经启动了。

使用upadte-rc.d apache2 enbale 设置开机自启动。

重启一次之后再次查看状态值。

常用命令:

ls /etc/rc.d
systemctl list-unit-files
chkconfig --list [service_name]

5-$path变量异常

决定了shell将到那些目录中寻找命令或程序,PATH的值是一系列目录,当你运行一个程序时,LINux在这些目录下仅需搜寻编译连接。ls cd

修改PATH export PATH=$PATH:/usr/locar/new/bin 本地终端中有效,重启后无效。在/etc/profile或/home/.bashrc(source~/.bashrc)才能永久生效。

6-后门排查-rkhunter

Rkhunter具有如下功能:

1.系统命令检测、MD5校验

2.Rookit检测

3.本机敏感目录、系统配置异常检测

安装:apt install rkhunter

基本使用: rkhunter -check -sk

使用 rkhunter -check -sk 进行后门检测。

要注意那些warning的一些目录。

跑完程序之后,然后对可疑目录再次进行排查。

 

二、常用技巧:

1.日志如果被软链接到/dev/null
1.删除log
2.重启rsyslog

2 如果文件/目录无法删除,可使用lsattr查看文件/目录属性,如果有-i属性可使用chattr -i去除

3 查找777的权限的文件:find / \*.php -perm 777,因为大部分黑客普遍喜欢直接赋于文件/目录777的权限

4 搜集SSH爆破字典:grep "Failed password" /var/log/secure | awk {'print $9'} | sor0t | uniq -c | sort -nr

5 查看恶意文件里面的IP:strings /usr/bin/.sshd | egrep '[1-9]{1,3}\.[1-9]{1,3}\.'

6 根据特征删除指定进程:ps aux|grep -v grep|grep "mysqlc"|awk '{print $2}'|xargs kill -9

7 获取进程id数组,并循环杀死所有进程

ps -ef|grep "java" | grep -v grep|awk '{print $2}'
kill -9 `ps -ef|grep "java" | grep -v grep|awk '{print $2}'`
for pid in $(ps -ef|grep "java" | grep -v grep|awk '{print $2}'); do
  echo $pid
  kill -9 $pid
done

8 隐藏进程查找:
进程都存在于内存中,而内存中的数据又都是写入到/proc/目录下,基于此可查找隐藏文件

ps -ef | awk '{print}' | sort -n | uniq >1
ls /proc | sort -n |uniq >2
diff 1 2

另外,针对挖矿命令被劫持的情况下可以使用perf top -s pid,comm,dso,symbol来看到挖矿进程

9 SEO文件搜索:grep -ri baiduspider web_root_master

10 netstat被替换,可使用ss、lsof来替换

11 arp -a:查看arp记录是否正常

12 关注Content-Length值:awk '{if($10>5000000){print $0}}' /var/log/httpd/access_log

13 查看动态库是否被修改

echo $LD_PRELOAD
busybox cat /etc/ld.so.preload

也可使用strace、ldd、readefl等命令

14 利用iptables阻断通讯

iptables -A INPUT -s xmr.crypto-pool.fr -j DROP
iptables -A OUTPUT -d xmr.crypto-pool.fr -j DROP

15 文件监控
创建文件监控规则

auditctl -w /etc/passwd -p war -k password_monitor

监听日志

tail -f /var/log/audit/audit.log|grep password_monitor

16 网页挖矿多数都是加载conhive.min.js,script标签里有miner.start关键字,全局查找即可

17 检查SSH后门
•对比ssh版本:ssh -V
•查看ssh配置文件和/usr/sbin/sshd的时间:stat /usr/sbin/sshd
•strings检查/usr/sbin/sshd,看是否有邮箱、IP等信息:strings /usr/bin/.sshd | egrep ‘[1-9]{1,3}.[1-9]{1,3}.‘
•通过strace监控sshd进程读写文件的操作,一般的sshd后门都会将账户密码记录到文件,可以通过strace进程跟踪到ssh登录密码文件。

18 清除僵尸进程
父进程调用fork创建子进程后,子进程运行直至其终止,它立即从内存中移除,但进程描述符仍然保留在内存中。

ps -e -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9

 

三、总结:

本文主要是紧接着之前的文章进行补充,主要是从异常用户分析、历史命令分析、计划任务排查、开机启动项、$path变量异常、后门排查-rkhunter等方面出发,来对linux系统进行全方面的应急响应。

(完)