江鸟's Blog

HVV蓝队应急响应思路学习(linux)

字数统计: 1.9k阅读时长: 7 min
2021/03/04 Share

HVV蓝队应急响应思路学习linux篇,主要是需要注意的位置以及文件,近期更新蓝队学习过程。

常见的应急响应事件分类:

  • web入侵:网页挂马、主页篡改、Webshell
  • 系统入侵:病毒木马、勒索软件、远控后门
  • 网络攻击:DDOS攻击、DNS劫持、ARP欺骗

如何判断是否被入侵?

一、账号安全

基本使用:

1、用户信息文件 /etc/passwd

1
2
root:x\:0:0:root:/root:/bin/bash
account:password:UID:GID:GECOS:directory:shell

用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell

注意:无密码只允许本机登陆,远程不允许登陆

2、影子文件 /etc/shadow

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

3、几个常用命令:

1
2
3
who      //查看当前登录用户(tty 本地登陆 pts 远程登录)
w //查看系统信息,想知道某一时刻用户的行为
uptime //查看登陆多久、多少用户,负载

入侵排查:

1、查询特权用户(特权用户uid 为 0)

查看/etc/passwd中UID为0的账户。

可以这样cat /etc/passwd | grep :0,一般只有root

如果出现其他用户,说明该用户的权限与root一致,需要查看

image-20210305130520670

2、查询可以远程登录的帐号信息

无密码不能远程登陆。打开/etc/shadow中查看有加密密码的用户进行判断。(配合whouptime进行判断哪些正在被远程)

这是服务器截图,若是发现除了当前用户的远程连接,可以查看一下/etc/shadow内容查找

image-20210305130714718

3、禁用或删除多余及可疑的帐号

1
2
3
usermod -L user   //禁用帐号,帐号无法登录,/etc/shadow 第二栏为 ! 开头
userdel user //删除 user 用户
userdel -r user //将删除user用户,并且将/home目录下的user目录一并删除

二、历史命令

基本使用:

通过 .bash_history 查看帐号执行过的系统命令

注:如果使用了别的shell方式如zsh,就是.zsh_history

1、root 的历史命令

1
history

2、历史操作命令的清除:

1
history -c

ps:但此命令并不会清除保存在文件中的记录,因此需要手动删除 /用户名/.bash_profile 文件中的记录。

入侵排查:

进入用户目录下:

1
cat .bash_history >> history.txt  //在用户根目录下导出history.txt

三、端口

使用 netstat 网络连接命令,分析可疑端口、IP、PID

1
netstat -antlp | more

ps:在linux上没有netstat命令时,使用yum install net-tools安装。

/proc/[pid]/exe为实际运行程序的符号链接

运行ls -l /proc/$PID/exefile /proc/$PID/exe$PID 为对应的 pid 号)

四、进程

使用 ps 命令,分析进程

1
ps aux | grep pid     //输入想查看的pid数字

ps:也可以使用top查看高使用率的进程进行分析。(例如矿机程序,跑了就是100%)

五、开机启动项

基本使用:

系统运行级别示意图:

img

查看运行级别命令

1
runlevel

系统默认允许级别

1
vi /etc/inittab id=3:initdefault   //系统开机后直接进入哪个运行级别

开机启动配置文件

1
2
/etc/rc.local 
/etc/rc.d/rc[0~6].d

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

1
[root@localhost ~]# ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh

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

入侵排查:

启动项文件:

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

查看是否存在脚本的软链接。

六、定时任务

入侵排查:

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

1
2
3
4
5
6
7
8
9
/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/*

七、服务

服务自启动:

第一种修改方法:

1
2
3
chkconfig [--level 运行级别][独立服务名][on|off]
chkconfig –level 2345 httpd on 开启自启动
chkconfig httpd on (默认 level 是 2345)

第二种修改方法:

1
修改 /etc/re.d/rc.local 文件 加入 /etc/init.d/httpd start

第三种修改方法:

使用 ntsysv 命令管理自启动,可以管理独立服务和 xinetd 服务。

ps:如果没有ntsysv命令使用yum install ntsysv安装。

入侵排查:

1、查询已安装的服务:

RPM 包安装的服务:

1
2
3
chkconfig --list 查看服务自启动状态,可以看到所有的RPM包安装的服务

ps aux | grep "服务名字" 查看当前服务(不加引号)

系统在 3 与 5 级别下的启动项

中文环境

1
chkconfig --list | grep "3:启用|5:启用"

英文环境

1
chkconfig --list | grep "3:on|5:on"

源码包安装的服务

查看服务安装位置 ,一般是在 /user/local/

1
service httpd start

搜索 /etc/rc.d/init.d/ 查看是否存在

八、系统日志

日志默认存放位置:/var/log/

查看日志配置情况:more /etc/rsyslog.conf

1
2
3
4
5
6
7
8
9
10
内核及公共消息日志:/var/log/messages
计划任务日志:/var/log/cron
系统引导日志:/var/log/dmesg
邮件系统日志:/var/log/maillog
用户登录日志:/var/log/lastlog
/var/log/boot.log(记录系统在引导过程中发生的时间)
/var/log/secure (用户验证相关的安全性事件)
/var/log/wtmp(当前登录用户详细信息)
/var/log/btmp(记录失败的的记录)
/var/run/utmp(用户登录、注销及系统开、关等事件)

日志文件详细介绍:

1
2
/var/log/secure        
//Linux系统安全日志,记录用户和工作组的情况、用户登陆认证情况

image-20210305131554663

1
2
3
lastlog
/var/log/lastlog
//最近的用户登录事件,一般记录最后一次的登录事件

image-20210305131706990

1
2
/var/log/wtmp
//该日志文件永久记录每个用户登录、注销及系统的启动、停机的事件。

ps:该日志为二进制文件,不能用诸如tail/cat/等命令,使用last命令查看。

1
2
/var/log/btmp
//此文件是记录错误登录的日志,可以记录有人使用暴力破解ssh服务的日志。

ps:该文件用lastb打开

1
2
/var/log/utmp
//该日志记录当前用户登录的情况,不会永久保存记录。

ps:可以用who/w命令来查看

参考:https://github.com/Lorna-Dane/Blue-Team/blob/main/%E5%BA%94%E6%80%A5/linux%E5%BA%94%E6%80%A5%E5%93%8D%E5%BA%94%E6%89%8B%E5%86%8C.md

CATALOG
  1. 1. 如何判断是否被入侵?
    1. 1.1. 一、账号安全
      1. 1.1.1. 基本使用:
      2. 1.1.2. 入侵排查:
    2. 1.2. 二、历史命令
      1. 1.2.1. 基本使用:
      2. 1.2.2. 入侵排查:
    3. 1.3. 三、端口
    4. 1.4. 四、进程
    5. 1.5. 五、开机启动项
      1. 1.5.1. 基本使用:
      2. 1.5.2. 入侵排查:
    6. 1.6. 六、定时任务
      1. 1.6.1. 入侵排查:
    7. 1.7. 七、服务
      1. 1.7.1. 服务自启动:
      2. 1.7.2. 入侵排查:
    8. 1.8. 八、系统日志