使用VSCode远程调试恶意Powershell脚本

概述

在野的Powershell恶意脚本往往经过多重混淆和加密,单纯的静态分析难以揭示其具体的恶意行为,因此需要进行动态调试。目前,常用的Powershell调试器是ISE,但其调试界面不够友好,导致调试效率低下。以下将介绍如何使用VSCode进行远程调试Powershell脚本,以提高解密分析Powershell恶意脚本的效率。

白瓜面试 白瓜面试

白瓜面试 – AI面试助手,辅助笔试面试神器

白瓜面试 40 查看详情 白瓜面试

样本获取本次演示使用的样本是一个Powershell后门,其特点是包含多层恶意代码,会从C&C服务器多次加载不同的payload。

使用VSCode远程调试恶意Powershell脚本母体是一个bat脚本,其主要功能是执行一段经过base64加密的Powershell脚本。

使用VSCode远程调试恶意Powershell脚本解密后的代码是这个样本的核心代码,接下来将对其进行调试分析。

使用VSCode远程调试恶意Powershell脚本虚拟机环境搭建首先,建议使用Win10作为虚拟机,因为VSCode的远程调试功能与Win10的兼容性更好。同时,建立远程会话需要将虚拟机的网络类型设置为专用。

使用VSCode远程调试恶意Powershell脚本然后在虚拟机中运行:winrm quickconfig,即可开启Windows远程管理(WinRM)服务。

使用VSCode远程调试恶意Powershell脚本为了在虚拟机中成功运行和调试Powershell脚本,还需要开放脚本执行权限set-executionpolicy unrestricted,并关闭Windows Defender。

本机VSCode环境搭建远程调试需要安装Powershell插件,打开VSCode,直接在商店中搜索并安装即可。

使用VSCode远程调试恶意Powershell脚本在Powershell控制台中输入:Enter-PSSession -ComputerName [虚拟机ip] -Credential [虚拟机用户名],输入密码,即可远程登录到虚拟机。然后将待调试的脚本放入虚拟机中,输入:psedit [虚拟机中的脚本路径],加载目标脚本。

使用VSCode远程调试恶意Powershell脚本远程调试分析在关键代码处设置断点,按下F5开始调试,运行到断点处,右侧显示变量的值。通过调试,我们可以发现这段代码的作用是从http://miranda.tattooforsure.com:8888/admin/get.php读取并执行恶意代码。

使用VSCode远程调试恶意Powershell脚本VSCode远程调试还支持编辑脚本,可以添加一行代码:payload = -JOIn [ChAr[]](& Data (IV + K)),将下载的恶意代码赋值给payload,便可以在调试窗口中获取到。

使用VSCode远程调试恶意Powershell脚本复制payload的值,保存为payload.ps1并进行调试。发现其结构简单,声明Start-NEGOtiatE函数并调用。值得注意的是,函数执行需要传入母脚本的ser、u、hop参数。

使用VSCode远程调试恶意Powershell脚本payload.ps1的功能是上传终端的域名、用户名、主机名、IP、操作系统版本以及Powershell版本信息。为了绕过检测,它会使用RC4对上述信息进行加密,并在传输前先上传RC4秘钥。

使用VSCode远程调试恶意Powershell脚本上传的C&C地址为http://miranda.tattooforsure.com:8888/login/process.php,上传完成后,C&C还会返回第二阶段的payload。

使用VSCode远程调试恶意Powershell脚本将第二阶段的payload保存为payload2.ps1并打开,原来是一个函数定义,函数名为U5BS3,然后在payload.ps1中进行调用。

使用VSCode远程调试恶意Powershell脚本为了方便调试,我们直接将U5BS3函数定义复制到payload.ps1中。单步步过:U5BS3 -Servers @((s -split “/“)[0..2] -join “/“) -StagingKey SK -SessionKey key -SessionID ID -WorkingHours “WORKING_HOURS_REPLACE” -KillDate “REPLACE_KILLDATE” -ProxySettings

使用VSCode远程调试恶意Powershell脚本通过搜索特征代码,可以确认这段代码是开源的Empire代码,是一个Powershell的攻击框架。

使用VSCode远程调试恶意Powershell脚本这段代码就是核心的后门代码了,根据C&C服务器下发的指令码,执行相应的恶意操作,这里就不详细分析了。

使用VSCode远程调试恶意Powershell脚本总结对于恶意样本的分析,必须在虚拟机环境中进行,因此远程调试是一个不错的选择。VSCode作为微软开发的脚本IDE,对Powershell远程调试功能的支持非常完善,大家可以通过VSCode的远程调试功能,提升解混淆分析恶意Powershell脚本的效率。

以上就是使用VSCode远程调试恶意Powershell脚本的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/608807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月11日 00:05:07
下一篇 2025年11月11日 00:08:48

相关推荐

  • Symfony 如何将LDAP条目转为数组

    使用php原生ldap_*函数时,需手动遍历ldap_get_entries()返回的嵌套数组,跳过数字索引和count键,将每个属性值(通常为数组)根据其count字段提取为单值或数组,并保留dn,最终构建成干净的关联数组;2. 使用symfony的ldap组件时,通过query执行后得到entr…

    2025年12月10日
    000
  • PHP如何创建自动发货系统?虚拟商品卡密生成

    卡密生成需结合随机数、时间戳与哈希算法(如md5(uniqid(rand(), true)))确保唯一性和复杂性,并在数据库中为卡密字段建立唯一索引防止重复;2. 支付成功后,系统通过支付网关的异步回调通知触发发货流程,接收回调数据后需进行验签、核对订单信息,并使用数据库事务保证订单更新、卡密分配与…

    2025年12月10日
    000
  • Symfony 如何将调试信息转为数组

    要将symfony的dump()函数输出转换为程序可处理的php数组,必须绕过默认渲染机制,直接操作vardumper组件的内部结构;具体步骤是:1. 使用varcloner克隆变量生成data对象;2. 创建自定义arraydumper类继承abstractdumper,递归遍历data对象和st…

    2025年12月10日
    000
  • Symfony 如何把验证错误转为数组

    在symfony中处理验证错误时,需将constraintviolationlist对象转换为数组以便于前后端交互、日志记录和结构化输出;2. 转换的核心方法是遍历constraintviolationlist,提取每个constraintviolation的属性路径、错误消息等信息,并按字段名分组…

    2025年12月10日
    000
  • PHP怎样开发竞价排名系统?广告位拍卖逻辑

    竞价排名核心算法包括“出价 × 质量得分”排序和第二价格拍卖(gsp)计费,质量得分综合点击率、相关性和落地页体验;2. 公平性通过透明规则、gsp机制和质量得分保障,效果则通过提升广告相关性和用户价值实现平衡;3. php开发面临实时性与高并发挑战,需依赖缓存、数据库优化、异步处理、水平扩展和分布…

    2025年12月10日
    000
  • Symfony 怎样将API令牌信息转数组

    在symfony中,将api令牌(如jwt)转换为数组的核心是解析其payload部分,需先从authorization头获取令牌,分割字符串取第二部分,进行base64 url安全解码并json_decode为php数组;2. 安全处理api令牌需依赖symfony security组件,通过签名…

    2025年12月10日
    000
  • PHP中根据数组键值进行条件判断与变量赋值

    本文详细阐述了在PHP中如何遍历数组,并根据数组键(key)的特定字符串值进行条件判断,进而动态地为其他变量赋值。通过foreach循环直接访问数组键,结合严格相等运算符===,可以高效地实现对指定键的识别与处理,即便数组中包含混合类型的键(字符串键与数字键)。本教程将提供清晰的代码示例,并探讨相关…

    2025年12月10日
    000
  • Symfony 怎么将权限列表转为数组格式

    从用户角色中提取权限时,若角色对象有getpermissions()方法,则合并其返回的权限数组,否则将角色名称作为权限添加;2. 若权限通过permission实体存储,则遍历角色关联的permission实体集合,调用getname()方法获取权限名称并加入数组;3. 使用authorizati…

    2025年12月10日
    000
  • 基于日期时间的网页内容自动更新:以电台节目表为例

    本文旨在提供一套完整的教程,指导如何利用PHP和数据库技术,实现网页内容的基于日期和时间的自动更新,尤其适用于电台节目表等需要精确时间控制的场景。教程将涵盖从简单的条件判断到使用数组管理节目,再到结合数据库进行动态内容管理的多种方法,并提供详细的代码示例和实践建议,确保内容能够根据当前时间动态展示。…

    2025年12月10日
    000
  • 网页内容根据日期时间自动更新的实现:PHP与数据库驱动方案

    本文详细阐述了如何使用PHP在网页上实现基于日期和时间的动态内容更新,特别适用于电台节目表等场景。文章涵盖了从简单的条件判断、基于PHP数组的调度,到结合SQL数据库的更高级方法,并提供了相应的代码示例和实践考量,旨在帮助开发者根据需求选择最合适的实现方案。 引言 在现代网页应用中,根据当前日期和时…

    2025年12月10日
    000
  • 基于日期和时间实现网页内容自动更新的教程

    本文详细介绍了如何在网页上根据当前日期和时间自动更新显示内容,特别适用于电台节目单等场景。教程涵盖了三种主要实现方式:基于PHP条件判断的简单逻辑、利用PHP数组管理节目单,以及更灵活强大的数据库驱动方案。通过代码示例和详细解释,帮助读者掌握不同场景下的动态内容展示技术,并探讨了时区设置、性能优化等…

    2025年12月10日
    000
  • PHP如何开发股票分析平台?付费数据接口提供

    选择付费数据接口时,需重点考量数据覆盖范围与粒度、接口稳定性与响应速度、并发限制及费用模式;2. 集成时应使用guzzle等http客户端封装api请求,妥善处理认证、错误与限流;3. 数据存储需设计合理的数据库结构并建立关键索引,历史数据通过定时任务批量导入,实时数据采用拉取+缓存策略,结合red…

    2025年12月10日
    000
  • 在Laravel 8中使用Jetstream和Spatie实现用户角色与权限管理

    本文旨在为Laravel 8项目开发者提供一套详尽的指南,演示如何在已集成了Jetstream认证系统的项目中,无缝集成并利用Spatie的Laravel Permission包实现强大的用户角色与权限管理功能。我们将深入探讨如何将Spatie添加到现有项目,解决与Jetstream的兼容性疑问,并…

    2025年12月10日
    000
  • PHP如何实现密码加密?password_hash安全方案

    使用php实现密码加密最稳妥的方法是采用password_hash()函数配合password_verify()进行验证,1. 使用password_hash()结合password_bcrypt算法和适当cost参数(如12)对用户密码进行哈希处理,该函数自动随机加盐并生成唯一哈希值,有效抵御彩虹…

    2025年12月10日
    000
  • PHP怎样使用Composer?依赖管理入门教程

    composer是php开发中管理依赖的核心工具,它通过几步骤实现高效依赖管理:1. 安装composer,通过官网下载并验证版本;2. 使用composer init或手动创建composer.json文件声明项目依赖和自动加载规则;3. 运行composer install将依赖下载到vendo…

    2025年12月10日
    000
  • CodeIgniter 4 中 Cookie 设置不生效的解决方案

    本文旨在解决 CodeIgniter 4 中使用 set_cookie() 函数设置 Cookie 后,在重定向后无法获取 Cookie 的问题。通过使用 withCookies() 方法,确保 Cookie 在重定向时正确设置,并提供示例代码和注意事项,帮助开发者顺利完成 Cookie 设置。 在…

    2025年12月10日
    000
  • CodeIgniter 4 设置 Cookie 无效问题解决指南

    本文旨在解决 CodeIgniter 4 中使用 set_cookie() 函数设置 Cookie 后,在重定向页面无法获取 Cookie 的问题。通过分析问题原因,并提供正确的解决方案,帮助开发者在 CodeIgniter 4 项目中顺利设置和使用 Cookie。关键在于理解 withCookie…

    2025年12月10日
    000
  • CodeIgniter 4 设置 Cookie 无效问题排查与解决方案

    本文旨在解决 CodeIgniter 4 中使用 set_cookie() 函数设置 Cookie 后无法生效的问题。我们将深入探讨导致此问题的原因,并提供有效的解决方案,确保 Cookie 能够正确设置和读取。 在 CodeIgniter 4 中,设置 Cookie 的方式与 CodeIgnite…

    2025年12月10日
    000
  • CodeIgniter 4 中 Cookie 设置失效问题解决方案

    本文旨在解决 CodeIgniter 4 中使用 set_cookie() 函数设置 Cookie 后无法生效的问题。通过分析问题原因,结合官方文档和实际案例,提供一种有效的解决方案,确保 Cookie 能够正确设置并在重定向后被访问。该方案的关键在于使用 withCookies() 方法。 在 C…

    2025年12月10日
    000
  • PHP怎样制作自动化营销系统?邮件/SMS收费

    必须使用专业邮件和短信api而非php的mail()函数,因为mail()函数缺乏认证、监控和重试机制,极易被识别为垃圾邮件,送达率极低;2. 专业api服务如sendgrid、twilio等提供高送达率、详细分析报告、模板个性化、合规支持和webhook通知,显著提升营销效果;3. 成本控制需从选…

    2025年12月10日
    000

发表回复

登录后才能评论
关注微信