freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

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

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 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录