
shellcode
Shellcode是一种用来利用系统漏洞或实现特定功能的机器代码,它通常以字节码的形式存在,可以被注入到被攻击的程序或系统中,然后在运行时被执行。Shellcode常常是黑客攻击中使用的关键组件,可以用于执行各种操作,例如获取系统权限、执行恶意代码、绕过安全措施等等。
它可以被用来控制操作系统或应用程序,包括获取管理员权限、拦截网络数据、窃取密码和敏感信息、在目标系统上创建远程访问后门等等。因此,Shellcode是黑客攻击中非常重要的一环。
Windows事件日志
Windows事件日志是Windows操作系统中的一项记录和存储系统事件的功能。它可以记录各种操作系统和应用程序的事件,例如错误、警告和信息,以帮助系统管理员和技术支持人员诊断和解决问题。
Windows默认事件日志查看器为eventvwr.msc,也就是事件查看器,能实现简单的使用,Win+R键后输入eventvwr回车即能打开。Windows产生的日志在“Windows 日志”中,该文件夹中包含所有Windows系统上的五个标准类别。比较常用的Windows日志有系统日志、安全日志、应用程序日志这三个日志内容。
- 应用程序
- 安全
- Setup
- 系统
- Forwarded Events
Windows事件日志文件实际上是以特定的数据结构的方式存储内容,每条记录事件的数据结构由9个字段组成,包括日志名称、来源、记录时间、事件ID、任务类别、级别、计算机、事件数据(EventData)等信息。其中事件数据仅支持消息和二进制数据。
写入事件日志
我们可以使用PowerShell操作Windows事件日志,其中Write-EventLog命令可以将事件写入事件日志,参考微软官方文档,其中参数对应上面介绍的字段:
Write-EventLog是powershell自带,无需安装。打开powershell输入如下内容:
-LogName Application 是插入到应用程序中 -Source edge 是说明日志来自edge浏览器
-EventID 65535事件id号为65535 -EnterType Information 事件类型为消息类型
-Category 0 类别为0 -Message “Hello World” 插入的信息为helloworld
shellcode添加到日志
只需在Write-EventLog中使用-RawData参数,就可以在事件日志字段中包含二进制数据,而且必须将二进制数据作为字节数组传到-RawData参数中。我们可以将其包含数据的十六进制字符串转换为字节数组,然后再传递。
16进制转字节数组
使用密钥管理服务日志和KmsRequests作为源进行事件日志写入。
|
查看日志
可见shellcode成功加入到日志中
执行shellcode加载器
代码:https://github.com/ldsaiyan/EventLogPersist/blob/main/EventLogPersistB/EventLogPersistB.py
powershell执行
成功执行代码
总结
- 需要日志写入权限。
- 事件日志中可以存储的数据量有大小限制。基于事件消息字符串的最大字符限制为31,839个字符。
- 相对于远程加载shellcode,此种方法不需要出网,相对于文件加载,更加隐秘。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)