入侵排查之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.黑客入侵后的利用思路
黑客入侵后的利用思路可以包括以下几个方面:
- 篡改网页:查找对应网站首页文件路径、查看文件时间、内容。
- 创建超级用户:查看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
命令查看当前系统中的进程。