热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

安装“万能解码器”还原真实“解码”(纯以个人兴趣分析)

0×01前言最近新出一部很火的电视剧,每天晚上更新两集,看完之后总觉得不过瘾,就去网上找后面的视频,还真被笔者找到。毫不犹豫点击播放,发现提示需要安装某某解码器。对于这类提示一点都不新鲜,尝试下载

0×01前言

最近新出一部很火的电视剧,每天晚上更新两集,看完之后总觉得不过瘾,就去网上找后面的视频,还真被笔者找到。毫不犹豫点击播放,发现提示需要安装某某解码器。对于这类提示一点都不新鲜,尝试下载并运行解码器后,往往并没有达到预期效果,还会再次提醒下载,并没有网站上描述的那么管用。笔者很好奇既然没用,那运行的软件具体功能是什么。笔者便下载了一个“解码器”,果真不出所料,没有任何解码的功能,但是一个流氓推广软件。表面上看不出问题,只在后台搞鬼,笔者便花了点心思详细看了下该软件的实现,发现该软件作者在免杀和隐藏上下足了功夫。虽然功能老套但是思路不错,下面就请跟随笔者一起来看看这个所谓的“万能解码器”,还原真实“解码”。

0×02技术特点

下载之后,没有图标,运行没有任何界面,并且多次运行效果相同。最后通过详细分析,总结该程序有如下特点:

1. 程序对重要字符串进行了加密处理,且有多个加密算法。

2. 释放的功能模块文件在本地经过RC算法加密,非正常的PE文件。

3. 无主进程运行,核心模块为内核驱动,找不到可疑进程。

4. 敏感操作放置在shellcode中,并进行加密,防止被第一时间杀掉。

5. 使用了内核技术,内核HOOK,设备HOOK。

6. 双驱动相互保护隐藏,并且通用32位和64位系统平台。

从对抗手法来看,该程序开发者无论在静态还是动态对抗上面都花了大量功夫,以达到免杀和隐藏行为的效果。

0×03程序具体分析

下图是该程序的签名信息,从表面上看没有任何问题。

1、加载器功能

该程序实际上是一个加载器,第一次运行后,后期都不再依靠该加载器运行。加载器通用于32位 和64位多个操作系统平台,根据不同系统平台释放不同文件。数据解密之后释放到系统目录下(PassProtect.sys和2.dat)。

解密shellcode并运行代码。

Shellcode中加载“PassProtect.sys”驱动文件,驱动加载状态为自动启动(开机自动加载)。

2. “PassProtect.sys”功能

首先清理“ntfs”和“fastfat”内核的所有设备,阻止自身被外部访问,执行完操作后会对其还原。

对“2.dat”文件解密,使用RC算法,解密和加密是同一个函数,解密后回写到文件。

通过内核函数ZwSetSystemInfomation加载“2.dat”驱动。

驱动加载之后再次通过RC加密回写数据“2.dat”,并还原“ntfs”和“fastfat”的设备栈,隐藏第二个驱动代码。

3. “2.dat”功能

通过设置线程创建回调,并主动触发回调来找到“ExCallBackBlockRoutineProc”函数地址。

挂钩“ExCallBackBlockRoutineProc”函数,通过过滤系统模块和自身模块,把其余所有模块的回调函数修改入口直接返回,达到反进程创建监视的作用。

设置模块加载回调和进程创建回调。

通过检查加载的模块是否是”kernel32.dll”判断创建进程,并且修改浏览器进程的命令行参数。

检查父进程为“explorer.exe”(用户打开运行),并且添加事件修改命令行参数。

修改进程命令行参数,改变浏览器主页。

创建系统线程,挂钩NTfs的create回调。

在Create回调中,保护第一个驱动文件“PassProtect.sys”不被任何程序访问。

0×04总结

从上面分析看出,程序开发者通过各种技术手段,费劲心思,最终达到锁主页的目的。随着目前各大杀软对流氓推广软件的封杀,常规的推广手法已不在适用,升级后的对抗已经不在简单的修改注册表。更为猥琐和流氓的推广方式纷纷出现,各显神通,一不留神便被乘虚而入。当用户放行这个程序,流氓推广已经势不可挡,直捣黄龙。假如作者狠一点,后果将是不可不堪设想。所以笔者在这里提醒各位读者,对这类所谓解码器最好从正规网站下载。由于程序经过免杀处理,能够查杀的杀毒软件并不多(见下图VT扫描结果)。如果系统中曾经运行过该类解码器或播放器,可以安装下列可查杀的杀毒软件进行查杀。最后祝愿各位免受“流氓”困扰,金龙索玉柱,百毒不沾身。


推荐阅读
  • 在iOS开发过程中,当开发团队使用多台Mac设备时,可能会遇到无法继续申请新证书的问题。本文介绍了如何通过导出.p12文件来解决这一问题,并确保团队成员能够在不同设备上共享同一个证书。 ... [详细]
  • 在Java开发中,保护代码安全是一个重要的课题。由于Java字节码容易被反编译,因此使用代码混淆工具如ProGuard变得尤为重要。本文将详细介绍如何使用ProGuard进行代码混淆,以及其基本原理和常见问题。 ... [详细]
  • 在开发板的启动选项中看到如下两行:7:LoadBootLoadercodethenwritetoFlashviaSerial.9:LoadBootLoadercodethenwri ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • Docker安全策略与管理
    本文探讨了Docker的安全挑战、核心安全特性及其管理策略,旨在帮助读者深入理解Docker安全机制,并提供实用的安全管理建议。 ... [详细]
  • 本文详细介绍了Oracle 11g中的创建表空间的方法,以及如何设置客户端和服务端的基本配置,包括用户管理、环境变量配置等。 ... [详细]
  • 本文探讨了如何通过优化 DOM 操作来提升 JavaScript 的性能,包括使用 `createElement` 函数、动画元素、理解重绘事件及处理鼠标滚动事件等关键主题。 ... [详细]
  • 本文详细介绍了JQuery Mobile框架中特有的事件和方法,帮助开发者更好地理解和应用这些特性,提升移动Web开发的效率。 ... [详细]
  • C#中调用OpenCTM打开.obj三维模型文件
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • Kafka入门指南
    本文将详细介绍如何在CentOS 7上安装和配置Kafka,包括必要的环境准备、JDK和Zookeeper的配置步骤。 ... [详细]
  • CentOS7通过RealVNC实现多人使用服务器桌面
    背景:公司研发团队通过VNC登录到CentOS服务器的桌面实现软件开发工作为防止数据外泄,需要在RealVNC设置禁止传输文件、访问粘贴板等策略过程&# ... [详细]
  • 本文介绍了如何使用开源工具ChkBugReport来解析和分析Android设备的Bugreport。ChkBugReport能够将复杂的Bugreport转换为易于阅读的HTML报告,并提供详细的图表和分析结论。 ... [详细]
  • RHEL 8 中的设备分区管理指南
    本文详细介绍了在 RHEL 8 系统中如何管理和操作设备分区,包括查看设备信息、挂载和卸载设备、分区管理以及配置文件系统的自动挂载。 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • 本文详细介绍了在 Ubuntu 系统上搭建 Hadoop 集群时遇到的 SSH 密钥认证问题及其解决方案。通过本文,读者可以了解如何在多台虚拟机之间实现无密码 SSH 登录,从而顺利启动 Hadoop 集群。 ... [详细]
author-avatar
顾凡人_479
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有