Skip to content

护网面试,场景题更多,应急面试的更深

如果一个木马启动了,并自删除了,注入其他进程中,如何获取样本,并提交给WB工程师分析?

产品:态势感知类的产品是有全流量功能的。会记录该木马,可以直接去下载下来进行提交

应急响应基本流程

首先通过分析报警,流量分析,日志来收集所发生事故的信息,判断是什么病毒什么样的事故

按优先级别给事故分级

然后抑制攻击范围,阻止受害面扩大,封ip、联系厂商能否下线、关系统

检查启动项 服务 进程 敏感文件 违规账号 结合everything 看新增加的文件新更改的文件

放到设备里扫一下有没有后门 修补漏洞 打补丁 增加安全策略

恢复业务系统

溯源

写报告

研判思路:

发现异常流量的话,通过监测设备的响应包,paylod,告警等进行初步判断,确定是否为真实攻击,如果判断不了,就通过浏览器进行搜索,情报平台的最新情报,护网内部信息等渠道,对事件进行判断,最后验证和响应,分析内部历史数据,分析IP地址历史活动,进一步确认其恶意性,之后,阻断该IP地址的访问,隔离受影响的服务器并进行详细的安全检查。

  1. 发现异常流量

    • 通过流量监控工具发现某个IP地址向内部服务器发送了大量请求。
  2. 初步分析

    • 检查请求包的payload,发现包含可疑的编码数据。
    • SIEM系统生成告警,标记该活动为潜在威胁。
  3. 查询情报

    • 通过浏览器搜索发现其他公司近期也遭遇了类似的攻击活动。
    • 在情报平台查询,发现该攻击手法与某种已知的恶意软件活动相符。
  4. 验证和响应

    • 分析内部历史数据,发现该IP地址此前从未访问过公司网络,进一步确认其恶意性。
    • 阻断该IP地址的访问,隔离受影响的服务器并进行详细的安全检查。

溯源以及溯源反制

溯源

通过分析设备的告警、钓鱼邮件、木马病毒找到攻击者IP,先去一些威胁情报平台搜索相关信息,判断攻击者为代理服务器还是跳板机还是国内的云服务器,查一查相关注册信息,对攻击者进行反向渗透,针对攻击者去搭建蜜罐,如果是云服务器,可以寻找到相关厂商,联系客服说自己忘记密码了,看看能不能获取到云服务器购买者信息,对于获取到的信息可以通过各种社工库搜一搜,各大搜索引擎去搜索看看能不能获取到更多信息,也可以直接把服务器厂商打下来,肯定就可以知道购买者的信息了,如果把跳板机拿下就可以去查看桌面的敏感信息,登录日志,历史执行命令这样一步一步去获取更多的信息。

溯源反制

威胁情报,信息库追踪,设备反制,IDS&IPS等反制,工具漏洞反制,蜜罐钓鱼反制

  1. 具体思路

反入侵得到攻击者机器权限 -> 入侵现场还原,摸清入侵思路 -> 并且须知入侵者的相关后门遗留,以便处理后门 -> 抓取入侵者的真实IP获得地理位置 -> 并按照攻击者的攻击路线加固相关漏洞安全

  1. 反入侵傀儡机 再进行历史命令,访问记录,运行进程脚本等方式,进一步进行分析
  2. 反制攻击工具,进行反控
    1. 低版本蚁剑利用RCE漏洞
    2. AWVS 10利用exp漏洞,
    3. cobalt strike3.5版本teamserver有RCE漏洞,
    4. sqlmap可以在注入点设置为反弹shell的命令,精心控制

webshell流量特征

在webshell工具中请求中可能会存在eval或者assert等关键词

  1. 冰蝎1.0:php可能会存在eval或assert等,aps中会存在一段for循环,jsp代码中可能会有get class()等关键词
  2. 冰蝎2.0:第一阶段请求中返回内容必定是16位的密钥,Accept也存在固定特征,text/html, image/gif, image/jpeg, *; q=.2,* /*; q=.2*建立连接后:会有固定格式的Cookie:Cookie: PHPSESSID=; path=/;
  3. 冰蝎3.0:每一个请求头中存在 Pragma和Accept的固定特征: Pragma: no-cache,Cache-Control: no-cache Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/\*;q=0.8,application/signed-exchange;v=b3;q=0.9
  4. 菜刀:ua头为百度,火狐,请求体中存在eval、base64等特征字符,还有一段以QG开头,7J结尾的固定代码
  5. 哥斯拉:payload中有base64加解码等特征 php,asp则为普通的一句话木马,然后请求和响应中的Accept和Cache-Control都有固定特征,Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8 所有响应中Cache-Control: no-store, no-cache, must-revalidate
  6. 蚁剑:payload中会含有base64加密后的php、aps、jsp等的特征,默认的 user-agent请求头是 antsword XXX,且响应包的结果返回格式为: 随机数 编码后的结果 随机数的格式

Windows和Linux的应急响应

Windows应急响应步骤:

一般使用one-fox的应急响应集成工具箱,后面用命令或者控制面板查看是否有异常账户,并关闭,在用火绒剑等工具对系统启动项,进程,网络等方面,进行异常排查,再使用像D盾,河马等工具,进行webshell的排查,再对敏感目录,如windows下的temp目录的进行异常排查,最后通过 eventvwr命令,检查日志并检查日志审核是否开启,并适当增加日志存储容量和日志记录时间,将主机上的病毒项清除干净后,审查安全设备日志告警等,检查入侵来源,再进行对应的系统加固,防止再次入侵

查询异常账号:使用 lusrmgr.msc查询系统是否存在多余的特权、隐藏账户。 检查系统自启动:检查系统自启动文件夹shell:startup以及任务管理器的启动项。 进程注入排查:使用工具如火绒剑、TCPview、Process monitor等进行进程监测。 可疑端口排查:使用 netstat -ano查看系统端口占用情况。 木马查杀:使用D盾、河马Webshell查杀等webshell专杀工具进行查杀。 检查隐藏文件:更改设置,查看隐藏文件。 日志审计:打开系统日志 eventvwr,检查日志审核是否开启,并适当增加日志存储容量与日志记录时间。

Linux应急响应步骤:

先通过河马以及github的Whoamifuck等脚本,进行系统扫描,看是否有异常情况,并进行处理,再通过命令像,top查看进程占用情况是否异常,crontab -l ,systemctl list-unit-files | grep enabled查看启动项等等的命令检查系统运行状态和异常账户等情况,一般情况下,像BT或者1panel的web面板,如果有的话,可以进行检查异常情况,如果存在安全设备的话,就可以通过安全设备的告警进行检查,确认出病毒等其他的异常行为,再通过who,kill和pkill等命令识别异常用户并踢下线,发现疑似病毒文件的话,通过奇安信云检测平台进行检测,是病毒的话,进行上报,并通过 killcrontabsystemctl等命令将病毒的自启动和守护进程以及病毒本身进行清除,检查敏感目录如tmp缓存目录是否存在异常执行文件,进行取样溯源清除,再进行检查异常是否还存在,将主机上的病毒项清除干净后,审查安全设备日志告警等,检查入侵来源,再进行对应的系统加固,防止再次入侵

识别现象:通过系统运行状态、安全设备告警,发现主机异常现象,以及确认病毒的可疑行为。 清除病毒:定位到具体的病毒进程以及病毒文件,进行清除。 闭环兜底:病毒一般会通过一些自启动项及守护程序进行重复感染,所以我们要执行闭环兜底确保病毒不再被创建。 系统加固:将主机上的病毒项清除干净后,最后就是进行系统加固了,防止病毒从Web再次入侵进来。

Linux的应急响应命令

常见的有:topwhocrontab -lhistorystat /etc/passwd

响应命令

怎么看Linux的自动启动任务

  1. 开机自启项
systemctl list-unit-files | grep enabled
  1. 定时自启项
crontab -l
  1. 指定用户的定时自启项
crontab -u root -l

如果你有流量包怎么看

可以将流量包导入wireshark进行查看,分析其中的流量特征

还可以导入天眼,天眼可以直接分析出其中的告警信息

OWASP top10

注入(Injection)

原理:通过在应用程序中插入恶意代码来执行未经授权的操作,最常见的是 SQL 注入。

利用方式:在输入框中插入恶意 SQL 代码,例如 ' OR 1=1 --,绕过身份验证,执行恶意操作。

防御措施:使用参数化查询、输入验证、ORM 框架、最小化数据库权限等。

跨站脚本(Cross-Site Scripting, XSS)

原理:向网页中插入恶意脚本,当用户访问时,脚本会在用户浏览器中执行,窃取信息或执行操作。

利用方式:在评论框、搜索框等输入恶意 JavaScript 代码,例如

防御措施:输入过滤、输出编码、内容安全策略(Content Security Policy)、使用安全框架等。

跨站请求伪造(Cross-Site Request Forgery, CSRF)

原理:利用用户已登录的凭证,向网站发送伪造的请求,以执行未经授权的操作。

利用方式:在受害者浏览器中植入恶意请求,例如在论坛中发布一个图片链接,实际是个伪造请求。

防御措施:使用 CSRF Token、同源检测、验证 HTTP Referer、双重身份验证等。

敏感数据暴露(Sensitive Data Exposure)

原理:未加密、未经过适当保护或错误配置的敏感数据暴露给攻击者。

利用方式:窃取数据库中的敏感信息,如密码、信用卡信息等。

防御措施:加密存储、传输数据、使用安全协议(HTTPS)、遵循最小权限原则等。

XML 外部实体攻击(XML External Entities, XXE)

原理:利用 XML 处理器的功能,读取本地文件、执行远程请求等。利用方式:在 XML 数据中插入恶意外部实体,例如读取服务器上的敏感文件。

防御措施:禁用外部实体、使用安全 XML 解析器、输入验证、限制解析器功能等。

缺失的访问控制(Broken Access Control)

原理:未正确实施权限控制,导致攻击者访问未授权的功能或数据。

利用方式:直接访问受限资源,例如通过修改 URL 访问管理员页面。

防御措施:实施强大的访问控制、使用最小权限原则、仔细测试权限配置等。

安全配置错误(Security Misconfiguration)

原理:未正确配置服务器、框架、应用程序等,导致安全漏洞。

利用方式:利用默认密码、未删除调试信息等安全设置错误,获取系统访问权限。

防御措施:及时更新软件、删除不必要的功能、进行安全审计等。

跨站点请求伪造(Security Headers Not Set)

原理:未正确设置 HTTP 头部,如缺乏 Content Security Policy、X-Frame-Options、X-XSS-Protection 等。 利用方式:利用缺乏安全头部的漏洞,执行点击劫持、XSS 攻击等。防御措施:设置合适的安全头部、使用 HTTPS、严格限制脚本执行等。

不安全的反序列化(Insecure Deserialization)

原理:利用反序列化过程中的漏洞,执行远程代码执行、对象注入等攻击。

利用方式:修改反序列化数据中的类名,执行恶意操作。

防御措施:验证输入、使用签名、沙箱化反序列化过程等。

使用含有已知漏洞的组件(Using Components with Known Vulnerabilities)

原理:使用带有已知漏洞的第三方组件、库或框架,攻击者可以利用这些漏洞进行攻击。

利用方式:利用第三方组件的已知漏洞,执行远程代码执行等攻击。

防御措施:及时更新组件、监视漏洞通告、实施漏洞管理策略等。

文件上传和SQL注入原理

文件上传

原理:文件上传功能允许用户将文件从本地计算机上传到服务器上。攻击者可能会利用此功能上传包含恶意代码的文件,例如包含恶意脚本的图片、木马程序等。如果服务器未正确验证上传的文件,并允许用户在上传的文件中执行恶意代码,那么攻击者可能会利用这个漏洞来获取服务器控制权,执行任意代码等恶意行为。

利用方式:攻击者上传包含恶意代码的文件,例如一个 PHP 文件中包含了恶意的代码段。当服务器执行这个文件时,恶意代码就会被执行,从而达到攻击者的目的。

防御措施:严格限制允许上传的文件类型和大小、对上传的文件进行检测和过滤、将上传的文件存储在安全的位置、使用沙箱环境执行上传的文件等。

SQL注入的类型与漏洞原因

SQL注入类型

基于错误的SQL注入(Error-based SQL Injection): 利用数据库返回的错误信息获取数据库结构信息。

基于布尔的SQL注入(Boolean-based SQL Injection): 通过发送具有不同布尔条件的SQL语句,根据页面返回的内容判断注入的结果。

基于时间的SQL注入(Time-based SQL Injection): 通过使用数据库的时间延迟函数,如SLEEP(),根据响应时间判断注入的结果。

联合查询SQL注入(Union-based SQL Injection): 使用UNION关键字将恶意查询结果与合法查询结果合并返回。

盲注(Blind SQL Injection): 不会返回错误信息或数据,通过逐步猜测获取数据。

漏洞原因

输入未经过滤直接拼接到SQL查询中。 缺乏对输入数据的校验和清理。 使用了不安全的动态SQL查询。 缺乏使用预编译语句和参数化查询。

利用方式:攻击者通过应用程序的输入框等地方输入恶意的SQL代码,例如 ' OR 1=1 --。当应用程序将这个输入拼接到SQL查询语句中并执行时,整个查询条件变为真,导致查询结果返回所有数据,攻击者就可以获取到数据库中的所有信息。

防御措施:使用参数化查询、预编译语句、ORM框架、严格限制数据库用户权限、输入验证和过滤等。确保应用程序不会将用户输入直接拼接到SQL查询语句中,而是使用安全的方法来处理用户输入数据。

时间注入的常用函数:

常用函数

MySQL: SLEEP() PostgreSQL: pg_sleep() SQL Server: WAITFOR DELAY Oracle: dbms_pipe.receive_message

SQL Server提权方法

XP_CMDSHELL: 利用启用的xp_cmdshell存储过程执行系统命令。 存储过程提权: 创建具有高权限的存储过程。 令牌传递攻击: 利用SQL Server的服务账户执行系统级操作。 MS-SQL Linked Servers: 通过链接服务器进行跨服务器攻击。

怎么判断攻击是否真实,是否攻击成功

分析请求包、响应包,分析攻击特征,payload和告警不匹配,多数为误报

payload如果报警很多16进制,则可能是误报 可以查看攻击方向,如果是内对内,多半就是误报,然后询问对应的人 具体去分析流量,看响应包内容,请求包如果有执行whoami等命令,响应包有root等命令的话那肯定执行成功了如果有大批量告警,可以看有没有特殊的响应包判断,重点关注,200的数据包

上次护网有没有什么真实告警

大多都是误报,有部分进行目录扫描,sql注入等命令的测试,但都没有成功,基本都是企图告警,通过URL测试,和设备报告,发现并未成功入侵,然后上报事件,对入侵IP施行封禁

常见中间件漏洞

  1. IIS PUT漏洞、短文件名猜解、远程代码执行、解析漏洞
  2. Apache 解析漏洞、目录遍历
  3. Nginx 文件解析、目录遍历、CRLF注入、目录穿越
  4. Tomcat 远程代码执行、war后门文件部署
  5. jBoss 反序列化漏洞、war后门文件部署
  6. WebLogic 反序列化漏洞、SSRF任意文件上传、war后门文件部署
  7. 其它中间件相关漏洞 FastCGI未授权访问、任意命令执行、PHPCGI远程代码执行 https://blog.csdn.net/bylfsj/article/details/102683791

具体介绍

Linux怎么查看程序调用了哪些文件

lsof -c 指定的程序,查看多个程序的话直接在后面加就可以

SSRF用哪些协议、函数,怎么绕过,修复

file、dict、ldap、gopher,可以利用curl函数、file_get_contents()函数、fsockopen()

绕过:使用短网址、进制转换、302跳转、DNS重绑

修复:禁止不需要的协议、设置URL白名单、统一返回信息、限制请求的端口

护网流程

护网HW面试,以及HW全面熟悉 - 知乎 (zhihu.com)

xss可以使用哪些标签

常见xss触发标签

XXE中PCDATA和CDATA有什么区别

PCDATA就是被解析的字符数据,会被解析,CDATA属于不会被解析器解析的文本

struts2有哪些漏洞,有什么特征

文件上传、命令执行、ognl表达式注入

CS攻击流量特征

UA头里面可能会有相关特征,http请求中可能包含与C2服务器通信的命令,会有心跳包,每隔几分钟传输一个信息,请求的地址是一个Jquery js文件,不同指令的心跳包也都有相关的特征,SSL证书流量也有特征,不同的becon特征也不一样

jboss反序列化漏洞特征,判断是否攻击成功

攻击者请求了JBOSS漏洞页面,请求体中有相关llections.map.LazyMap、keyvalue.TiedMapEntry攻击链特征,包含了命令执行语句,如果返回了500,页面报错内容有命令执行的结果那肯定就是攻击成功了

log4j有什么特征,怎么判断是否攻击成功

payload为${jndi:ldap://***}格式,如果攻击成功,目标主机会加载攻击者指定的恶意类,查看有没有相关流量,如果有源ip与dnslog或者ldap服务的外联日志记录那大概率是攻击成功了

讲一讲sqlmap中的risk和level的区别?

risk风险等级 越大则测试的语句越多 强调数量

level探测的深度 越大则测试的范围越广 例如cookie host 等等都会测试 强调范围

反序列化

讲一讲java反序列化的原理?

Java反序列化漏洞是指恶意用户通过发送精心构造的序列化数据并触发其反序列化过程,从而执行未经授权的代码或操作。攻击者可以利用此漏洞来执行远程命令、绕过应用程序的安全检查、窃取敏感信息等攻击。如果Java应用对用户输入(即不可信数据)做了反序列化处理,那么攻击者可以通过构造恶意输入,让反序列化产生非预期的类或对象,这个类或对象在产生过程中就有可能带来任意代码执行。

讲一讲shiro反序列化原理?

Shiro是Apache下的一个开源Java安全框架,执行身份认证,授权,密码和会话管理。shiro在用户登录时除了账号密码外还提供了可传递选项remember me。用户在登录时如果勾选了remember me选项,那么在下一次登录时浏览器会携带cookie中的remember me字段发起请求,就不需要重新输入用户名和密码。

讲一讲fastjson反序列化原理?

fastjson是阿里巴巴开发的一款将json字符串和java对象进行序列化和反序列化的开源json解析库。fastjson提供了autotype功能,在请求过程中,我们可以在请求包中通过修改@type的值,来反序列化为指定的类型,而fastjson在反序列化过程中会设置和获取类中的属性,如果类中存在恶意方法,就会导致代码执行等这类问题。

了解过哪些安全设备?

入侵防御系统IPS

是计算机网络安全设施,是对防病毒软件和防火墙的补充。入侵预防系统是一部能够监视网络或网络设备的网络数据传输行为的计算机网络安全设备,能够即时的中断、调整或隔离一些不正常或是具有伤害性的网络数据传输行为。

入侵检测系统IDS

积极主动的防护措施,按照一定的安全策略,通过软件,硬件对网络,系统的运行进行实时的监控,尽可能地发现网络攻击行为,积极主动的处理攻击,保证网络资源的机密性,完整性和可用性。

防火墙

防火墙是位于两个(或多个)网络间,实行网络间访问或控制的一组组件集合之硬件或软件。隔离网络,制定出不同区域之间的访问控制策略来控制不同信任程度区域间传送的数据流。

数据库审计系统

是对数据库访问行为进行监管的系统,通过镜像或者探针的方式采集所有数据库的访问流量,并基于SQL语法,语义的解析技术,记录下对数据库所有访问和操作行为,例如访问数据的用户IP,账号,时间等等,对数据进行操作的行为等等。

日志审计系统

日志审计系统能够通过主被动结合的手段,实时且不间断的采集用户网络中不同厂商的安全设备,网络设备,主机,操作系统以及各种应用系统产生的海量日志信息,并将这些信息汇集到审计中心,进行集中化存储,备份,查询,审计,告警,响应,并出具丰富的报表报告,获悉全网的整体安全运行态势,同时满足等保关于安全管理中心的日志保存时间大于6个月的要求。

堡垒机

是针对内部运维人员的运维安全审计系统。主要功能是对运维人员的运维操作进行审计和权限控制(比如要登录某些平台或者系统只能通过堡垒机才可以,不用堡垒机是无法访问的)。同时堡垒机还有账号集中管理,单点登录(在堡垒机上登录即可实现对多个其他平台的无密登录)等功能。

漏洞扫描系统

漏洞扫描工具或者设备是基于漏洞数据库,通过扫描等手段对指定的远程或本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测系统(我们常用的针对WEB站点进行扫描的工具和此处漏洞扫描系统不是一个概念)。

数据安全态势感知平台

以大数据平台为基础,通过收集多元,异构的海量日志,利用关联分析,机器学习,威胁情报,可视化等技术,帮助用户持续监测网络安全态势,实现从被动防御向积极防御的进阶。

终端安全管理系统

是集防病毒,终端安全管控,终端准入,终端审计,外设管控,EDR等功能于一体,兼容不同操作系统和计算机平台,帮助客户实现平台一体化,功能一体化,数据一体化的终端安全立体防护。

WAF

WAF是以网站或应用系统为核心的安全产品,通过对HTTP或HTTPS的Web攻击行为进行分析并拦截,有效的降低网站安全风险。产品主要部署在网站服务器的前方。通过特征提取和分块检索技术进行模式匹配来达到过滤,分析,校验网络请求包的目的,在保证正常网络应用功能的同时,隔绝或者阻断无效或者非法的攻击请求。

蜜罐

蜜罐是一种安全威胁的主动防御技术,它通过模拟一个或多个易受攻击的主机或服务来吸引攻击者,捕获攻击流量与样本,发现网络威胁,提取威胁特征,蜜罐的价值在于被探测,攻陷。

设备误报如何处理?

来自外网的误报说明安全设备需要进行策略升级,不需要处置。

如果是来自内网的误报可以和负责人协商一下看能不能解决,有必要的话添加白名单处理。

如何区分扫描流量和手工流量?

1.扫描流量数据量大,请求流量有规律可循且频率较高,手工流量请求少,间隔略长

2.使用工具扫描的流量一般在数据包中有相关特征信息,比如说通过wireshark网络封包分析工具对流量进行一个具体的排查分析,比如通过http contains "xxx"来查找数据包中的关键字。

网站被上传webshell如何处理?

1.首先关闭网站,下线服务。有必要的话将服务器断网隔离。

2.手工结合工具进行检测。

工具方面比如使用D盾webshellkill,河马webshell查杀,百度在线webshell查杀等工具对网站目录进行排查查杀,如果是在护网期间可以将样本备份再进行查杀。

手工方面对比未上传webshell前的备份文件,从文件甚至代码层面进行对比,检查有无后门程序或者其他异常文件,实在不行就直接用备份文件替换了。

4.加强安全策略,比如定期备份网站配置文件,及时安装服务器补丁,定期更新组件以及安全防护软件,定期修改密码等等措施。

常见OA系统?

PHP:通达OA、泛微 Eoffice

Java:泛微OA/云桥、致远OA、蓝凌OA、用友OA

ASP:启莱OA

SQL注入怎么写入webshell?

联合注入写入、dumpfile函数写入、sqlmap写入

常见的框架漏洞?

  1. log4j远程代码执行漏洞

原理

Log4j 是Apache 的一个开源项目,是一款基于Java 的开源日志记录工具。该漏洞主要是由于日志在打印时当遇到 ${后,以:号作为分割,将表达式内容分割成两部分,前面一部分prefix,后面部分作为key,然后通过prefix去找对应的lookup,通过对应的lookup实例调用lookup方法,最后将key作为参数带入执行,引发远程代码执行漏洞。

具体操作

在正常的log处理过程中对**${**这两个紧邻的字符做了检测,一旦匹配到类似于表达式结构的字符串就会触发替换机制,将表达式的内容替换为表达式解析后的内容,而不是表达式本身,从而导致攻击者构造符合要求的表达式供系统执行

  1. Fastjson反序列化漏洞

判断

正常请求是get请求并且没有请求体,可以通过构造错误的POST请求,即可查看在返回包中是否有fastjson这个字符串来判断。

原理

fastjson是阿里巴巴开发的一款将json字符串和java对象进行序列化和反序列化的开源json解析库。fastjson提供了autotype功能,在请求过程中,我们可以在请求包中通过修改@type的值,来反序列化为指定的类型,而fastjson在反序列化过程中会设置和获取类中的属性,如果类中存在恶意方法,就会导致代码执行等这类问题。

无回显怎么办

1.一种是直接将命令执行结果写入到静态资源文件里,如html、js等,然后通过http访问就可以直接看到结果 2.通过dnslog进行数据外带,但如果无法执行dns请求就无法验证了 3.直接将命令执行结果回显到请求Poc的HTTP响应中

  1. Shiro反序列化漏洞

原理

Shiro是Apache下的一个开源Java安全框架,执行身份认证,授权,密码和会话管理。shiro在用户登录时除了账号密码外还提供了可传递选项remember me。用户在登录时如果勾选了remember me选项,那么在下一次登录时浏览器会携带cookie中的remember me字段发起请求,就不需要重新输入用户名和密码。

判断

1.数据返回包中包含rememberMe=deleteMe字段。

2.直接发送原数据包,返回的数据中不存在关键字可以通过在发送数据包的cookie中增加字段:****rememberMe=然后查看返回数据包中是否存在关键字。

shiro-550

shiro反序列化漏洞利用有两个关键点,首先是在shiro<1.2.4时,AES加密的密钥Key被硬编码在代码里,只要能获取到这个key就可以构造恶意数据让shiro识别为正常数据。另外就是shiro在验证rememberMe时使用了readObject方法,readObject用来执行反序列化后需要执行的代码片段,从而造成恶意命令可以被执行。攻击者构造恶意代码,并且序列化,AES加密,base64编码后,作为cookie的rememberMe字段发送。Shiro将rememberMe进行编码,解密并且反序列化,最终造成反序列化漏洞。

shiro-721: 不需要key,利用Padding Oracle Attack构造出RememberMe字段后段的值结合合法的Remember。

上次参加的省护网行动中,协防单位和主防单位分别是哪个厂商的?

主防单位是启明星辰(Venustech),他们提供了全面的安全防护解决方案,包括防火墙、入侵防御系统和安全运营中心的支持。而协防单位是奇安信(Qi An Xin),负责入侵检测和应急响应支持

网络基线加固思路

先看防护软件有没有升级,先升级最新版本,进行全盘扫毒,查看高危端口,高危服务,查看主机有没有被爆过漏洞的软件 windows:重命名administrator账户、禁用GUEST账户、清理系统无效账户、配置密码策略账户锁定策略 Linux:删除无用账号、检查特殊账号、添加口令策略、禁止root直接登录、设置隐藏文件属性、关闭不必要服务、更改ssh端口号防爆破

在天眼设备中,各个字段的含义?

答:sip为源ip,dip为目的ip;sport为源端口,dport为目的端口。

天眼分析平台中DNS协议中的dns type字段含义是什么?

答:dns type 表示DNS请求类型;0表示DNS请求、1表示DNS响应。

dns_type中addr代表什么?

答:表示该host对应的IP地址信息;可能会有多个记录。

天眼可以捕捉到cmd命令嘛?

答:可以捕捉到远程执行的,比如攻击者远控你内网机器,执行cmd并返回结果。

天眼告警可以显示的结果,除了成功和失败还有什么嘛?

答:成功、失败、尝试、未知

未知:一般是告警生成错误了,可以忽略。

尝试:是可能成功也可能失败, 需要全部分析。

内网横向有哪些告警类型?

答:cs相关告警、隧道类告警、内网段的漏洞扫描、暴力破解。

内网主机对内部其他主机的攻击行为,使得该主机可能被黑客控制沦为跳板机,企图控制更多的内网其他主机

使用天眼,如何判断资产是否失陷?

答:受害资产不断外联恶意地址,并且有shell连接或者隧道类的告警。

出现受害ip为源的时候是什么情况?

答:可能是当网络攻击者使用了IP欺骗或伪造技术。

在天眼分析中,威胁告警检索字段中 attack sip 字段表示的含义是什么?

答:attack sip字段表示攻击者的IP。

在天眼分析平台中,proto字段表示的含义是? 举两个邮件应用协议的例子

答:proto字段表示协议,邮件应用协议有

· SMTP 协议 (简单邮件传送协议)

· MIME 协议

· POP3 协议

· IMAP 协议

在天眼分析平台中,IOC代表什么含义、反映了什么?

答:IOC表示匹配成功的威胁情报。

IOC反映了主机或网络失陷特征信息,包括入侵工具、恶意软件和攻击者的属性。

天眼中如何搜索一个日志里指定的端口?怎样把两个端口连接在一起查询?

答:搜索一个日志的指定端口:sport eq 80。

把两个端口连接在一起查询:sport eq 80 or sport eq 443。

一个告警的目的ip是114.114.114,端口是53,这样的告警,我应该对他的ip和端口进行封禁吗?

答:不能对其ip和端口进行封禁,该目的ip很明显为dns服务器转发的地址和端口,需要进一步确认真实受害资产的ip信息

在天眼分析平台中,如何搜索源IP为A,目的IP为B的网络日志?运算符(AND)是大写还是小写?

答:搜索源IP为A,目的IP为B的网络日志为ip(A) AND dip(B)。

运算符需要大写。

在天眼分析平台中,运算符都有哪些?

答:天眼运算平台里,运算符包括:AND、OR、NOT。

天眼分析平台中,发件人的字段是什么?

答:天眼分析平台中,发件人的字段是from。

天眼分析平台模糊搜索,应该怎么写查询语句?

答:模糊搜索应该直接在日志检索模块去搜索你要输入的关键字,并且使用*加部分名称进行检索。

GEO字段代表什么?

答:GEO字段代表ip对应的地理位置。

不出网的主机通过哪种代理方式建立连接?

答:不出网的主机通过正向代理建立连接。

P、正向代理和反向代理区别与联系?

正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端.。

反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端。

天眼里的小工具用过吗?

用过,可以做一些常见编码的解码等,比如base64解码、url解码

天眼告警主机外联的排查思路?

答:主机外联主要判断主机请求的外网地址是否是恶意,或者是dnslog相关平台域名,若地址在威胁情报查询是恶意或请求dnslog相关域名次数较多,可判断主机异常。

天眼中成功利用的告警如何处理?

答:根据告警类型,分析回显特征是否利用成功。若数据包无法判断,可以复现漏洞判断。判断告警如果确实利用成功,立刻通报到研判组或客户。

告警成功怎么处理?

答:首先验证一下是否是成功有效的,如果是有效的就写下问题的详情,然后同步给研判组或者客户。

失败的话,我们再判断攻击者是手动进行攻击还是使用工具进行攻击;

sql 注入预编译的原理是什么?

预编译又称为预处理,顾名思义,就是为代码编译做的预备工作很多情况下,

一条SQL语句可能会反复执行,或者每次执行的时候只有个别的参数值不同,预

编译就是将sql语句中的值用占位符?替代,即将SQL语句模板化或者参数化,

SQL 语句先交由数据库预处理,构建语法树,再传入真正的字段值进行执行,无

论后续向模板传入什么参数,这些参数仅仅被当成字符串进行查询处理,因此,

杜绝了sql注入的产生

sqlmap --os-shell 原理以及前提条件是什么?

原理:对于mysql数据库来讲,--os-shell 的本质就是写入两个shell 文

件,其中的一个可以让我们用来执行命令,而另外一个,如果在网站访问的话,

可以让我们可以上传文件。

前提条件:root权限,知道绝对路径,GPC关闭,Secure_file_priv参数为

空或者为指定路径。

sqlmap指定POST请求参数和等级

使用-u参数指定目标URL。 --data参数指定POST请求参数。 --level参数指定检测级别(1-5),默认是1。

sql 注入sleep()函数被过滤如何解决?

替换其他函数,如benchmark()函数

mysql 写 shell,如果不知道网站绝对路径,怎么办?

以下方式可以获得网站绝对路径:

单引号爆路径、错误参数值爆路径、通过搜索引擎获取、测试文件获取路径

配置文件获取路径、nginx文件类型错误解析爆路径、phpmyadmin爆路径、配合

远程代码执行漏洞

java 反序列化原理是什么?

Java 中的 ObjectOutputStream 类的 writeObject()方法可以实现序列化,

其作用把对象转换成字节流,便于保存或者传输,而 ObjectInputStream 类的

readObject()方法用于反序列化,作用就是把字节流还原成对象

了解shrio反序列化吗?

shiro 反序列化主要是Apache shiro提供了一个remember的一个功能,用

户登录成功后会生成经过加密并编码的 cookie,保存在浏览器中方便用户的日

常使用,而服务器对cookie的处理流程就是先获取浏览器上保存的cookie,然

后将其bs64解码,再进行AES解密,再将其反序列化进行校验,而漏洞就是出

现在这里,我们都知道AES它是一个硬编码,他是有默认密钥的,如果程序员没

有去修改或者过于简单,那我们就可以进行cookie重构,先构造我们的恶意代

码,然后将恶意代码进行序列化,然后AES加密(密钥我们已经爆破出来了),再

进行bs64编码,形成我们新的cookie,而服务器在处理时就会按照刚才的处理

流程,就会在服务端触发我们构造的恶意代码。

shrio550 和 shiro721 的区别?

Shiro550 使用已知密钥碰撞,只要有足够密钥库(条件较低),不需要

Remember Cookie,Shiro721 的 ase 加密的 key 基本猜不到,系统随机生成,可

使用登录后rememberMe去爆破正确的key值,即利用有效的RememberMe Cookie

作为Padding Oracle Attack 的前缀,然后精心构造 RememberMe Cookie 值来

实现反序列化漏洞攻击,难度高。

fastjson 不出网如何利用?

TemplatesImpl 利用链:

TemplatesImpl 利用链的利用条件比较苛刻,服务端使用parseObject()时,

必须使用如下格式才能触发漏洞: JSON.parseObject(input, Object.class,

Feature.SupportNonPublicField);

服务端使用parse() 时,需要

JSON.parse(text1,Feature.SupportNonPublicField),

这是因为

com.sun.org.apache.xalan.internal.xsltc.trax.TemplatesImpl 需要赋值的

一些属性为private 属性,要满足private属性的数据。

BCEL 不出网打法:

becl 攻击则是利用tomcat的BasicDataSource 链

编译poc,将poc的class字节码转化为bcel然后发送payload

蚁剑/菜刀/冰蝎/哥斯拉的相同与不相同之处?

相同:都是用来连接 Web Shell 的工具

不同:相比于其他三款,冰蝎有流量动态加密

msf 和 cs 流量特征?

Msf:

端口号:msf默认使用4444端口作为反向连接端口

数据内容:msf数据包通常包含特定字符串:("meterpreter"、"revshell"等)

CS:

基本特征:心跳包

请求特征:下发的指令,url路径,老版本固定的ua头

源码特征:checksum8 (92L 93L)

如果进行二开魔改后的cs,可提取样本

windows 或 linux 被植入后门文件,讲一下你的排查流程?

检查系统日志,检查系统用户,查看是否有异常的系统用户,检查异常进程,

检查隐藏进程,检查异常系统文件,检查系统文件完整性,检查网络,检查系统

计划任务,检查系统后门,检查系统服务

判断sql注入是攻击还是误报?

首先看响应包的长度,366成功,332失败,然后看SQL语句详细信息里看

请求体,

看url,如果是很明显的sql语句,里面加一些单引号,分号,双重破折号,

大概率为攻击,如果只是多了一些字母,数字就是误报。

查看攻击样本

看它一定时间内同一ip地址访问的次数、访问的内容

看它访问的时间(在凌晨俩三点访问邮箱输错账号密码)

看它Ip源地址(外国ip的话有可能就是使用了代理池)

数据头中包含的url,可以拿到沙箱测试,如果这个网站没有问题就是误报

内网告警应该如何处理,流程是怎么样的?

具体定位到哪台机器,报警说明知道具体漏洞类型,打相应补丁。利用

webshell 或者是shell查杀工具查杀,查看tmp目录下是非有带有免杀的木马。

彻底清除。再到全流量分析的机子上看,是非有经过其他的机器。拿到攻击 ip

之后到线上的一些网站查看主机类型,比如360或者微步上,查看是否是傀儡机,

vps 跳板,或者是国内个人云主机。如果是个人云主机,就可以通过whois查看

是非有最近绑定的域名,或者绑定者的邮箱。知道邮箱之后就可以反查询出 qq

号说多少,再利用社工查询到手机号,到一个知名的网站或知名软件上查询这个

手机号有没有注册过什么网站,可以去这些网站通过撞库的方法登入,这样就可

以拿到这个攻击者的身份证,学校,地址这些了。

怎么判断是不是误报?

⚫ 首先你要知道你管辖的局点网段信息

⚫ 如果攻击IP和被攻击IP是同一个网段的,那就可能是由于业务特征被安全

产品规则库判定为是攻击,而产生了误报

⚫ 如果攻击IP不是本局点的网络,这个就可能是真正的攻击

⚫ 主要看IP访问次数,攻击源有没有共性,看数据包内容

打点一般会用什么漏洞?

优先以java反序列化这些漏洞像shiro、fastjson、weblogic、用友oa等

等进行打点,随后再找其他脆弱性易打进去的点。因为javaweb程序运行都是以

高权限运行,部分可能会降权。

正向代理和反向代理区别?

正向代理是一个位于客户端和原始服务器之间的服务器,为了从原始服务器

取 得内容,客户端向代理 发送一个请求并指定目标(原始服务器),然后代理向

原始服务器转交请求并将获得的内容返 回给客户端。

反向代理,客户端是无感知代理的存在,以代理服务器来接受 internet 上

的连接请求,然后 将请求转发给内部网络上的服务器,并将从服务器上得到的

结果返回给 internet 上请求连接的客户端。此时代理服务器对外就表现为一

个服务器。

内网横向psexec和 wmic的区别?

Psexec 会产生大量日志,而wmic不会

内网认证协议有哪些?认证原理分别是什么?

内网认证协议:NTLM协议、Kerberos协议

NTLM协议认证原理:

NTLM协议采用Challenge/Response认证机制:

1.协商:双方先确定一下传输协议的版本等各种信息

2.质询:这一步是挑战/响应的关键一步

3.验证:对质询的最后一个结果进行验证,验证通过之后,即允许访问资源

Kerberos 协议认证原理:

1.首先 Client 向域控制器 DC 请求访问 Server,DC 通过去 AD 活动目录中查找依次

区分 Client 来判断 Client 是否可信。

2.认证通过后返回 TGT 给 Client,Client 得到 TGT(Ticket Granting Ticket)。

3.Client 继续拿着 TGT 请求 DC 访问 Server,TGS 通过 Client 消息中的 TGT,判断

Client 是否有访问权限。

4.如果有,则给 Client 有访问 Server 的权限 Ticket,也叫 ST(Service Ticket)。

5.Client 得到 Ticket 后,再去访问 Server,且该 Ticket 只针对这一个 Server 有效。

6.最终 Server 和 Client 建立通信。

黄金票据和白银票据的区别?

特性黄金票据白银票据
访问权限伪造TGT,可以获取任意Kerberos服务权限伪造TGS,只能访问指定的服务
加密方式由Kerberos的Hash加密由Silver Ticket目标服务的Hash加密
认证过程需要访问域控制认证,属于第二步认证直接被服务接受认证,属于最后一步认证

拿到webshell 不出网情况下怎么办?

分两种情况讨论:

如果是都不出网的情况,则上传工具正向连接,如Reg

如果限制了部分协议不出网,则探测出网协议,采用隧道方式