实现生成木马的自动变异

实战解析:基于工具链自动化修复VMP3.5壳的变异IAT 本文深入解析了如何利用工具链自动化修复VMP3.5壳的变异IAT,详细介绍了核心挑战、工具选型、动态分析工作流及自动化修复实战。通过x32dbg、vmp3-import-fix-x86等工具的组合使用,有效应对跳板指令碎片化、动态地址偏移等复杂问题,提升修复效率与准确性。 阅读详情
步骤说明:
1)        用NtQuerySystemInformation取得内核模块ntkrnlpa.exe或ntoskrnl.exe的基址KernelBase,获取内核模块的文件名称,到底是ntkrnlpa.exe还是ntoskrnl.exe.
2)        读取ntkrnlpa.exe或ntoskrnl.exe的映象基址ImageBase,和.Text节中虚拟偏移Virtual Offset,实际偏移Real Offset.
3)        从ntkrnlpa.exe或ntoskrnl.exe读出正确的SSDT: 正确SSDT在ntkrnlpa.exe或ntoskrnl.exe文件中偏移 = *(PULONG)KeServiceDescriptorTable - KernelBase –Virtual Offset + Real Offset.读取长度 = KeServiceDescriptorTable->NumberOfService * 4.
4)        这里读出的内容每4字节就是一个调用的地址,但这样读出的内容还不是SSDT. 计算出正确的SSDT: 每4个字节 - ImageBase + KernelBase.
5)        禁用中断 -> memcpy写SSDT -> 启用中断.
以下是代码了,需要用到我前篇文章写的IrpFile.h,去复制就OK啦.


#include "IrpFile.h"
#define SystemModuleInformation 11

typedef struct _SYSTEM_MODULE_INFORMATION

{

     ULONG    Reserved[2];

     PVOID    Base;

     ULONG    Size;

     ULONG    Flags;

     USHORT   Index;

     USHORT   Unknown;

     USHORT   LoadCount;

     USHORT   ModuleNameOffset;

     CHAR ImageName[256];

} SYSTEM_MODULE_INFORMATION, *PSYSTEM_MODULE_INFORMATION;

 

typedef struct

{

     ULONG                            NumberOfModules;

     SYSTEM_MODULE_INFORMATION   smi;

} MODULES, *PMODULES;

 

NTSYSAPI

NTSTATUS

NTAPI

NtQuerySystemInformation(

     IN ULONG SysInfoClass,

     IN OUT PVOID SystemInformation,

     IN ULONG SystemInformationLength,

     OUT PULONG RetLen

     );

 

typedef struct _NEED_INFO

{

     ULONG    ImageBase;

     UCHAR    UseLess1[204];

     ULONG    VOffset;

     ULONG    UseLess2;

     ULONG    ROffset;

} NEED_INFO, *PNEED_INFO;

 

typedef struct _SERVICE_DESCRIPTOR_TABLE

{

     PVOID    ServiceTableBase;

     PULONG   ServiceCounterTableBase;

     ULONG    NumberOfService;

     ULONG    ParamTableBase;

} SERVICE_DESCRIPTOR_TABLE, *PSERVICE_DESCRIPTOR_TABLE;

extern PSERVICE_DESCRIPTOR_TABLE KeServiceDescriptorTable;

 

 

VOID InterruptEnable()

{

     __asm

     {

         MOV EAX, CR0

         OR EAX, 10000H

         MOV CR0, EAX

         STI

     }

}

 

VOID InterruptDisable()

{

     __asm

     {

         CLI

         MOV EAX, CR0

         AND EAX, NOT 10000H

         MOV CR0, EAX

     }

}

 

NTSTATUS RestoreServiceDescriptorTable()

{

     NTSTATUS rc;

     ULONG NeededSize;

     PMODULES pModules;

     ULONG KernelBase;

 

     ULONG ActualLength;

     HANDLE LinkHandle;

     WCHAR NameBuffer[128];

     OBJECT_ATTRIBUTES ObjectAttributes;

     UNICODE_STRING LinkString, NameString;

 

     PFILE_OBJECT FileObject;

     ANSI_STRING AnsiImageName;

     UNICODE_STRING UniImageName, UniModuleName;

    IO_STATUS_BLOCK IoStatusBlock;

 

     LARGE_INTEGER CurrentOffset;

     ULONG Elfnew, Index, *Address;

     NEED_INFO NeedInfo;

 

     PVOID Buffer;

 

     pModules = (PMODULES)&pModules;

     rc = NtQuerySystemInformation(SystemModuleInformation, pModules, 4, &NeededSize);

     if(rc == STATUS_INFO_LENGTH_MISMATCH)

     {

         pModules = (PMODULES)ExAllocatePool(PagedPool, NeededSize);

         if(!pModules)

              return STATUS_INSUFFICIENT_RESOURCES;

 

         rc = NtQuerySystemInformation(SystemModuleInformation, pModules, NeededSize, NULL);

         if(!NT_SUCCESS(rc))

         {

              ExFreePool(pModules);

              return rc;

         }

     }

     if(!NT_SUCCESS(rc))

     {

         return rc;

     }

 

     KernelBase = (ULONG)pModules->smi.Base;

 

     LinkString.Buffer = NameBuffer;

     LinkString.MaximumLength = sizeof(NameBuffer);

     RtlZeroMemory(NameBuffer, sizeof(NameBuffer));

     RtlInitUnicodeString(&NameString, L"//KnownDlls//KnownDllPath");

     InitializeObjectAttributes(&ObjectAttributes, &NameString, OBJ_KERNEL_HANDLE, NULL, NULL);

     ZwOpenSymbolicLinkObject(&LinkHandle, SYMBOLIC_LINK_QUERY, &ObjectAttributes);

     ZwQuerySymbolicLinkObject(LinkHandle, &LinkString, &ActualLength);

     ZwClose(LinkHandle);

 

     RtlInitAnsiString(&AnsiImageName, pModules->smi.ImageName + pModules->smi.ModuleNameOffset - 1);

     RtlAnsiStringToUnicodeString(&UniModuleName, &AnsiImageName, TRUE);

     wcscat(NameBuffer, UniModuleName.Buffer);

     RtlInitUnicodeString(&UniImageName, NameBuffer);

     RtlFreeUnicodeString(&UniModuleName);

 

     ExFreePool(pModules);

 

     rc = IrpCreateFile(&FileObject, FILE_READ_ATTRIBUTES|SYNCHRONIZE, &UniImageName,

                          &IoStatusBlock, 0, FILE_ATTRIBUTE_NORMAL, FILE_SHARE_READ|FILE_SHARE_WRITE,

                          FILE_OPEN, FILE_SYNCHRONOUS_IO_NONALERT, NULL, 0);

     if(NT_SUCCESS(rc))

     {

         CurrentOffset.QuadPart = 60;

         rc = IrpReadFile(FileObject, &IoStatusBlock, &Elfnew, sizeof(ULONG), &CurrentOffset);

         if(NT_SUCCESS(rc))

         {

              CurrentOffset.QuadPart = Elfnew + 52;

              rc = IrpReadFile(FileObject, &IoStatusBlock, &NeedInfo, sizeof(NEED_INFO), &CurrentOffset);

              if(NT_SUCCESS(rc))

              {

                   Buffer = ExAllocatePoolWithTag(NonPagedPool, KeServiceDescriptorTable->NumberOfService * 4, 'TDSS');

                   if (!Buffer)

                       rc = STATUS_INSUFFICIENT_RESOURCES;

                   else

                   {

                       CurrentOffset.QuadPart = *(PULONG)KeServiceDescriptorTable - KernelBase - (NeedInfo.VOffset - NeedInfo.ROffset);

                       rc = IrpReadFile(FileObject, &IoStatusBlock, Buffer, KeServiceDescriptorTable->NumberOfService * 4, &CurrentOffset);

                       if(NT_SUCCESS(rc))

                       {

                            for(Index = 0;Index < KeServiceDescriptorTable->NumberOfService;Index++)

                            {

                                 Address = (PULONG)Buffer + Index;

                                 *Address = *Address - NeedInfo.ImageBase + KernelBase;

                            }

                            InterruptDisable();

                            memcpy((unsigned char *)KeServiceDescriptorTable->ServiceTableBase, Buffer, KeServiceDescriptorTable->NumberOfService * 4);

                            InterruptEnable();

                       }

                       ExFreePoolWithTag(Buffer, 'TDSS');

                   }

              }

         }

         IrpClose(FileObject);

     }

 

     return rc;

}

 

NTSTATUS DriverEntry( IN PDRIVER_OBJECT theDriverObject, IN PUNICODE_STRING theRegistryPath )

{

     RestoreServiceDescriptorTable();

     return STATUS_UNSUCCESSFUL;

}
360木马专杀工具:便携高效的网络安全解决方案 360木马专杀工具是一款由360安全中心推出的专业级防病毒软件,专为发现和清除各类木马病毒而设计。它具备高效、轻量级的特点,能够快速扫描系统文件和进程,精准识别并隔离潜在威胁,提供全面的保护措施。该工具主要功能包括深度扫描木马病毒、快速识别新木马变种、实时保护系统免受攻击,以及在检测到风险时,进行文件隔离与恢复等。它通过综合运用静态分析、动态检测、云安全技术以及实时监控等多种先进技术手段,确保计算机系统的安全运行。 阅读详情

相关推荐

byshell

包括byshell 063和064两个版本

工业级SoC硬件木马检测的创新方法与挑战

硬件木马(Hardware Trojans, HTs)是集成电路设计中的重大安全威胁,通过精心设计的触发机制和有效载荷在特定条件下激活,可能导致数据泄露或系统崩溃。检测这些恶意电路面临极低活动概率和隐蔽布局等挑战。传统方法如形式化验证和侧信道分析在大规模SoC设计中存在局限性。新兴的基于图学习的检测技术(如GNN4TJ、HW2VEC)虽无需参考模型,但面临存储压力与长程依赖建模困难。本文探讨了自动化硬件木马插入方法,结合SCOAP测试性指标和LLM生成的多样化触发模式,为工业级设计提供高效检测方案。

weixin_29176179的博客 271

Altium Designer(AD)的简易使用

一、绘制原理图、原理图库 首先来说明原理图的概念。 根据百度百科,原理图,顾名思义就是表示电路板上各器件之间连接原理的图表。也就是表示芯片上的引脚连接什么元件,各个元件谁和谁相连,电源电压的大小之类的。​ 再来说一下原理图和原理图库的区别和联系。 原理图是某个产品的原理图设计文件;原理图库是设计原理图时用到的电子元件的电路符号的集合。绘制PCB板时先设计原理图即建立原理图文件,而在原理图文件中设计原理图前必须将原理图库文件加载到原理图编辑环境才能使用其中的电路符号。 接下来说明如...

qq_52630607的博客 2万+

记一次阿里云木马排查过程

问题描述 接到阿里云报警邮件,说是一台ECS有恶意进程。查看阿里云的安全详情,发现如下情况: 登录到服务器上检查/bin目录,发现该文件确实不对,大小变成的1.1M,类似的还有netstat。如下图: 正常ubuntu系统下的ps才96K,netstat大小为117K,上述命令文件被恶意窜改了。此外,还发现启动脚本(/etc/rc1.d, /etc/rc2.d, /etc/rc3.d, /et...

dreamer2020的专栏 4726

ITIL 4 Foundation 自学通关笔记1

ITIL 4 Foundation 自学通关笔记

m0_58817196的博客 953

从选型到阵列:基于ESP32-S3的智能硬件麦克风系统设计实战

本文详细介绍了基于ESP32-S3芯片设计智能硬件麦克风阵列的完整实战方案。从核心芯片选型、数字MEMS麦克风的参数解读与电路设计,到关键的声学结构密封、阵列布局策略,再到利用ESP-ADF框架构建音频处理流水线并集成回声消除、噪声抑制等算法,提供了从硬件到软件的全链路设计指南与避坑要点,旨在实现清晰、稳定的远场语音交互。

weixin_29173777的博客 266

新型计算机病毒Vjworm来袭,兼具蠕虫和远控***功能

网络安全公司Cofense于上周发文称,他们已经发现了一种被称为“Vengeance Justice Worm(Vjworm)”的新型计算机病毒。这种病毒被证实能够以多种形式给受感染系统造成破坏,包括信息窃取、拒绝服务(DoS)***和自我传播等。Cofense表示,Vjworm实际上结合了蠕虫病毒(Worm)和远程访问***(RAT)的能力,在最近的网络钓鱼活动中使用与银行...

weixin_34293246的博客 305

5分钟看懂LTE注网全流程:从PLMN选择到小区驻留的log分析技巧

本文深入解析了LTE终端从开机到成功驻留小区的完整流程,重点分享了基于QXDM和QCAT工具的log分析实战技巧。文章详细拆解了PLMN选择、System/Band扫频、小区搜索与同步、系统消息解析及驻留等关键步骤,并提供了高频问题场景的排查思路,帮助网络优化工程师快速定位终端侧、射频环境或网络配置问题。

app77的博客 432

【木马】流行木马列表

NRD系列网游窃贼 类型:盗号木马 危害:通过各种木马下载器进入用户电脑,利用键盘钩子等技术盗取地下城与勇士、魔兽世界、传奇世界等多款热门网游的账号和密码信息,还能够对受害用户的电脑屏幕截图、窃取用户存储在电脑上的图片文档和文本文档,以此破解游戏密保卡,并在后台将这些敏感信息发送到指定的服务器或邮箱中。 360安全卫士全年累计查杀量:152509102 二、“犇牛”下载器

Walter的专栏 1485

CLion与STM32CubeMX联调:JLink GDB Server高效调试指南

本文详细介绍了如何搭建并配置CLion、STM32CubeMX与JLink GDB Server联调的现代化STM32开发环境。通过一站式环境搭建、工程创建、核心调试配置及高级技巧(如RTT日志),该组合实现了高效的代码编辑、可视化配置与稳定调试,大幅提升嵌入式开发效率与体验。

web99的专栏 258

在 SAP HANA XS Advanced 中用 InA 打通 Web 化分析数据访问:架构原理、部署步骤与实战指南

本文介绍了如何在SAP HANA环境中通过InA协议为XS Advanced应用和分析工具提供实时数据访问。主要内容包括:InA协议的作用是将HANA计算视图等模型通过HTTP(S)暴露为实时数据源;SAP HANA Analytics Adapter(xsahaa)是关键组件,负责协议转换和连接管理;部署包含本地和云端两种形式,均需建立XSA空间与租户数据库的映射;实施前需准备HDI容器、适配器构建和网络验证;安全方面通过XSA用户角色和HDI授权双重控制;文章还提供了与SAP Analytics Clo

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 259

转贴] 2009新年第一高危木马病毒现身网络

 2009新年第一高危木马病毒现身网络from: http://safe.youkuaiyun.com/n/20090104/275.html 2009年新年伊始,网络安全形势就异常严峻。一款名为“母马下载器”的恶性木马病毒,凭借其超强的“穿透还原”“超快更新变异”“反杀”能力,顺利摆脱了诸多安全软件的剿杀,正在大面积侵袭网民电脑。 据360安全专家石晓虹博士介绍,近一周来,“母马下载器”

IBM_lover的专栏 730

AI:270-基于ASFF改进YOLOv8检测头的多尺度特征融合方法详解与实战

ASFF是一种基于自适应特征融合的策略,能够动态调整不同尺度特征的融合权重,适应场景中不同大小的目标。传统的YOLOv8检测头使用固定的特征融合策略,而ASFF则通过引入学习参数,使得网络能够根据输入图像的特征自适应地选择不同尺度特征的重要性。这一策略对于检测小目标或尺度变化大的目标具有显著优势。本文提出了一种改进YOLOv8检测头的新方法,通过引入自适应空间特征融合模块(ASFF),有效提升了多尺度目标检测的性能,特别是在小目标检测任务中的表现。

一键难忘的博客 3913

php 木马文件,PHP实现webshell扫描文件木马的方法

本文实例讲述了PHP实现webshell扫描文件木马的方法。分享给大家供大家参考,具体如下:可扫描 weevelyshell 生成 或加密的shell 及各种变异webshell目前仅支持php支持扫描 weevelyshell 生成 或加密的shell支持扫描callback一句话shell支持各种php大马PHP web shell scandefine("SELF",php_self());...

weixin_29323049的博客 365

STM32实战开发(65):STM32摄像头图像采集开发教程

我们将会详细介绍如何使用STM32进行摄像头控制、图像数据采集以及如何将采集到的图像数据传输到其他设备进行处理。通过这篇博客,您将能够掌握STM32与摄像头模块的图像采集技术,应用于各种图像处理场景。为了确保STM32能够正确接收图像数据,我们需要配置STM32的GPIO引脚,并通过外部中断捕获这些信号。为了实现更高效的图像采集,可以通过DMA进行数据传输,将图像数据直接从GPIO引脚存储到内存中。通过DMA传输,我们可以将采集到的图像数据直接存储在内存中的一个缓冲区,然后进行后续的图像处理。

2201_76125393的博客 2539

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

php 木马文件,PHP webshell扫描木马文件的实现方法

本文主要介绍PHP实现webshell扫描文件木马的方法,涉及php针对数值传输的过滤操作与文件识别等相关安全操作技巧,需要的朋友可以参考下,希望能帮助到大家。可扫描 weevelyshell 生成 或加密的shell 及各种变异webshell目前仅支持php支持扫描 weevelyshell 生成 或加密的shell支持扫描callback一句话shell支持各种php大马PHP web sh...

weixin_30986079的博客 677

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

2023年银行木马肆虐全球金融系统

根据2023年度移动安全报告显示,除了2023年新出现的10个安卓银行木马外,2022年流行的19个安卓银行木马在2023年也发生了“变异”,增加了新的功能并提高了操作复杂性。报告指出,2023年银行木马给金融企业造成的经济损失和运营成本持续增加,同时导致消费者信任度和品牌影响力下降。金融机构应该采取主动和自适应安全方法应对不断增长的威胁。2023年,Hook、Godfather和Teabot等银行木马恶意软件家族盛行,攻击了985个银行和数字金融交易程序。银行木马的八个关键趋势。

互联网安全研究院 784

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

病毒變異實驗:惡意程式的「進化」速度有多快?

在生物學領域,病毒以其驚人的變異速度聞名,尤其是RNA病毒如流感病毒和HIV,它們的突變率比人類基因組高出數百萬倍,使得免疫系統和疫苗開發面臨巨大挑戰。有趣的是,在數位世界中,我們也觀察到類似現象:惡意程式(malware)正以驚人的速度「進化」與「變異」,不斷適應防禦系統,突破安全邊界。

王同学的博客 606

dede最新漏洞以及黑客木马特征

dede最新漏洞以及黑客木马特征时间:2013-08-04 12:48来源:疯子工作室 作者:疯子 点击: 次据疯子工作室统计,截止到今天,依旧有大约3万个使用dedecms管理系统程序开发的网站被黑客挂马。   Dedecms后台系统程序升级到5.7 sp1版本之后,依旧存在很多漏洞。具体的情况,也是在最近一段时间彻底暴漏出来。据疯子工作室统计,截止到今天,依旧有大约3万个使用dedecms管理

IT技术宅-北方的刀郎 1274

2026顶级攻防实录:AI自主猎杀终端!传统杀毒彻底失效的真相

《AI无痕攻击时代:传统杀毒失效与零信任防御新范式》摘要:2026年,AI自动化攻击颠覆传统网络攻防格局。某科技公司遭遇典型AI无文件攻击:杀毒软件全程无警报,6.8万条数据却遭窃。攻击者利用AI生成高度定制化钓鱼内容,通过内存驻留脚本实现零痕迹入侵,并实时变异绕过所有防护。传统安全三大缺陷暴露:特征库滞后于AI动态变异、忽视内存攻击面、默认信任机制被利用。破局关键在于零信任架构,通过网页内存行为监测、进程行为分析、网络最小权限控制三重防线,实现动态持续验证。当前网络安全的本质已转变

wang_an12的博客 795

关于木马免杀的一些方法

关于木马免杀的一些方法

oiadkt的博客 1644

硬件勒索软件:PUF与ECDH在ASIC木马中的武器化应用与防御

在硬件安全领域,物理不可克隆函数(PUF)和椭圆曲线密码学(ECC)是构建可信硬件和实现安全密钥交换的基础技术。PUF利用芯片制造过程中的物理随机性生成唯一“指纹”,常用于设备认证和密钥生成。椭圆曲线迪菲-赫尔曼(ECDH)协议则基于椭圆曲线离散对数问题的计算困难性,为双方在不安全信道上建立共享密钥提供了高效、高强度的密码学保障。这些技术的核心价值在于为物联网、数据中心和关键基础设施提供了硬件级的信任根和安全通信能力。然而,当攻击者将PUF的物理唯一性与ECDH的强加密特性相结合,便能设计出深度隐蔽、难以移

weixin_34056162的博客 346

变装大师的进化:从传统多态恶意软件到 AI 驱动的代码幻影

摘要:多态恶意软件通过变异引擎不断改变特征码以躲避检测,其历史可追溯至1989年。随着AI技术的爆发,这类恶意软件迎来新变革:编写门槛降低、实现动态运行时变异。防御策略转向"全行为溯源",利用AI代码审计、行为监测和智能沙箱等技术对抗。AI时代下,网络安全防护必须从静态特征匹配升级为基于行为分析的动态防御体系,这已成为数字生存的基本要求。(149字)

u012045365的博客 886
上一篇: 实现生成木马的自动变异
下一篇: 打微软补丁的一份代码收藏
大浪淘沙1
博客等级 码龄19年 42粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值