3. Windows Management Instrumentation Event Subscription
WMI的起源 几十年以前,几家IT大厂(BMC、Cisco、Intel、Microsoft)决定解决系统管理领域缺少标准的问题。他们联合在一起,开始捣鼓一个称为基于万维网的企业管理(WBEM,Web Based Enterprise Management)项目。后来WBEM交给了标准化领导机构—分布式管理任务组(DMTF,Distributed management Task Force),DMTF启动了一个称为通用信息模型(CIM,Common Information Model)的项目。
CIM是以面向对象原理为基础,定义了抽象类和类实例的概念。抽象类需要在任何环境中表示管理对象的一般类型,而不受任何特定环境的限制,例如系统、设备、应用程序、网络都可以算是一种抽象的类,而Windows、Linux、Ubuntu可以算是抽象类系统中的实例。
CIM规定提供了构建这种模式的一个模型(称为Schema)和一种语言。Schema就很像数据库表,它包含类需要包含的各个字段,例如属性、方法等等。
初识WMI 提到WMI(Windows Management ...
1. Change Default File Association
前置知识 文件关联就是将一种类型的文件与一个可以打开它的程序建立其一种依存关系。当打开某一种类型的文件时,会检索用于打开文件的默认程序(也称为文件关联或处理程序)。文件的关联选择存储在Windows注册表中,可以由用户、管理员或具有注册表访问权限的程序或管理员进行编辑。
系统文件关联在HKEY_CLASSES_ROOT.[扩展名]下列出:
这些条目指向位于HKEY_CLASSES_ROOT[handler]的该扩展的处理程序:
利用原理 我们可以通过修改注册表的方式,设置文件在通过默认程序打开之前,先执行我们的恶意载荷。在下面的实验中我们会以docx为例,在打开docx文件的同时执行恶意的载荷。
利用步骤
步骤一:修改Open\command子键中的默认键值。
1cmd /c start /b C:\msf4445.exe & "C:\Users\Win7-LMB\AppData\Local\Kingsoft\WPS Office\11.1.0.10700\office6\wps.exe" /prometheus / ...
2. Screensaver
利用原理 攻击者可以通过执行由用户不活动触发的恶意内容来建立持久性。屏幕保护程序是用户在可配置的不活动时间后执行的程序,由可移植可执行(PE)文件组成,扩展名为.scr。但是由于.src和.exe都是可执行程序,所以用exe也是可以实现的。Windows屏幕保护程序scrnsave.scr位于64位Windows系统的C:\Windows\System32和C:\Windows\sysWOW64中。
以下是屏幕保护程序存储在注册表(HKCU\Control Panel\Desktop\)中的设置项:
SCRNSAVE.exe- 设置为恶意PE路径
ScreenSaveActive-设置为“1”以启用屏幕保护程序
ScreenSaverIsSecure-设置为“0”以无需密码解锁
ScreenSaveTimeout-在执行屏幕保护程序之前设置用户不活动超时
利用步骤
步骤一:直接通过cmd.exe的方式写入键值。
123reg add "hkcu\Control Panel\Desktop" /v "SCRNSAVE.exe& ...
4. 物理地址
物理地址 CPU在访问内存单元时,要给出内存单元的地址。所有的内存单元构成的存储空间是一个一维的线性空间,每一个内存单元在这个空间中都有唯一的地址,我们将这个唯一的地址称之为物理地址。
CPU通过地址总线送入存储器的,必须是一个内存单元的物理地址。在CPU向地址总线上发出物理地址之前,必须要在内部先形成这个物理地址。
16位结构的CPU:8086
16位机、字长位16位等常见说法,与16位结构的含义相同
运算器一次最多可以处理16位的数据
寄存器的最大宽度为16位
寄存器和运算器之间的通路为16位
在8086内部,能够一次性处理、传输、暂时存储的信息的最大长度是16位的。内存单元的地址在送上地址总线之前,必须在CPU中处理、传输、暂时存放,对于16位CPU,能一次性处理、传输、暂时存储16位的地址。
8086给出物理地址的方法:8086有20位地址总线,可以传送20位地址,达到1MB寻址能力。但是从8086的内部结构来看,它只能送出16位的地址,寻址能力只有64KB。 8086采用内部用两个16位地址合成的方法来形成一个20位的物理地址。
...
3. 寄存器
寄存器 一个典型的CPU由运算器、控制器、寄存器等器件构成,这些器件靠内部总线相连。相对于CPU内部来说是外部总线。内部总线是实现CPU内部各个器件址线的联系。
简单地说,在CPU中:
运算器进行信息处理
寄存器进行信息存储
控制器控制各种器件进行工作
内部总线连接各种器件,在它们之间进行数据传送
寄存器是CPU中程序员可以用指令读写的部件,我们可以通过改变各种寄存器中的内容来实现对CPU的控制。
不同的CPU,寄存器的个数、结构是不同的。8086CPU有14个寄存器,每个寄存器都有一个名称:AX、BX、CX、DX、SI、DI、SP、BP、IP、CS、SS、DS、ES、PSW
通用寄存器:8086CPU的所有寄存器都是16位的,可以存放两个字节。AX、BX、CX、DX这4个寄存器通常来存放一般性的数据,被称为通用寄存器。
以AX为例,寄存器的逻辑结构如下图:
为了保证与上一代CPU中的寄存器(8位)兼容,8086CPU的AX、BX、CX、DX这4个寄存器都可以分为两个可独立使用的8位寄存器来用:
...
11. Cobalt Strike之PowerUP
CobaltStrike’s PowerUPPowerUP简介 在Windows下面我们可以通过内核漏洞来提升权限,但我们常常会碰到所处服务器通过内核漏洞提权是行不通的,这个时候,我们就需要通过脆弱的Windows服务提权,比如我们替换掉服务所依赖的DLL文件,当服务重启时,加载我们替换的文件。
Cobalt Strike并没有自带PowerUP.ps1
PowerUP实战
步骤一:首先你需要有一个控制权限,接着下发任务:Powerup.ps1需要放到CobaltStrike目录下,Powershell-import命令检索的目录就是CS的根目录。
12beacon> powershell-import PowerUp.ps1beacon> powershell Invoke-AllChecks //将使用脚本使用所有模块进行检查
这里给出了可以利用的服务,以及服务文件启动的位置,此时我们就需要更换这些服务文件,但是并不是所有的文件都存在弱点。以下便是弱点服务所存在的项:
这些存在弱点的服务,都是允许任意用 ...
2. 内存地址空间
RAM和ROM
主板:在每一台PC机中都有一个主板,主板上有核心器件和一些主要器件,这些器件通过总线(地址总线、数据总线、控制总线)相连。
接口卡:在计算机系统中,所有可用此程序控制其工作的设备,必须受到CPU的控制。CPU对外部设备都不能直接控制,如显示器、音箱、打印机等。而直接控制这些设备进行工作的是插在扩展插槽上的接口卡。接口卡通过CPU和总线相连接。
CPU通过总线向接口卡发送命令,接口卡根据CPU的命令控制外设进行工作。
存储器芯片:随机读写存储器(RAM)和只读从存储器(ROM)。
随机读写存储器可读可写,但必须带电存储,关机后存储的内容丢弃。用于存放供CPU使用的绝大部分程序和数据。
只读存储器只能读取不能写入,关机后其中的内容不丢弃。装有BIOS(Basic Input/Output System,基本输入/输出系统)的ROM。由厂商提供的软件系统,可以通过它利用该硬件设备进行最基本的输入输出。
在主板和某些接口卡上插有相应BIOS的ROM。例如:主板上的ROM存储着在主板的ROM;显卡上的ROM存储着显卡的ROM;网卡亦是如此。
接口卡上的RAM: ...
1. 汇编语言与存储器
漫长的秃头之旅开始了
机器语言 在学习汇编语言之前,我们首先来了解一下机器语言。机器语言是机器指令的集合。所谓的机器指令就是说是一台机器可以正确执行的命令,它是一列二进制数字。计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动,进行运算。
最早之前所谓的计算机是指可以专门执行机器指令,进行运算的机器,我们所说的PC机,有一个芯片来完成是上面所说的计算机的功能,这个芯片就是我们常说的CPU(Central Processing Unit,中央处理单元),CPU是一种微处理器。
每一种微处理器,由于硬件设计和内部结构的不同,就需要用不同的电平脉冲来控制,使它工作。所以每一种微处理器的都有自己的机器指令集,也就是机器语言。
在早期的程序设计均使用机器语言。程序们将用0、1数字编成的代码打在纸袋或卡片上。1打孔,0不打孔,再将程序通过纸袋机或卡片机输入计算机进行运算。
机器语言编写的程序多而复杂,仅仅输出一句的简单的话可能就需要近百行的0和1,如果程序里有一个’1’被误写成’0’,又如何去查找呢?
早期的程序员们很快就发现了使用机器语言带来的麻烦,它是如 ...
10. Cobalt Strike之By pass for UAC
UAC用户帐户控制[User Account Control]UAC简介 UAC是微软在Windows Vista之后的版本引入的一种安全机制,通过UAC,应用程序和任务可始终在非管理员账户的安全上下文中运行。UAC 可以阻止未经授权的应用程序自动进行安装,并防止无意中更改系统设置。
如果需要获取管理员权限,通过的路径有以下几种:
进程已经拥有管理员权限控制
进程被用户允许通过管理员权限允许
ACL(Access ControL List)访问控制列表:Windows中的所有的资源都有ACL,这个列表决定了拥有何种权限的用户/进程能够使用这个资源。
UAC启动后
若用户是标准用户,Windows会给用户分配一个标准Access Token。
若用户是管理员,Windows会分配两个访问令牌,一份是管理员访问令牌(Full Access Token),另一份则是标准的用户令牌。
在一般的情况下会以标准的用户权限启动Explorer.exe[资源管理器]进程,若用户同意则赋予完整管理员权限访问令牌进行操作。
UA ...
9. Cobalt Strike番外之Veil规避框架
Veil-EvasionVeil安装 Veil 是一个流行的框架,用于生成可以通过某些防病毒产品的可执行文件。其安装的方法有两种:第一种直接从github下载整个项目,但是下载的项目似乎许久都没有维护了,这也是我一直安装失败的原因,故我采用第二种安装方式;使用apt-get install veil命令安装,后可以直接在命令行中输入veil运行。
github下载安装:
运行../setup/setup.sh便可以自动安装
安装后,运行../Veil-Evasion.py便可以运行Veil进程
apt安装:
执行apt-get install veil,遇到所有的相关软件安装都直接next
安装完毕后,运行veil后会自己执行更新
Veil使用方式
打开Veil-Evasion
Veil提供了两种工具,Ordnance用于生成一段载荷,Evasion用于文件免杀。
首先看看Ordance的使用方法,在“ Veil>: ”视图下键入以下命令:
Veil>: use 2 //使用工具Ordnance
Veil>: list ...