freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

隐藏shellcode小技巧
2023-03-07 13:41:17
所属地 海外

shellcode

Shellcode是一种用来利用系统漏洞或实现特定功能的机器代码,它通常以字节码的形式存在,可以被注入到被攻击的程序或系统中,然后在运行时被执行。Shellcode常常是黑客攻击中使用的关键组件,可以用于执行各种操作,例如获取系统权限、执行恶意代码、绕过安全措施等等。

它可以被用来控制操作系统或应用程序,包括获取管理员权限、拦截网络数据、窃取密码和敏感信息、在目标系统上创建远程访问后门等等。因此,Shellcode是黑客攻击中非常重要的一环。

Windows事件日志

Windows事件日志是Windows操作系统中的一项记录和存储系统事件的功能。它可以记录各种操作系统和应用程序的事件,例如错误、警告和信息,以帮助系统管理员和技术支持人员诊断和解决问题。

Windows默认事件日志查看器为eventvwr.msc,也就是事件查看器,能实现简单的使用,Win+R键后输入eventvwr回车即能打开。Windows产生的日志在“Windows 日志”中,该文件夹中包含所有Windows系统上的五个标准类别。比较常用的Windows日志有系统日志、安全日志、应用程序日志这三个日志内容。

  • 应用程序
  • 安全
  • Setup
  • 系统
  • Forwarded Events

1678162246_6406b9464a41f32b72f49.png!small?1678162246202


Windows事件日志文件实际上是以特定的数据结构的方式存储内容,每条记录事件的数据结构由9个字段组成,包括日志名称、来源、记录时间、事件ID、任务类别、级别、计算机、事件数据(EventData)等信息。其中事件数据仅支持消息和二进制数据

写入事件日志

我们可以使用PowerShell操作Windows事件日志,其中Write-EventLog命令可以将事件写入事件日志,参考微软官方文档,其中参数对应上面介绍的字段:

1678162338_6406b9a22faf85fe0a311.png!small?1678162338073


Write-EventLog是powershell自带,无需安装。打开powershell输入如下内容:

1678162669_6406baedec4eb0f8ffc3a.png!small?1678162669563

-LogName  Application 是插入到应用程序中  -Source edge 是说明日志来自edge浏览器

-EventID 65535事件id号为65535                    -EnterType  Information 事件类型为消息类型

-Category 0 类别为0                                       -Message “Hello World”  插入的信息为helloworld

1678163315_6406bd73d2441789fa701.png!small?1678163315672

shellcode添加到日志

只需在Write-EventLog中使用-RawData参数,就可以在事件日志字段中包含二进制数据,而且必须将二进制数据作为字节数组传到-RawData参数中。我们可以将其包含数据的十六进制字符串转换为字节数组,然后再传递。

1678163948_6406bfecdc552b20f69e8.png!small?1678163948711

16进制转字节数组

1678164867_6406c383059cc5f0f5cbd.png!small?1678164867139

使用密钥管理服务日志和KmsRequests作为源进行事件日志写入。

Write-EventLog -LogName 'Key Management Service' -Source KmsRequests -EventID 9999 -EntryType Information -Category 0 -Message "Hello World!" -RawData $data

1678165242_6406c4fa0361d5e22992d.png!small?1678165241745

查看日志

1678165260_6406c50c57c557c9a6689.png!small?1678165260561

1678165282_6406c522885d039acf148.png!small?1678165282931

可见shellcode成功加入到日志中

执行shellcode加载器

代码:https://github.com/ldsaiyan/EventLogPersist/blob/main/EventLogPersistB/EventLogPersistB.py

1678167269_6406cce51c7c43f40d8e7.png!small?1678167268939

powershell执行

1678167303_6406cd076c9b538eee1a5.png!small?1678167303656

成功执行代码

总结

  1. 需要日志写入权限。
  2. 事件日志中可以存储的数据量有大小限制。基于事件消息字符串的最大字符限制为31,839个字符。
  3. 相对于远程加载shellcode,此种方法不需要出网,相对于文件加载,更加隐秘。
# 渗透测试 # 黑客 # 系统安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录