一、前言:
本篇继续针对远控功能进行了全面分析,模拟攻击场景、取证分析。
二、攻击模拟:
↪ 被控端会定时向主控发送Post请求,等待主控下发指令,代码如下所示:
➥ 主控接收肉鸡报文如下所示:
➥ 模拟主控操纵,部分代码如下:
➥ 黑客通过发送格式参数,对肉鸡操纵:
代码格式:cmd(0)<|>cmd(1)<|>cmd(2)<|>cmd(3)<|>cmd(4)<|>cmd(5)
格式解析:标识<|>远控指令<|>文件路径 或 下载urlpath<|>文件目录<|>文件名<|>下载执行标志
➥ 被控端解析指令, Split以<|>切割成数组,代码如下所示:
respontext = “”
respontext = post (“is-ready”,””,addr)
cmd = Split (respontext,”<|>”)
✍ 下面针对函数功能进行了攻击复现,下述举例部分函数功能远控模拟,思考如何防御,远控过程测试电脑开启了winDefender和360主动防御,并没有检测到可疑行为。
㊀ 肉鸡被控后首先会向主控发送Get请求,意味着肉鸡上线,包含当前用户信息、系统信息、杀毒软件等数据。
揣测黑客用意,黑客采集数据做初步判断。比如针对360、卡巴根据杀软的不同分别做免杀,过杀软的方式不一样。根据系统win10 64或win7 32兼容性下载payload,判断当前用户权限,是否需要提权等操作,如下所示:
㊁ 后续每隔5000ms就会向主控发送post请求,等待主控进行指令下发。
主控端下发远控指令后,动态调试截获如下,通过switch做分支控制,执行主控发来的指令,ctrl-driver获取全部盘符数据:
㊂ ctrl-process利用cimv2对象,查询当前系统进程,获取当前正在运行的进程,如下所示:
㊃ 主控端通过ctrl-process遍历肉鸡活跃的process,获取进程PID,通过exit-process结束指定进程。
exit-process会调用exitprocess函数,参数是进程的PID,如下所示:
㊄ recv接收指令,用途上传指定路径下的文件,调用upload函数,通过主控发来的文件路径,读取文件数据发送至主控端,如下所示:
主控端接收肉鸡发来的报文如下,包传输过程没有做任何加密处理:
㊅ ctrl-faf指令是为了获取当前目录下文件夹、文件名及属性数据,调用函数ctrlfaf,参数是文件夹路径,如下所示:
意图也很明显,遍历文件收集信息,通过get-faf的远控指令,调用函数readfile将肉鸡目录下的文件遍历上传,主控端伪代码如下:
Recvfdir = ctrl-faf(发送远控指令)
For filedir,filename,…. in Recvfdir:
get-faf调用readfile(filedir + filename)
㊆ 上篇文章中提到,样本基于公众平台进行投毒部署,动态解密提取大量的url字符串,这些样本中url是写死的,循环调用chekWeb的检测,如果网页失效或url被截断呢?
主控端为了更灵活的投毒部署,send指令调用download函数进行指定平台下载。这样好处显而易见,只要本体不被查杀,对流量监控检测发现对某url异常,限制url出入规则或失效,这种情况下主控端可以随时更换公共平台部署,再次远程投毒:
模拟了github下载README.md测试,主控端发来toexec参数y数值,下载后直接本地执行,否则落地等待时机。
✃ 一般病毒下载后内存中执行,不会将文件落地,因为很容易被查杀。
病毒持久化尤为重要,注册表Run修改、镜像劫持、计划任务等很轻易就被检测。脚本就会用冷门api,如WmiConsumer等,随着HOOK底层成熟,可识别与启发式查杀提示用户可疑启动进程。落地式的文件一般是持久化操作的恶意软件,如自我保护、挖矿等。
➨ 攻击模拟对指令功能梳理如下:
✈ 病毒代码的逻辑、手法写的很不错,每个肉鸡当作节点,主控可以针对不同的肉鸡编写控制逻辑与自动化主控。
代码逻辑分离,不需要下发配置文件对已控制肉鸡迭代更新,只需主控端进行代码修改,客户端即可更新,有点热部署平滑升级的感觉。
✎ wireshark抓包来分析网络状态或用Python去解析pcapng都是可以的,如下所示:
1. 吞吐量:
2. http请求过滤:
3.流量图数据
4. Get报文分析
三、取证分析:
感染vbs病毒,定点巡检响应触发规则库,发送告警,如何取证分析?这里简述一些思路,不局限于病毒类型,以上述vbs病毒为例,从网络、文件、注册表、进程等多维度进行内存取证分析,抛砖引玉。
✁注:真实环境中本文的流程反序化,应该先安全巡检,规则触发初控,响应预警,取证分析,清理及加固,最后样本分析与专杀开发,事件报告产出等。
① 沙箱或者虚拟机中运行病毒样本,假设安全事件监控预设规则触发,严重预警,对相关的执行数据、环境初步隔离限制处理,使用DumpIt进行镜像转储.
②将转储的.raw使用volatility工具进行分析,win/linu下都可以,输入指令格式如下,获取:
③我们先来观察进程状况,查看是否有可以的进程名称、启动时间、观察PPID大于PID是否可疑,因为本文测试时候cmd进行病毒执行,如下所示:
我们通过pstree可以看出cmd执行了wscript.exe,分析样本后知道是病毒,如果没有可疑的进程,只有cmd如何分析呢?
下面将会以路径进行dump文件,但是像dump进程wscript如何做呢?
④定位到cmd,下面查看cmd执行了什么指令与数据,如下所示:
⑤获取了cmd执行的文件及路径,需要定位文件dump下来,dump文件使用filescan先定位,后dumpfiles,而dll则有dlldump等指令。
注搜索文件不需要过滤直接路径,文件名称即可,因为病毒一般会拷贝其它目录下,根据情况而定,为了快速辨别黑白,这里就直接线上分析了:
dump文件线上辨黑白,还可以YARA规则,通过yarascan配合,如下所示:
⑥ 排查外链,Foreign address排查是否被远控挂链,可以看到访问的外链80端口,如下所示:
⑦例举内存的注册表分析进行分析,排查可疑的注册表项,其实有很多注册表操作,显示如下所示:
⑧服务查看,个人一般过滤Binary Path来查看,这样能非常清晰的显示服务加载了那些可执行模块路径:
⑨ 如果在pslist中看到了chrome或ie,猜测是否通过Web下载数据,chrome与ie会留下痕迹在内存中,指令如下所示:
还有很多细节需要取证与分析,需要再深入一个层面,还需要依赖一些插件与格外的工具,这里只是分享抛砖引玉。
四、总结:
混淆与免杀的手段愈加复杂,通过网络或系统漏洞,落地或无落地执行payload数据,通常比较难以截获查杀,所以通常执行加载内存后仍会对一些敏感文件事件截断,内存中对数据进行敏感规则触发也,大多也是最后一道防线。
目前pc端杀毒软件都做的很不错,针对vbs、js等语言引擎并不是特别完善。网络心跳包检测ms级或s级同步检测,但针对大量业务或加密传输协议,实现流量截获检测是耗能的,传输流量被截获验证本身就是一种不安全行为,虽然本无恶意。一般都会限制ip域或只允许特定的协议,如STMP、VPN规则出入。
文中内存取证分析过程中还有很多细节性工作没有涉及到,能快速辨识病毒加载器、下载器、样本源、阻断自启动、切断c&c等敏感高危事件,应该在短时间内完成应急响应与电子取证,对样本关键点进行快速分析,生成事件响应报告等。补丁及时更新、软件管理、权限的控制、规则出入设定、流程的规范制定,包括人员安全,工作人员安全意识普及与提升等,都可以有效的预防未知的安全风险。
来源:freebuf.com 2020-07-06 14:34:30 by: 光通天下
请登录后发表评论
注册