• 蓝队应急响应之Linux篇


    LINUX

    分析敏感文件或目录

    TMP临时目录

    tmp目录是一个放置临时文件的目录,普通用户对其目录内的文件都具有读写的权限,因此tmp目录通常用于提权

    请添加图片描述


    开机自启动文件分析

    查看自启动文件:ls -alh /etc/init.d/ (-h显示文件大小)
    请添加图片描述
    请添加图片描述
    请添加图片描述


    查询敏感文件

    以下是常用到的find命令:

    查询一些敏感的文件后缀名, 例如php, aspx, jsp等webshell常用后缀

    find ./ mtime 0 name "*.php"   //查找24小时内修改过的指定文件 mtime(修改时间) 0表示24小时
    find ./ ctime -2 name "*.php"  //查找72小时内生成的指定文件  ctime(创建时间) 
    find ./ iname "*.php*" -perm 777   //查找权限为777的指定文件  iname表示不区分大小写 perm表示权限
    
    • 1
    • 2
    • 3

    请添加图片描述

    分析可疑进程

    分析网络连接

    常用命令:

    netstat -pantl ,列出TCP相关的服务连接。

    netstat -pantl | grep "ESTABLISHED",查看已建立的TCP服务连接。


    以下是netstat的使用参数

    -a (all)显示所有选项,默认不显示LISTEN相关
    -t (tcp)仅显示tcp相关选项
    -u (udp)仅显示udp相关选项
    -n 拒绝显示别名,能显示数字的全部转化成数字。
    -l 仅列出有在 Listen (监听) 的服務状态
    
    -p 显示建立相关链接的程序名
    -r 显示路由信息,路由表
    -e 显示扩展信息,例如uid等
    -s 按各个协议进行统计
    -c 每隔一个固定时间,执行该netstat命令。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    对进程文件分析

    以下是常用到的linux命令

    • ps -aux :列出所有的进程

    • ps -aux | grep pid:列出指定pid的进程

    • lsof -i:端口号:列出指定端口的进程

    • kill -9 pid : 关闭指定pid进程

    请添加图片描述

    请添加图片描述


    分析异常登录

    在linux的操作都会被记录在系统日志中,可以通过查询日志信息判断是否有异常登录

    last -i | grep -v 0.0.0.0 : 查询非本地登录的日志信息,-i表示IP

    请添加图片描述


    w命令 : 实时查看登录日志

    请添加图片描述

    分析异常用户

    提权root用户实操

    新建用户,随后修改用户uid为0, 以此获取root权限

    useradd test
    
    passwd test {输入密码}
    
    vim /etc/passwd    //修改用户uid为0
    
    • 1
    • 2
    • 3
    • 4
    • 5

    请添加图片描述

    请添加图片描述


    排查异常用户

    grep "0:0" /etc/passwd : 查找root权限用户

    请添加图片描述


    ls -l /etc/passwd : 查看用户文件最近修改时间

    请添加图片描述


    awk -F: '$3==0 {print $1}' /etc/passwd : 查看root权限用户

    请添加图片描述

    请添加图片描述


    awk -F: '$2=="!" {print $1}' /etc/shadow : 查看空密码用户

    请添加图片描述


    禁用以及删除可疑账号

    usermod -L user   //禁用帐号,帐号无法登录
    
    userdel user    //删除
    
    userdel -r user   //将删除user用户,并且将/home目录下的user目录一同删去
    
    • 1
    • 2
    • 3
    • 4
    • 5

    分析历史命令

    linux系统之前执行的命令会保存在/root/.bash_history文件中,以下是查看history的命令。

    cat /root/.bash_history

    请添加图片描述

    history

    请添加图片描述


    常见的可疑历史命令: wegt(远程下载)、ssh(连接内网)、tar zip(压缩打包)

    特别要注意, 有些黑客还会修改你的系统命令,例如把netstat命令给改成别的了,从而导致无法使用此命令


    分析计划任务

    crontab命令排查计划任务

    crontab -l    //列出计划任务
    
    crontab -r	  //删除计划任务
    
    crontab -e    //编辑计划任务
    
    • 1
    • 2
    • 3
    • 4
    • 5

    请添加图片描述

    请添加图片描述


    anacron命令实现异步定时任务调度

    vi /etc/anacrontab  
    
    @daily   10   example.daily  /bin/bash /home/shell.sh  //每天机器开机十分钟之后运行shell.h。
    
    • 1
    • 2
    • 3

    more命令查询计划任务目录

    使用more命令查询以下目录,重点查询/etc/cron.d/*目录

    /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
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    分析自启动项

    设置开机自启动

    ls /etc/init.d/ 查看开机自启动文件

    update-rc.d apache2 enable 设置apache2服务开机自启动

    通过创建软连接设置自启动,将脚本文件放在/etc/init.d目录下,然后在/etc/rc.d/rc*.d中建立软连接即可。

    S100ssh是sshd脚本的软连接,S表示运行级别加载时自启动,K则表示加载时需关闭

    ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/S100ssh   
    
    ln -s /etc/init.d/sshd /etc/rc.d/rc3.d/K100ssh
    
    • 1
    • 2
    • 3

    关闭开机自启动

    update-rc.d apache2 disable 取消apache2服务开机自启动


    排查启动项文件

    more /etc/rc.local 
    
    more /etc/rc.d/rc[0~6].d
    
    ls -l /etc/rc.d/rc3.d/
    
    • 1
    • 2
    • 3
    • 4
    • 5

    分析服务自启动项

    修改服务自启动

    1、使用chkconfig命令(红帽linux)

    命令参数:chkconfig [--level 运行级别][独立服务名][on|off]

    chkconfig –level  2345 httpd on  //自动启动http服务
    
    chkconfig httpd on  //若没填写level参数,默认值为2345
    
    • 1
    • 2
    • 3

    2、修改/etc/rc.local文件,加入 /etc/init.d/httpd start

    请添加图片描述

    3、使用ntsysv命令管理自启动,该命令适用于红帽linux


    入侵排查

    chkconfig --list   //查看服务自启动状态,可以看到所有的RPM包安装的服务
    
    ps aux | grep crond    //查看当前服务
    
    • 1
    • 2
    • 3

    查看3与5级别下的启动项

    chkconfig --list | grep "3:启用|5:启用"  //中文环境下
    
    
    chkconfig --list | grep "3:on|5:on"  //英文环境下
    
    • 1
    • 2
    • 3
    • 4

    $PATH变量异常

    $PATH就是环境变量,分析是否有异常环境变量

    echo $PATH : 输出环境变量目录

    请添加图片描述

    export PATH=$PATH:/usr/lol/theshy 添加环境变量,临时有效,重启无效

    请添加图片描述

    vim /etc/profile,随后添加export PATH=$PATH:/usr/lol/faker,再source /etc/profile。这个是永久修改$PATH变量的方法

    请添加图片描述

    请添加图片描述


    系统日志分析

    日志存放位置

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

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

    日志文件说明
    /var/log/cron记录定时任务日志
    /var/log/cups记录打印信息日志
    /var/log/mailog记录邮件信息日志
    /var/log/message记录系统重要信息日志,若出问题,首先检查该日志
    /var/log/btmp记录错误信息日志,二进制文件,要用lastb命令查看
    /var/log/lastlog记录所有用户最后一次登录时间日志,二进制文件
    /var/log/wtmp记录所有用户的登录、注销信息,同时记录系统的启动、重启等事件,是个二进制文件
    /var/log/utmp记录当前登录用户信息,会随着用户注销而不断变化,只能通过w,who,users命令查看

    日志分析技巧

    注意:Centos系统登录日志记录在/var/log/secure,Ubuntu系统登录日志记录在/var/log/auth.log。

    1、分析爆破root账户的ip相关信息

    查看爆破root用户的IP数量

    grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more 
    
    • 1

    查看爆破的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
    
    • 1

    查看爆破所用到的用户名字典

    grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
    
    • 1

    2、分析登录成功的ip

    查看所有的登录成功的ip

    grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
    
    • 1

    查看登录成功的ip,用户及日期

    grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'
    
    • 1

    3、查看用户操作的日志

    grep "useradd" /var/log/secure   //查看“useradd”命令的操作日志
    
    grep "userdel" /var/log/secure   //查看“userdel”命令的操作日志
    
    • 1
    • 2
    • 3

    rkhunter工具使用

    rkhunter工具会自动为我们排查linux系统的加固安全隐患

    安装工具:apt-get install rkhunter

    常用命令:rkhunter --check --sk //–sk表示自动补全

    请添加图片描述
    请添加图片描述


    安全加固

    阻止非root用户登录

    touch /etc/nologin
    
    • 1

    给密码文件设置权限

    chmod命令的使用可以看我linux专栏的文章,这里不过多解释

    chmod 644 /etc/passwd
    
    chmod 600 /etc/shadow
    
    chmod 644 /etc/group
    
    • 1
    • 2
    • 3
    • 4
    • 5

    修改文件默认权限

    umask=027
    
    • 1

    给日志或其他重要文件加固

    chattr +a /var/log/messages    //设置此文件只能追加数据
    
    chattr +i /var/log/messages.*  //设置文件不能被修改且删除
    
    chattr +i /etc/shadow          
    
    chattr +i /etc/passwd 
    
    chattr +i /etc/group 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    屏蔽banner信息

    vi /etc/ssh/sshd_config   将banner设置成NONE
    
    • 1

    请添加图片描述


    增强秘钥

    authconfig --passalgo=sha512 --update  //启用 SHA512 替代 MD5加密
    
    • 1

    限制登录次数

    auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=120  
    //登录三次后锁定账户,普通用户5秒后解锁,root用户120秒后解锁
    
    • 1
    • 2

    设置历史命令最大保存条数

    vim /etc/profile,修改HISTSIZE为20(默认是1000)

    请添加图片描述

  • 相关阅读:
    【第43篇】CLIP:从自然语言监督中学习可迁移的视觉模型
    zabbix-proxy分布式监控
    【ML】机器学习数据集:sklearn中回归数据集介绍
    canvas画一个笑脸和画一个三角形
    nvm安装及使用
    玩转Mysql系列 - 第27篇:mysql如何确保数据不丢失?
    DDS通信协议与安全实践
    Android Studio 多渠道打包
    unity OnMouse生命周期
    《数论概论》
  • 原文地址:https://blog.csdn.net/xf555er/article/details/126229201