研判常问面试题
1、菜⼑特征:PHP 类 WebShell流量中eval函数用于执行传递的攻击 payload,流量参数z0、z1、z2
2、冰蝎3.0:默认内置 16 个 user-agent,content-type为application/octet-stream
3、蚁剑:PHP 类 WebShell流量最中明显的特征为 ("display_errors","0");
菜刀特征:
默认的webshell中链接密码都是caidao,ua头为百度爬虫、请求体中存在eavl,base64等特征字符
响应包中包含X@Y、php的webshel中流量参数z0、z1、z2
默认内置 16 个 user-agent,content-type为application/octet-stream**
请求包中content-length 为5740或5720(可能会根据Java版本而改变)
**每一个请求头中存在Pragma: no-cache,Cache-Control: no-cache**
冰蝎2.0
建立连接后 所有请求 **Cookie的格式都为: Cookie: PHPSESSID=; path=/;**
静态分析:
各种语言的webshell中都会存在**16位数的连接密码**,默认变量为key
冰蝎3.11流量特征
1、header头顺序是颠倒的
2、发送包是base64,返回包是字节数组,所以会乱码
3、如果冰蝎密码不对,会出现两个连接,第一个是post 第二个是get
1. content-type为application/octet-stream ,请求包中content-length 为5740或5720(可能会根据Java版本而改变),
每一个请求头中存在Pragma: no-cache,Cache-Control: no-cache
2.异常User-Agent---- 出现WOW64等
3. 频繁访问默认的路径/conn.jsp
蚁剑
PHP 类 WebShell流量最中明显的特征为 @ini_set ("display_errors","0");
同时会带有base64编码解码等字符特征, **每个请求体都存在@ini_set(“display_errors”, “0”);
@set_time_limit(0)开头**。并且存在base64等字符,响应包的结果返回格式为 随机数 结果 随机数
哥斯拉:
不修改User-Agent,User-Agent会类似于Java/1.8.0_121(具体什么版本取决于JDK环境版本)
在请求包的Cookie中有一个非常致命的特征,最后的分号
标准的HTTP请求中最后一个Cookie的值是不应该出现;的
1. “pass=”起始
2. 请求包较长 响应包为0
3. 一个tcp包里面有三个http
响应包特征
整个响应包的结构体征为:md5前十六位+base64+md5后十六位
哥斯拉4.0.1中JAVA_AES_BASE64特征流量特征
host头
密码和base64字符串是密码=base64字符串的形式
发送包是密码=bae64字符串的形式,返回包是类base64字符串的格式
1. 对称加密算法:JAVA_AES_BASE64是哥斯拉4.0.1使用的对称加密算法;
因此可以根据哥斯拉4.0.1的流量中是否包含JAVA_AES_BASE64来判断是否为哥斯拉4.0.1攻击流量
2. 长度固定:哥斯拉4.0.1使用JAVA_AES_BASE64算法对数据进行加密后,加密后数据的长度是固定的
因此,可以根据攻击流量的长度是否固定来判断是否为哥斯拉4.0.1攻击流量
3. 常见数据前缀:哥斯拉4.0.1加密的数据在明文数据前会添加特定的前缀;
因此,可以根据攻击流量中是否包含常见的数据前缀来判断是否为哥斯拉4.0.1攻击流量。
内存马
先判断是通过什么方法注入的内存马,可以先查看web日志是否有可疑的web访问日志
如果是filter或者listener类型就会有**大量url请求路径相同参数不同的,或者页面不存在但是返回200的**,
查看是否有类似哥斯拉、冰蝎相同的url请求,哥斯拉和冰蝎的内存马注入流量特征与普通webshell的流量特征基本吻合
通过查找**返回200的url路径对比web目录下是否真实存在文件,如不存在大概率为内存马**
如在web日志中并未发现异常,可以排查是否为中间件漏洞导致代码执行注入内存马,
排查中间件的error.log日志查看是否有可疑的报错,根据注入时间和方法根据-
业务使用的组件排查是否可能存在java代码执行漏洞以及是否存在过webshell,排查框架漏洞,反序列化漏洞。
java内存马类型
filter listener servlet websocket javaagent
shiro反序列化漏洞原理?
1.浏览器或服务器重启后用户不丢失登录状态,Shiro 支持将持久化信息序列化
并加密后保存在 Cookie 的 rememberMe 字段中,下
次读取时进行解密再反序列化。但是在 Shiro 1.2.4 版本之前内置了一个默认且固定的加密 Key
导致攻击者可以伪造任意的 rememberMe Cookie,进而触发反序列化漏洞
Apache Shiro框架提供了记住密码的功能(RememberMe),用户登录成功后会
生成经过加密并编码的cookie。在服务端对rememberMe的cookie值,
先base64解码然后AES解密再反序列化,就导致了反序列化RCE漏洞
那么,Payload产生的过程:
命令=>序列化=>AES加密=>base64编码=>RememberMe
Cookie值在整个漏洞利用过程中,比较重要的是AES加密的密钥
如果没有修改默认的密钥那么就很容易就知道密钥了
shiro550与shiro721的区别:
1、这两个漏洞主要区别在于Shiro550使用已知密钥碰撞,只要有足够密钥库(条件较低),不需要Remember Cookie
2、Shiro721的ase加密的key基本猜不到,系统随机生成,可使用登录后rememberMe去爆破正确的key值,即利用有效的RememberMe Cookie作为Padding Oracle Attack的前缀,然后精心构造 RememberMe Cookie 值来实现反序列化漏洞攻击,难度较高
流量层面分析shiro反序列化漏洞是否攻击成功?
1. 在HTTP请求头Cookie里出现rememberMe字段以及可能出现自定义类型
例如c: aWQ=,响应体中出现大量编码字符串,若需要判断是否攻击成功,
需对请求数据和响应体内容进行解密判断
2. 检查请求头中的"rememberMe" cookie。攻击者可能会在此处插入恶意序列化数据
3. 观察服务器响应。如果服务器返回了异常错误信息,如Java反序列化异常,可能表明攻击成功
分析应用程序日志:如果日志中出现了异常堆栈跟踪,可能表明攻击成功
例如,攻击者发送了一个包含恶意序列化数据的请求,服务器响应了一个包含Java反序列化异常的错误信息这可能表明攻击成功。
1. 在请求头中存在OGNL表达式,一般在url中会出现的攻击特征主要是:.action?method | ?redirect:$
在conten-type中出现的攻击特征主要有:%{
2. 判断请求中是否包含特定的 Struts2 关键字,如"method:"、"redirect:"等,这些关键字可能是用于执行命令的操作;
3. 检查请求中是否包含"Content-Type"头字段,并且值为"application/x-www-form-urlencoded",这是 Struts2 框架默认的 Content-Type 值,用于处理 POST 请求;
4. 检查请求参数中是否包含OGNL表达式,如"${}"、"%{}"等字符;
5. 检查请求是否包含一个名为"class"的参数,值为"java.lang.Runtime",这个参数可以用于执行系统命令
如何在流量层面分析struts2命令执行是否成功
1.查看请求头或请求体中是否含有OGNL表达式,Struts2 命令执行的原理是通过 Ognl 表达式执行 java 代码
2.查看请求头或请求体中是否存在命令执行类代码
3.查看响应体是否返回上述命令执行的结果
威胁情报类告警产生误报的原因是什么?
1、防火墙、邮件网关有发起黑域名解析的行为可能是误报
2、威胁情报失效了
如何分析文件上传告警是否攻击成功?
1、查看响应体响应结果判断服务器是否接受了该上传请求,上传成功通常状态码为200,查看响应体中是否响应了上传路径,访问该上传路径查看文件是否被解析是否存在
2、通过查看态势感知日志判断文件是否落地
3、登陆受害者主机全局搜索上传文件
如何判断Cobalt Strike攻击流量?
1、http-beacon通信中,默认使用get方法向/dpixel、/__utm.gif、/pixel.gif等地址发起请求,同时请求头存在cookie字段并且值为base64编码
2、dns-beacon通信中,默认使用cdn.、www6.、api.、www.、post.为开头发起dns请求,并且查询结果伴随0.0.0.0、0.0.0.80、0.0.0.241等非常规IP
3、心跳包间隔一定时间,均有通信,且流级上的上下行数据长度固定
4、常见User-Agent:Cobalt Strike通常使用自定义的User-Agent字符串,例如Mozilla/5.0 (Windows NT 10.0; Win64; x64) Cobalt Strike
5、命令和控制流量:Cobalt Strike的HTTP请求中可能包含与C2服务器通信的命令和控制信息,这些信息在正常的Web请求中不会出现。
发生挖矿木马事件通过流量层面如何判断真实性?
1. 通信端口:挖矿木马可能会使用特定的端口进行通信。例如,Monero挖矿木马通常会使用TCP端口3333或5555进行通信
2. 通信流量:挖矿木马的通信流量可能会具有特定的特征,例如大量的高速数据传输和周期性的通信,
在数据包中可以看到大量的计算资源使用信息和挖矿结果信息
3. 进程和文件系统:挖矿木马可能会创建特定的进程和文件来执行挖矿操作。例如,Monero挖矿木马通常会在操作系统上创建名为"xmrig"的进程,
并在文件系统上创建名为"config.json"的配置文件
4. 系统资源:挖矿木马可能会占用系统资源,例如CPU和内存,并可能导致系统崩溃或变得缓慢。
5. 判断流量的数据:挖矿木马通常会在通信中发送一些特定的数据,例如挖矿难度、钱包地址、挖矿程序版本等
如果流量中存在这些数据,就可能存在挖矿木马
6. 看数据包的详细信息,看终端或者服务器是否有与矿池交互的信息,
判断是否存在登录到矿池(method“:”login“)、从矿池接收任务(”method“:”job“)字段,
在载荷内容中是否存在ok、success等字段
Apache Log4j2 远程代码执行漏洞原理?
Apache Log4j2 框架中存在一个名为 JNDI Lookup 的功能,
它允许通过配置文件中的 JNDI 名称引用外部资源。
攻击者构造一个特殊的日志消息,其中包含恶意的 JNDI 名称,
并通过网络发送给受影响的应用程序。当应用程序使用 Log4j2 框架解析日志消息时,
它会尝试查找和引用该 JNDI 名称。如果恶意的 JNDI 名称指向一个恶意的远程资源,
例如恶意的 LDAP 服务器或 RMI 服务,攻击者可以控制该远程资源的内容和行为。
攻击者可以在恶意的远程资源中注入恶意代码,并在目标系统上执行任意命令或获取敏感信息。
流量层面分析Apache Log4j2 远程代码执行漏洞是否攻击成功?
1、dnslog类:查看是否存在源ip与dnslog的外联日志记录
2、命令执行攻击
2.1 有回显:响应体中存在命令执行结果
2.2无回显 :存在源ip与ldap服务ip的外联日志记录
1、IP反查注册信息,可能会查询到域名,通过域名查询备案和whois信息,可能会查出邮箱电话,通过社工库查询相关邮箱和电话信息定位人员支付宝,微信转账;微博,百度贴吧等
2、通过白泽系统查询IP标记情况,查看攻击者IP日常访问数据内容,判断攻击者人员信息
1、使用cat /etc/ld.so.preload命令查看动态链接库文件是否加载有so文件,提取加载的so文件上传至威胁情报平台,判断是否为恶意so文件
2、清除so文件,使用ldconfig命令重新加载动态链接库,执行ps,top命令查看是否可以发现挖矿进程信息
3. 确认ps和top命令是否被替换:可以使用命令"which ps"和"which top"查看这两个命令的路径是否为系统默认路径"/bin/ps"和"/usr/bin/top",
如果不是则说明被替换。也可以通过比较ps和top命令的md5值来判断是否一致。2. 确认动态链接库是否被劫持:可以使用命令"ldd /bin/ps"和"ldd /usr/bin/top"
查看这两个命令依赖的动态链接库是否正常,如果有动态链接库被替换,则会发现其中一些动态链接库路径不对
4. 恢复被替换的命令和动态链接库:如果确认被替换,可以从系统安装介质或官方网站上下载对应版本的ps和top命令和动态链接库,替换掉被替换的文件即可。
5. 检查系统安全:替换命令和动态链接库只是暂时的措施,需要进一步排查系统安全状况,比如查杀恶意程序、加强访问控制、更新系统补丁等,以防止类似问题再次发生
6. 借助工具busybox
如何分析排查钓鱼邮件事件?
1.确认邮箱批量发送时间点
2.排查邮箱登录日志,发现【恶意IP】在【什么时间】通过web登录成功;
3.查看邮件内容,确认钓鱼邮件的影响和目的;
4.排查浏览器或上网行为,判断是否访问过钓鱼页面;
5.对访问过的设备进行全盘查杀
分析邮件头部:查看邮件的原始头部信息
检查发件人的真实地址、邮件服务器的来源、邮件传输路径等
注意查看"Received"字段,查看是否存在异常的邮件转发或代理
分析链接与附件,添加至黑名单
查看有多少内网ip访问过这个链接或者ip,双向排查
1.排除302、404、301、502,非200状态码
2.判断请求包内相关的sql语句是否为恶意的SQL语句
3.判断响应体内是否包含数据库敏感信息,或者系统信息。
如何研判JBOSS 反序列化漏洞攻击成功?
1.在访问JBOSS漏洞页面/invoker/readonly后,返回值为500
2.请求体有llections.map.LazyMap、keyvalue.TiedMapEntry攻击链特征并且有明显的命令执行行为
比如whoami
3.在返回500 堆栈报错页面内容中包含了系统返回内容 比如系统用户:root
如何研判Fastjson反序列化漏洞攻击成功?
1.请求头:method: POST content_type: application/json
2.请求体:data:com.sun.rowset.JdbcRowSetImpl,dataSourceName,@type
3.请求体: 包含攻击者C2服务器地址
4.状态码为:400 也可能是500
5.通过态势感知平台进行回溯分析,在分析中心输入语法:(sip:(失陷服务器IP) OR sip:(攻击者C2IP)) AND (dip:(失陷服务器IP) OR dip:(攻击者C2IP))
原文始发于微信公众号(Poker安全):Hvv蓝队常问面试题
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论