MSI样本分析方法
前言
攻击者经常选择使用MSI安装程序来交付和执行恶意代码,因为这些文件可以将有害的可执行文件和脚本嵌入到看似合法的软件包中,从而逃避检测。滥用MSI文件中的自定义操作来在安装过程中运行恶意代码,并配置安装程序从远程服务器下载其他恶意软件。通过伪装成合法软件,攻击者欺骗用户执行这些文件,MSI安装程序由受信任的Windows服务处理,使恶意软件更容易绕过安全产品并保持未被检测到,这种隐身性和多功能性的结合使MSI文件成为网络攻击的一个有吸引力的载体。
MSI(Microsoft MSI)文件是包含有关软件安装的详细信息的数据库文件,存储安装过程中的数据,包括配置设置、要安装的文件和安装说明,确保结构化和高效的软件部署。此外,MSI文件提供修复和更新现有安装的功能,使其成为软件管理的通用和高效工具,设计用于与负责应用程序管理的核心Windows组件Windows Installer服务一起使用,这种标准化和多功能性也使MSI文件成为恶意利用的常见目标。
因此笔者在这里总结了有关MSI文件的结构和功能的详细信息和分析方法,用以分析这些文件的潜在威胁。
MSI和EXE的区别首先我们来了解一 ...
从Kimsuky组织msc攻击样本到GrimResource
从Kimsuky组织msc攻击样本到GrimResource前言近期笔者通过外网监测到一个Kimsuky组织的msc攻击样本,这里对样本进行分析,以及谈谈其利用的攻击技术
1SHA256: 57e9b7d1c18684a4e8b3688c454e832833e063019ed808fd69186c4e20df930a
msc文件
MSC(Microsoft Snap-In Control)文件,是微软管理控制台MMC(Microsoft Management Console)用来添加/删除的嵌入式管理单元文件。通常通过MMC来管理,可点击“文件”菜单中的“添加/删除管理单元”操作来管理当前系统中已经安装的MSC文件。可以点击开始/运行,然后输入下列文件名就可以打开相应的控制窗口。
看到这个后缀,很多人可能已经想到了组策略编辑器(gpedit.msc),该样本即是通过msc文件实现攻击,利用特制的管理保存控制台 (MSC) 文件来使用 Microsoft 管理控制台 ( MMC ) 获得完整的代码执行并逃避安全防御
这项技术最早由Elastic 安全实验 ...
Nanocore恶意程序分析
Nanocore恶意程序分析前言最近在外网发现一个有意思的Nanocore恶意脚本的样本,给大家分享一下
123SHA256: c6092b1788722f82280d3dca79784556df6b8203f4d8f271c327582dd9dcf6e1Sharelink: https://virusshare.com/file?2596ef126fb57cdf2ba563b05444ad0ec6dad6a0083b3c309ca9595e64ad0615
初步分析
源文件的大部分均为干扰用的字符串,直接正则替换提取出来,拿到核心代码
^(REM|').*
混淆技术分析首先chr字符串可以很容易想到数值转换字符,我们用第一个混淆具体拆开分析一下
chr函数:数值转字符
479808:十进制数值,用于参与后续的计算
CLng函数:vbs中的CLng 函数,用于把表达式转换为长整型(Long)类型
&H1B90:这是vbs中的十六进制写法,代表0x1B90
以及其余的算术运算符
直接做计算得到:
同理第二个混淆:
通过python批量提取所有混淆后的pay ...
Java安全基础
Java安全基础Note类和对象的关系类是对象的抽象,而对象是类的具体实例。类是抽象的,不占用内存,而对象是具体的,占用存储空间。类是用于创建对象的蓝图,它是一个定义包括在特定类型的对象中的方法和变量的软件模板。
类与对象的关系就如模具和铸件的关系 类的实例化结果就是对象,而对一类对象的抽象就是类,类描述了一组有相同属性和相同方法的对象。
class类的newInstance方法class的newInstance()方法,需要我们类中存在无参的构造器,并且能直接访问,它通过无参的构造器来实例化,而一旦我们类中不存在无参构造器,那么第一种方法就不行了
getMethods 和 getDeclaredMethods 方法的区别getMethods:获取当前类或父类或父接口的 public 修饰的字段;包含接口中 default 修饰的方法 (JDK1.8)。
getDeclaredMethods: 获取当前类的所有方法;包括 protected/默认/private 修饰的方法;不包括父类 、接口 public 修饰的方法。
反射Runtime.exec和Process ...
渗透测试面试分区块总结
域渗透123456789101112131415161718192021222324#DC WindowsServer2012域名:y5neko.comNAT:192.168.1.129静态:192.168.1.250密码:Y5NEKO0/Administrator:dc@123NetBIOS域名:Y5NEKO0其他域用户账号密码:user1:win71@123user2:win72@123普通域管理员账号密码:admin:admin@123yueshu:yueshu@123yeushu1:yueshu1@123ziyuanyueshu:ziyuanyueshu@123SYSVOL漏洞测试密码:user@123#WIN71 Windows7密码:Administrator:win71@123静态:192.168.1.3#KaliNAT:192.168.1.128
信息搜集判断域环境1net config workstation
找域控123456#fscan扫描netbios./fscan_amd64 -np -m netbios -h 192.168.1.0/24#net g ...
一些关于JavaFX的记录
环境准备下载对应版本JavaFX,解压出来如下:bin目录下所有dll放入jdk的bin目录,lib目录下的所有jar包添加进项目库,src为source源。
Scene图
## 概述
Scene图是一种树形数据结构,它排列(和分组)图形对象以便于逻辑表示。 它还允许图形引擎以最有效的方式渲染对象, 完全或部分跳过在最终图像中看不到的对象。 下图显示了JavaFX场景图架构的一个示例。
在架构的最顶端有一个`Stage`。 `Stage`是原生操作系统窗口的JavaFX表示。 在任何给定的时间,阶段可以有一个单一的`Scene`连接到它。 场景是JavaFX场景图的容器。
JavaFX `Stage`图中的所有元素都表示为`Node`对象。 节点有三种类型:根、分支和叶。 根节点是唯一没有父节点的节点 直接包含在一个场景中,如上图所示。 分支和叶节点之间的区别在于叶节点没有子节点。
在scene图中,父节点的许多属性由子节点共享。 例如,应用于父节点的转换或事件也将递归地应用于其子节点。 因此,可以将复杂的节点层次结构视为单个节点,以简化编程模型。 我们将在后面的章节中探索转换和事件 ...
数据结构
PE结构
## 概念
**PE**(Portable Execute)文件是Windows下可执行文件的总称,常见的有 DLL,EXE,OCX,SYS 等。它是微软在 UNIX 平台的 COFF(通用对象文件格式)基础上制作而成。最初设计用来提高程序在不同操作系统上的移植性,但实际上这种文件格式仅用在 Windows 系列操作系统下。PE文件是指 32 位可执行文件,也称为PE32。64位的可执行文件称为 PE+ 或 PE32+,是PE(PE32)的一种扩展形式(不是PE64)。
名称
描述
地址
是 “虚拟地址” 而不是“物理地址”。不是“物理地址”的原因shi数据在内存的位置经常在变,这样可以节省内存开支、避开错误的内存位置等的优势。同时用户并不需要知道具体的“真实地址”,因为系统自己会为程序准备好内存空间的(只要内存足够大)
节
节 是 PE 文件中 代码 或 数据 的基本单元。原则上讲,节只分为 “代码节” 和 “数据节” 。
镜像文件
包含以 EXE 文件为代表的 “可执行文件”、以DLL文件为代表的“动态链接库”。因为他们常常被直接“复制”到内存,有“ ...
汇编语言
概念CPU 只负责计算,本身不具备智能。你输入一条指令(instruction),它就运行一次,然后停下来,等待下一条指令。这些指令都是二进制的,称为操作码(opcode),比如加法指令就是00000011。编译器的作用,就是将高级语言写好的程序,翻译成一条条操作码。对于人类来说,二进制程序是不可读的,根本看不出来机器干了什么。为了解决可读性的问题,以及偶尔的编辑需求,就诞生了汇编语言。
汇编语言是二进制指令的文本形式,与指令是一一对应的关系。比如,加法指令00000011写成汇编语言就是 ADD。只要还原成二进制,汇编语言就可以被 CPU 直接执行,所以它是最底层的低级语言。
寄存器CPU 本身只负责运算,不负责储存数据。数据一般都储存在内存之中,CPU 要用的时候就去内存读写数据。但是,CPU 的运算速度远高于内存的读写速度,为了避免被拖慢,CPU 都自带一级缓存和二级缓存。基本上,CPU 缓存可以看作是读写速度较快的内存。
但是,CPU 缓存还是不够快,另外数据在缓存里面的地址是不固定的,CPU 每次读写都要寻址也会拖慢速度。因此,除了缓存之外,CPU 还自带了寄存器(regis ...
IDA Pro操作指南
摘要工具nm将源文件编译成目标文件时,编译器必须嵌入一些全局(外部)符号的位置信息,以便链接器在组合目标文件以创建可执行文件时,能够解析对这些符号的引用。除非被告知要去除最终的可执行文件中的符号,否则,链接器通常会将目标文件中的符号带入最终的可执行文件中。根据nm手册的描述,这一实用工具的目的是“列举目标文件中的符号”。使用rm检查中间目标文件(扩展名为.0的文件,而非可执行文件)时,默认输出结果是在这个文件中声明的任何函数和全局变量的名称。nm实用工具的样本输出如下所示。从中可以看到,m列出了每一个符号以及与符号有关的一些信息。其中的字母表示所列举的符号的类型。前面的例子中出现了以下字母,下面逐一解释。U,未定义符号,通常为外部符号引用。T,在文本部分定义的符号,通常为函数名称。t,在文本部分定义的局部符号。在C程序中,这个符号通常等同于一个静态函数。D,已初始化的数据值。C,未初始化的数据值。
大写字母表示全局符号,小写字母则表示局部符号。请参阅nm手册了解有关字母代码的详细解释。
如果使用nm列举可执行文件中的符号,将会有更多信息显示出来。在链接过程中,符号被解析成虚拟地址( ...
基础免杀
一些有关免杀的基础学习。