Cybersecurity Q&A

Browse concise answers derived from our published, source-linked cybersecurity coverage.

How do Pc and Pc2.2 differ in the context of DanderSpritz trojan generation?

Pc and Pc2.2 correspond to different versions of the PeddleCheap communication module. According to their `Version.xml` files, Pc2.2 is PeddleCheap 2.2.0.2 while Pc is PeddleCheap 2.3.0, a higher version. Using the older Pc2.2 may generate trojans that fail to connect back, as observed during testing. For reliable callback, it is recommended to use the Pc module, as detailed in the [NSA DanderSpiritz Testing Guide](/news/nsa-danderspiritz-testing-guide-trojan-generation-and-testing).

What is the difference between Level3 and Level4 trojans in DanderSpritz?

In DanderSpritz, Level represents the connection method. Level3 trojans use a reverse connection: the controller listens on a port while the target host initiates the connection. Level4 trojans use a forward connection: the target host opens a listening port and the controller actively connects to it. This distinction is crucial for selecting the correct listener or connector in [PeddleCheap](/news/nsa-danderspiritz-testing-guide-trojan-generation-and-testing) when generating and using trojans.

Why does executing `pc_prep` in DanderSpritz not return any echo, and how can it be fixed?

The missing echo when running `pc_prep` is typically due to downloading an incomplete version of the FuzzBunch framework from unverified sources like [x0rz/EQGRP_Lost_in_Translation](https://github.com/x0rz/EQGRP_Lost_in_Translation). The correct repository is [fuzzbunch/fuzzbunch](https://github.com/fuzzbunch/fuzzbunch), but even that may require supplementing missing files. A tested fix is to use a forked version that completes these files, as described in the [NSA DanderSpiritz Testing Guide - Trojan Generation and Testing](/news/nsa-danderspiritz-testing-guide-trojan-generation-and-testing). Alternatively, ensure the log directory follows the required format `c:\logs\xxx`.

Why is it useful to set up an ADAudit Plus vulnerability debugging environment?

Setting up a debugging environment allows security researchers to inspect the application’s runtime behavior, test vulnerabilities, and analyze code flows without affecting production systems. It provides controlled access to the database and enables step‑by‑step debugging via remote JVM settings. This approach is a standard practice for vulnerability research; similar setups exist for other ManageEngine tools like [ADManager Plus](/news/setting-up-a-vulnerability-debugging-environment-for-admanager-plus) and [Zimbra](/news/setting-up-zimbra-vulnerability-debugging-environment).

What is the default PostgreSQL password for the `postgres` user in ADAudit Plus?

The password for the `postgres` user is hard‑coded in `AdventNetADAPServer.jar` within the class `com.adventnet.sym.adsm.common.server.mssql.tools.ChangeDBServer.isDBServerRunning()`. The static password is `Stonebraker`. You can connect using: `"C:\Program Files\ManageEngine\ADAudit Plus\pgsql\bin\psql" "host=127.0.0.1 port=33307 dbname=adap user=postgres password=Stonebraker"`. For more on debugging environment configuration, see the [ADAudit Plus article](/news/setting-up-adaudit-plus-vulnerability-debugging-environment).

How can I obtain and decrypt the database user password for ADAudit Plus?

The encrypted password for the `adap` user is stored in `C:\Program Files\ManageEngine\ADAudit Plus\conf\database_params.conf`. The decryption algorithm is in `com.zoho.framework.utils.crypto.CryptoUtil` within `framework-tools.jar`, and the key is found in `customer-config.xml` under the `CryptTag` attribute. You can write a decryption program (Java or other) using the ciphertext and key to retrieve the plaintext password, as demonstrated in [this article](/news/setting-up-adaudit-plus-vulnerability-debugging-environment). Similar encryption patterns appear in other ManageEngine products; see [Setting up Zimbra Vulnerability Debugging Environment](/news/setting-up-zimbra-vulnerability-debugging-environment) for comparative analysis.

Where are the main jar files containing ADAudit Plus web functionality located?

The main jar files for web functionality are stored in `C:\Program Files\ManageEngine\ADAudit Plus\lib`. The key files are `AdventNetADAPServer.jar` and `AdventNetADAPClient.jar`. For more details on setting up the debugging environment, refer to the [ADAudit Plus vulnerability debugging setup](/news/setting-up-adaudit-plus-vulnerability-debugging-environment).

How do I enable remote debugging for ADAudit Plus?

To enable remote debugging, modify the `wrapper.conf` file at `C:\Program Files\ManageEngine\ADAudit Plus\conf\wrapper.conf` by adding a debugging parameter such as `wrapper.java.additional.25=-Xdebug`. Make sure the sequence number is incremented properly, then restart the wrapper.exe process. This approach is similar to configuring debugging for other ManageEngine products, as detailed in [this article](/news/setting-up-adaudit-plus-vulnerability-debugging-environment).

What are the key authentication and encoding details to consider when writing a Python Exchange PowerShell client?

Kerberos authentication requires the hostname (lowercase) and a full FQDN – IPs are not supported. The HTTP headers must include `Accept-Encoding: identity`. Both sent and received data are encoded (e.g., base64). After the initial Kerberos step, subsequent requests carry normal command payloads. These nuances are crucial for interoperability and are detailed in [Penetration Technique: Remote Access to Exchange PowerShell](/news/penetration-technique-remote-access-to-exchange-powershell) and the Python implementation article.

What is TabShell and how can Python be used to exploit it?

TabShell is an exploitation technique targeting Exchange PowerShell via specially crafted commands. While public POCs use PowerShell, Python can replicate the attack by analyzing intercepted traffic from a local Flask proxy or SSRF vulnerabilities (like CVE-2022-41040). The article in [Penetration Technique: Python Implementation of Exchange PowerShell](/news/penetration-technique-pythonimplementation-of-exchange-powershell) shows how to reconstruct the TabShell communication data in Python, enabling automated exploitation.

How can pypsrp be used to debug the communication format between Python and Exchange PowerShell?

You can enable debug output in `pypsrp/wsman.py` by adding logging to capture the raw data in the `send()` method. This reveals the exact POST requests and responses, including headers and encoded payloads. Comparing this with known formats from [Penetration Technique: Remote Access to Exchange PowerShell](/news/penetration-technique-remote-access-to-exchange-powershell) helps in building a clean Python implementation. The article demonstrates this debugging approach with sample code.

What are the core components and steps to implement remote Exchange PowerShell commands in Python?

The implementation requires understanding the WSMan communication protocol, Kerberos or Basic authentication, and data encoding. Using `pypsrp`, you can send POST requests with specific headers (like `Accept-Encoding: identity`) and handle authentication by first performing Kerberos exchange then sending the actual command. The server returns encoded data that must be decoded. For full details, see the development section in [Penetration Technique: Python Implementation of Exchange PowerShell](/news/penetration-technique-pythonimplementation-of-exchange-powershell).

Why is Python preferred over PowerShell for remote Exchange PowerShell execution in penetration testing?

In penetration testing, we often avoid using PowerShell to reduce detection and logs. Python provides a more flexible and stealthy way to remotely execute Exchange PowerShell commands. As described in [Penetration Technique: Python Implementation of Exchange PowerShell](/news/penetration-technique-pythonimplementation-of-exchange-powershell), tools like `pypsrp` allow us to interface with Exchange servers without relying on native PowerShell sessions, making it ideal for red team operations.

What commands and tools are used to connect to the vRealize Log Insight Cassandra database?

You can connect using the file `/usr/lib/loginsight/application/lib/apache-cassandra-3.11.11/bin/cqlsh-no-pass`, which encapsulates the necessary parameters. Alternatively, use CQL (Cassandra Query Language) commands directly to query user configuration. This approach is also applicable to other product debugging setups like [Password Manager Pro](/news/password-manager-pro-vulnerability-debugging-environment-setup).

How can I reset the admin password for vRealize Log Insight web login?

Use the script `/usr/lib/loginsight/application/sbin/li-reset-admin-passwd.sh` to reset the admin password. This script interacts with the underlying Cassandra database, which stores user credentials. For more on database operations, refer to the [vRealize Log Insight debugging guide](/news/vrealize-log-insight-vulnerability-debugging-environment-setup).

How do I enable remote debugging for vRealize Log Insight services?

Check the status of all services to locate the web-related service `loginsight.service`. Then view its startup file at `/usr/lib/loginsight/application/bin/loginsight` and examine the Java process parameters using `ps aux|grep java` to verify the remote debugging configuration. This setup is similar to other VMware product debugging environments like [vRealize Operations Manager](/news/setting-up-vrealize-operations-manager-vulnerability-debugging-environment).

How do I install vRealize Log Insight for vulnerability debugging?

First, download the OVA file from the VMware evaluation center (you need a registered account). Then import the OVA into VMware Workstation and access the configuration page at https://<IP> to start a new deployment and set the admin password. For detailed steps, see the full guide on [vRealize Log Insight Vulnerability Debugging Environment Setup](/news/vrealize-log-insight-vulnerability-debugging-environment-setup).

How does the database encryption algorithm in ADManager Plus work for user passwords?

ADManager Plus uses the same bcrypt algorithm as ADAudit Plus to store user passwords in the database. The hashed value (e.g., `$2a$12$sdX7S5c11.9vZqC0OOPZQ.9PLFBKubufTqUNyLbom2Ub13d573jhi`) is stored in tables like `usertable`. To query or modify passwords, you can use SQL examples provided in the article. For a similar setup, see [ADAudit Plus Vulnerability Debugging Environment Setup](/news/adaudit-plus-vulnerability-debugging-environment-setup).

What is the default password for the PostgreSQL 'postgres' user in ADManager Plus?

The default password for the `postgres` user in ADManager Plus is `Stonebraker`. This is used for direct database access alongside the `admanager` user. For more details on database configuration, refer to the original article.

How can I decrypt the ADManager Plus database user password from the configuration file?

The encrypted password for the `admanager` user is stored in `C:\Program Files\ManageEngine\ADManager Plus\conf\database_params.conf`. The decryption algorithm resides in `CryptoUtil.class` within `framework-tools.jar`. The key (e.g., `o0hV5KhXBIKRH2PAmnCx`) is fixed in `customer-config.xml`. Using the provided decryption code, you can obtain the plaintext password, as demonstrated in the article [Setting up a Vulnerability Debugging Environment for ADManager Plus](/news/setting-up-a-vulnerability-debugging-environment-for-admanager-plus).