0x00 前言

本文记录从零开始搭建VMware Workspace ONE Access漏洞调试环境的细节。

0x01 简介

本文将要介绍以下内容:

VMware Workspace ONE Access安装

VMware Workspace ONE Access漏洞调试环境配置

常用知识

0x02 VMware Workspace ONE Access安装

参考资料:

https://docs.vmware.com/en/VMware-Workspace-ONE-Access/20.01/workspace_one_access_install.pdf

1.下载OVA文件

下载页面:

https://customerconnect.vmware.com/downloads/search?query=workspace%20one%20access

下载前需要先注册用户,之后选择需要的版本进行下载

VMware Workspace ONE Access 21.08.0.1的下载页面:https://customerconnect.vmware.com/downloads/details?downloadGroup=WS1A_ONPREM_210801&productId=1269

下载文件identity-manager-21.08.0.1-19010796_OVF10.ova

2.安装

(1)在VMware Workstation中导入OVA文件

注:

VMware Workstation版本需要大于14,否则报错提示无法导入

在安装页面设置Host Name,如果配置了DHCP,其他选项不用设置,我的配置指定了静态IP,配置如下图

1eb1554038f954f18593eda0117e14a.png

等待OVA文件导入完成后,将会自动开机进行初始化,初始化完成后如下图

c05e76989c4301eb8904c6b8a0794bf.png

(2)配置

修改本机的hosts文件,将192.168.1.11指向workspaceone.test.com

访问配置页面https://workspaceone.test.com:8443

设置admin、root和sshuser用户的口令,口令需要包含大写字母、小写字母、数字和特殊字符

注:

我的测试结果显示,口令长度需要设置为14,否则无法登陆root和sshuser用户

我的测试环境设置口令为[email protected],如下图

0a0223ca5d50ac2ea6209d86f8ce493.png

设置数据库,为了便于环境搭建,这里选择Internal Database

等待安装完成,如下图

2376b6d173df948781aeef019089ace.png

3.设置允许root用户远程登录ssh

需要登录VMware Workspace ONE Access,修改系统的配置文件,有以下两种登录方法:

(1)在虚拟机中直接登录root用户

选择Login,输入root和口令[email protected]

(2)通过ssh登录sshuser用户

登录后再切换至root

切换至root用户后,依次执行以下命令:

vi /etc/ssh/sshd_config

设置PermitRootLogin从no变为yes

systemctl restart sshd

4.开启远程调试功能

修改文件:/opt/vmware/horizon/workspace/bin/setenv.sh

修改参数JVM_OPTS,添加参数:-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

如下图

1f94ca59c082957e7eadefbd51e9fee.png

重新启动系统

打开防火墙:iptables -P INPUT ACCEPT && iptables -P OUTPUT ACCEPT

IDEA设置远程调试参数,如下图

c24da3d796292bdf64d092b888e51fd.png

注:

IDEA的完整配置方法可参考之前的文章《Zimbra漏洞调试环境搭建》

0x03 常用知识

1.常用命令

查看系统服务状态: chkconfig --list

查看所有服务状态: systemctl status

查看IP地址: ip addr show

查看Host Name: hostname

日志路径: /opt/vmware/horizon/workspace/logs/

2.查看系统版本

需要root权限执行命令: vamicli version --appliance

查看系统版本的实现细节:

#!/usr/bin/env python2
import sys
sys.path.append("/opt/vmware/lib/python/site-packages/")
import pywbem
def getCIMConnection (url, namespace):
    cred = {}
    cred ['cert_file'] = '/opt/vmware/etc/sfcb/client.pem'
    cred ['key_file'] = '/opt/vmware/etc/sfcb/file.pem'
    cliconn = pywbem.WBEMConnection (url, None, namespace, cred)
    return cliconn
def showVersion():
  try:
    cliconn = getCIMConnection ('https://localhost:5489', 'root/cimv2')
    esis = cliconn.EnumerateInstances ('VAMI_ElementSoftwareIdentity')
  except:
    print('error')
    return
  for esi in esis:
    ess = esi ['ElementSoftwareStatus']
    if (ess == [2, 6]):
      inst = cliconn.GetInstance (esi['Antecedent'])
      print ('Version - ' + inst ['VersionString'])
      print ('Description - ' + inst ['Description'])
showVersion()

需要root权限是因为访问文件/opt/vmware/etc/sfcb/client.pem和/opt/vmware/etc/sfcb/file.pem需要root权限

3.数据库连接口令

连接数据库的明文口令位置为:/usr/local/horizon/conf/db.pwd

连接数据库的口令加密保存在文件/usr/local/horizon/conf/runtime-config.properties中,文件内容示例:

datastore.jdbc.url=jdbc:postgresql://localhost/saas?stringtype=unspecified
datastore.jdbc.userName=horizon
secure.datastore.jdbc.password=BAACs8MW1xyMe7/8ONd2QwtG3mw37wF1/1pQ6D09xXqf56ncfRtCun6y8A1XFtjajhU60V1QNYnCOxk3t1m0dV0JvA==

其中,BAACs8MW1xyMe7/8ONd2QwtG3mw37wF1/1pQ6D09xXqf56ncfRtCun6y8A1XFtjajhU60V1QNYnCOxk3t1m0dV0JvA==为加密口令

需要以下文件作为解密密钥:

/usr/local/horizon/conf/configkeystore.pass
/usr/local/horizon/conf/configkeystore.bcfks

4.数据库中的加密信息

admin用户的口令加密存储在数据库中

查询命令:saas=> SELECT "passwordAuthData" FROM "PasswordInformation";

查询结果如下图

加密的主要实现代码1:

   private String AES_encrypt(@Nonnull byte[] clearData, @Nonnull byte[] key, @Nonnull EncryptionAlgorithms encAlg) throws EncryptionServiceException {
        Preconditions.checkNotNull(clearData);
        Preconditions.checkNotNull(key);
        Preconditions.checkNotNull(encAlg);
        Preconditions.checkArgument(clearData.length != 0);
        try {
            String cipherName = encAlg.getCipherName();
            Cipher cipher = Cipher.getInstance(cipherName, provider);
            int nonceSize = encAlg.getNonceSize(cipher.getBlockSize());
            IvParameterSpec ivSpec = null;
            String encodedIv;
            if (nonceSize > 0) {
                byte[] iv = new byte[nonceSize];
                srand.nextBytes(iv);
                ivSpec = new IvParameterSpec(iv);
                encodedIv = new String(Hex.encode(iv), StandardCharsets.US_ASCII);
            } else {
                encodedIv = "";
            }
            if (encAlg.forcePadding()) {
                clearData = ArrayUtils.add(clearData, (byte)1);
            }
            SecretKey secret = new SecretKeySpec(key, cipherName);
            cipher.init(1, secret, ivSpec, srand);
            byte[] data = cipher.doFinal(clearData);
            String output = Integer.toString(4) + ":" + encodedIv + ":" + new String(Hex.encode(data), StandardCharsets.US_ASCII);
            return output;
        } catch (InvalidKeyException | BadPaddingException | IllegalBlockSizeException | InvalidAlgorithmParameterException | NoSuchPaddingException | NoSuchAlgorithmException | FipsUnapprovedOperationError var12) {
            log.error("Failed to encrypt with AES: " + var12.getMessage());
            throw new EncryptionServiceException(var12);
        }
    }

加密的主要实现代码2:

String encryptedData = Integer.toString(1) + "," + encKey.getSafeUuid().toString() + "," + this.AES_encrypt(clearData, aesKey, encAlg);

5.8443端口登录口令

登录口令加密保存在文件/usr/local/horizon/conf/config-admin.json

加密的主要实现代码:

    private void setPassword(String newPassword, boolean isSet) throws AdminAuthException {
        int ic = this.passwordAuthenticationUtil.getIc(iterationCountBase, iterationCountRange);
        try {
            String newEncryptedPassword = this.passwordAuthenticationUtil.createPWInfo("admin", "admin", ic, newPassword);
            PasswordInfo newPasswordInfo = new PasswordInfo(newEncryptedPassword, isSet);
            if (this.passwordInfo != null) {
                newPasswordInfo.setAttemptDelay(this.passwordInfo.getAttemptDelay());
                newPasswordInfo.setMaxAttemptCount(this.passwordInfo.getMaxAttemptCount());
            }
            objectMapper.writeValue(this.passwordInfoFile, newPasswordInfo);
        } catch (IOException | EncryptionServiceException var7) {
            throw new AdminAuthException("Failed to set password" + var7.getMessage(), var7);
        }
        try {
            this.loadEncryptedPasswordFromFile();
        } catch (IOException var6) {
            throw new AdminAuthException("Failed to load stored password" + var6.getMessage(), var6);
        }
    }

0x04 小结

在我们搭建好VMware Workspace ONE Access漏洞调试环境后,接下来就可以着手对漏洞和数据库口令的解密方法进行学习。

0x00 前言

Exchange的版本众多,历史漏洞数量也很多,因此需要通过程序实现版本探测和漏洞检测。本文将要介绍通过Python进行版本探测的两种方法,介绍漏洞检测的实现细节,开源代码。

0x01 简介

本文将要介绍以下内容:

实现思路

实现细节

开源代码

0x02 实现思路

1.版本识别

(1)获得精确版本(Build number)

访问EWS接口,在Response Headers中的X-OWA-Version可以获得精确版本,如下图

ea77e433c222dd8aef0fb7320a17475.png

优点:精确版本(Build number)能够对应到具体的发布日期

缺点:方法不通用,部分旧的Exchange版本不支持

(2)获得粗略版本

访问OWA接口,在回显内容可以获得粗略版本,如下图

3d3ce0a46278a1679069a3fe924054e.png

优点:方法通用

缺点:粗略版本无法对应到准确的发布日期,只能对应到一个区间

综上,在版本识别上,首先尝试获得精确版本,如果无法获得,再尝试获得粗略版本

获得版本号后,可以去官网查询对应的Exchange版本和发布日期,查询地址:https://docs.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates?view=exchserver-2019

2.漏洞检测

Exchange的漏洞详情可通过访问https://msrc.microsoft.com/update-guide/vulnerability/<  CVE >查看,例如:

CVE-2020-0688对应的URL:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2020-0688

在漏洞检测上,可以将补丁时间作为判定依据,如果识别到的Exchange版本发布日期低于某个补丁日期,那么判定该Exchange存在该补丁中描述的漏洞。

0x03 实现细节

1.版本识别

访问EWS接口获得版本的实现代码:

url1 = "https://" + host + "/ews"
req = requests.get(url1, headers = headers, verify=False)
if "X-OWA-Version" in req.headers:
    version = req.headers["X-OWA-Version"]
    print(version)

访问OWA接口获得版本的实现代码:

url2 = "https://" + host + "/owa"
req = requests.get(url2, headers = headers, verify=False)
pattern_version = re.compile(r"/owa/auth/(.*?)/themes/resources/favicon.ico")
version = pattern_version.findall(req.text)[0]
print(version)

获得版本号后,需要同已知的版本信息作匹配。为了提高效率,可以选择将已知的版本信息存储在列表中,元素包括Exchange版本,发布时间和版本号(Build number)

首先从官网复制已知的版本信息,再通过字符串替换的方式将版本信息存储在列表中

在版本匹配时,需要区别精确版本和粗略版本,精确版本可以对应唯一的结果,而粗略版本需要筛选出所有可能的结果

Build number格式示例:15.1.2375.24

粗略版本格式示例:15.1.2375

粗略版本的筛选方法:

对Build number字符串进行截取,去除最后一个字符”.”后面的数据,同粗略版本进行数据对比,输出所有结果

代码示例:

versionarray = [
["Exchange Server 2019 CU11 Mar22SU", "March 8, 2022", "15.2.986.22"],
["Exchange Server 2019 CU11 Jan22SU", "January 11, 2022", "15.2.986.15"],
["Exchange Server 2019 CU11 Nov21SU", "November 9, 2021", "15.2.986.14"],
["Exchange Server 2019 CU11 Oct21SU", "October 12, 2021", "15.2.986.9"],
["Exchange Server 2019 CU11", "September 28, 2021", "15.2.986.5"],
["Exchange Server 2019 CU10 Mar22SU", ""March 8, 2022", "15.2.922.27"]
]
version="15.2.986"
for value in versionarray:
    if version in value[2][:value[2].rfind(".")]:
        print("[+] Version: " + value[2])
        print("    Product: " + value[0])
        print("    Date: " + value[1])

2.漏洞检测

将补丁时间作为判定依据,同样为了提高效率,将已知的漏洞信息存储的列表中,元素包括发布时间和漏洞编号

为了便于比较时间,需要改变时间格式,例如将September 28, 2021修改成09/28/2021

代码示例:

vularray = [
["CVE-2020-0688", "02/11/2020"],
["CVE-2021-26855+CVE-2021-27065", "03/02/2021"],
["CVE-2021-28482", "04/13/2021"]
]
date="03/01/2021"
for value in vularray:
    if (date.split('/')[2] <= value[1].split('/')[2]) & (date.split('/')[1] <= value[1].split('/')[1]) & (date.split('/')[0] < value[1].split('/')[0]):
        print("[+] " + value[0] + ", " + value[1])

0x04 开源代码

由于代码内容较长,完整的实现代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-Python/blob/master/Exchange_GetVersion_MatchVul.py

版本数据库的日期为03/21/2022

漏洞信息包括以下编号:

CVE-2020-0688

CVE-2021-26855+CVE-2021-27065

CVE-2021-28482

CVE-2021-34473+CVE-2021-34523+CVE-2021-31207

CVE-2021-31195+CVE-2021-31196

CVE-2021-31206

CVE-2021-42321

代码能够自动识别出精确版本,如果无法识别,改为识别粗略版本,标记出所有匹配的漏洞

0x05 小结

本文介绍了通过Python进行Exchange版本探测的两种方法,介绍实现细节,开源代码,作为一个很好的学习示例。

0x00 前言

Exchange的版本众多,历史漏洞数量也很多,因此需要通过程序实现版本探测和漏洞检测。本文将要介绍通过Python进行版本探测的两种方法,介绍漏洞检测的实现细节,开源代码。

0x01 简介

本文将要介绍以下内容:

实现思路

实现细节

开源代码

0x02 实现思路

1.版本识别

(1)获得精确版本(Build number)

访问EWS接口,在Response Headers中的X-OWA-Version可以获得精确版本,如下图

ea77e433c222dd8aef0fb7320a17475.png

优点:精确版本(Build number)能够对应到具体的发布日期

缺点:方法不通用,部分旧的Exchange版本不支持

(2)获得粗略版本

访问OWA接口,在回显内容可以获得粗略版本,如下图

3d3ce0a46278a1679069a3fe924054e.png

优点:方法通用

缺点:粗略版本无法对应到准确的发布日期,只能对应到一个区间

综上,在版本识别上,首先尝试获得精确版本,如果无法获得,再尝试获得粗略版本

获得版本号后,可以去官网查询对应的Exchange版本和发布日期,查询地址:https://docs.microsoft.com/en-us/exchange/new-features/build-numbers-and-release-dates?view=exchserver-2019

2.漏洞检测

Exchange的漏洞详情可通过访问https://msrc.microsoft.com/update-guide/vulnerability/<  CVE >查看,例如:

CVE-2020-0688对应的URL:https://msrc.microsoft.com/update-guide/vulnerability/CVE-2020-0688

在漏洞检测上,可以将补丁时间作为判定依据,如果识别到的Exchange版本发布日期低于某个补丁日期,那么判定该Exchange存在该补丁中描述的漏洞。

0x03 实现细节

1.版本识别

访问EWS接口获得版本的实现代码:

url1 = "https://" + host + "/ews"
req = requests.get(url1, headers = headers, verify=False)
if "X-OWA-Version" in req.headers:
    version = req.headers["X-OWA-Version"]
    print(version)

访问OWA接口获得版本的实现代码:

url2 = "https://" + host + "/owa"
req = requests.get(url2, headers = headers, verify=False)
pattern_version = re.compile(r"/owa/auth/(.*?)/themes/resources/favicon.ico")
version = pattern_version.findall(req.text)[0]
print(version)

获得版本号后,需要同已知的版本信息作匹配。为了提高效率,可以选择将已知的版本信息存储在列表中,元素包括Exchange版本,发布时间和版本号(Build number)

首先从官网复制已知的版本信息,再通过字符串替换的方式将版本信息存储在列表中

在版本匹配时,需要区别精确版本和粗略版本,精确版本可以对应唯一的结果,而粗略版本需要筛选出所有可能的结果

Build number格式示例:15.1.2375.24

粗略版本格式示例:15.1.2375

粗略版本的筛选方法:

对Build number字符串进行截取,去除最后一个字符”.”后面的数据,同粗略版本进行数据对比,输出所有结果

代码示例:

versionarray = [
["Exchange Server 2019 CU11 Mar22SU", "March 8, 2022", "15.2.986.22"],
["Exchange Server 2019 CU11 Jan22SU", "January 11, 2022", "15.2.986.15"],
["Exchange Server 2019 CU11 Nov21SU", "November 9, 2021", "15.2.986.14"],
["Exchange Server 2019 CU11 Oct21SU", "October 12, 2021", "15.2.986.9"],
["Exchange Server 2019 CU11", "September 28, 2021", "15.2.986.5"],
["Exchange Server 2019 CU10 Mar22SU", ""March 8, 2022", "15.2.922.27"]
]
version="15.2.986"
for value in versionarray:
    if version in value[2][:value[2].rfind(".")]:
        print("[+] Version: " + value[2])
        print("    Product: " + value[0])
        print("    Date: " + value[1])

2.漏洞检测

将补丁时间作为判定依据,同样为了提高效率,将已知的漏洞信息存储的列表中,元素包括发布时间和漏洞编号

为了便于比较时间,需要改变时间格式,例如将September 28, 2021修改成09/28/2021

代码示例:

vularray = [
["CVE-2020-0688", "02/11/2020"],
["CVE-2021-26855+CVE-2021-27065", "03/02/2021"],
["CVE-2021-28482", "04/13/2021"]
]
date="03/01/2021"
for value in vularray:
    if (date.split('/')[2] <= value[1].split('/')[2]) & (date.split('/')[1] <= value[1].split('/')[1]) & (date.split('/')[0] < value[1].split('/')[0]):
        print("[+] " + value[0] + ", " + value[1])

0x04 开源代码

由于代码内容较长,完整的实现代码已上传至github,地址如下:

https://github.com/3gstudent/Homework-of-Python/blob/master/Exchange_GetVersion_MatchVul.py

版本数据库的日期为03/21/2022

漏洞信息包括以下编号:

CVE-2020-0688

CVE-2021-26855+CVE-2021-27065

CVE-2021-28482

CVE-2021-34473+CVE-2021-34523+CVE-2021-31207

CVE-2021-31195+CVE-2021-31196

CVE-2021-31206

CVE-2021-42321

代码能够自动识别出精确版本,如果无法识别,改为识别粗略版本,标记出所有匹配的漏洞

0x05 小结

本文介绍了通过Python进行Exchange版本探测的两种方法,介绍实现细节,开源代码,作为一个很好的学习示例。

0x00 前言

Android渗透平台搭建的系列文章第三篇,介绍Android设备OnePlus6T上安装Kali的两种方法,记录细节。

方法一:在Android系统安装Kali NetHunter(2022.1)

方法二:在Win11系统安装Linux子系统kali-linux

测试设备:OnePlus 6T 10g+256g 迈凯伦

测试设备系统:Android 11+Win11

0x01 简介

本文将要介绍以下内容:

在Android系统安装Kali NetHunter(2022.1)

在Win11系统安装Linux子系统kali-linux

0x02 在Android系统安装Kali NetHunter(2022.1)

流程可参考之前的文章《Android渗透平台搭建——在Nexus6P安装Kali NetHunter(2022.1)》

Win11切换至Android的方法:

开机时按音量+,选择UEFI BootMenu,再选择Reboot to other slot

1.下载文件

(1)Kali NetHunter

需要Android版本10或Android版本11

OnePlus6T Android 11的下载地址:https://kali.download/nethunter-images/kali-2022.1/nethunter-2022.1-oneplus6-oos-eleven-kalifs-full.zip

OnePlus6T Android 10的下载地址:https://kali.download/nethunter-images/kali-2022.1/nethunter-2022.1-oneplus6-oos-ten-kalifs-full.zip

(2)Magisk

下载页面:https://github.com/topjohnwu/Magisk

这里选择Magisk-v21.4.zip,下载地址:https://github.com/topjohnwu/Magisk/releases/download/v21.4/Magisk-v21.4.zip

(3)TWRP

下载页面:https://twrp.me/oneplus/oneplus6t.html

下载地址:

https://dl.twrp.me/fajita/twrp-3.6.1_9-0-fajita.img

https://dl.twrp.me/fajita/twrp-installer-3.6.1_9-0-fajita.zip

下载得到文件twrp-3.6.1_9-0-fajita.img和twrp-installer-3.6.1_9-0-fajita.zip

twrp-3.6.1_9-0-fajita.img用于通过fastboot启动TWRP,twrp-installer-3.6.1_9-0-fajita.zip用于永久安装TWRP

2.安装Kali NetHunter

(1)进入Recovery模式

在开机状态下,按住电源键,选择恢复模式,进入Recovery模式

在TWRP页面,选择Install,我的OnePlus6T为Android 11,这里选择nethunter-2022.1-oneplus6-oos-eleven-kalifs-full.zip

需要取消选择Reboot after installation is complete避免安装后自动重启

经过漫长的等待,安装成功

安装Magisk-v21.4.zip

在TWRP页面,选择Install,选择Magisk-v21.4.zip

安装成功后选择Reboot System

至此,Kali NetHunter安装完成

在应用列表中,能够看到新安装的NetHunter、NetHunter Terminal 和NetHunterKeX

0x03 在Win11系统安装Linux子系统kali-linux

Android切换至Win11的方法:

进入Recovery模式,在TWRP中,选择Reboot -> SlotB

进入Win11系统后,可选择在微软商店搜索kali进行安装,具体流程如下:

1.开启子系统Linux

Powershell:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

安装完会提示需要重启操作系统

2.在微软商店搜索kali并安装

安装后直接启动kali会报错0x80370102,这里需要手动设置wsl版本为1

wsl命令可参考:https://docs.microsoft.com/en-us/windows/wsl/basic-commands

3.设置wsl版本为1

命令如下:

wsl --set-default-version 1

查看已安装系统的命令如下:

wsl --list --verbose

返回结果能看到kali-linux

4.配置Kali默认登录用户

设置默认登录用户为root的命令如下:

kali config --default-user root

配置root用户密码,命令如下:

kali
passwd root
toor
toor

5.更新kali

sudo apt update && sudo apt upgrade -y

如果无法更新,可以修改成国内的源

sudo vi /etc/apt/sources.list

添加:

deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

6.安装Kali GUI

本地Win11可通过远程桌面连接至Kali

首先在命令行输入kali进入kali控制台

(1)安装kali-desktop-xfce

sudo apt install kali-desktop-xfce -y

(2)安装xrdp

sudo apt install xrdp -y

(3)修改端口为3390

sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini

(4)开启服务

sudo service xrdp start

(5)连接远程桌面

mstsc
127.0.0.1:3390

补充:常见问题

(1)修改kali分辨率

在kali中依次选择Settings -> Appearance -> Settings -> Window Scaling,改成2x

(2)无法打开命令行终端,提示:Failed to execute default Terminal Emulator. Input/output error.

先安装xfce的终端:

sudo apt install xfce4-terminal

在kali中依次选择Settings -> Settings Manager -> DefaultApplications -> Utilities,将设置Terminal Emulator设置为Xfce Terminal

(3)Win11重启后重新连接kali的远程桌面

需要先开启服务xrdp:

sudo service xrdp restart

(4)Win11 Linux子系统重启

net stop LxssManager
net start LxssManager

(5)安装msfconsole

sudo apt install metasploit-framework

(6)启动msfconsole

需要在Windows Defender中添加排除目录:\\wsl.localhost\kali-linux

0x04 小结

本文将介绍了在Android设备OnePlus6T上安装Kali的两种方法。骁龙845处理器的设备可以选择安装Win11再安装Kali,其他Android设备可选择安装Kali NetHunter。

0x00 前言

Android渗透平台搭建的系列文章第三篇,介绍Android设备OnePlus6T上安装Kali的两种方法,记录细节。

方法一:在Android系统安装Kali NetHunter(2022.1)

方法二:在Win11系统安装Linux子系统kali-linux

测试设备:OnePlus 6T 10g+256g 迈凯伦

测试设备系统:Android 11+Win11

0x01 简介

本文将要介绍以下内容:

在Android系统安装Kali NetHunter(2022.1)

在Win11系统安装Linux子系统kali-linux

0x02 在Android系统安装Kali NetHunter(2022.1)

流程可参考之前的文章《Android渗透平台搭建——在Nexus6P安装Kali NetHunter(2022.1)》

Win11切换至Android的方法:

开机时按音量+,选择UEFI BootMenu,再选择Reboot to other slot

1.下载文件

(1)Kali NetHunter

需要Android版本10或Android版本11

OnePlus6T Android 11的下载地址:https://kali.download/nethunter-images/kali-2022.1/nethunter-2022.1-oneplus6-oos-eleven-kalifs-full.zip

OnePlus6T Android 10的下载地址:https://kali.download/nethunter-images/kali-2022.1/nethunter-2022.1-oneplus6-oos-ten-kalifs-full.zip

(2)Magisk

下载页面:https://github.com/topjohnwu/Magisk

这里选择Magisk-v21.4.zip,下载地址:https://github.com/topjohnwu/Magisk/releases/download/v21.4/Magisk-v21.4.zip

(3)TWRP

下载页面:https://twrp.me/oneplus/oneplus6t.html

下载地址:

https://dl.twrp.me/fajita/twrp-3.6.1_9-0-fajita.img

https://dl.twrp.me/fajita/twrp-installer-3.6.1_9-0-fajita.zip

下载得到文件twrp-3.6.1_9-0-fajita.img和twrp-installer-3.6.1_9-0-fajita.zip

twrp-3.6.1_9-0-fajita.img用于通过fastboot启动TWRP,twrp-installer-3.6.1_9-0-fajita.zip用于永久安装TWRP

2.安装Kali NetHunter

(1)进入Recovery模式

在开机状态下,按住电源键,选择恢复模式,进入Recovery模式

在TWRP页面,选择Install,我的OnePlus6T为Android 11,这里选择nethunter-2022.1-oneplus6-oos-eleven-kalifs-full.zip

需要取消选择Reboot after installation is complete避免安装后自动重启

经过漫长的等待,安装成功

安装Magisk-v21.4.zip

在TWRP页面,选择Install,选择Magisk-v21.4.zip

安装成功后选择Reboot System

至此,Kali NetHunter安装完成

在应用列表中,能够看到新安装的NetHunter、NetHunter Terminal 和NetHunterKeX

0x03 在Win11系统安装Linux子系统kali-linux

Android切换至Win11的方法:

进入Recovery模式,在TWRP中,选择Reboot -> SlotB

进入Win11系统后,可选择在微软商店搜索kali进行安装,具体流程如下:

1.开启子系统Linux

Powershell:

Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux

安装完会提示需要重启操作系统

2.在微软商店搜索kali并安装

安装后直接启动kali会报错0x80370102,这里需要手动设置wsl版本为1

wsl命令可参考:https://docs.microsoft.com/en-us/windows/wsl/basic-commands

3.设置wsl版本为1

命令如下:

wsl --set-default-version 1

查看已安装系统的命令如下:

wsl --list --verbose

返回结果能看到kali-linux

4.配置Kali默认登录用户

设置默认登录用户为root的命令如下:

kali config --default-user root

配置root用户密码,命令如下:

kali
passwd root
toor
toor

5.更新kali

sudo apt update && sudo apt upgrade -y

如果无法更新,可以修改成国内的源

sudo vi /etc/apt/sources.list

添加:

deb http://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src http://mirrors.aliyun.com/kali kali-rolling main non-free contrib

6.安装Kali GUI

本地Win11可通过远程桌面连接至Kali

首先在命令行输入kali进入kali控制台

(1)安装kali-desktop-xfce

sudo apt install kali-desktop-xfce -y

(2)安装xrdp

sudo apt install xrdp -y

(3)修改端口为3390

sed -i 's/port=3389/port=3390/g' /etc/xrdp/xrdp.ini

(4)开启服务

sudo service xrdp start

(5)连接远程桌面

mstsc
127.0.0.1:3390

补充:常见问题

(1)修改kali分辨率

在kali中依次选择Settings -> Appearance -> Settings -> Window Scaling,改成2x

(2)无法打开命令行终端,提示:Failed to execute default Terminal Emulator. Input/output error.

先安装xfce的终端:

sudo apt install xfce4-terminal

在kali中依次选择Settings -> Settings Manager -> DefaultApplications -> Utilities,将设置Terminal Emulator设置为Xfce Terminal

(3)Win11重启后重新连接kali的远程桌面

需要先开启服务xrdp:

sudo service xrdp restart

(4)Win11 Linux子系统重启

net stop LxssManager
net start LxssManager

(5)安装msfconsole

sudo apt install metasploit-framework

(6)启动msfconsole

需要在Windows Defender中添加排除目录:\\wsl.localhost\kali-linux

0x04 小结

本文将介绍了在Android设备OnePlus6T上安装Kali的两种方法。骁龙845处理器的设备可以选择安装Win11再安装Kali,其他Android设备可选择安装Kali NetHunter。

0x00 前言

Android渗透平台搭建的系列文章第二篇,介绍Android设备OnePlus6T上安装Win11操作系统的方法,记录细节。

测试设备:OnePlus 6T 10g+256g 迈凯伦

简单理解:采用骁龙845处理器的手机设备能够安装Arm版的Win11

完整资料:https://renegade-project.cn/#/README

参考资料:

http://www.oneplusbbs.com/thread-4446250-1.html

https://forum.renegade-project.org/t/6-windows/194

https://www.bilibili.com/video/BV1kM4y137bR

https://silime.gitee.io/2021/05/20/Windows10-on-arm64/

https://baijiahao.baidu.com/s?id=1721563590612500439&wfr=spider&for=pc

0x01 简介

本文将要介绍以下内容:

深度刷机的方法

安装Win11的准备

安装Win11的方法

0x02 深度刷机的方法

这里把深度刷机放在第一部分,是因为在刷机过程中很容易黑砖,只能通过深度刷机进行还原

在刷机过程中,错误的操作有可能导致手机无法开机,即9008 download模式,即常说的黑砖

这时只能通过深度刷机的方法重新刷入系统,也就是常说的救砖

救砖教程参考资料:http://www.oneplusbbs.com/thread-4446250-1.html

1.下载文件

在救砖教程中提供的网盘进行下载

(1)9008驱动

网盘中的高通9008驱动(推荐).exe

(2)线刷救砖包

OnePlus 6T迈凯伦定制版有专用的救砖包,网盘中提供的迈凯伦救砖包是氧OS版,后续还需要升级成氢OS

(3)一加万能工具包

如果无法识别OnePlus 6T,可以安装一加万能工具包 -> 驱动安装 -> 黑砖驱动

(4)氢OS系统安装包

文件列表如下图

32248cbfef1073ee244c309280d3b33.png

2.安装9008驱动

运行高通9008驱动(推荐).exe

3.安装底层驱动

(1)在Windows系统打开设备管理器,位置:我的电脑->右键->管理,在计算机管理中选择设备管理器

(2)OnePlus 6T在关机状态下,同时按住音量+和音量-不放,通过USB数据线将OnePlus 6T连接Windows系统

等待Windows系统自动安装驱动

在设备管理器中,查看”端口(COM和LPT)”,如果出现Qualcomm HS-USB QDLoader 9008(COM3)代表底层驱动安装成功,如下图

7cb03b8be5c8b3b8111276f5edd0fa8.png

(3)管理员身份运行MsmDownloadTool V4.0.exe

如下图

7bf48519930d73be4ace5123ea5ee3d.png

点击Start开始刷机,如下图

c34845ce4b6c4fc6a9ec48273cb4f2d.png

等待一段时间,刷机成功,如下图

ab8975133c552824319f4441f1950dc.png

OnePlus 6T会自动开机,进行初始化,默认安装氧OS

4.刷入氢OS

网盘中提供的迈凯伦救砖包是氧OS版,需要刷成氢OS,可以使用OnePlus 6T内置的本地升级功能

(1)将OnePlus6THydrogen_41_OTA_032_all_1903251445_5c8a300ab3b84fa5.zip复制到OnePlus 6T的根目录

(2)在OnePlus 6T上依次选择设置 -> 系统 -> 系统更新-> 右上角设置 -> 本地升级,选择OnePlus6THydrogen_41_OTA_032_all_1903251445_5c8a300ab3b84fa5.zip

等待升级完成,点击重启手机

5.升级氢OS Android 10

在OnePlus 6T上依次选择设置 -> 系统 -> 系统更新,进行在线升级

在线升级后,最新版本为Android 11,在安装Win11之前我们先需要降级到Android 10,可以采用以下方法进行降级:

下载降级包:https://download.h2os.com/OnePlus6T/Back/OnePlus6THydrogen_34.K.51_OTA_051_all_2105262300_downgrade_e10c56ab63f04596.zip

在OnePlus 6T上依次选择设置 -> 系统 -> 系统更新-> 右上角设置 -> 本地升级,选择OnePlus6THydrogen_34.K.51_OTA_051_all_2105262300_downgrade_e10c56ab63f04596.zip

补充:官方OnePlus 6T系统安装包的下载地址:

https://www.oneplus.com/cn/support/softwareupgrade/details?code=PM1574150307705

注:

我也考虑过在氢OS Android 9进行卡刷直接升级到OS Android 10的方法和在氢OS Android 11进行卡刷直接降级到OS Android 10的方法,但是这两种方法我在测试过程中失败了,都是因为无法通过Bootloader模式安装TWRP

0x03 安装Win11的准备

Windows系统只需要配置adb和fastboot,然后是一些文件的下载

1.adb和fastboot

需要下载到Windows系统并配置环境变量

这里可以选择一键下载配置,下载地址:https://forum.xda-developers.com/t/official-tool-windows-adb-fastboot-and-drivers-15-seconds-adb-installer-v1-4-3.2588979/#post-48915118

运行adb-setup-1.4.3.exe按照提示即可

2.TWRP下载

下载页面:https://twrp.me/oneplus/oneplus6t.html

下载地址:

https://dl.twrp.me/fajita/twrp-3.6.1_9-0-fajita.img

https://dl.twrp.me/fajita/twrp-installer-3.6.1_9-0-fajita.zip

下载得到文件twrp-3.6.1_9-0-fajita.img和twrp-installer-3.6.1_9-0-fajita.zip

twrp-3.6.1_9-0-fajita.img用于通过fastboot启动TWRP,twrp-installer-3.6.1_9-0-fajita.zip用于永久安装TWRP

3.parted下载

Linux下的分区工具

源码下载地址:https://alpha.gnu.org/gnu/parted/parted-3.3.52.tar.xz

需要手动编译

也可以下载编译好的文件:https://pwdx.lanzoux.com/iUgSEmkrlmh

下载得到文件parted

4.驱动下载

项目页面:https://github.com/edk2-porting/WOA-Drivers

一加6T的下载地址:https://github.com/edk2-porting/WOA-Drivers/releases/download/v1.1.1/fajita.tar.gz

下载得到文件fajita.tar.gz

5.UEFI固件下载

项目地址:https://github.com/edk2-porting/edk2-sdm845

一加6T的下载地址:https://github.com/edk2-porting/edk2-sdm845/releases/download/v1.1.1/boot-fajita-10g.img

下载得到文件boot-fajita-10g.img

6.Win11镜像下载

下载arm版的Win11镜像文件,解压后将sources\install.wim复制提取出来

最终得到文件install.wim

7.Dism++下载

项目地址:https://github.com/Chuyu-Team/Dism-Multi-language

下载地址:https://github.com/Chuyu-Team/Dism-Multi-language/releases/download/v10.1.1002.1/Dism++10.1.1002.1.zip

解压缩得到文件夹Dism++10.1.1002.1

8.WinPE 下载

在参考资料中的百度网盘中下载

解压缩后的文件列表如下:

boot文件夹

efi文件夹

sources文件夹

bootmgr.efi文件

0x04 安装Win11的方法

1.解锁Bootloader

注:

解锁Bootloader将擦除Android系统的所有数据

(1)启动开发者选项

打开OnePlus 6T,依次选择设置 -> 关于手机,多次点击版本号可启动开发者模式

(2)修改手机设置

依次选择设置 -> 系统 -> 开发者选项,打开OEM解锁、USB调试和高级重启

按住电源键,选择引导加载器,进入Bootloader模式,此时DEVICE STATE状态为locked

(3)连接设备

通过USB数据线将OnePlus 6T连接Windows系统

(4)解锁

Windows系统的命令行执行:

fastboot oem unlock

OnePlus 6T用音量+选择yes,按电源键进行确认

至此,解锁完成。

解锁操作将会清空所有数据,此时需要重新启动开发者模式,打开USB调试和高级重启

解锁后每次开机会出现提示The bootloader is unlocked

2.刷入TWRP

(1)进入Bootloader模式

在关机状态下,同时按住电源键和音量-

也可以在开机状态下,按住电源键,选择引导加载器,进入Bootloader模式

此时DEVICE STATE状态为unlocked

(2)连接设备

通过USB数据线将OnePlus 6T连接Windows系统

通过Windows系统命令行查看设备:

fastboot devices

能够获得回显

(3)刷入TWRP

Windows系统的命令行执行:

fastboot boot twrp-3.6.1_9-0-fajita.img

如下图

fc7c97805c5a92c2a784eaeba8ad08f.png

等待OnePlus 6T启动TWRP

3.分区

进入TWRP后,将parted复制到OnePlus 6T的根目录,将twrp-installer-3.6.1_9-0-fajita.zip复制到OnePlus 6T的根目录

在TWRP中,安装twrp-installer-3.6.1_9-0-fajita.zip,这是为了方便以后在进入Recovery模式会自动启动TWRP

在TWRP中,选择Reboot -> Recovery,重新进入Recovery模式

此时可选择两种方式运行parted进行分区:

(1)通过Windows的命令行执行

adb shell
cp /sdcard/parted /sbin/
chmod 755 /sbin/parted
umount /data && umount /sdcard
parted /dev/block/sda

(2)在OnePlus 6T的TWRP中直接操作

依次选择Advanced -> Terminal

cp /sdcard/parted /sbin/
chmod 755 /sbin/parted
umount /data && umount /sdcard
parted /dev/block/sda

执行cp /sdcard/parted /sbin/的原因是因为在执行umount /sdcard后,无法访问/sdcard下的文件

查看分区:

(parted) p

删除分区userdata:

(parted) rm 17

创建分区:

(parted) mkpart esp fat32 6559MB 7000MB
(parted) mkpart pe fat32 7000MB 17000MB
(parted) mkpart win ntfs 17000MB 200GB
(parted) mkpart userdata ext4 200GB 246GB

我的环境下,esp对应的分区号为17,对应的命令如下:

(parted) set 17 esp on

在TWRP中,选择Reboot -> Recovery

4.格式化

重新进入Recovery后依次选择Advanced -> Terminal,命令如下:

mkfs.fat -F32 -s1 /dev/block/by-name/pe
mkfs.fat -F32 -s1 /dev/block/by-name/esp
mkfs.ntfs -f /dev/block/by-name/win
mke2fs -t ext4 /dev/block/by-name/userdata

在TWRP中,选择Reboot -> Recovery,重新进入Recovery模式

5.挂载PE

重新进入Recovery后,将以下文件复制到手机中:

install.wim,Win11 ISO文件中的sources\install.wim

boot,解压自winpe

efi,解压自winpe

sources,解压自winpe

bootmgr.efi,解压自winpe

Dism++10.1.1002.1

fajita,解压自https://github.com/edk2-porting/WOA-Drivers/releases/download/v1.1.1/fajita.tar.gz

boot-fajita-10g.img,下载自https://github.com/edk2-porting/edk2-sdm845/releases/download/v1.1.1/boot-fajita-10g.img

文件如下图

b0ddd6b3f270b56d8164fd12f1f4db7.png

注:

手机使用fat32格式,无法直接复制大于4G的文件,可以选择将其复制到U盘中

选择Advanced -> Terminal,将文件复制到PE分区的命令如下:

mount /dev/block/by-name/pe /mnt
cp -r /sdcard/* /mnt

6.切换分区,选择Slot B

在TWRP中,选择Reboot -> SlotB

7.启动PE

在TWRP中,选择Install -> Install Image -> /mnt/boot-fajita-10g.img,刷入镜像的分区选择Boot

手机重启后进入PE系统,在手机上接入键盘、鼠标和U盘

8.安装Win11

打开PE中的C:\Dism++10.1.1002.1\Dism++ARM64.exe

在Dism++的页面,依次选择文件 -> 释放镜像

第一个参数设置为install.wim

第二个参数安装路径设置为D盘

勾选添加引导

点击确定

释放完毕后需要修复引导,依次选择工具箱 -> 修复引导

9.安装Win11驱动

在Dism++的页面,依次选择打开会话 -> 驱动管理 -> 添加驱动,选择fajita文件夹即可

10.设置盘符

我的环境下,esp对应的分区号为17,在PE中的CMD输入以下命令:

diskpart
select disk 0
list part
select part 17
assign letter=Y
exit

打开Y盘确认是否成功创建文件夹EFI

11.关闭签名验证

关闭签名的命令如下:

bcdedit /store Y:\efi\microsoft\boot\bcd /set {Default} testsigning on
bcdedit /store Y:\efi\microsoft\boot\bcd /set {Default} nointegritychecks on

关闭PE系统:

shutdown -s -t 0

12.进入Win11

按电源键进行开机,等待安装即可

补充1:Win11切换至Android

开机时按音量+,选择UEFI BootMenu,再选择Reboot to other slot

补充2:Android切换至Win11

进入Recovery模式,在TWRP中,选择Reboot -> SlotB

0x05 小结

本文介绍了在OnePlus6T上安装Win11的完整方法。

0x00 前言

Android渗透平台搭建的系列文章第二篇,介绍Android设备OnePlus6T上安装Win11操作系统的方法,记录细节。

测试设备:OnePlus 6T 10g+256g 迈凯伦

简单理解:采用骁龙845处理器的手机设备能够安装Arm版的Win11

完整资料:https://renegade-project.cn/#/README

参考资料:

http://www.oneplusbbs.com/thread-4446250-1.html

https://forum.renegade-project.org/t/6-windows/194

https://www.bilibili.com/video/BV1kM4y137bR

https://silime.gitee.io/2021/05/20/Windows10-on-arm64/

https://baijiahao.baidu.com/s?id=1721563590612500439&wfr=spider&for=pc

0x01 简介

本文将要介绍以下内容:

深度刷机的方法

安装Win11的准备

安装Win11的方法

0x02 深度刷机的方法

这里把深度刷机放在第一部分,是因为在刷机过程中很容易黑砖,只能通过深度刷机进行还原

在刷机过程中,错误的操作有可能导致手机无法开机,即9008 download模式,即常说的黑砖

这时只能通过深度刷机的方法重新刷入系统,也就是常说的救砖

救砖教程参考资料:http://www.oneplusbbs.com/thread-4446250-1.html

1.下载文件

在救砖教程中提供的网盘进行下载

(1)9008驱动

网盘中的高通9008驱动(推荐).exe

(2)线刷救砖包

OnePlus 6T迈凯伦定制版有专用的救砖包,网盘中提供的迈凯伦救砖包是氧OS版,后续还需要升级成氢OS

(3)一加万能工具包

如果无法识别OnePlus 6T,可以安装一加万能工具包 -> 驱动安装 -> 黑砖驱动

(4)氢OS系统安装包

文件列表如下图

32248cbfef1073ee244c309280d3b33.png

2.安装9008驱动

运行高通9008驱动(推荐).exe

3.安装底层驱动

(1)在Windows系统打开设备管理器,位置:我的电脑->右键->管理,在计算机管理中选择设备管理器

(2)OnePlus 6T在关机状态下,同时按住音量+和音量-不放,通过USB数据线将OnePlus 6T连接Windows系统

等待Windows系统自动安装驱动

在设备管理器中,查看”端口(COM和LPT)”,如果出现Qualcomm HS-USB QDLoader 9008(COM3)代表底层驱动安装成功,如下图

7cb03b8be5c8b3b8111276f5edd0fa8.png

(3)管理员身份运行MsmDownloadTool V4.0.exe

如下图

7bf48519930d73be4ace5123ea5ee3d.png

点击Start开始刷机,如下图

c34845ce4b6c4fc6a9ec48273cb4f2d.png

等待一段时间,刷机成功,如下图

ab8975133c552824319f4441f1950dc.png

OnePlus 6T会自动开机,进行初始化,默认安装氧OS

4.刷入氢OS

网盘中提供的迈凯伦救砖包是氧OS版,需要刷成氢OS,可以使用OnePlus 6T内置的本地升级功能

(1)将OnePlus6THydrogen_41_OTA_032_all_1903251445_5c8a300ab3b84fa5.zip复制到OnePlus 6T的根目录

(2)在OnePlus 6T上依次选择设置 -> 系统 -> 系统更新-> 右上角设置 -> 本地升级,选择OnePlus6THydrogen_41_OTA_032_all_1903251445_5c8a300ab3b84fa5.zip

等待升级完成,点击重启手机

5.升级氢OS Android 10

在OnePlus 6T上依次选择设置 -> 系统 -> 系统更新,进行在线升级

在线升级后,最新版本为Android 11,在安装Win11之前我们先需要降级到Android 10,可以采用以下方法进行降级:

下载降级包:https://download.h2os.com/OnePlus6T/Back/OnePlus6THydrogen_34.K.51_OTA_051_all_2105262300_downgrade_e10c56ab63f04596.zip

在OnePlus 6T上依次选择设置 -> 系统 -> 系统更新-> 右上角设置 -> 本地升级,选择OnePlus6THydrogen_34.K.51_OTA_051_all_2105262300_downgrade_e10c56ab63f04596.zip

补充:官方OnePlus 6T系统安装包的下载地址:

https://www.oneplus.com/cn/support/softwareupgrade/details?code=PM1574150307705

注:

我也考虑过在氢OS Android 9进行卡刷直接升级到OS Android 10的方法和在氢OS Android 11进行卡刷直接降级到OS Android 10的方法,但是这两种方法我在测试过程中失败了,都是因为无法通过Bootloader模式安装TWRP

0x03 安装Win11的准备

Windows系统只需要配置adb和fastboot,然后是一些文件的下载

1.adb和fastboot

需要下载到Windows系统并配置环境变量

这里可以选择一键下载配置,下载地址:https://forum.xda-developers.com/t/official-tool-windows-adb-fastboot-and-drivers-15-seconds-adb-installer-v1-4-3.2588979/#post-48915118

运行adb-setup-1.4.3.exe按照提示即可

2.TWRP下载

下载页面:https://twrp.me/oneplus/oneplus6t.html

下载地址:

https://dl.twrp.me/fajita/twrp-3.6.1_9-0-fajita.img

https://dl.twrp.me/fajita/twrp-installer-3.6.1_9-0-fajita.zip

下载得到文件twrp-3.6.1_9-0-fajita.img和twrp-installer-3.6.1_9-0-fajita.zip

twrp-3.6.1_9-0-fajita.img用于通过fastboot启动TWRP,twrp-installer-3.6.1_9-0-fajita.zip用于永久安装TWRP

3.parted下载

Linux下的分区工具

源码下载地址:https://alpha.gnu.org/gnu/parted/parted-3.3.52.tar.xz

需要手动编译

也可以下载编译好的文件:https://pwdx.lanzoux.com/iUgSEmkrlmh

下载得到文件parted

4.驱动下载

项目页面:https://github.com/edk2-porting/WOA-Drivers

一加6T的下载地址:https://github.com/edk2-porting/WOA-Drivers/releases/download/v1.1.1/fajita.tar.gz

下载得到文件fajita.tar.gz

5.UEFI固件下载

项目地址:https://github.com/edk2-porting/edk2-sdm845

一加6T的下载地址:https://github.com/edk2-porting/edk2-sdm845/releases/download/v1.1.1/boot-fajita-10g.img

下载得到文件boot-fajita-10g.img

6.Win11镜像下载

下载arm版的Win11镜像文件,解压后将sources\install.wim复制提取出来

最终得到文件install.wim

7.Dism++下载

项目地址:https://github.com/Chuyu-Team/Dism-Multi-language

下载地址:https://github.com/Chuyu-Team/Dism-Multi-language/releases/download/v10.1.1002.1/Dism++10.1.1002.1.zip

解压缩得到文件夹Dism++10.1.1002.1

8.WinPE 下载

在参考资料中的百度网盘中下载

解压缩后的文件列表如下:

boot文件夹

efi文件夹

sources文件夹

bootmgr.efi文件

0x04 安装Win11的方法

1.解锁Bootloader

注:

解锁Bootloader将擦除Android系统的所有数据

(1)启动开发者选项

打开OnePlus 6T,依次选择设置 -> 关于手机,多次点击版本号可启动开发者模式

(2)修改手机设置

依次选择设置 -> 系统 -> 开发者选项,打开OEM解锁、USB调试和高级重启

按住电源键,选择引导加载器,进入Bootloader模式,此时DEVICE STATE状态为locked

(3)连接设备

通过USB数据线将OnePlus 6T连接Windows系统

(4)解锁

Windows系统的命令行执行:

fastboot oem unlock

OnePlus 6T用音量+选择yes,按电源键进行确认

至此,解锁完成。

解锁操作将会清空所有数据,此时需要重新启动开发者模式,打开USB调试和高级重启

解锁后每次开机会出现提示The bootloader is unlocked

2.刷入TWRP

(1)进入Bootloader模式

在关机状态下,同时按住电源键和音量-

也可以在开机状态下,按住电源键,选择引导加载器,进入Bootloader模式

此时DEVICE STATE状态为unlocked

(2)连接设备

通过USB数据线将OnePlus 6T连接Windows系统

通过Windows系统命令行查看设备:

fastboot devices

能够获得回显

(3)刷入TWRP

Windows系统的命令行执行:

fastboot boot twrp-3.6.1_9-0-fajita.img

如下图

fc7c97805c5a92c2a784eaeba8ad08f.png

等待OnePlus 6T启动TWRP

3.分区

进入TWRP后,将parted复制到OnePlus 6T的根目录,将twrp-installer-3.6.1_9-0-fajita.zip复制到OnePlus 6T的根目录

在TWRP中,安装twrp-installer-3.6.1_9-0-fajita.zip,这是为了方便以后在进入Recovery模式会自动启动TWRP

在TWRP中,选择Reboot -> Recovery,重新进入Recovery模式

此时可选择两种方式运行parted进行分区:

(1)通过Windows的命令行执行

adb shell
cp /sdcard/parted /sbin/
chmod 755 /sbin/parted
umount /data && umount /sdcard
parted /dev/block/sda

(2)在OnePlus 6T的TWRP中直接操作

依次选择Advanced -> Terminal

cp /sdcard/parted /sbin/
chmod 755 /sbin/parted
umount /data && umount /sdcard
parted /dev/block/sda

执行cp /sdcard/parted /sbin/的原因是因为在执行umount /sdcard后,无法访问/sdcard下的文件

查看分区:

(parted) p

删除分区userdata:

(parted) rm 17

创建分区:

(parted) mkpart esp fat32 6559MB 7000MB
(parted) mkpart pe fat32 7000MB 17000MB
(parted) mkpart win ntfs 17000MB 200GB
(parted) mkpart userdata ext4 200GB 246GB

我的环境下,esp对应的分区号为17,对应的命令如下:

(parted) set 17 esp on

在TWRP中,选择Reboot -> Recovery

4.格式化

重新进入Recovery后依次选择Advanced -> Terminal,命令如下:

mkfs.fat -F32 -s1 /dev/block/by-name/pe
mkfs.fat -F32 -s1 /dev/block/by-name/esp
mkfs.ntfs -f /dev/block/by-name/win
mke2fs -t ext4 /dev/block/by-name/userdata

在TWRP中,选择Reboot -> Recovery,重新进入Recovery模式

5.挂载PE

重新进入Recovery后,将以下文件复制到手机中:

install.wim,Win11 ISO文件中的sources\install.wim

boot,解压自winpe

efi,解压自winpe

sources,解压自winpe

bootmgr.efi,解压自winpe

Dism++10.1.1002.1

fajita,解压自https://github.com/edk2-porting/WOA-Drivers/releases/download/v1.1.1/fajita.tar.gz

boot-fajita-10g.img,下载自https://github.com/edk2-porting/edk2-sdm845/releases/download/v1.1.1/boot-fajita-10g.img

文件如下图

b0ddd6b3f270b56d8164fd12f1f4db7.png

注:

手机使用fat32格式,无法直接复制大于4G的文件,可以选择将其复制到U盘中

选择Advanced -> Terminal,将文件复制到PE分区的命令如下:

mount /dev/block/by-name/pe /mnt
cp -r /sdcard/* /mnt

6.切换分区,选择Slot B

在TWRP中,选择Reboot -> SlotB

7.启动PE

在TWRP中,选择Install -> Install Image -> /mnt/boot-fajita-10g.img,刷入镜像的分区选择Boot

手机重启后进入PE系统,在手机上接入键盘、鼠标和U盘

8.安装Win11

打开PE中的C:\Dism++10.1.1002.1\Dism++ARM64.exe

在Dism++的页面,依次选择文件 -> 释放镜像

第一个参数设置为install.wim

第二个参数安装路径设置为D盘

勾选添加引导

点击确定

释放完毕后需要修复引导,依次选择工具箱 -> 修复引导

9.安装Win11驱动

在Dism++的页面,依次选择打开会话 -> 驱动管理 -> 添加驱动,选择fajita文件夹即可

10.设置盘符

我的环境下,esp对应的分区号为17,在PE中的CMD输入以下命令:

diskpart
select disk 0
list part
select part 17
assign letter=Y
exit

打开Y盘确认是否成功创建文件夹EFI

11.关闭签名验证

关闭签名的命令如下:

bcdedit /store Y:\efi\microsoft\boot\bcd /set {Default} testsigning on
bcdedit /store Y:\efi\microsoft\boot\bcd /set {Default} nointegritychecks on

关闭PE系统:

shutdown -s -t 0

12.进入Win11

按电源键进行开机,等待安装即可

补充1:Win11切换至Android

开机时按音量+,选择UEFI BootMenu,再选择Reboot to other slot

补充2:Android切换至Win11

进入Recovery模式,在TWRP中,选择Reboot -> SlotB

0x05 小结

本文介绍了在OnePlus6T上安装Win11的完整方法。

0x00 前言

Android渗透平台搭建的系列文章将要介绍在Android设备上搭建各种用于渗透的操作系统。

本文作为第一篇,将要介绍Android设备Nexus6P安装Kali NetHunter的方法,记录细节。

Kali NetHunter目前最新的版本为2022年1月,对于这个版本,还没有一个完整的安装指南。

0x01 简介

本文将要介绍以下内容:

Kali NetHunter的不同版本

Nexus6P安装Kali NetHunter

0x02 Kali NetHunter的不同版本

参考资料:

https://www.kali.org/docs/nethunter/

Kali NetHunter分为三个不同的版本:

NetHunter Rootless,不需要root,不需要TWRP,可以从https://store.nethunter.com/下载apk安装,不支持Wifi和HID攻击

NetHunter Lite,不需要root,需要TWRP,功能不完整

NetHunter,需要root,需要TWRP,只支持部分Android设备,功能最完整

为了能够完整的体验Kali NetHunter的功能,我们需要安装NetHunter,支持的设备型号可参考:https://stats.nethunter.com/nethunter-images.html

这里选取官方首推的低端设备Nexus6P (Oreo),介绍安装方法

0x03 Nexus6P (Oreo)安装Kali NetHunter

基本概念:

adb:全称Android Debug Bridge,用来调试设备

fastboot:常用功能为设备解锁,刷写img文件,格式化系统分区和运行img文件

TWRP:全称Team Win Recovery Project,常用功能为刷机、备份和恢复

Magisk:常用功能为获得root权限

总体流程如下:

1.开启Nexus6P的OEM unlocking和USB debugging

2.使用adb进入Bootloder模式

3.使用fastboot刷入TWRP

4.通过TWRP安装Android系统镜像Oreo

5.通过TWRP安装Kali NetHunter和Magisk

具体步骤如下:

1.下载文件

(1)adb和fastboot

需要下载到Windows系统并配置环境变量

这里可以选择一键下载配置,下载地址:https://forum.xda-developers.com/t/official-tool-windows-adb-fastboot-and-drivers-15-seconds-adb-installer-v1-4-3.2588979/#post-48915118

运行adb-setup-1.4.3.exe按照提示即可

(2)TWRP

下载页面:https://dl.twrp.me/angler/

这里选择twrp-3.6.1_9-0-angler.img,下载地址:https://dl.twrp.me/angler/twrp-3.6.1_9-0-angler.img.html

将twrp-3.6.1_9-0-angler.img保存在Windows系统中,可通过fastboot刷入Nexus6P

(3)Oreo

Oreo是指Android 8的系统镜像

下载页面:https://developers.google.com/android/images

这里选择8.0.0 (OPR5.170623.014, Dec 2017),下载地址:https://dl.google.com/dl/android/aosp/angler-ota-opr5.170623.014-234956cb.zip

(4)Magisk

下载页面:https://github.com/topjohnwu/Magisk

这里选择Magisk-v21.4.zip,下载地址:https://github.com/topjohnwu/Magisk/releases/download/v21.4/Magisk-v21.4.zip

(5)Kali NetHunter

下载地址:https://kali.download/nethunter-images/kali-2022.1/nethunter-2022.1-angler-oreo-kalifs-full.zip

2.解锁Nexus6P的Bootloader

(1)启动开发者选项

打开Nexus6P,依次选择Settings -> System -> About phone,多次点击Build number可启动Developer options

(2)修改手机设置

点击Developer options,打开OEM unlocking和USB debugging

(3)连接设备

通过USB数据线将Nexus6P连接Windows系统

(4)解锁

Windows系统的命令行执行:

adb reboot bootloader

等待Nexus6P重启,进入Bootloader模式

Windows系统的命令行执行:

fastboot flashing unlock

Nexus6P用音量+选择yes,按电源键进行确认

至此,解锁完成。解锁后每次开机会出现提示Your device software can't be checked for corruption. Please lock the bootloader. PRESS POWER TO PAUSE BOOT

3.刷入TWRP

(1)进入Bootloader模式

关机状态下,同时按住电源键和音量-

(2)连接设备

通过USB数据线将Nexus6P连接Windows系统

通过Windows系统命令行查看设备:

fastboot devices

能够获得回显

(3)刷入TWRP

Windows系统的命令行执行:

fastboot flash recovery twrp-3.6.1_9-0-angler.img

如下图

b991f6c1ba9ed3d7b6cc4f55aea1b02.png

(4)Nexus6P启动TWRP

Nexus6P用音量-切换到Recovery mode,按电源键进行确认

等待Nexus6P启动TWRP

4.将文件复制到Nexus6P

(1)Oreo

将镜像文件angler-ota-opr5.170623.014-234956cb.zip复制到手机的根目录下

在Nexus6P启动TWRP后,Windows系统可以访问手机内的文件,可以进行文件复制操作,如下图

2c8d4f570c61113b83786d9dc2d8def.png

也可以通过adb的push命令复制:adb push angler-ota-opr5.170623.014-234956cb.zip /sdcard

注:

push命令需要等待很长时间

(2)Kali NetHunter

将nethunter-2022.1-angler-oreo-kalifs-full.zip复制到手机的根目录下

(3)Magisk-v21.4.zip

将Magisk-v21.4.zip复制到手机的根目录下

5.使用TWRP安装Oreo 8.0

在Nexus6P的TWRP页面,选择Install,选择angler-ota-opr5.170623.014-234956cb.zip进行安装

安装成功后选择Reboot System

至此,Android Oreo 8.0系统安装完成

6.使用TWRP安装Kali NetHunter和Magisk

(1)进入TWRP

Nexus6P关机状态下,同时按住电源键和音量-

通过USB数据线将Nexus6P连接Windows系统

Windows系统命令行:

fastboot.exe flash recovery twrp-3.6.1_9-0-angler.img

Nexus6P用音量-切换到Recovery mode,按电源键进行确认

等待Nexus6P启动TWRP

(2)安装Kali NetHunter

在Nexus6P的TWRP页面,选择Install,选择nethunter-2022.1-angler-oreo-kalifs-full.zip

需要取消选择Reboot after installation is complete避免安装后Nexus6P自动重启

经过漫长的等待,安装成功

(3)安装Magisk-v21.4.zip

在Nexus6P的TWRP页面,选择Install,选择Magisk-v21.4.zip

安装成功后选择Reboot System

至此,Kali NetHunter安装完成

在Nexus6P的应用列表中,能够看到新安装的NetHunter、NetHunter Terminal 和NetHunterKeX

0x04 小结

本文介绍了在Nexus6P安装Kali NetHunter的方法,其他设备可依次类推。

0x00 前言

Android渗透平台搭建的系列文章将要介绍在Android设备上搭建各种用于渗透的操作系统。

本文作为第一篇,将要介绍Android设备Nexus6P安装Kali NetHunter的方法,记录细节。

Kali NetHunter目前最新的版本为2022年1月,对于这个版本,还没有一个完整的安装指南。

0x01 简介

本文将要介绍以下内容:

Kali NetHunter的不同版本

Nexus6P安装Kali NetHunter

0x02 Kali NetHunter的不同版本

参考资料:

https://www.kali.org/docs/nethunter/

Kali NetHunter分为三个不同的版本:

NetHunter Rootless,不需要root,不需要TWRP,可以从https://store.nethunter.com/下载apk安装,不支持Wifi和HID攻击

NetHunter Lite,不需要root,需要TWRP,功能不完整

NetHunter,需要root,需要TWRP,只支持部分Android设备,功能最完整

为了能够完整的体验Kali NetHunter的功能,我们需要安装NetHunter,支持的设备型号可参考:https://stats.nethunter.com/nethunter-images.html

这里选取官方首推的低端设备Nexus6P (Oreo),介绍安装方法

0x03 Nexus6P (Oreo)安装Kali NetHunter

基本概念:

adb:全称Android Debug Bridge,用来调试设备

fastboot:常用功能为设备解锁,刷写img文件,格式化系统分区和运行img文件

TWRP:全称Team Win Recovery Project,常用功能为刷机、备份和恢复

Magisk:常用功能为获得root权限

总体流程如下:

1.开启Nexus6P的OEM unlocking和USB debugging

2.使用adb进入Bootloder模式

3.使用fastboot刷入TWRP

4.通过TWRP安装Android系统镜像Oreo

5.通过TWRP安装Kali NetHunter和Magisk

具体步骤如下:

1.下载文件

(1)adb和fastboot

需要下载到Windows系统并配置环境变量

这里可以选择一键下载配置,下载地址:https://forum.xda-developers.com/t/official-tool-windows-adb-fastboot-and-drivers-15-seconds-adb-installer-v1-4-3.2588979/#post-48915118

运行adb-setup-1.4.3.exe按照提示即可

(2)TWRP

下载页面:https://dl.twrp.me/angler/

这里选择twrp-3.6.1_9-0-angler.img,下载地址:https://dl.twrp.me/angler/twrp-3.6.1_9-0-angler.img.html

将twrp-3.6.1_9-0-angler.img保存在Windows系统中,可通过fastboot刷入Nexus6P

(3)Oreo

Oreo是指Android 8的系统镜像

下载页面:https://developers.google.com/android/images

这里选择8.0.0 (OPR5.170623.014, Dec 2017),下载地址:https://dl.google.com/dl/android/aosp/angler-ota-opr5.170623.014-234956cb.zip

(4)Magisk

下载页面:https://github.com/topjohnwu/Magisk

这里选择Magisk-v21.4.zip,下载地址:https://github.com/topjohnwu/Magisk/releases/download/v21.4/Magisk-v21.4.zip

(5)Kali NetHunter

下载地址:https://kali.download/nethunter-images/kali-2022.1/nethunter-2022.1-angler-oreo-kalifs-full.zip

2.解锁Nexus6P的Bootloader

(1)启动开发者选项

打开Nexus6P,依次选择Settings -> System -> About phone,多次点击Build number可启动Developer options

(2)修改手机设置

点击Developer options,打开OEM unlocking和USB debugging

(3)连接设备

通过USB数据线将Nexus6P连接Windows系统

(4)解锁

Windows系统的命令行执行:

adb reboot bootloader

等待Nexus6P重启,进入Bootloader模式

Windows系统的命令行执行:

fastboot flashing unlock

Nexus6P用音量+选择yes,按电源键进行确认

至此,解锁完成。解锁后每次开机会出现提示Your device software can't be checked for corruption. Please lock the bootloader. PRESS POWER TO PAUSE BOOT

3.刷入TWRP

(1)进入Bootloader模式

关机状态下,同时按住电源键和音量-

(2)连接设备

通过USB数据线将Nexus6P连接Windows系统

通过Windows系统命令行查看设备:

fastboot devices

能够获得回显

(3)刷入TWRP

Windows系统的命令行执行:

fastboot flash recovery twrp-3.6.1_9-0-angler.img

如下图

b991f6c1ba9ed3d7b6cc4f55aea1b02.png

(4)Nexus6P启动TWRP

Nexus6P用音量-切换到Recovery mode,按电源键进行确认

等待Nexus6P启动TWRP

4.将文件复制到Nexus6P

(1)Oreo

将镜像文件angler-ota-opr5.170623.014-234956cb.zip复制到手机的根目录下

在Nexus6P启动TWRP后,Windows系统可以访问手机内的文件,可以进行文件复制操作,如下图

2c8d4f570c61113b83786d9dc2d8def.png

也可以通过adb的push命令复制:adb push angler-ota-opr5.170623.014-234956cb.zip /sdcard

注:

push命令需要等待很长时间

(2)Kali NetHunter

将nethunter-2022.1-angler-oreo-kalifs-full.zip复制到手机的根目录下

(3)Magisk-v21.4.zip

将Magisk-v21.4.zip复制到手机的根目录下

5.使用TWRP安装Oreo 8.0

在Nexus6P的TWRP页面,选择Install,选择angler-ota-opr5.170623.014-234956cb.zip进行安装

安装成功后选择Reboot System

至此,Android Oreo 8.0系统安装完成

6.使用TWRP安装Kali NetHunter和Magisk

(1)进入TWRP

Nexus6P关机状态下,同时按住电源键和音量-

通过USB数据线将Nexus6P连接Windows系统

Windows系统命令行:

fastboot.exe flash recovery twrp-3.6.1_9-0-angler.img

Nexus6P用音量-切换到Recovery mode,按电源键进行确认

等待Nexus6P启动TWRP

(2)安装Kali NetHunter

在Nexus6P的TWRP页面,选择Install,选择nethunter-2022.1-angler-oreo-kalifs-full.zip

需要取消选择Reboot after installation is complete避免安装后Nexus6P自动重启

经过漫长的等待,安装成功

(3)安装Magisk-v21.4.zip

在Nexus6P的TWRP页面,选择Install,选择Magisk-v21.4.zip

安装成功后选择Reboot System

至此,Kali NetHunter安装完成

在Nexus6P的应用列表中,能够看到新安装的NetHunter、NetHunter Terminal 和NetHunterKeX

0x04 小结

本文介绍了在Nexus6P安装Kali NetHunter的方法,其他设备可依次类推。

0x00 前言

WMI(Windows Management Instrumentation)是一种管理功能,提供了一个统一的环境来访问Windows系统组件,支持本地和远程访问。在之前的文章《WMI Attacks》、《WMI Backdoor》、《WMI Defense》和《Study Notes of WMI Persistence using wmic.exe》介绍过相关内容,本文将要在信息收集和横向移动的角度,分析wmic的常用方法,结合利用思路,给出防御建议。

0x01 简介

本文将要介绍以下内容:

wbemtest用法

通过wmic查询主机信息

通过wmic修改注册表

通过wmic执行程序

本地和远程访问WMI服务

0x02 wbemtest用法

参考资料:

https://docs.microsoft.com/en-us/mem/configmgr/develop/core/understand/introduction-to-wbemtest

Windows系统默认安装,可以用于连接WMI命名空间,访问WMI服务

借助wbemtest,我们可以获得WMI完整的功能细节和使用方法

界面如下图

173584b19168096ba15863a0e9c14b9.png

点击Connect...,输入WMI命名空间root\cimv2,连接到root\cimv2后,可进入主页面,如下图

常用功能示例如下:

(1)Enum Classes…

枚举类,可以用来枚举所有的对象,查询每个类的定义

这里以查询Win32_Process对象为例:

依次选中Enum Classes... -> Recursive -> OK,选中Win32_Process,双击进入对象编辑器,如下图

Properities栏可以查看属性,例如这里有Handle,可以通过后文的Query...进行查询

Methods栏可以查看方法,例如这里有Create,可以通过后文的Execute Method...进行调用

(2)Query…

查询属性,需要输入WMI Query Language (WQL)

参考资料:

https://docs.microsoft.com/en-us/windows/win32/wmisdk/wql-sql-for-wmi

语法示例:

SELECT Handle FROM Win32_Process

查询结果如下图

这条查询语句换成wmic的命令如下:

wmic /namespace:"\\root\cimv2" PATH Win32_Process get Handle

(3)Execute Method…

调用方法,这里以调用Win32_Process对象的Create方法为例

设置Object Path为Win32_Process,点击OK

在弹出的界面设置设置Method为Create

点击Edit in Parameters...,在弹出的界面中依次选择CommandLine -> Edit Property

设置Valve为calc,如下图

点击Save Object -> Execute!,弹出计算器

以上操作换成wmic的完整命令如下:

wmic /namespace:"\\root\cimv2" PATH Win32_Process call create "calc"

简写命令如下:

wmic process call create "calc"

0x03 本地和远程访问WMI服务

1.查询主机名称

本地:

wmic /namespace:"\\root\cimv2" PATH Win32_ComputerSystem get Name

远程:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\\root\cimv2" PATH Win32_ComputerSystem get Name

2.注册表操作

具体细节可参考《Study Notes of WMI Persistence using wmic.exe》

这里列出几个常用命令:

(1)获得当前用户的远程桌面连接历史记录

枚举注册表键值HKCU:\Software\Microsoft\Terminal Server Client\Servers,命令如下:

wmic /namespace:"\\root\cimv2" path stdregprov call EnumKey ^&h80000001,"Software\Microsoft\Terminal Server Client\Servers"

(2)远程查询和修改Restricted Admin Mode

关于Restricted Admin Mode的内容可参考《渗透技巧——Pass the Hash with Remote Desktop(Restricted Admin mode)》

远程查询和修改Restricted Admin Mode的C Sharp实现可参考:

https://github.com/GhostPack/RestrictedAdmin

https://github.com/airzero24/WMIReg

远程查询Restricted Admin Mode的wmic命令如下:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\\root\cimv2" path stdregprov call GetDWORDValue ^&H80000002,"System\CurrentControlSet\Control\Lsa","DisableRestrictedAdmin"

远程开启Restricted Admin Mode的wmic命令如下:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\\root\cimv2" path stdregprov call SetDWORDValue ^&H80000002,"System\CurrentControlSet\Control\Lsa","DisableRestrictedAdmin","0"

远程关闭Restricted Admin Mode的wmic命令如下:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\\root\cimv2" path stdregprov call SetDWORDValue ^&H80000002,"System\CurrentControlSet\Control\Lsa","DisableRestrictedAdmin","1"

3.执行程序

本地:

wmic process call create "calc"

远程:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" process call create "calc"

4.进程操作

查询本地所有进程:

wmic /namespace:"\\root\cimv2" PATH Win32_Process get name,processid,commandline /FORMAT:list

查询远程主机所有进程:

wmic /node:192.168.1.1 /user:"administrator" /password:"123456" /namespace:"\\root\cimv2" PATH Win32_Process get name,processid,commandline /FORMAT:list

其他用法还可参考:https://docs.microsoft.com/en-us/archive/blogs/jhoward/wmic-samples

0x04 防御检测

需要注意的是,默认配置下WMI的日志记录很少,无法记录WMI的命令细节

WMI-Activity的Trace日志能够记录简单的日志,但也无法记录WMI的命令细节,开启方法如下:

打开Event Viewer,选择View -> Show Analytic and Debug Logs

依次选择Applications and Services Logs -> Microsoft -> Windows -> WMI-Activity -> Trace,点击Enable Log

使用wmic命令时,默认启动进程c:\windows\system32\wbem\wmic.exe,这里可以选择Sysmon记录进程创建的细节,查看CommandLine获得WMI的命令细节

详细日志细节可参考:https://jpcertcc.github.io/ToolAnalysisResultSheet/details/wmic.htm

也可以选择开源的数字取证工具Velociraptor,能够记录进程创建的细节,包括CommandLine

0x05 小结

本文介绍了wmic的相关基础知识,结合利用思路,给出防御建议。