Notepad++供应链攻击--疑似国家级黑客实施的供应链攻击
前言2026年2月2日,Notepad++的开发者发布声明宣称,Notepad++的更新服务器被恶意攻击者控制,导致下发恶意软件,并宣称这是一场国家级的黑客攻击
声明中指出问题出在主机托管服务商,攻击者通过重定向Notepad++的更新流量到攻击者控制的服务器,来进一步下发恶意软件,攻击从2025年6月一直持续到12月
此次攻击十分隐蔽,攻击者仅对特定目标下发恶意软件,并在攻击期间多次更改攻击手法、C2服务器地址、恶意程序等等,其中部分攻击目标如下
位于越南、萨尔瓦多和澳大利亚的个人
位于菲律宾的政府机构
一家位于萨尔瓦多的金融机构
一家位于越南的IT服务提供商组织
攻击链1 - 2025年7月末到8月初攻击者首次部署恶意Notepad++更新于2025年7月末,重定向到:http://45.76.155.202/update/update.exe
值得一提的是,有一位IP归属是台湾的用户于9月末将这个URL上传到了VirusTotal
上述URL下载的update.exe的SHA1是:8e6e505438c21f3d281e1cc257abdbf7223b7f5a,由合法的Not ...
DLL劫持
0x1 前言DLL劫持,老生长谈的技术了,虽然老但至今仍旧有效,前两天看的一个APT攻击样本分析,攻击入口用的就是搜狗输入法的一个DLL劫持,最近回顾了这项技术,想写篇博客记录,没有什么新的技术
0x2 劫持原理Windows下开发大型应用程序,出于代码复用和模块化的意图,都会将功能拆分成一个个dll,结果就是安装目录下有exe和大量dll(包括Windows操作系统本身也是这个思想),当exe想要执行dll的时候,采用的搜索顺序是:
进程对应的应用程序所在的目录
进程执行所在的目录
C:\Windows\System32目录
16位Windows系统的系统目录(早期Windows系统的系统目录)
C:\Windows目录
Path环境变量中各个目录
自Windows XP SP2开始,默认启用安全机制SafeDllSearchMode,开关位于注册表项:HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode,启用这个安全机制后,搜索顺序变为:
进程对应的应用程序所 ...
深入学习PE文件结构系列五自己实现一个PE解析器
0x1 前言之前几篇文章讲述了Windows PE结构的各个部分,本篇文章会应用前文中的知识,借助C++实现一个PE Parser,可以解析PE32和PE32+,可以解析PE文件中的下列部分
DOS Header
Rich Header
NT Headers
Data Directory
Section Headers
Import Table
Relocation Table
0x2 PE Parser Readme
以二进制形式读取一个PE文件
通过校验DOS头中的Signature和NT头中的Signature这两个固定值,判断它是否有效的PE文件
通过PE可选头中的字段判断它是32位PE还是64位PE
解析下列结构
DOS Header
Rich Header
NT Headers
Section Headers
Import Data Directory
Relocation Data Directory
输出下列信息
文件名和类型
DOS头中的签名以及PE文件的实际起始地址
富有头中的每一项
PE文件Signature
PE文件头中节的数量、PE可选头的大小 ...
深入学习PE文件结构系列四Import-Relocation
0x1 前言本篇文章是系列的最后一部分内容,讲述PE文件如何存储它需要用到的外部函数,也就是PE Import,以及PE文件如何处理需要重定位的地址,也就是PE Relocation
PE Import主要是三部分:导入目录表(Import Directory Table)、导入查询表(Import Lookup Table)、导入地址表(Import Address Table),这三部分都位于.idata(导入数据节)中
还记得前面文章中提到的Data Directory么,里面的每一个索引对应一段特殊功能的数据,这三部分就是特殊功能的数据
关于PE Relocation会讲述它PE重定位是什么,它在哪里,如何进行重定位
0x2 导入目录表(Import Directory Table)导入目录表是从.idata节起始地址开始的一段特殊数据,它是一个IMAGE_IMPORT_DESCRIPTOR结构体数组,数组中的每个成员对应一个需要导入的DLL,它没有固定大小,数组中最后一个成员的所有值被置为0,来表示导入目录表的结尾,IMAGE_IMPORT_DESCRIPTOR的定义如下
1 ...
深入学习PE文件结构系列三Data-Directory-Section-Headers-Section
0x1 前言本篇文章会详细讲述Data Directory(数据目录)、Section Headers(节头)、Section(节),从概念、作用到具体的结构体定义,话不多说开始正文
0x2 Data DirectoryData Directory是PE Optional Header中的最后一个成员,本质是IMAGE_DATA_DIRECTORY结构体数组,定义如下
1IMAGE_DATA_DIRECTORY DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES];
其中IMAGE_NUMBEROF_DIRECTORY_ENTRIES是一个常量,值是16,结构体定义如下
1234typedef struct _IMAGE_DATA_DIRECTORY { DWORD VirtualAddress; DWORD Size;} IMAGE_DATA_DIRECTORY, *PIMAGE_DATA_DIRECTORY;
这是一个简单的结构体,只有2个成员,第一个成员存储地址,第二个成员存储大小
那Data Di ...
深入学习PE文件结构系列二PE-Signature-PE-File-Header-PE-Optional-Header
0x1 前言上一篇文章探讨了DOS Header以及逆向了DOS Stub,本篇文章谈论NT Headers
开始之前我们需要先明确一个重要概念,RVA(Relative Virtual Address,相对虚拟地址),它是相对于基址的偏移地址,其中映像基址是PE文件被载入内存后的起始地址,也就是说实际地址 = 相对虚拟地址 + 映像基址
回顾一下上一篇文章中提到的,PE文件结构从上到下依次是:DOS Header -> DOS Stub -> Rich Header -> NT Headers -> Section Header -> Section1 Section2 … SectionN
其中,NT Headers从上到下依次是:PE Signature -> PE File Header -> PE Optional Header,本篇文章就是详细讲述这部分内容
0x2 NT HeadersNT Headers是一个结构体,名为IMAGE_NT_HEADERS,结构体定义位于winnt.h中,定义如下
1234567891011type ...
深入学习PE文件结构系列一DOS-Header-DOS-Stub-Rich-Header
0x1 前言Windows终端攻防越深入学习越发现基础的重要性,之前只是零散的学习Windows PE知识,趁着现在工作之余还有时间精力,准备系统的学习下Windows PE,本篇文章开始,会进行PE文件结构深度学习系列,最后会用这些知识实现一个PE Parser,如果你也能跟着这个系列学完,我相信你回头再看PE Loader、PE Packer、PE Injection、Process Hollowing、RDI等等,会有不一样的视角
0x2 PE结构概览PE全称Portable Executable,是Windows中使用的可执行文件格式,它基于COFF文件格式(Common Object File Format)修改而来,准确的说PE文件格式是对COFF文件格式的扩展,其中PE File Header部分就是标准的COFF文件格式(后面会提到)
PE文件不只是EXE文件,还有DLL(动态链接库)、SRV(内核模块)、CPL(控制面板项)、等等
一个PE文件需要包含特定的内容,Windows PE Loader才能正确解析它,并将它载入内存,通常的PE文件结构如下图
我们用PE-b ...
Windows任务计划COM Handler在权限维持中的应用
0x1 前言先知社区中没看到关于Windows任务计划COM Handler的文章,遂写一篇关于Windows任务计划COM Handler
本文会先介绍Windows任务计划COM Handler是什么(下文简称COM Handler),然后介绍它在权限维持中的应用,最后介绍通过C++实现COM Handler、通过注册表注册COM Handler、通过任务计划调用COM Handler
0x2 COM Handler是什么我们都知道Windows任务计划中的动作包括:启动程序、发送电子邮件、显示消息
其实还有一个动作叫COM Handler,我们无法通过任务计划的GUI或CLI直接指定动作为COM Handler,但可以通过导入xml文件或调用任务计划API的方式创建,先看看它的样子,如下图所示,COM Handler创建后,动作的名字是Custom Handler
那COM Handler是什么呢,在Windows任务计划程序中,COM Handler是一种特殊的动作,与传统的“启动程序”或“发送电子邮件”不同,它允许任务计划程序调用一个注册在系统中的 COM 对象来执行特定的逻 ...
利用控制面板COM对象实现内网横向移动的新型DCOM攻击技术
前言上一篇文章介绍了Impacket中dcomexec.py的工作原理,以及在Windows Server 2025中如何绕过Microsoft Defender Antivirus,本文会介绍一种新的和控制面板相关的COM对象,用于内网横向命令执行
这个COM对象之前也被用于社工钓鱼和权限维持,本文会先介绍它在社工钓鱼和权限维持中的应用,然后介绍它如何应用在内网横向命令执行,最后介绍如何检测以及阻止这类攻击
本文使用的测试环境:Windows 10 22H2 19045.6466、Kali 2025.3 x64
控制面板作为攻击面控制面板允许我们调整计算机设置,如下图,每一个控制面板项的实体后缀为cpl,本质是一个EXE或者DLL,,其中DLL会导出一个名为CPIApplet的函数,本文主要讨论实体为DLL的项
通过DIE也能看到CPL文件本质就是DLL
可在cmd下通过control.exe执行控制面板项
1control.exe yourfile.cpl
底层是通过rundll32调用shell32.dll中的函数Control_RunDLL,传入yourfile.cpl作为参数 ...
DCOM内网横向探究
前言Windows下命令执行横向攻击主要经历了从PsExec到WMI再到DCOM(当然还有远程注册表、PtH/PtT等等),PsExec、WMI、DCOM在Impacket中都有对应实现,本文主要探究Impacket中DCOM横向移动在各个Windows下的可行性、免杀性,Impacket中DCOM横向移动对应的文件是dcomexec.py,下图中可以看到,它使用三种DCOM对象进行内网横向,分别是:ShellWindows、ShellBrowserWindow、MMC20.Application
环境准备Attack Machine: Kali Linux 2025.3 x64 | 172.20.10.2
Impacket官方支持的python版本是3.9 - 3.13,推荐的安装方式是python3 -m pipx install impacket
测试环境如下
12345678910Victim Machine: Windows Server 2008 R2 6.1 7601 SP1 | 172.20.10.7Victim Machine: Windows Server 2012 ...
