蓝队面试题整理(hw防守方面试题整理)

Posted OceanSec

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝队面试题整理(hw防守方面试题整理)相关的知识,希望对你有一定的参考价值。

之前整理的有关于蓝队方面的面试题适合作为 hw 防守方,很久没更了放放存货🎈,整理自网络侵删,如有帮助点赞支持,之后会继续更新面试题系列

文章目录

🅰️应急响应🛡️

⬆️宏观题

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 入侵排查排查的一部分

https://cloud.tencent.com/developer/article/1822210

系统信息

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

用户登录

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

  2. 分析超级权限账户 awk-F: ‘if($3==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基线规范

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

账号管理和授权

  • 检查特殊账号,是否存在空密码的账户和 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 日志,配置日志目录权限,或者设置日志服务器

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

    https://www.alibabacloud.com/help/zh/faq-detail/49809.htm

IP 协议安全要求

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

Linux 安全基线检查

Linux:https://cloud.tencent.com/developer/article/1668982

Windows 安全基线检查

Windows:https://cloud.tencent.com/developer/article/1668937

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

  • 身份鉴别

    更改缺省账户

    检查Guest用户是否禁用

    密码复杂性要求

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

  • 访问控制

    共享账户检查

    远程关机授权

    本地关机

    授权帐户登陆

  • 安全审计

    用户登录日志记录

    系统日志完备性检查

    登录超时管理

  • 资源控制

    登录超时管理

    远程登录超时配置

  • 剩余信息保护

    不显示上次的用户名

    关机前清除虚拟内存页面

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

中间件基线规范(APACHE)

https://www.alibabacloud.com/help/zh/faq-detail/52981.htm

配置

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

禁止

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

隐藏

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

删除

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

中间件常见漏洞

https://www.freebuf.com/articles/web/192063.html

(一) 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远程代码执行

Linux、Windows安全加固

IIS 服务器应该做哪些方面的保护措施?

整理来源:http://www.williamlong.info/archives/118.html

  1. 保持 Windows 升级
  2. 使用 IIS 防范工具
  3. 移除缺省的 Web 站点
  4. 如果你并不需要 FTP 和 SMTP 服务,请卸载它们
  5. 有规则地检查你的管理员组和服务:
  6. 严格控制服务器的写访问权限
  7. 设置复杂的密码
  8. 减少/排除 Web 服务器上的共享
  9. 禁用 TCP/IP 协议中的 NetBios
  10. 使用 TCP 端口阻塞
  11. 仔细检查 .bat 和 .exe 文件:每周搜索一次 .bat
  12. 管理 IIS 目录安全
  13. 使用 NTFS 安全
  14. 管理用户账户
  15. 审计你的 Web 服务器

Linux系统安全加固需要注意的内容

  1. 关闭不必要的系统服务
  2. 更改 SSH 默认端口
  3. 禁止 root 用户远程 ssh 登录
  4. 限制用户使用 su 命令切换 root
  5. 密码复杂度策略
  6. 检查密码重复使用次数限制
  7. 检查是否存在空口令账号
  8. 禁止同时按下 ctrl+alt+del 重启
  9. 禁用 telnet 服务

框架漏洞&常见命令注入漏洞?php? Strust2 ?

  • Struts2 OGNL 注入
  • weblogic
  • fastjson
  • TP5 代码执行
  • laravel:debug mode 远程代码执行漏洞(CVE-2021-3129)
  • Spring Expression Language SPEL 表达式注入
  • Spring Security Oauth2 远程代码执行
  • Spring框架漏洞总结

常见安全工具、设备

工具

  • 端口及漏洞扫描:Namp、Masscan
  • 抓包:Wireshark,Burpsuite、Fiddler、HttpCanary
  • Web自动化安全扫描:Nessus、Awvs、Appscan、Xray
  • 信息收集:Oneforall、hole
  • 漏洞利用:MSF、CS
  • Webshell 管理:菜刀、蚁剑、冰蝎、哥斯拉

设备

网络安全设备常识

常见的 HW 设备有:公安部网防G01、K01、360网康/网神防火墙、微步威胁情报、安恒云-Web应用防火墙(玄武盾)、默安蜜罐、知道创宇蜜罐、山石防火墙

即客户拥有物理的基础设施(自建机房、自购设备、网络)

  • NGAF/NGFW:下一代 Web 应用防火墙(Next Generation Application Firewall,通防火墙和下一代防火墙的区别),聚合了以下功能

    • IDS
      • HIDS:基于主机的入侵检测系统
      • NIDS:基于网络的入侵检测系统
      • HIDS+NIDS:基于混合数据源的入侵检测系统
    • IPS:入侵防御系统
    • AV:反病毒系统
  • EDR:主机安全管理\\终端检测和响应

    EDR 实时监测终端上发生的各类行为,采集终端运行状态,在后端通过大数据安全分析、机器学习、沙箱分析、行为分析、机器学习等技术,提供深度持续监控、威胁检测、高级威胁分析、调查取证、事件响应处置、追踪溯源等功能,可第一时间检测并发现恶意活动,包括已知和未知威胁,并快速智能地做出响应,全面赋予终端主动、积极的安全防御能力

    简单来说就是给内网环境中所有主机安装管理软件终端,可以在管理平台集中管理和数据分析过滤,基本所有安全厂商都有自己的 EDR 产品

  • 运维审计和管理平台(堡垒机)

  • DAS:数据库安全审计平台

  • LAS:日志审计安全平台

  • AC:上网行为管理系统

  • 伪装欺骗系统(蜜罐、蜜网)

  • SIP:安全态势感知平台

    这个算是让整套系统性能得到提升的灵魂了,定位为客户的安全大脑,是一个集检测、可视、响应处置于一体的大数据安全分析平台。产品以大数据分析为核心,支持主流的安全设备、网络设备、操作系统等多源数据接入,利用大数据、关联分析、告警降噪等技术,实现海量数据的统一挖掘分析

云网络

云网络包括私有云和公有云

  • 云主机安全
  • 云防火墙
  • 云堡垒机
  • 云蜜罐
  • 云 DDOS 防护
  • 等等

绿盟设备

  • 堡垒机 SAS-H Series,堡垒机采用“物理旁路,逻辑串联”的部署思路
  • 绿盟威胁情报云 NTI https://nti.nsfocus.com/
  • 抗拒绝服务攻击系统 ADS
  • 安全和漏洞管理 AIRO
  • 网络入侵防护系统 IDPS
  • web 应用防火墙

你拿到的cnvd

**工作经历

安全服务工程师

参加渗透测试、地方服务、HW

根据客户方要求对所给资产进行了详细细致的渗透测试。挖掘漏洞,发现漏洞的第一时间与客户方汇报,使客户方能够及时整改修补问题漏洞,防止造成漏洞危害扩大

攻防演练

攻防演练中担任什么角色

护网的分组和流程?

护网的分组是在领导小组之下分为防护检测组,综合研判组,应急溯源组。流程大致分为备战,临战,决战三个阶段

备战阶段,主要任务是进行两方面的操作,一是减少攻击面,即资产梳理,减少暴露面;二是排查风险点,即通过漏洞扫描,渗透测试,弱口令等进行自查

临战阶段,主要任务也大致可以分为两个部分,一是进行内部演练,发现疏忽处并进行相应整改;二是可以适当增加安全设备,比如WAF,IPS,IDS,SOC,堡垒机等

决战阶段,作为新人,主要就是坚守岗位,有应急日志就看自己能不能解决,不能就上报,服从上级安排,优化防护,持续整改

简历有护网经历,你能谈谈护网的情况吗

参加过护网蓝队,负责事件研判工作,主要使用 ips,ids 等设备做流量监控与日志分析工作判断安全事件是否为误判

监控、研判、处置、溯源

对安全管理中心发出的态势排查单进行排查,并将排查结果反馈给安全管理中心,对安全管理中心发出的封堵工单和解封工单进行对应的封堵与解封,每两小时反馈一次排查结果、设备巡检报告、封堵情况。查看呼池 DDOS 设备,记录并排查告警信息

蓝队研判

研判工作要充分利用已有安全设备(需要提前了解客户的网络拓扑以及部署设备情况),分析其近期的设备告警,将全部流量日志(日志条件:源地址,目的地址,端口,事件名称,时间,规则 ID,发生 次数等)根据研判标准进行筛选(像挖矿、蠕虫、病毒、拒绝服务这类不太可能为攻击方发起的攻击的事件,直接过滤掉,减少告警数量),一般情况下,真实攻击不可能只持续一次,它一定是长时间、周期性、多 IP 的进行攻击

对于告警结合威胁情报库如:微步、奇安信威胁情报中心、绿盟威胁情报云等对于流量日志的原 IP 地址进行分析,判断其是否为恶意攻击,推荐使用微步的插件,如果确认为攻击行为或者不能确认是否为攻击行为,进行下一步操作,在之前准备好的表格中查找 IP 是否为客户内网部署的设备,如果不是,继续进行下一步,在事件上报平台查看是否有其他人提交过,如果没有,则上报

然后根据流量日志,对请求数据包和返回数据包分析判断其是否为误报,需要留意 X-Forwarded-For(简称XFF)和 x-real-ip 可以了解些 webshell 工具的流量特征,尤其是免杀 webshell,有可能不会被设备识别

最后上报事件时,尽可能提供完整的截图,包括源 ip、目的ip,请求包请求体,响应包响应体等重要信息,以方便后续人员研判溯源

注:不要任意忽略内网告警,适当情况下可以往前推排查时间

蓝队组成

蓝队的主要工作包括前期安全检查、整改与加固,演习期间进行网络安全监测、预警、分析、验证、处置,后期复盘总结现有防护工作中的不足之处,为后续常态化的网络安全防护措施提供优化依据

监控、研判、处置、溯源

SQL注入检测

SQL注入攻击检测可根据入侵事件发生的前后进行区分,在入侵前可以对 Payload 进行检测等方式以预防 SQL 注入攻击。在入侵检测后可以通过对数据库、IIS 日志等进行检查以进行判断

传统的SQL注入检测方法通常根据经验提取特征,然后基于规则库匹配的方法来检测是否为 SQL 注入语句,其设计一般较为复杂,且规则模式更新频繁,在此采用机器学习的方式尝试对 SQL 注入语句进行检测

DDOS CC应急思路以及如何防范

目前对于低网络层的 DDoS 攻击有一些有效的防护手段,如丢弃第一次 SYN 包,上流量防护设备,上 WAF 封禁地址等

比较难缠的是第七层,第八层的 CC 攻击,它会找到目标网站上比较消耗资源的关键位置,重复发起攻击以消耗 CPU/内存/数据库/IO 等资源,目前的应付手段有:

  1. 优化资源消耗高位置的代码
  2. 增加硬件设备
  3. 上云
  4. 购买专业安全公司的安全服务
  5. 除此之外,隐藏服务器的真实 IP、上云 WAF、CDN、 负载均衡等设备,或者暂时将域名解析到公安网警网站等也是可以作为选择方案
  • 网络设备设施
    • 拼带宽,加大带宽,但是成本太高
    • 使用硬件防火墙
    • 选用高性能设备
  • 抗 D 思想和方案
    • 负载均衡
    • 花钱买流量清洗服务
    • CDN:web 层,比如 cc 攻击
    • 分布式集群防御
    • 高防:防大部分攻击,udp、大型的 cc 攻击
  • 预防为主
    • 系统漏洞
    • 系统资源优化
    • 过滤不必要的服务和端口
    • 限制特定流量:检查访问来源做适当限制

挖矿病毒判断&挖矿常见手段&处理

挖矿病毒,自己搜搜

挖矿木马占用系统资源进行挖矿行为,一般电脑会有以下特征

  1. 系统响应缓慢
  2. CPU/显卡使用率过高
  3. 内存/带宽占用高

登录进可疑主机后,可以通过以下方式确认挖矿木马(即入侵排查流程)

  1. 查看进程(系统命令 ps、Is 有可能被替换)
  2. 检查日志、检查系统用户
  3. 发现异常文件

挖矿常用手段

  1. 未授权访问或弱口令:Redis 未授权访问、Docker API 未授权访问、Hadoop Yarn 未授权访问、NFS 未授权访问、Rsync 弱口令、PostgreSQL 弱口令、Tomcat 弱口令、SSH 弱口令、Telnet 弱口令、Windows 远程桌面弱口令
  2. 远程命令执行漏洞:WebLogic XML 反序列化漏洞、Jenkins 反序列化、Jboss 远程代码执行、Spring 远程代码执行、ElasticSearch 命令执行、永恒之蓝、Struts2 系列漏洞、常见 CMS 的远程命令执行漏洞
  3. 新爆的高危漏洞:一般每次爆发新的高危漏洞,都会紧跟一波大规模的全网扫描利用和挖矿

清除挖矿木马

原因排查

一旦发现服务器被挖矿,应该首先查看挖矿进程所属的用户,根据挖矿进程的运行用户去排查该用户下是否还运行着其它进程,确定这些进程是否有上述经常被黑客利用的漏洞。如果有常见的漏洞,则应该重点对此进行排查找到原因

清除木马

  1. 及时隔离主机

    部分带有蠕虫功能的挖矿木马在取得本机的控制权后,会以本机为跳板机,对同一局域网内的其他主机进行已知漏洞的扫描和进一步利用, 所以发现挖矿现象后,在不影响业务的前提下应该及时隔离受感染主机,然后进行下一步分析

  2. 删除文件、阻断与矿池通讯

    iptables -A INPUT -S xmr.crypto- pool.fr -j DROP
    iptables -A OUTPUT -d xmr.crypto- pool.fr -j DROP
    
  3. 清除定时任务

    大部分挖矿进程会在受感染主机中写入定时任务来完成程序的驻留,当安全人员只清除挖矿木马时,定时任务会再次从服务器下载挖矿进程或者直接执行挖矿脚本,导致挖矿进程清除失败

  4. 清除启动项

    有的挖矿进程为了实现长期驻留,会向系统中添加启动项来确保系统重启后挖矿进程还能重新启动,所以在清除时还应该关注启动项中的内容如果有可疑的启动项,也应该进行排查,确认是挖矿进程后,对其进行清除

  5. kill 挖矿进程

    对于单进程挖矿程序,直接结束挖矿进程即可。但是对于大多数的挖矿进程,如果挖矿进程有守护进程,应先杀死守护进程再杀死挖矿进程,避免清除不彻底
    在实际的清除工作中,应找到本机上运行的挖矿脚本,根据脚本的执行流程确定木马的驻留方式, 并按照顺序进行清除, 避免清除不彻底

  6. 清除公钥文件

    在用户 home 目录的 .ssh 目录下放置 authoruzed_keys 文件,从而免密登录该机器也是一种常见的保持服务器控制权的手段。在排查过程中应该查看该文件中是否有可疑公钥信息,有的话直接删除,避免攻击者再次免密登录该主机

服务器存在webshell,如何处理?

网站被植入 webshell,意味着网站存在可利用的高危漏洞,攻击者通过利用漏洞入侵网站,写入 webshell 接管网站的控制权

  1. 及时隔离主机
  2. 定位事件范围,查看文件 webshell 文件的创建时间,对 webshell 取证样本
  3. 通过创建时间结合日志分析可疑行为,以及启动用户的其他进程确定漏洞
  4. 清除 webshell 及残留文件,修复漏洞,参考上题

排查 shell 应该用什么命令来进行排查

find 命令

find /var/www/html -name "*.php" |xargs egrep 'assert|eval|phpinfo\\(\\)|\\(base64_decoolcode|shell_exec|passthru|file_put_contents\\(\\.\\*\\$|base64_decode\\('

如何检测webshell

主机层面

  • 静态检测

    静态检测通过匹配特征码,特征值,危险函数函数来查找 webshell 的方法,只能查找已知的 webshell

  • 动态检测

    webshell 传到服务器了,在执行函数时这些对于系统调用、系统配置、数据库、文件的操作动作都是可以作为判断依据

  • 日志检测

    使用 webshell 一般不会在系统日志中留下记录,但是会在网站的 web 日志中留下 webshell 页面的访问数据和数据提交记录

  • 语法检测

    语法语义分析形式,是根据 php 语言扫描编译的实现方式,进行剥离代码、注释,分析变量、函数、字符串、语言结构的分析方式,来实现关键危险函数的捕捉方式这样可以完美解决漏报的情况但误报上

流量层面

Webshell管理工具的流量特征

冰蝎动态二进制加密WebShell特征分析

常见WebShell客户端的流量特征及检测思路

菜刀

菜刀 webshell 只使用了 url 编码 + base64 编码

shell 特征就是传输参数名为 z0,还存在int_set("display_erros","0")字符串特征

蚁剑

默认的蚁剑 shell,连接时会请求两次,其请求体只是经过 url 编码,其流量中也存在和蚁剑一样的代码

第一次请求,关闭报错和 magic_quotes,接下来去获取主机的信息

第二次请求,会把主机目录列出来

冰蝎2.0

使用 aes 加密发起三次请求

第一次请求服务端产生密钥写入 session,session 和当前会话绑定,不同的客户端的密钥也是不同的

第二次请求是为了获取 key,第三次使用 key 的 aes 加密进行通信

冰蝎3.0

使用 aes 加密发起两次请求

3.0 分析流量发现相比 2.0 少了动态密钥的获取的请求,不再使用随机生成 key,改为取连接密码的 md5 加密值的前 16 位作为密钥

一次请求为判断是否可以建立连接,少了俩次 get 获取冰蝎动态密钥的行为,第二次发送 phpinfo 等代码执行,获取网站的信息

哥斯拉

支持 n 种加密

采用了和冰蝎 3.0 一样的密钥交换方式,哥斯拉建立连接时会发起三次请求,第一次请求数据超级长,建立 session,第二三次请求确认连接

常见端口漏洞

数据库类(扫描弱口令)

  • 1433:MSSQL
  • 1521:Oracle
  • 3306:mysql
  • 5432:PostgreSQL

特殊服务类(未授权/命令执行)

  • 443:ssl 心脏滴血
  • 873:Rsync 未授权
  • 5984:CouchDB http://xxx:5984/_utils/
  • 6379:Redis 未授权
  • 7001、7002:Weblogic 默认弱口令
  • 8088:Hadoop Yarn 资源管理系统 REST API 存在未授权
  • 8161:Apache ActiveMQ 未授权、弱口令,put 文件上传,move 文件移动
  • 9200、9300:elasticsearch 命令执行
  • 11211:Memcache 未授权,telnet ip 就可以获得服务器敏感信息
  • 27017、27018:Mongodb 未授权
  • 50000:SAP 命令执行
  • 50070、50030 Hadoop 未授权访问

常用端口类(弱口令/端口爆破)

  • 21:FTP 弱口令,匿名 anonymous/空登录,以及 ms12-073
  • 25:SMTP 简单邮件传输服务器端口
  • 23:Telnet 的端口,Telnet 是一种可以远程登录并管理远程机器的服务
  • 22:ssh 端口,PcAnywhere 建立 TCP 和这一端口的连接可能是为了寻找 ssh,这一服务有许多弱点
  • 53:dns 端口
  • 139:属于 TCP 协议,是为 NetBIOS Session Service 提供的,主要提供 Windows 文件和打印机共享以及 Unix 中的 Samba 服务
  • 445:网络共享 smb 服务,尝试利用 ms08067,ms17010 等以及 IPC$ 攻击手段
  • 2601、2604:zebra 路由,默认密码 zebra

三次握手与四次挥手

https://www.eet-china.com/mp/a44399.html

背景:TCP 位于传输层,作用是提供可靠的字节流服务,为了准确无误地将数据送达目的地,TCP 协议采纳三次握手四次挥手策略

三次握手(three-way handshaking)

TCP 三次握手,其实就是 TCP 应用在发送数据前,通过 TCP 协议跟通信对方协商好连接信息,建立起 TCP 的连接关系

  1. 第一次握手:客户端发送 SYN 报文,并进入 SYN_SENT 状态,等待服务器的确认
  2. 第二次握手:服务器收到 SYN 报文,需要给客户端发送 ACK 确认报文,同时服务器也要向客户端发送一个 SYN 报文,所以也就是向客户端发送 SYN + ACK 报文,此时服务器进入 SYN_RCVD 状态
  3. 第三次握手:客户端收到 SYN + ACK 报文,向服务器发送确认包,客户端进入 ESTABLISHED 状态。待服务器收到客户端发送的 ACK 包也会进入 ESTABLISHED 状态,完成三次握手

四次挥手(Four-Way-Wavehand)

当我们的应用程序不需要数据通信了,就会发起断开 TCP 连接。建立一个连接需要三次握手,而终止一个连接需要经过四次挥手

  1. 第一次挥手:客户端发送一个 FIN,用来关闭客户端到服务端的数据传送,客户端进入 FIN_WAIT_1 状态
  2. 第二次挥手:服务端收到 FIN 后,发送一个 ACK 给客户端,确认序号为收到序号 +1(与SYN相同,一个FIN占用一个序号),服务端进入 CLOSE_WAIT 状态
  3. 第三次挥手:服务端发送一个 FIN,用来关闭服务端到 客户端的数据传送,服务端进入 LAST_ACK 状态
  4. 第四次挥手:客户端收到 FIN 后,客户端进入 TIME_WAIT 状态,接着发送一个 ACK 给服务端,确认序号为收到序号 +1,服务端进入 CLOSED 状态,完成四次挥手

一个大范围影响的0day被曝光,作为甲方安全工程师,应该如何处理(★★)

  1. 首先是评估 0day 对自身系统的影响(这部分评估需要根据漏洞利用的利用点、是否需要交互、是否会影响系统的 CIA,是否有在野利用 poc,影响资产是否暴露在公网等很多因素决定,详情可以参考 CVSS )
  2. 如果确定有影响的话且有 poc,第一件事是先分析 poc 执行后会在什么地方留下痕迹,我们有什么样的设备去采集这些痕迹所留下的数据,比如说 ntlm relay 这种,可以考虑从 Windows 事件日志当中 event_id 等于 4769 的事件入手编写对应的规则,这样的话可以利用 SIEM 或者实时日志分析平台跑起来,可以建立起初步的感知防线,后期触发告警,人肉运营也可以快速止损
  3. 日常建立完整的纵深防御体系,不要依赖于某一道防线

服务器操作系统的安全防范?

  1. 停止运行不需要的软件(很可能成为外部攻击的入口)
  2. 定期实施漏洞防范措施(选定软件时确认软件的升级状况,确定打补丁方式,关注各种漏洞信息,确认漏洞后调查补丁状况以及防范对策,并制定对应计划)
  3. 对不需要对外公开的端口或者服务加以访问限制(通过端口扫描确认各端口服务状态)
  4. 提高认证强度

怎么发现有没有被攻击

攻击判断可以建立在设备的基础上,利用设备的告警,如果没有设备的话可以参考以下

网站被攻击:网站被跳转到赌博网站,网站首页被篡改,百度快照被改,网站被植入 webshell 脚本木马,网站被 DDOS、CC 压力攻击

服务器被黑:服务器系统中木马病毒,服务器管理员账号密码被改,服务器被攻击者远程控制,服务器的带宽向外发包,服务器被流量攻击,ARP攻击(目前这种比较少了,现在都是基于阿里云,百度云,腾讯云等云服务器)

对登录记录、系统日志、web 日志等进行分析

⬆️细节题

你能大概说一下,比如数据包或者日志,你的分析思路是什么,以及你会用到哪些工具或者那些网站进行查询?

用流量监测的安全设备,比如天眼,查看报文,分析报文里和 host 和网站目录路径,查看是否可疑,使用微步查询 host 是否为恶意,使用 wireshark 对数据包深度分析

看一下请求的网站路径,源 IP 与目的 IP 地址,host 字段的值以及发包内容等

工具有 wireshark,网站的话微步在线等威胁情报中心

文件上传和命令执行,有看过相关日志吗

文件:可能在系统有上传功能或者有文本编辑器,看一下是否有 base64 加密或者 url 加密,解码验证一下是否有恶意代码

系统日志:有没有 web 容器做了一些危险行为,比如 bash 反弹 shell 等

网络应用日志:有没有异常的网站文件,类似 webshell 等,就有可能是命令执行

windows日志分析工具

Log Parser、LogParser Lizard、Event Log Explorer

Linux日志分析技巧命令

  1. 定位有多少IP在爆破主机的root帐号:

    grep "Failed password for root" /var/log/secure | awk 'print $11' | sort | uniq -c | sort -nr | more
    
  2. 定位有哪些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
    
  3. 爆破用户名字典是什么?

    grep "Failed password" /var/log/secure|perl -e 'while($_=<>) /for(.*?) from/; print"$1\\n";'|uniq -c|sort -nr
    
  4. 登录成功的IP有哪些

    grep "Accepted " /var/log/secure | awk 'print $11' | sort | uniq -c | sort -nr | more
    登录成功的日期、用户名、IP:
    grep "Accepted " /var/log/secure | awk 'print $1,$2,$3,$9,$11'
    
  5. 增加一个用户kali日志:

    Jul 10 00:12:15 localhost useradd[2382]: new group: name=kali, GID=1001
    Jul 10 00:12:15 localhost useradd[2382]: new user: name=kali, UID=1001, GID=1001,
    home=/home/kali
    , shell=/bin/bash
    Jul 10 00:12:58 localhost passwd: pam_unix(passwd:chauthtok): password changed for kali
    #grep "useradd" /var/log/secure
    
  6. 删除用户kali日志:

    Jul 10 00:14:17 localhost userdel[2393]: delete user 'kali'
    Jul 10 00:14:17 localhost userdel[2393]: removed group 'kali' owned by 'kali'
    Jul 10 00:14:17 localhost userdel[2393]: removed shadow group 'kali' owned by 'kali'
    # grep "userdel" /var/log/secure
    
  7. su切换用户:

    Jul 10 00:38:13 localhost su: pam_unix(su-l:session): session opened for user good by
    root(uid=0)
    sudo授权执行:
    sudo -l
    Jul 10 00:43:09 localhost sudo: good : TTY=pts/4 ; PWD=/home/good ; USER=root ;
    COMMAND=/sbin/shutdown -r now
    

给你一个比较大的日志,应该如何分析

  • 攻击规则匹配,通过正则匹配日志中的攻击请求
  • 统计方法,统计请求出现次数,次数少于同类请求平均次数则为异常请求
  • 白名单模式,为正常请求建立白名单,不在名单范围内则为异常请求
  • HMM 模型,类似于白名单,不同点在于可对正常请求自动化建立模型,从而通过正常模型找出不匹配者则为异常请求
  • 借助日志分析工具,如 LogForensics 腾讯实验室 https://security.tencent.com/index.php/opensource/detail/15

Windows在应急响应中的安全日志以及对应场景

设备误报如何处理

(日志)

Windows和Linux的日志文件放在哪里

  • Windows 主要有以下三类日志记录系统事件:应用程序日志、系统日志和安全日志

    系统日志:%SystemRoot%\\System32\\Winevt\\Logs\\System.evtx

    应用程序日志:%SystemRoot%\\System32\\Winevt\\Logs\\Application.evtx

    安全日志:%SystemRoot%\\System32\\Winevt\\Logs\\Security.evtx

  • Linux

    日志默认存放位置:/var/log/
    查看日志配置情况:more /etc/rsyslog.conf

常见中间件的配置文件路径

  • apache:/etc/httpd/conf
  • nginx/etc/nginx
  • iis7:C:\\Windows\\System32\\inetsrv\\config\\

如何查看系统内存 shell

  • 文章汇总:link
  • 查杀内存马:link
  • php、python、java内存马分析:link

Java 内存马排查

https://www.freebuf.com/articles/web/274466.html

如果我们通过检测工具或者其他手段发现了一些内存webshell的痕迹,需要有一个排查的思路来进行跟踪分析,也是根据各类型的原理,列出一个排查思路。

如果是jsp注入,日志中排查可疑jsp的访问请求。

如果是代码执行漏洞,排查中间件的error.log,查看是否有可疑的报错,判断注入时间和方法

根据业务使用的组件排查是否可能存在java代码执行漏洞以及是否存在过webshell,排查框架漏洞,反序列化漏洞。

如果是servlet或者spring的controller类型,根据上报的webshell的url查找日志(日志可能被关闭,不一定有),根据url最早访问时间确定被注入时间。

如果是filter或者listener类型,可能会有较多的404但是带有参数的请求,或者大量请求不同url但带有相同的参数,或者页面并不存在但返回200

如何修改WEB端口?如果不能修改端口还有什么利用方法?

修改 web 端口:修改中间件配置文件中的 web 服务端口即可

不能修改的话可以使用端口映射,使用 nginx 反向代理也可以

获得文件读取漏洞,通常会读哪些文件,Linux和windows都谈谈

通用

  • 找 Web 应用的配置文件,指不定有外联数据库
  • 找 Web 中间件的配置文件,指不定有 Tomcat 配置界面的用户密码
  • 找系统文件

linux

  • etc/passwd、etc/shadow直接读密码

  • /etc/hosts # 主机信息

  • /root/.bashrc # 环境变量

  • /root/.bash_history # 还有root外的其他用户

  • /root/.viminfo # vim 信息

  • /root/.ssh/id_rsa # 拿私钥直接ssh

  • /proc/xxxx/cmdline # 进程状态枚举 xxxx 可以为0000-9999 使用burpsuite

  • 数据库 config 文件

  • web 日志 access.log, error.log

  • ssh 日志

    /root/.ssh/id_rsa
    /root/.ssh/id_rsa.pub
    /root/.ssh/authorized_keys
    /etc/ssh/sshd_config
    /var/log/secure
    /etc/sysconfig/network-scripts/ifcfg-eth0
    /etc/syscomfig/network-scripts/ifcfg-eth1
    
  • /var/lib/php/sess_PHPSESSID # 非常规问题 session 文件( 参考 平安科技的一道session包含 http://www.jianshu.com/p/2c24ea34566b)

windows

  • C:\\boot.ini //查看系统版本
  • C:\\Windows\\System32\\inetsrv\\MetaBase.xml //IIS 配置文件
  • C:\\Windows\\repair\\sam //存储系统初次安装的密码
  • C:\\Program Files\\mysql\\my.ini //Mysql 配置
  • C:\\Program Files\\mysql\\data\\mysql\\user.MY D //Mysql root
  • C:\\Windows\\php.ini //php 配置信息
  • C:\\Windows\\my.ini //Mysql 配置信息

如何分析被代理出来的数据流

分析数据包请求头中的 xff、referer 等收集有用的信息

基于网络欺骗与浏览器指纹的WEB攻击溯源

windows端口进程间转换

端口->进程

  1. netstat -ano | findstr “port”查看目前的网络连接,定位可疑的 ESTABLISHED
  2. 根据netstat定位出的 pid,再通过tasklist命令进行进程定位tasklist | findstr “PID”

查看进程对应的程序位置

任务管理器–选择对应进程–右键打开文件位置运行输入 wmic,cmd界面 输入 process

查看 Windows 服务所对应的端口

%system%/system32/drivers/etc/services(一般 %system% 就是 C:\\Windows)

查看windows进程的方法

  1. 开始 – 运行 – 输入msinfo32 命令,依次点击 “软件环境 – 正在运行任务” 就可以查看到进程的详细信息,比如进程路径、进程ID、文件创建日期以及启动时间等
  2. 打开D盾_web查杀工具,进程查看,关注没有签名信息的进程
  3. 通过微软官方提供的 Process Explorer 等工具进行排查

查看可疑的进程及其子进程。可以通过观察以下内容:

  • 没有签名验证信息的进程
  • 没有描述信息的进程
  • 进程的属主
  • 进程的路径是否合法
  • CPU 或内存资源占用长时间过高的进程

你能说明文件上传的原理吗?

  • PHP:如果系统中存在可以上传文件的功能点,就可以上传后门脚本文件,通过一些方法绕过上传限制,如果能访问后门的的话,系统存在文件上传漏洞,可以借助后门执行命令

  • Java:上传 jsp 代码

  • Asp/Aspx

  • Python:因为脚本需要译后生成 pyc 字节码文件,所以不存在文件上传

文件上传攻击特征?

能够上传文件的接口,应用程序对用户上传文件类型不校验或者校验不严格可绕过,导致任意类型文件上传,攻击者可上传 webshell 拿到服务器权限,在这个过程中攻击者必然会上传恶意脚本文件

文件上传加固方法?

  1. 后端限制文件上传白名单,头像不允许上传 svg

  2. 上传后文件随机重命名,不要输出保存文件位置

  3. 图片文件可以二次渲染,使用对象存储 oss

  4. 文件目录取消执行权限,PHP 设置 basedir

用过Nmap扫描工具吗

nmap 扫描基础命令

  • -sT TCP (全)连接扫描,准确但留下大量日志记录
  • -sS TCP SYN (半)扫描,速度较快,不会留下日志
  • -sN null 扫描,标志位全为 0,不适用 Windows
  • -sF FIN 扫描,标志位 FIN=1,不适用 Windows
  • -O 查看目标主机系统版本
  • -sV 探测服务版本
  • -A 全面扫描

你做过渗透测试的工作吗?

首先信息收集,收集子域名、Whois、C段、旁站、Web 系统指纹识别,然后测试 web 系统的漏洞

暴力破解加固方法?

  1. 添加强度较高的验证码,不易被破解

  2. 修改密码设置规则,提高用户的密码

    以上是关于蓝队面试题整理(hw防守方面试题整理)的主要内容,如果未能解决你的问题,请参考以下文章

    渗透测试&网络&CTF面试题整理

    PHP&Java&Py&漏洞利用or运维面试题整理

    HW防守 | Linux应急响应基础

    Vue常见面试题整理值得收藏

    2022HVV系列蓝队手册更新版(建议收藏)

    redis常见面试题有哪些?redis集群面试题及答案整理