入侵排查之Linux

目录

1.黑客入侵后的利用思路

2.入侵排查思路

2.1.账号安全

2.1.1.用户信息文件/etc/passwd

2.1.2.影子文件/etc/shadow

2.1.3.入侵排查

2.1.3.1.排查当前系统登录信息

2.1.4.2.查询可以远程登录的账号信息

2.2.历史命令

2.2.1.基本使用

2.2.1.1.root历史命令

2.2.1.2.打开/home各账号目录下的.bash_history,查看普通账号的历史命令

2.2.1.3.历史操作命令清除

2.2.2.入侵排查

2.3.检查异常端口

2.4.检查异常进程

2.5.检查开机启动项

2.5.1.基本使用

2.5.1.1.系统运行级别示意图

2.5.1.3.开机启动配置文件

2.5.1.4.脚本开机自启案例

2.5.2.入侵排查

2.6.检查定时任务

2.6.1.使用crontab创建计划任务

2.6.1.1.基本命令

2.6.1.2.利用anacron实现异步定时任务调度

2.6.2.入侵排查

2.7.检查服务

2.7.1.服务自启动

2.7.1.1.第一种修改方法

2.7.1.2.第二种修改方法

2.7.2.入侵排查

2.8.检查异常文件

2.9.1.linux系统日志默认存放路径

2.9.2.常见服务的日志文件路径

2.9.3.日志分析技巧

2.9.3.1.定位有多少IP在爆破主机的root账号

2.9.3.2.登录成功的IP有哪些

2.9.3.3.增加一个用户kali日志

3.1.Rootkit查杀

3.1.1.chkrootkit

3.1.1.1.下载

3.1.1.2.使用方法

3.1.2.rkhunter

3.1.2.1.下载

3.1.2.2.使用方法

3.2.病毒查杀clamav

3.2.1.下载地址

3.2.2.安装

3.2.2.1.安装方式1

3.2.2.2.安装方式2

3.3.webshell查杀

3.4.linux安装检查脚本


1.黑客入侵后的利用思路

黑客入侵后的利用思路可以包括以下几个方面:

  1. 篡改网页:查找对应网站首页文件路径、查看文件时间、内容。
  2. 创建超级用户:查看password、shadow文件时间、内容;查看登录成功时间和不成功事件查看机器当前登录的全部用户;查看机器创建以来登陆过的用户;查看机器所有用户的连接时间(小时);查看历史命令;查看ssh远程连接情况:黑客删除登录日志文件(rm -rf /var/log/secure)、防守者恢复被黑客删除的文件(lsof grep /var/log/secure)
  3. 挖矿:查询异常进程所对应的执行脚本文件 ,top命令查看异常进程对应的PID
  4. 内网渗透:攻击者利用防守:反弹shell、植入cs/ms木马;防守思路:查看异常流量;使用tcpdump抓取网络包查看流量情况

2.入侵排查思路

2.1.账号安全

2.1.1.用户信息文件/etc/passwd

检查是否存在异常用户或未知用户。

关注用户权限设置,特别是特权用户(如root)。

root:x:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell
用户名:密码:用户ID:组id:用户说明:家目录:登陆之后shell
注意:无密码只允许本机登录,不允许远程登录

2.1.2.影子文件/etc/shadow

影子文件存储了用户的加密密码信息。

检查密码字段是否被篡改或存在异常。

注意:直接查看/etc/shadow文件需要root权限,且出于安全考虑,通常不会直接显示密码哈希值。

root:$6$oGLFhf899ckdeMC2p3ZetrE$X485ouEWFSEmSgsWEH78423UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到警告天数:密码过期之后的宽限天数:账号失效时间:保留

2.1.3.入侵排查

2.1.3.1.排查当前系统登录信息

使用whow命令查看当前登录用户。

awk文本处理工具,用于模式扫描和处理语言

who   		#查看当前登录用户(tty表示本地登录,pts远程登录)
w     		#查看系统信息,想知道某一时刻用户的行为
uptime  	#查看登录多久、多少用户、负载
awk -F: '$3==0{print $1}' /etc/passwd
-F来指定分隔符,默认的字段分隔符是任意空白字符(空格或者TAB)
awk的数据字段变量:
      $0表示整行文本
      $1表示文本中第一个数据字段
      $2表示文本中第二个数据字段
      $n表示文本中第n个数据字段
      awk的用-F来指定分隔符
awk命令的完整语法:
	awk ‘BEGIN{commands}pattern{commands}END{commands}’ file1
			BEGIN是处理数据前执行的命令,END是处理数据后执行的命令,commands指的是awk里			面的子命令,并不是shell中的mkdir、ls等命令
2.1.4.2.查询可以远程登录的账号信息

检查/etc/ssh/sshd_config文件中的AllowUsersDenyUsers设置

grep -E '^AllowUsers|^DenyUsers' /etc/ssh/sshd_config
 awk '/\$1|\$6/{print $1}' /etc/shadow

除root账号外,其他账号是否存在sudo权限,如非管理需要,普通账号应删除sudo权限。

 more /etc/sudoers |grep -v "^#|^$" |grep "ALL=(ALL)"
usermod -L user   #禁用账号,账号无法登录,/etc/shadow第二栏为!开头
userdel user      #删除user用户
userdel -r user   #将删除user用户,并且将/home目录下的user目录一并删除

2.2.历史命令

2.2.1.基本使用

2.2.1.1.root历史命令
history 

使用history命令查看root用户的历史命令。

2.2.1.2.打开/home各账号目录下的.bash_history,查看普通账号的历史命令

为历史的命令增加登录的IP地址、执行命令时间等信息。将username替换为具体用户的用户名。

cat /home/username/.bash_history
2.2.1.3.历史操作命令清除

清除当前shell会话的历史记录,要清除所有用户的历史记录,可以删除每个用户主目录下的.bash_history文件。

history -c  #此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录

2.2.2.入侵排查

检查历史命令中是否存在异常操作,如未知命令、系统修改命令等

进入用户目录下:

cat .bash_history >> history.txt

2.3.检查异常端口

使用netstatss命令检查当前系统开放的端口,分析可疑端口、ip、PID

netstat -antlp|more
# 或
ss -tuln

关注非标准端口和未知服务的端口

2.4.检查异常进程

使用ps命令查看当前系统中的进程。

ps aux | grep pid

关注占用CPU或内存资源过高的进程,以及未知或异常的服务进程。

2.5.检查开机启动项

2.5.1.基本使用

2.5.1.1.系统运行级别示意图

了解系统运行级别,可以使用runlevelsystemctl get-default命令。

运行级别含义
0关机
1单用户模式,可以想象为windaws的安全模式,主要用于系统复
2不完全的命令行模式,不含NFS服务
3完全的命令行模式,就是标准字付界面
4系统保留
5图形模式
6重启动
runlevel
# 或对于使用systemd的系统
systemctl get-default

系统默认允许级别:

vim /etc/inittab
id=3:initdefault  系统开机后直接进入哪个运行级别
2.5.1.3.开机启动配置文件

检查/etc/rc.local/etc/init.d//etc/systemd/system/等目录下的启动脚本。

/etc/rc.local
/etc/rc.d/rc[0~6].d
2.5.1.4.脚本开机自启案例

1、当我们需要开机启动自己的脚本时,只需要将可执行脚本丢在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软链接即可。

ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

此处sshd是具体服务的脚本文件,s100ssh是其软链接,S开头代表加载时自启动;如果是K开头的脚本文件,代表运行级别加载时需要关闭。

2、创建一个简单的systemd服务文件,实现脚本开机自启。

sudo nano /etc/systemd/system/myscript.service

内容示例

[Unit]
Description=My Script Service

[Service]
ExecStart=/path/to/myscript.sh

[Install]
WantedBy=multi-user.target

然后启用并启动服务

sudo systemctl enable myscript.service
sudo systemctl start myscript.service

2.5.2.入侵排查

more /etc/rc.local /etc/rc.d/rc[0~6].d ls -l /etc/rc.d/rc3.d/

检查启动项中是否存在未知或异常的服务,以及启动脚本中的命令和路径是否合法。

2.6.检查定时任务

2.6.1.使用crontab创建计划任务

2.6.1.1.基本命令

使用crontab -e编辑定时任务。

添加定时任务,如每天凌晨1点执行某个脚本:

0 1 * * * /path/to/myscript.sh
crontab -l 列出某个用户cron服务的详细内容
注意:默认编写的crontab文件会保存在(/var/spool/cron/用户名 例如:/var/spool/cron/root/)

crontab -r 删除每个用户cront任务(此命令是删除所有的计划任务)
crontab -e 使用编辑器编辑当前的crontab文件
如:*/1 **** echo "hello world" >>/tmp/test.txt每分钟写入文件
2.6.1.2.利用anacron实现异步定时任务调度

对于不经常开机或需要确保任务在错过时仍能执行的系统,可以使用anacron。

anacron参数详解:

-s 根据/var/spool/anacrontab/*文件中记录的时间来执行所有脚本
-f 强制执行,不去判断记录时间和当前时间的差异
-n 立刻进行未执行的任务,不进行延迟执行
-u 仅仅更新/var/spool/anacrontab/*文件里的时间,不执行job任务
job /etc/anacrontab中的job名称

anacron配置详解:

定义启动程序的环境变量:
  	START_HOURS_RANGE=17-23:表示程序在17时至23时之间会启动
  	RANDOM_DELAY=5:表示定时触发后随机延迟5分钟以内的时间再启动应用(主要是防止一	
开机多任务同时启动造成负载过重)。

任务定义的格式:
  	1 5 crawl $HOME/bin/mycrawl:第一列表示格几个小时启动一次,第二列表示触发后
延迟的分钟数,最终的延迟时间是5+RANDOM_DELAY,第三列是任务名称,第四列是要运行
的命令及相关的参数。
每天运行/opt/tomcat9/webapps/ROOT/update.sh挖矿脚本:
vim /etc/anacrontab
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=2
# the jobs will be started during the following hours only
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
1	5	cron.daily		nice run-parts /etc/cron.daily
7	25	cron.weekly		nice run-parts /etc/cron.weekly
@monthly 45	cron.monthly		nice run-parts /etc/cron.monthly
1  1       update.sh     nice run-parts /opt/tomcat9/webapps/ROOT/update.sh

2.6.2.入侵排查

重点关注以下目录中是否存在恶意脚本:

/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/*   #查看目录下所有文件

2.7.检查服务

2.7.1.服务自启动

2.7.1.1.第一种修改方法

systemctl命令用于基于systemd的系统和服务管理器,它提供了比chkconfig更现代和强大的服务管理功能。

systemctl [enable|disable] [服务名.service]

chkconfig [--level 运行级别] [独立服务名] [on|off|reset]
chkconfig -level 2345 httpd on   开启自启动
chkconfig httpd on (默认level是2345)
2.7.1.2.第二种修改方法
修改/etc/rc.d/rc.local文件
加入  /etc/init.d/httpd start 

2.7.2.入侵排查

RPM包安装的服务:

systemd系统

1.查看服务状态

systemctl status 服务名.service

要查看httpd服务的状态:systemctl status httpd.service

2.查看所有服务的自启动状态(虽然这不是systemctl的直接功能,但可以通过列出所有服务并检查它们的启用状态来模拟):

systemctl list-unit-files --type=service

这个命令会列出所有服务及其启用状态(enabled/disabled)。

3.启动或停止  服务

systemctl start/stop 服务名.service

4.启用/禁用   服务开机自启动

systemctl enable/disable  服务名.service

chkconfig --list 查看服务自启动状态,可以看到所有的RPM包安装的服务
ps aux | grep crond 查看当前服务
系统在3与5级别下的启动项
中文环境
chkconfig --list | grep "3:启用\|5:启用"
英文环境
chkconfig --list | grep "3:on\|5:on"

源码包安装的服务:

查看服务安装位置,一般是在/usr/local/
systemctl httpd start
搜索/etc/rc.d/init.d/ 查看是否存在

2.8.检查异常文件

查看敏感目录,如/tmp目录下的文件,同时注意隐藏文件夹,以“..”为名的文件夹具有隐藏属性

得到发现webshell、远控木马的创建时间,如何找出同一时间范围内创建的文件?
  	使用find命令查找

针对可疑文件可以使用stat进行创建修改时间。
# stat update.sh

检查/tmp/var/tmp等临时目录中的文件,以及用户主目录下的未知文件。

ls -la /tmp
ls -la /var/tmp
ls -la /home/username/

2.9.1.linux系统日志默认存放路径

        常见的系统日志文件路径包括/var/log/syslog/var/log/auth.log(Debian/Ubuntu)、/var/log/messages(Red Hat/CentOS)等。

2.9.2.常见服务的日志文件路径

如Apache的日志文件通常位于/var/log/httpd//var/log/apache2/目录下。

2.9.3.日志分析技巧

2.9.3.1.定位有多少IP在爆破主机的root账号

使用grepawk等工具分析/var/log/auth.log文件。

grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr


定位有哪些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

爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print
"$1\n";}'|uniq -c|sort -nr
2.9.3.2.登录成功的IP有哪些
grep "Accepted" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr

登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
2.9.3.3.增加一个用户kali日志

假设要查找与“kali”用户相关的日志条目,可以使用grep命令。

grep "kali" /var/log/auth.log

3.1.Rootkit查杀

3.1.1.chkrootkit

3.1.1.1.下载

从官方网站或可信的源下载chkrootkit。

http://www.chkrootkit.org
3.1.1.2.使用方法

根据提示检查系统是否感染Rootkit。

使用方法:
wget ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz
tar zxvf chkrootkit.tar.gz
cd chkrootkit-0.52
make sense
#编译完成没有报错的话执行检查
./chkrootkit

3.1.2.rkhunter

3.1.2.1.下载
http://rkhunter.sourceforge.net
3.1.2.2.使用方法

根据检查结果判断系统是否感染Rootkit。

 rkhunter --update
 rkhunter --checkall

3.2.病毒查杀clamav

3.2.1.下载地址

http://www.clamav.net/download.html

3.2.2.安装

3.2.2.1.安装方式1
1.可能需要先启用EPEL仓库
sudo yum install epel-release
sudo yum install clamav clamav-update
2.安装完成后,可以使用clamscan命令进行病毒扫描。
sudo clamscan -r /path/to/scan
3.2.2.2.安装方式2
#安装

sudo apt-get update
sudo apt-get install clamav clamtk
#更新病毒库
freshclam
#扫描方法
clamscan -r /etc --max-dir-recursion=5 -l /root/etcclamav.log
clamscan -r /bin --max-dir-recursion=5 -l /root/binclamav.log
clamscan -r /usr --max-dir-recursion=5 -l /root/usrclamav.log
#扫描并杀毒
clamscan -r --remove /usr/bin/bsd-port
clamscan -r --remove /usr/bin/
clamscan -r --remove /usr/local/zabbix/sbin
#查看日志发现
cat /root/usrclamav.log |grep FOUND

3.3.webshell查杀

河马webshell查杀:http://www.shellpub.com
深信服Webshell网站后门检测工具:http://edr.sangfor.com.cn/backdoor_detection.html

3.4.linux安装检查脚本

https://github.com/grayddq/GScan
https://github.com/ppabc/security_check
https://github.com/T0xst/linux

亲爱的友友们,大家好!👋

在这个充满知识与分享的世界里,每一份文字的诞生都凝聚着作者的心血与智慧。今天,我带着满满的诚意,将这份精心准备的内容呈现给大家,希望它能为您的网络分析之旅增添一份助力。

码字的过程,就像是在知识的海洋中航行,需要不断地探索、思考、提炼。每一个字符的敲击,都是对未知世界的一次勇敢尝试;每一句话的斟酌,都是对精准表达的不懈追求。因此,当您看到这篇内容时,请想象一下,背后是我无数个日夜的辛勤耕耘,是对知识无尽的热爱与渴望。

现在,我想轻轻地请求大家,如果这篇内容对您有所帮助,或者让您有所启发,不妨动动手指,给我点个赞吧!💖 您的点赞,不仅是对我努力的认可,更是对我继续前行的巨大鼓励。它像是一束温暖的阳光,照亮了我前行的道路,让我更加坚定地走在分享知识的道路上。

万分感谢您的支持与厚爱!您的每一次点赞,都将化作我前进的动力,让我能够持续为大家带来更多有价值、有深度的内容。让我们一起,在知识的海洋中携手前行,共同探索未知的世界吧!🚀

再次感谢您的点赞与支持,愿我们的友谊如同这网络世界中的连接,永远紧密而牢固!💪💖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值