目录
2.2.1.2.打开/home各账号目录下的.bash_history,查看普通账号的历史命令
1.黑客入侵后的利用思路
黑客入侵后的利用思路可以包括以下几个方面:
- 篡改网页:查找对应网站首页文件路径、查看文件时间、内容。
- 创建超级用户:查看password、shadow文件时间、内容;查看登录成功时间和不成功事件查看机器当前登录的全部用户;查看机器创建以来登陆过的用户;查看机器所有用户的连接时间(小时);查看历史命令;查看ssh远程连接情况:黑客删除登录日志文件(rm -rf /var/log/secure)、防守者恢复被黑客删除的文件(lsof grep /var/log/secure)
- 挖矿:查询异常进程所对应的执行脚本文件 ,top命令查看异常进程对应的PID
- 内网渗透:攻击者利用防守:反弹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.排查当前系统登录信息
使用who
或w
命令查看当前登录用户。
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
文件中的AllowUsers
和DenyUsers
设置
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.检查异常端口
使用netstat
或ss
命令检查当前系统开放的端口,分析可疑端口、ip、PID
netstat -antlp|more
# 或
ss -tuln
关注非标准端口和未知服务的端口
2.4.检查异常进程
使用ps
命令查看当前系统中的进程。
ps aux | grep pid
关注占用CPU或内存资源过高的进程,以及未知或异常的服务进程。
2.5.检查开机启动项
2.5.1.基本使用
2.5.1.1.系统运行级别示意图
了解系统运行级别,可以使用runlevel
或systemctl 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账号
使用grep
和awk
等工具分析/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
亲爱的友友们,大家好!👋
在这个充满知识与分享的世界里,每一份文字的诞生都凝聚着作者的心血与智慧。今天,我带着满满的诚意,将这份精心准备的内容呈现给大家,希望它能为您的网络分析之旅增添一份助力。
码字的过程,就像是在知识的海洋中航行,需要不断地探索、思考、提炼。每一个字符的敲击,都是对未知世界的一次勇敢尝试;每一句话的斟酌,都是对精准表达的不懈追求。因此,当您看到这篇内容时,请想象一下,背后是我无数个日夜的辛勤耕耘,是对知识无尽的热爱与渴望。
现在,我想轻轻地请求大家,如果这篇内容对您有所帮助,或者让您有所启发,不妨动动手指,给我点个赞吧!💖 您的点赞,不仅是对我努力的认可,更是对我继续前行的巨大鼓励。它像是一束温暖的阳光,照亮了我前行的道路,让我更加坚定地走在分享知识的道路上。
万分感谢您的支持与厚爱!您的每一次点赞,都将化作我前进的动力,让我能够持续为大家带来更多有价值、有深度的内容。让我们一起,在知识的海洋中携手前行,共同探索未知的世界吧!🚀
再次感谢您的点赞与支持,愿我们的友谊如同这网络世界中的连接,永远紧密而牢固!💪💖