前言
为什么要做系统入侵排查
入侵排查1
1.排查历史命令记录
2.可疑端口排查
3.可疑进程排查
4.开机启动项
4.1系统运行级别示意图:
4.2查看运行级别命令
4.3系统默认允许级别
4.4.开机启动配置文件
入侵排查2:
1.启动项文件排查:
2.定时任务排查
1、利用crontab创建计划任务
2、利用anacron实现异步定时任务调度
3.入侵排查
小技巧:
3.服务排查
3.1第一种修改方法:
3.2第二种修改方法:
3.3第三种修改方法:
3.4入侵排查
1、查询已安装的服务:
2.源码包安装的服务
总结
前言
对我处在学生时期的我来说,目前web渗透还是为主,但是还是需要对于蓝队相关的应急响应,等保测评等还是需要有一定的了解的,攻防兼备才能越站越勇嘛,linux入侵排查也能够让我更加熟悉liunx命令,本篇博文紧接上一篇博文开始进行.
为什么要做系统入侵排查
当企业发生黑客入侵、系统崩溃或其它影响业务正常运行的安全事件时,急需第一时间进行处理,使企业的网络信息系统在最短时间内恢复正常工作,进一步查找入侵来源,还原入侵事故过程,同时给出解决方案与防范措施,为企业挽回或减少经济损失。针对常见的攻击事件,结合工作中应急响应事件分析和解决的方法,总结了一些Linux服务器入侵排查的思路。
入侵排查思路
作为渗透小子一名,当然是通过kali来进行练习和总结了
入侵排查1
1.排查历史命令记录
进入用户目录下,这里用户指的是,觉得可疑的用户或是要排查的用户,这里用root用户进行示例
进入用户目录下后将需要查询的历史操作命令追加到,一个自己命名的txt文件中,然后自己查看,历史命令看是否存在可疑的命令.
cd /root/
cat .bash_history >> his.txt(自己命名)
2.可疑端口排查
使用netstat 网络连接命令,分析可疑端口、IP、PID
netstat -antlp|more
其中图中Local Address代表开放的端口,如图所示只开放了22,36029这两个端口
查看下pid所对应的进程文件路径,这里我用上图所示的1039进程做个示例,可以查看对应进程文件件的位置,如果发现可疑端口开放,可以查看对应的进程进行关闭进程
运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号)
发现可疑的进程,通过下面的命令进行关闭
sudo kill -9 进程PID号
3.可疑进程排查
这个其实上面的基本就处理了一部分了
使用ps命令,分析进程
ps aux | grep pid
- 第一列是进程ID(PID),例如911、1885和5836。
- 第二列是进程所属用户,例如message+、kali和root。
- 第三列是进程占用的CPU百分比,例如0.0、0.3和0.1。
- 第四列是进程占用的内存百分比,例如0.3、0.3和0.1。
- 第五列是进程占用的虚拟内存大小,单位为KB,例如11948、10632和6572。
- 第六列是进程占用的常驻内存大小,单位为KB,例如6144、6144和2304。
- 第七列是进程状态,例如Ss、Ss和S+。其中S表示休眠状态,s表示中断等待状态,+表示前台运行状态。
- 第八列是进程启动时间,例如13:29、13:35和17:10。
- 第九列是进程运行时间,例如0:01、0:01和0:00。
- 第十列是进程的命令行,例如/usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile
4.开机启动项
基本使用:
4.1系统运行级别示意图:
运行级别 | 含义 |
---|---|
0 | 关机 |
1 | 单用户模式,可以想象为Windows的安全模式,主要用于系统修复 |
2 | 不完全的命令行模式,不含NFS服务 |
3 | 完全的命令行模式,就是标准字符界面 |
4 | 系统保留 |
5 | 图形模式 |
6 | 重启动 |
4.2查看运行级别命令
runlevel
┌──(root㉿kali)-[~]
└─# runlevel
N 5 代表我现在使用的是图形界面
4.3系统默认允许级别
vi /etc/inittab
id=3:initdefault 系统开机后直接进入哪个运行级别
4.4.开机启动配置文件
/etc/rc.local /etc/rc.d/rc[0~6].d
例子:当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在 /etc/init.d 目录下,然后
在 /etc/rc.d/rc*.d 中建立软链接即可
┌──(root㉿kali)-[~] └─# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh
此处sshd是具体服务的脚本文件,S100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭的。
入侵排查2:
1.启动项文件排查:
排查启动项文件夹,下面的是通过简化方式进行写的,主要看当然目录的位置
示例: more /etc/rc0.d
more /etc/rc.local /etc/rc.d /etc/rc[0~6].d
ls -l /etc/rc.d/rc3.d/
2.定时任务排查
基本使用
1、利用crontab创建计划任务
基本命令
crontab -l 列出某个用户cron服务的详细内容
Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务)
crontab -e 使用编辑器编辑当前的crontab文件
如:/1 * echo "hello world" >> /tmp/test.txt 每分钟写入文件
2、利用anacron实现异步定时任务调度
使用示例:
每天运行 /home/backup.sh 脚本: vi /etc/anacrontab @daily 10 example.daily /bin/bash
/home/backup.sh
当机器在 backup.sh 期望被运行时是关机的,anacron会在机器开机十分钟之后运行它,而不用再等待7天。
3.入侵排查
重点关注以下目录中是否存在恶意脚本,查看方法和上面的一致,基本都是查看对应目录下是否有可疑的文件.
/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/* 查看目录下所有文件
3.服务排查
服务自启动
3.1第一种修改方法:
chkconfig [--level 运行级别] [独立服务名] [on|off]
chkconfig –level 2345 httpd on 开启自启动
chkconfig httpd on (默认level是2345)
3.2第二种修改方法:
修改/etc/re.d/rc.local 文件
加入 /etc/init.d/httpd start
3.3第三种修改方法:
使用ntsysv命令管理自启动,可以管理独立服务和xinetd服务。
3.4入侵排查
1、查询已安装的服务:
RPM包安装的服务
chkconfig --list 查看服务自启动状态,可以看到所有的RPM包安装的服务
ps aux | grep crond 查看当前服务
系统在3与5级别下的启动项
中文环境
chkconfig --list | grep "3:启用\|5:启用"
英文环境
chkconfig --list | grep "3:on\|5:on"
2.源码包安装的服务
查看服务安装位置 ,一般是在/user/local/ service httpd start 搜索/etc/rc.d/init.d/ 查看是否存在
总结
对系统进行入侵排查也是比较费时间和精力的一次行动,本篇目前只记录这么多,后续会继续记录和总结.