1 情况概述

1.1 情况简介

2021年4月18日再次接到告警用户单位某台内网服务存在web后门木马连接行为,需立即进行应急处置。

1.2 时间线

本次安全事件攻击时间线如下图,攻击者针对oa系统进行攻击,攻击成功后上传web后门、内网代理工具、内网扫描工具至oa服务器。并对内网其他服务器进行横向的扫描利用。

1618973693_607f93fd4b3b5445f6cdc.png!small?1618973697907

1.3 分析结论

分析结果如下:

根据现有痕迹(日志和文件)进行分析,4月14日22点59分左右攻击者147.77.158利用officeserverservlet模块上传2.jsp后门文件;

4月15日14点31分攻击者在/tmp目录下上传了test1内网渗透工具包,根据时间线推理攻击者利用jsp上传了test1工具包;

根据攻击者上传web后门前的操作进行关联分析,发现攻击者在上传web后门前均有访问officeserverservlet行为,该模块为金格office控件模块,该模块在2019年hvv期间爆出存在文件上传0day漏洞,且该模块互联网可直接未授权访问;

4月15日16点59分左右攻击者利用officeserverservlet模块上传了jsp后门文件;4月16日至17日期间,攻击者利用test3.jsp依次上传了tt.jsp、ts.jsp、aaa.jsp、tunnel.jsp多个恶意文件。

1.4 应急处置

根据上述分析结论,应急处置如下:

已删除被攻击者恶意上传至oa服务器的web后门文件jsp、tt.jsp、ts.jsp、aaa.jsp、tunnel.jsp;

已删除被攻击者恶意上传的内网渗透工具包/tmp/test1;

1.5 处理建议

根据上述分析结论和应急处置结果,提供安全建议如下:

  • 建议关闭oa系统对互联网的直接服务,改为通过sslvn接入内网后访问oa系统。同时建议类似oa不是对所有互联网用户开放访问的系统均改为通过vxn接入后访问相关业务系统;
  • 建议禁止互联网访问officeserverservlet组件;
  • 建议梳理各个区域网络访问控制策略,仅开放必须的业务类端口通信,防止攻击者攻陷某台服务器后进行横向渗透造成多区域多主机失陷;
  • 建议修改oa应用运行权限,若web运行权限为root,则攻击者通过web应用漏洞利用成功后即获得服务器管理员root权限;
  • 建议定期巡检查杀web应用系统后门和操作系统病毒。

2 详细分析过程

2.1 OA系统服务器

2.1.1 日志分析

根据IPS告警情况,4月15日15点34分左右存在webshell上传行为触发告警,动作为RESET重置,怀疑此刻存在攻击行为,立即进行应急响应。由于触发告警的为web后门,优先排查web日志。

1618973722_607f941a30372e9a19438.png!small?1618973723713

根据web日志记录情况,4月14日22点52分左右,攻击者61.147.77.158第一次上传并访问2.jsp木马文件,且在第一次访问该后门文件前后均访问了officeserverservlet页面。

1618973742_607f942e960813770a662.png!small?1618973751362

2.jsp文件修改时间为4月14日22点59分,关联日志文件,攻击者在22点59分只有2个http请求,在给officeserverservlet页面发送了一个post请求3秒后,立即发送了一个get请求访问后门文件是否存在。

1618973769_607f944921986ef6d041c.png!small?1618973771226

此前攻击者在22点52分时就已访问了2.jsp文件,但可以发现使用的请求为GET请求,此时的2.jsp文件应为攻击者上传的测试jsp代码文件,用于测试上传是否成功以及是否可正常解析jsp文件,随后又通过officeserverservlet文件后上传覆盖了之前的2.jsp文件,可以看到攻击者发送了大量的POST请求至2.jsp文件,此时攻击者已连接上了web后门并进行了一系列操作。

1618973788_607f945cce9a9dfce2c1a.png!small?1618973793134

查看2.jsp文件内容和文件mtime和ctime如下,文件内容存在大量编码后的字符,无法确认其功能。

1618973803_607f946b983b375d031c5.png!small?1618973806758

将其上传至威胁情报库进行检测,发现该文件可免杀率较高。

1618973819_607f947b79ed8e96265cf.png!small?1618973820581

本地复现确认其为冰蝎web后门文件。

1618973832_607f948821ae9659d12c7.png!small?1618973834918

通过对网站路径下新增文件进行搜索,发现../edit/路径下存在多个异常文件,文件修改时间最早为4月15日16点59分,最新则为4月17日14点50分。

1618973860_607f94a4c33331192ee54.png!small?1618973864714

查看文件内容为jsp木马文件。

1618973895_607f94c792489c349af08.png!small?1618973896666

1618973930_607f94ea8b444ebee50a6.png!small?1618973932059

根据最早的异常文件test3.jsp文件的修改时间,进行web日志关联排查,发现16点59分日志共记录了6条攻击者记录,第一条即为攻击者117.136.38.153尝试访问test3.jsp后门文件,响应码为500即访问失败,22秒后再次发送了一个post请求了officeserverservlet页面,随后4条记录均为攻击者访问test3.jsp文件且响应码均为200即访问成功。

1618973955_607f950393c5aead6773c.png!small?1618973967938

查看另外4个异常文件创建时间分别为4月16日至4月17日上传,关联日志进行分析。

1618973995_607f952b41d92b04e4fc7.png!small?1618974003583

根据tt.jsp创建时间,关联日志分析,发现攻击者在持续访问test3.jsp后直接访问了tt.jsp文件,无其他访问请求。结合tt.jsp文件时间说明攻击者是通过test3.jsp上传的tt.jsp文件。

1618974015_607f953f3b41a8267b4e7.png!small?1618974021187

ts.jsp文件同上

1618974033_607f95510901eb4e9470c.png!small?1618974036343

aaa.jsp文件同上

1618974043_607f955bccb6f80e6325b.png!small?1618974050475

tunnel.jsp文件同上。

1618974059_607f956ba76bff282e9e9.png!small?1618974064835

根据新增文件进行搜索,发现tmp目录下存在异常目录文件test1,该目录下文件均为内网渗透工具包,用于将OA服务器作为跳板攻击内网其他服务器,从而扩大战果。

1618974080_607f95806e43d72e60b65.png!small?1618974086722

以下为工具包部分扫描结果:

1618974095_607f958f9c4d3bb9831cf.png!small?1618974105341

2.1.2 漏洞验证

根据现有日志痕迹分析officeserverservlet模块可能存在可被利用的漏洞,访问该模块发现可被互联网未授权访问到。(由于现阶段处于hvv期间,不排除攻击者掌握该控件的漏洞利用POC进行攻击。)

1618974106_607f959aed47f93f2def3.png!small?1618974109043

结合威胁情报分析,2019年6月26日处于2019hw行动期间致远OA系统爆出0day漏洞,实际存在漏洞的为金格iweboffice控件,本OA系统使用的是相同的控件。

1618974123_607f95ab5e468b6599432.png!small?1618974128502

1618974141_607f95bd908a81ca70b43.png!small?1618974143351

2.1.3 附linux常规检查项

在完成web层面的入侵检查后,也需对系统层面进行入侵检查,防止攻击者通过web后门上传系统层面的后门驻留程序等。

1.1.1.1 网络连接

查看系统监听端口,判断是否有异常进程开启了端口监听。

netstat -antlp | grep LIST

1618974152_607f95c878fb643f1ce28.png!small?1618974153899

查看已建立连接,检查是否存在异常外联进程。

netstat -antlp | grep EST1618974168_607f95d88be31911cf4da.png!small?1618974169256

1.1.1.2 定时任务

查看crond进程运行状态。

1618974259_607f9633e42ae4825cca2.png!small?1618974260600

linux定时任务常用路径如下:

/var/spool/cron/   #使用root账号可看到该目录下存在多个用户创建的定时任务

/etc/crontab

/etc/cron.d

/etc/cron.daily  /etc/cron.hourly  /etc/monthly  /cron.weekly

1618974300_607f965c47955a07ac8cc.png!small?1618974300741

查看cron日志,通过查看定时任务日志可较快发现当前系统是否存在异常定时任务运行。1618974308_607f9664d61fe10ec04e2.png!small?1618974310060

1.1.1.3 自启动项和服务

linux有两套服务自启机制,分别为init和systemd,前者较为古老服务命令使用的为service,后者是centos7以后开始使用的一套服务自启机制使用的命令为systemctl。

init机制服务保存在/etc/rc.d/下,同时/etc目录下默认存在init服务的软连接如下:

运维常使用的启动项/etc/rc.local  /etc/init.d均为/etc/rc.d目录下文件的软连接文件。

1618974339_607f968334d7a08d23a7b.png!small?1618974342518

真实启动项路径为/etc/rc.d/,其中0-6代表linux系统不同的运行级别,一般命令行登录为运行级别3,图形化界面登录为运行级别5。

1618974348_607f968c1310063a10cde.png!small?1618974349785

systemd服务路径如下,优先级高的单元配置文件会覆盖优先级低的,系统安装时,默认会将单元文件存放于/lib/systemd/system目录,增删改时建议在优先级最高的目录进行。

/etc/systemd/system/,该目录下的一些.service服务脚本是/lib/systemd/system的软连接

/etc/systemd/user/

/run/systemd/system/(当需要对程序运行时的单元文件进行配置修改时才会创建对应的单元文件)

/usr/lib/systemd/system/,/lib是usr/lib的软连接

/usr/lib/systemd/user/

排查时可以通过入侵时间进行关联,查看是否有新增服务。

1618974367_607f969f5b8d83e97dac8.png!small?1618974369443

1.1.1.4 用户登录

last命令可以查看系统每次登录的账号、ip、登录时间、持续时间。

1618974382_607f96ae670805f56e2ce.png!small?1618974384803

lastlog命令可以查看账号的最近一次登录时间。

1618974393_607f96b91ebeb9097eddd.png!small?1618974394737

w和who命令可以显示当前用户登录在线情况。

1618974402_607f96c21d15f03a58a80.png!small?1618974403237

centos系统登录日志默认路径为/var/log/secure

ubuntu系统登录日志默认位于/var/log/auth.log

cat secure-20210121 | grep Failed 可查看当前系统日志是否存在大量登录失败记录,即爆破行为。

1618974413_607f96cd6c4444c15de69.png!small?1618974416549

1.1.1.5 用户账号

linux用户账号文件所在路径为/etc/passwd

通过如下命令可以查看该文件mtime是否被修改,攻击者新增后门账号时此文件时间会被修改。

1618974424_607f96d8cb7c03493af3d.png!small?1618974425970

通过如下命令可查看当前系统可被登录的账号。若账号无需使用建议删除。

1618974436_607f96e4b701df0c459cc.png!small?1618974437322

3 经验总结

攻防演练中,红蓝双方斗志斗勇,红队手握0day和大量肉鸡代理,蓝队依托安全防护体系和安全运营机制对攻击进行监测、拦截、溯源。

红方攻击思路:

信息收集(域名、子域名、云防护cdn、C段、端口banner、中间件);

社工(邮件钓鱼、U盘钓鱼等);

手握0day,一步到位;

ip代理节点池,通过动态变化的ip进行扫描攻击,防止被蓝方通过真实IP溯源到其真实信息。

漏扫踩点,漏洞利用;(RCE、命令执行、反序列化RCE、注入、弱口令)

权限提升、权限维持(内核提权、工具提权、反弹shell、cs、msf等);

内网代理穿透,跳板代理攻击流量。(frp、reGeorg、端口转发等)。

内网横向移动,部分单位仅对外-内进行安全防护,对内-内缺乏安全防护机制。(ms17-010、cve-2019-0708、弱口令、内网业务系统高危漏洞利用)

痕迹清除(后门文件时间篡改、web日志和系统登录日志的清除篡改)

蓝方防守思路:

漏洞情报共享,恶意IP情报共享,IP封堵,永远的神。

人员值守,现场保护,优化加固,日报输出。

安全监测、防护设备告警误报研判、重点关注内向外的异常流量。

流量回溯,发现0day的利器。同时也是应急响应溯源分析的有力工具。

蜜罐,0day和攻击溯源利器,可利用攻击者前端劫持漏洞如jsonp、xss等获取攻击者浏览器中的登录凭证如微博、百度、163等,进而获取其社交id甚至是真实姓名和所在公司。

本文作者:QS_永夏