红蓝对抗之蓝队面试题part 1

449 阅读8分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路

🅰️应急响应🛡️

⬆️宏观题

1.基本思路流程

  1. 收集信息:收集客户信息和中毒主机信息,包括样本
  2. 判断类型:判断是否是安全事件,何种安全事件,勒索、挖矿、断网、DoS 等等
  3. 抑制范围:隔离使受害⾯不继续扩⼤
  4. 深入分析:日志分析、进程分析、启动项分析、样本分析方便后期溯源
  5. 清理处置:杀掉进程,删除文件,打补丁,删除异常系统服务,清除后门账号防止事件扩大,处理完毕后恢复生产
  6. 产出报告:整理并输出完整的安全事件报告

2.Windows入侵排查思路

  1. 检查系统账号安全

    1. 查看服务器是否有弱口令,远程管理端口是否对公网开放(使用netstat -ano 命令、或者问服务器管理员)

    2. lusrmgr.msc 命令查看服务器是否存在可疑账号、新增账号,如有管理员群组的(Administrators)里的新增账户,如有,请立即禁用或删除掉

    3. 用 D 盾或者注册表中查看服务器是否存在隐藏账号、克隆账号

    4. 结合日志,查看管理员登录时间、用户名是否存在异常

      检查方法:Win+R 打开运行,输入“eventvwr.msc”,回车运行,打开“事件查看器”,导出 Windows 日志--安全,利用 Log Parser 进行分析

  2. 检查异常端口、进程

    1. netstat -ano检查端口连接情况,是否有远程连接、可疑连接
    2. 任务管理器-进程
  3. 检查启动项、计划任务、服务

  4. 检查系统相关信息

    查看系统版本以及补丁信息

    查找可疑目录及文件

  5. 日志分析

3.Linux入侵排查思路

  1. 账号安全

    who		查看当前登录用户(tty本地登陆 pts远程登录)
    w 		查看系统信息,想知道某一时刻用户的行为
    uptime	查看登陆多久、多少用户,负载
    
    1、用户信息文件/etc/passwd
    root:x:0:0:root:/root:/bin/bash
    account:password:UID:GID:GECOS:directory:shell
    用户名:密码:用户ID:组ID:用户说明:家目录:登陆之后shell
    注意:无密码只允许本机登陆,远程不允许登陆
    
    2、影子文件/etc/shadow
    root:$6$oGs1PqhL2p3ZetrE$X7o7bzoouHQVSEmSgsYN5UD4.kMHx6qgbTqwNVC5oOAouXvcjQSt.Ft7ql1WpkopY0UV9ajBwUt1DpYxTCVvI/:16809:0:99999:7:::
    用户名:加密密码:密码最后一次修改日期:两次密码的修改时间间隔:密码有效期:密码修改到期到的警告天数:密码过期之后的宽限天数:账号失效时间:保留
    

    /etc/passwd 存储一般的用户信息,任何人都可以访问;/etc/shadow 存储用户的密码信息,只有 root 用户可以访问

  2. 历史命令

    通过 .bash_history 查看帐号执行过的系统命令
    1、root的历史命令 histroy
    2、打开 /home 各帐号目录下的 .bash_history,查看普通帐号的历史命令
    
    历史操作命令的清除:history -c
    但此命令并不会清除保存在文件中的记录,因此需要手动删除.bash_profile文件中的记录
    
  3. 检查异常端口

    netstat -antlp|more
    查看下pid所对应的进程文件路径,
    运行ls -l /proc/$PID/exe或file /proc/$PID/exe($PID 为对应的pid 号)
    
  4. 检查异常进程

    ps aux | grep pid
    
  5. 检查开机启动项

    开机启动配置文件

    /etc/rc.local
    /etc/rc.d/rc[0~6].d
    
  6. 检查定时任务

    crontab -l 列出某个用户cron服务的详细内容
    Tips:默认编写的crontab文件会保存在 (/var/spool/cron/用户名 例如: /var/spool/cron/root
    crontab -r 删除每个用户cront任务(谨慎:删除所有的计划任务)
    crontab -e 使用编辑器编辑当前的crontab文件
    如:*/1 * * * * echo "hello world" >> /tmp/test.txt 每分钟写入文件
    2、利用anacron实现异步定时任务调度
    

    重点关注

    /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/*
    
  7. 检查服务

    chkconfig --list 命令,可以查看系统运行的服务

  8. 检查异常文件

  9. 检查系统日志

Linux的登录日志查看文件

  • 日志默认存放位置:/var/log/
  • 查看可登录的账户 cat/etc/passwd|grep '/bin/bash'
  • 查看所有用户最后的登录信息 lastlog
  • 查看用户最近登录信息 last 其中,/var/log/wtmp 存储登录成功的信息、btmp 存储登录失败的信息、utmp 存储当前正在登录的信息
  • 查看当前用户登录系统情况 who

Linux常用排查命令

这个问题就是 linux 入侵排查排查的一部分

cloud.tencent.com/developer/a…

系统信息

  1. 查看当前系统状态 top
  2. 操作系统信息 uname -a
  3. 查看当前系统进程信息 ps
  4. 查看历史命令 history
  5. 列出本机所有的连接和监听的端口 netstat
  6. 查看谁在使用某个端口 lsof

用户登录

  1. 查看当前用户登录系统情况 who

  2. 分析超级权限账户 awk-F: '{if(3==0print3==0)print 1}'/etc/passwd

  3. 查看可登录的账户 cat/etc/passwd|grep '/bin/bash'

  4. 查看用户错误的登录信息 lastb

  5. 查看所有用户最后的登录信息 lastlog

  6. 查看用户最近登录信息 last

    /var/log/ 其中,/var/log/wtmp 存储登录成功的信息、btmp存储登录失败的信息、utmp存储当前正在登录的信息

  7. 查看空口令账户 awk-F: 'length(2)==0 {print 1}'/etc/shadow

linux查看文件命令

more:	一页一页的显示档案内容
less:	与 more 类似 head:查看头几行
tac:	从最后一行开始显示,可以看出 taccat 的反向显示
tail:	查看尾几行
nl:		显示内容,顺便输出行号
od:		以二进制的方式读取档案内容
vi:		一种编辑器,这个也可以查看
vim:	一种编辑器,这个也可以查看
sort:	文件排序并输出也可以查看内容
uniq:	可以查看 file -f:报错出具体内容 grep
strings: 在对象文件或二进制文件中查找可打印的字符串, 在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。此时,可以使用如下命令: grep test *file strings
paste	把每个文件以列对列的方式,一列列地加以合并
grep	grep { flag.php打印有”{“的一行
sed		一种编辑器,可以用sed -f flag.php读取flag

Linux基线规范

每个公司有每个公司的基线规范体系,但是答题分为下列五个方面

账号管理和授权

  • 检查特殊账号,是否存在空密码的账户和 root 权限账户
  • 禁用或删除无用账号
  • 添加口令策略:/etc/login.defs修改配置文件,设置过期时间、连续认证失败次数
  • 禁止 root 远程登录,限制root用户直接登录。
  • 检查 su 权限。vi /etc/pam.d/su添加auth required pam_wheel.so group=test

服务

  • 关闭不必要的服务
  • SSH 服务安全
    • 不允许 root 账号直接登录系统,PermitRootLogin=no
    • 修改 SSH 使用的协议版本为 2
    • 修改允许密码错误次数(默认 6 次),MaxAuthTries=3

文件系统

  • 设置 umask 值 vi /etc/profile 添加行 umask 027
  • 设置登录超时 vi /etc/profile 修改配置文件,将以 TMOUT= 开头的行注释,设置为 TMOUT=180

日志

  • 启用 syslogd 日志,配置日志目录权限,或者设置日志服务器

  • 记录所有用户的登录和操作日志,通过脚本代码实现记录所有用户的登录操作日志,防止出现安全事件后无据可查

    www.alibabacloud.com/help/zh/faq…

IP 协议安全要求

  • 远程登录取消 telnet 采用 ssh
  • 设置 /etc/hosts.allow 和 deny
  • 禁止 ICMP 重定向
  • 禁止源路由转发
  • 防 ssh 破解,iptables (对已经建立的所有链接都放行,限制每分钟连接 ssh 的次数)+ denyhost (添加 ip 拒绝访问)

Linux 安全基线检查

Linux:cloud.tencent.com/developer/a…

Windows 安全基线检查

Windows:cloud.tencent.com/developer/a…

主要包括五个方面:身份鉴别、访问控制、安全审计、资源控制、剩余信息保护

  • 身份鉴别

    更改缺省账户

    检查Guest用户是否禁用

    密码复杂性要求

    密码长度最小不能小于8位

  • 访问控制

    共享账户检查

    远程关机授权

    本地关机

    授权帐户登陆

  • 安全审计

    用户登录日志记录

    系统日志完备性检查

    登录超时管理

  • 资源控制

    登录超时管理

    远程登录超时配置

  • 剩余信息保护

    不显示上次的用户名

    关机前清除虚拟内存页面

    不启用可还原的加密来存储密码

中间件基线规范(APACHE)

www.alibabacloud.com/help/zh/faq…

配置

  • 账号
  • 授权
  • 日志
  • session 过期时间(防ddos)
  • 绑定监听地址

禁止

  • 目录权限
  • 访问外部文件
  • CGI
  • 非法HTTP方法(PUT DELETE)

隐藏

  • 服务版本号
  • 重定向错误页面

删除

  • 配置文件
  • 默认安装的无用文件

中间件常见漏洞

www.freebuf.com/articles/we…

(一) IIS 1、PUT漏洞

2、短文件名猜解

3、远程代码执行

4、解析漏洞

(二) Apache 1、解析漏洞

2、目录遍历

(三) Nginx 1、文件解析

2、目录遍历

3、CRLF注入

4、目录穿越

(四)Tomcat 1、远程代码执行

2、war后门文件部署

(五)jBoss 1、反序列化漏洞

2、war后门文件部署

(六)WebLogic 1、反序列化漏洞

2、SSRF

3、任意文件上传

4、war后门文件部署

(七)其它中间件相关漏洞 1、FastCGI未授权访问、任意命令执行

2、PHPCGI远程代码执行

解析漏洞

  • apache
    1. 多后缀解析漏洞 php.aaa.a
    2. 罕见后缀 php3 php5 phtml
    3. 换行符解析漏洞 \x0A
  • Nginx
    1. CGI 解析漏洞 1.jpg/1.php
    2. 00 截断
  • IIS
    1. IIS5.0 和 6.0 解析漏洞 xx.asp/xx.jpg
    2. IIS 7.0/7.5 CGI解析漏洞

防御

  • 判断文件类型
  • 文件上传的目录设置为不可执行
  • 使用随机数改写文件名和文件路径
  • 使用单独的文件服务器存储上传的文件