MoustachedBouncer is a cyberespionage group found by ESET Analysis and first publicly disclosed on this blogpost. The group has been energetic since no less than 2014 and solely targets overseas embassies in Belarus. Since 2020, MoustachedBouncer has almost definitely been capable of carry out adversary-in-the-middle (AitM) assaults on the ISP stage, inside Belarus, with the intention to compromise its targets. The group makes use of two separate toolsets that we now have named NightClub and Disco.
Key factors of this report:
- MoustachedBouncer has been working since no less than 2014.
- We assess with medium confidence that they’re aligned with Belarus’s pursuits.
- MoustachedBouncer specializes within the espionage of overseas embassies in Belarus.
- MoustachedBouncer has used the adversary-in-the-middle approach since 2020 to redirect captive portal checks to a C&C server and ship malware plugins by way of SMB shares.
- We imagine that MoustachedBouncer makes use of a lawful interception system (corresponding to SORM) to conduct its AitM operations.
- We assess with low confidence that MoustachedBouncer is carefully cooperating with Winter Vivern, one other group focusing on European diplomats however utilizing completely different TTPs.
- Since 2014, the group has been working a malware framework that we now have named NightClub. It makes use of the SMTP and IMAP (e mail) protocols for C&C communications.
- Beginning in 2020, the group has been utilizing, in parallel, a second malware framework we now have named Disco.
- Each NightClub and Disco assist extra spying plugins together with a screenshotter, an audio recorder, and a file stealer.
The group’s intricate techniques, strategies and procedures have been additionally mentioned on the ESET Analysis Podcast. Simply press play to study extra from ESET’s Director of Menace Analysis Jean-Ian Boutin and ESET Distinguished Researcher Aryeh Goretsky.
Victimology
Based on ESET telemetry, the group targets overseas embassies in Belarus, and we now have recognized 4 completely different nations whose embassy employees have been focused: two from Europe, one from South Asia, and one from Africa. The important thing dates are proven in Determine 1.

Attribution
Whereas we monitor MoustachedBouncer as a separate group, we now have discovered parts that make us assess with low confidence that they’re carefully collaborating with one other group generally known as Winter Vivern. The latter was found in 2021 and remains to be energetic as of 2023. In March 2023, Winter Vivern used a recognized XSS vulnerability (CVE-2022-27926) within the Zimbra mail portal with the intention to steal webmail credentials of diplomats of a number of European nations. This marketing campaign was publicly disclosed by Proofpoint researchers.
MoustachedBouncer’s exercise spans from 2014 to 2022 and the TTPs of the group have developed over time. For instance, we now have first seen them use AitM assaults solely in 2020. Nonetheless, the focused vertical has stayed the identical.
Desk 1 exhibits the traits of every marketing campaign. Given these parts, we assess with excessive confidence that they’re all linked to MoustachedBouncer.
Desk 1. Connections between the MoustachedBouncer campaigns
|
VirusTotal |
Sufferer A (2017) |
Sufferer B |
Sufferer C |
Sufferer D |
NightClub implant |
X |
X |
|
X |
|
NightClub plugins |
|
X |
X |
X |
|
Disco implant |
|
|
X |
|
X |
SharpDisco dropper |
|
|
X |
|
|
Compromise by way of AitM |
? |
? |
? |
? |
X |
Malware supply by way of AitM on SMB shares |
|
|
X |
|
X |
Victims: overseas embassies in Belarus |
? |
X |
X |
X |
X |
Compromise vector: AitM
On this part, we element the preliminary entry for Disco. We don’t but know the preliminary entry technique MoustachedBouncer makes use of to put in NightClub.
Faux Home windows Replace
To compromise their targets, MoustachedBouncer operators tamper with their victims’ web entry, in all probability on the ISP stage, to make Home windows imagine it’s behind a captive portal. Home windows 10 checks whether or not it’s capable of entry the web with an HTTP request to http://www.msftconnecttest.com/connecttest.txt. In case the reply will not be Microsoft Join Check, a browser window is opened to http://www.msftconnecttest.com/redirect . For IP ranges focused by MoustachedBouncer, the community site visitors is tampered on the ISP stage, and the latter URL redirects to a seemingly reliable, however pretend, Home windows Replace URL, http://updates.microsoft[.]com/. Therefore, the pretend Home windows Replace web page will likely be exhibited to a possible sufferer upon community connection. The pretend replace web page is proven in Determine 2. The textual content we noticed is in Russian, almost definitely as a result of that’s the foremost language utilized in Belarus, however it’s attainable that variations in different languages exist. The web page signifies that there are important system safety updates that should be put in.

Observe that it’s utilizing unencrypted HTTP and never HTTPS, and that the updates.microsoft[.]com subdomain doesn’t exist on Microsoft’s nameservers, so it doesn’t resolve on the open web. In the course of the assault, this area resolved to 5.45.121[.]106 on the goal’s machine. This IP tackle is used for parking domains and is unrelated to Microsoft. Though that is an internet-routable IP tackle, site visitors to this IP by no means reaches the web whereas the AitM assault is ongoing. Each the DNS resolutions and the HTTP replies have been injected in transit, in all probability on the ISP stage.
An vital level is that the adversary-in-the-middle (AitM) approach solely happens in opposition to just a few chosen organizations (maybe simply embassies), not countrywide. It’s not attainable to breed the redirection by merely exiting from a random IP tackle in Belarus.
Malware supply
The HTML web page, proven in Determine 2, hundreds JavaScript code from http://updates.microsoft[.]com/jdrop.js. This script first calls setTimeout to execute the operate jdrop one second after the web page has loaded. That operate (see Determine 3) shows a modal window with a button named Получить обновления (translation: Get updates).

A click on on the button executes the replace operate, proven in Determine 4.

This operate triggers the obtain of a pretend Home windows Replace installer from the legitimate-seeming URL http://updates.microsoft[.]com/MicrosoftUpdate845255.zip. It additionally shows some directions to put in the replace: Для установки обновлений, скачайте и запустите “MicrosoftUpdate845255.msi”. (translation: To put in updates, obtain and run “MicrosoftUpdate845255.msi”).
We have been unable to retrieve the downloaded MicrosoftUpdate845255.zip file however our telemetry exhibits it accommodates a malicious executable named MicrosoftUpdate845255.exe.
Written in Go, it creates a scheduled process that executes 35.214.56[.]2OfficeBrokerOfficeBroker.exe each minute. Like the trail suggests, it fetches the executable by way of SMB from 35.214.56[.]2. This IP tackle belongs to a Google Cloud buyer, however identical to the HTTP server, we imagine that SMB replies are injected on the fly by way of AitM and that the attackers don’t management the precise internet-routable IP tackle.
We have now additionally noticed the next SMB servers, intercepted by way of AitM:
- 209.19.37[.]184
- 38.9.8[.]78
- 59.6.8[.]25
We have now noticed this conduct in two separate ISP networks: Unitary Enterprise A1 and Beltelecom. This implies that these ISPs might not present full information confidentiality and integrity. We strongly advocate that overseas organizations in Belarus use an end-to-end encrypted VPN tunnel, ideally out-of-band (i.e., not from the endpoint), offering web connectivity from a trusted community.
Determine 5 depicts our speculation concerning the compromise vector and the site visitors interception.

AitM – Common ideas
The AitM state of affairs reminds us of the Turla and StrongPity risk actors who’ve trojanized software program installers on the fly on the ISP stage.
Normally, this preliminary entry technique is utilized by risk actors working in their very own nation as a result of it requires vital entry contained in the web service suppliers, or their upstream suppliers. In lots of nations, safety providers are allowed to carry out so-called “lawful interception” utilizing particular units put in on the ISPs’ premises.
In Russia, a regulation from 2014 requires ISPs to put in units known as SORM-3 that allow the Federal Safety Service (FSB) to conduct focused surveillance. The units have deep packet inspection (DPI) capabilities and have been possible utilized by Turla in its Mosquito marketing campaign.
In 2018, the Citizen Lab revealed that DPI units developed by the Canadian firm Sandvine have been used to switch HTTP site visitors in Turkey and Egypt. In Turkey, the units have been allegedly used to redirect web customers to a malicious server after they tried to obtain sure Home windows functions, which is consistent with StrongPity actions. In Egypt, these units have been allegedly used to inject advertisements and cryptocurrency mining scripts with the intention to generate cash.
In 2020, a Bloomberg article revealed that Belarus’s Nationwide Site visitors Change Middle purchased the identical Sandvine DPI gear, however based on a Cyberscoop article the contract was cancelled in September 2020.
Based on a report by Amnesty Worldwide printed in 2021, “Beneath Belarusian regulation, all telecommunications suppliers within the nation should make their {hardware} suitable with the SORM system”. In addition they state that “The SORM system permits the authorities direct, remote-control entry to all consumer communications and related information with out notifying the supplier”. We assess with low confidence that MoustachedBouncer makes use of this SORM system to conduct its operations.
Whereas the compromise of routers with the intention to conduct AitM on embassy networks can’t be absolutely discarded, the presence of lawful interception capabilities in Belarus suggests the site visitors mangling is occurring on the ISP stage moderately than on the targets’ routers.
Implants: NightClub and Disco
Since 2014, the malware households utilized by MoustachedBouncer have developed, and a giant change occurred in 2020 when the group began to make use of AitM assaults. On the identical time, it began to make use of a lot less complicated instruments developed in .NET and Go. In reference to NightClub, we named this new toolset Disco.
MoustachedBouncer operates the 2 implant households in parallel, however on a given machine, just one is deployed at a time. We imagine that Disco is used together with AitM assaults whereas NightClub is used for victims the place site visitors interception on the ISP stage isn’t attainable due to a mitigation corresponding to using an end-to-end encrypted VPN the place web site visitors is routed outdoors of Belarus.
Disco
As talked about within the earlier part, a pretend Home windows Replace web page delivers the primary stage (SHA-1: E65EB4467DDB1C99B09AE87BA0A964C36BAB4C30). It is a easy dropper written in Go that creates a scheduled process to execute 35.214.56[.]2OfficeBrokerOfficeBroker.exe each minute. OfficeBroker.exe is downloaded over the SMB protocol by way of AitM assault. The dropper’s foremost operate is proven in Determine 6.

Lastly, the dropper does a DNS question for home windows.system.replace[.]com. This area doesn’t exist however the DNS request might be intercepted by way of AitM, and is probably going a beacon to inform the operators that the machine has been efficiently compromised.
We have been unable to retrieve the OfficeBroker.exe file, however it is rather possible that it acts as a downloader, since we now have noticed additional plugins being executed from SMB shares. The plugins are developed in Go and are moderately easy as a result of they largely depend on exterior Go libraries. Desk 2 summarizes the completely different plugins.
Desk 2. Go plugins utilized by MoustachedBouncer in 2021–2022
Obtain URL / Path on disk |
Description |
209.19.37[.]184driverpackaact.exe |
Takes screenshots utilizing the kbinani/screenshot library. Screenshots are saved in .AActdata<d>_<s>.dat (on the SMB share) the place <d> is the energetic show quantity and <s> the date. It sleeps 15 seconds between every screenshot. |
C:UsersPublicdriverpackdriverpackUpdate.exe |
Executes PowerShell scripts with powershell.exe -NoProfile -NonInteractive <command>, the place <command> is learn from the file .idata. The output is written in .odata. |
C:UsersPublicdriverpacksdrive.exe |
Executes C:UsersPublicdriverpackdriverpackUpdate.exe (the plugin above) utilizing elevated rights by way of CVE-2021-1732. The code was possible impressed by a PoC on GitHub and makes use of the zydis code era library. |
209.19.37[.]184driverpackofficetelemetry.exe |
A reverse proxy strongly impressed by the GitHub repository revsocks. We have been unable to retrieve the command line parameters with the proxy IP tackle. |
38.9.8[.]78driverpackDPU.exe |
One other pattern of the PowerShell plugin. |
%userprofilepercentappdatanod32updatenod32update.exe |
One other pattern of the reverse proxy plugin. |
59.6.8[.]25outlooksyncoutlooksync.exe |
Takes screenshots; it’s much like the primary plugin. Photos are saved in ./logs/${DATETIME}.dat. |
52.3.8[.]25oracleoracleTelemetry.exe |
Screenshot plugin full of Themida. |
Curiously, the plugins additionally use SMB shares for information exfiltration. There isn’t a C&C server outdoors the attackers’ premises to take a look at or to take down. There additionally appears to be no method to attain that C&C server from the web. This offers excessive resiliency to the attackers’ community infrastructure.
SharpDisco and NightClub plugins
In January 2020 we noticed a MoustachedBouncer dropper, which we named SharpDisco, being downloaded from https://mail.mfa.gov.<redacted>/EdgeUpdate.exe by a Microsoft Edge course of. It’s not clear how attackers have been capable of tamper with HTTPS site visitors, however it’s attainable an invalid TLS certificates warning was proven to the sufferer. One other chance is that MoustachedBouncer compromised this governmental web site.
SharpDisco (SHA-1: A3AE82B19FEE2756D6354E85A094F1A4598314AB)
SharpDisco is a dropper developed in C#. It shows a pretend replace window, proven in Determine 7, whereas creating two scheduled duties within the background.

These scheduled duties are:
WINCMDA.EXE and WINCMDB.EXE are in all probability simply cmd.exe renamed. Each minute, the duty reads what’s in 24.9.51[.]94EDGEUPDATEEDGEAIN (on the SMB share), pipes it to cmd.exe, and writes the output to 24.9.51[.]94EDGEUPDATEEDGEAOUT. It’s the identical for the second process, however with the EDGEBIN and EDGEBOUT information. From the next viewpoint, these duties are reverse shells with a one-second latency.
Then, as proven in Determine 8, the dropper sends a DNS request for an unregistered area, edgeupdate-security-windows[.]com. That is much like what the 2022 Disco dropper does.

ESET telemetry exhibits that the reverse shell was used to drop a real Python interpreter in C:UsersPublicWinTNWinTN.exe. We then noticed two plugins being dropped on disk by cmd.exe, which implies they have been possible dropped by the reverse shell as properly. The 2 plugins are:
- A recent-files stealer in C:UsersPublicWinSrcNTIt11.exe
- An exterior drive monitor in C:UsersPublicIt3.exe
It’s fascinating to notice that these plugins share code with NightClub (described within the part NightClub – 2017 (SHA-1: F92FE4DD679903F75ADE64DC8A20D46DFBD3B277) under). This allowed us to hyperlink the Disco and NightClub toolsets.
Latest-files stealer (SHA-1: 0DAEA89F91A55F46D33C294CFE84EF06CE22E393)
This plugin is a Home windows executable named It11.exe. We imagine it was executed by way of the reverse shell talked about above. There isn’t a persistence mechanism carried out within the plugin.
It will get the information not too long ago opened on the machine by studying the content material of the folder %USERPROFILEpercentRecent (on Home windows XP) or of %APPDATApercentMicrosoftWindowsRecent (in newer Home windows variations). These folders comprise LNK information, every pointing to a not too long ago opened file.
The plugin embeds its personal LNK format parser with the intention to extract the trail to the unique file.
We have been unable to make this plugin work, however static evaluation exhibits that the information are exfiltrated to the SMB share 24.9.51[.]94EDGEUPDATEupdate. The plugin maintains a listing of already exfiltrated information, and their CRC-32 checksum, in %TEMPpercentindex.dat. This possible avoids retransmitting the identical file greater than as soon as.
Exterior drive monitor (SHA-1: 11CF38D971534D9B619581CEDC19319962F3B996)
This plugin is a Home windows executable named It3.exe. As with the recent-files stealer, it doesn’t implement any persistence mechanism.
The plugin calls GetLogicalDrives in a loop to get a listing of all related drives, together with detachable ones corresponding to USB keys. Then, it does a uncooked copy of the NTFS quantity of every detachable drive and writes it within the present working listing, C:UsersPublic in our instance. The filename is a randomly generated string of six to eight alphanumeric characters, for instance heNNYwmY.
It maintains a log file in <working listing>index.dat with the CRC-32 checksums of the copied disks.
The plugin doesn’t seem to have any exfiltration capabilities. It’s possible that the staged drive dumps are later retrieved utilizing the reverse shell.
NightClub
Since 2014, MoustachedBouncer has been utilizing a malware framework we named NightClub as a result of it accommodates a C++ class named nightclub. We discovered samples from 2014, 2017, 2020, and 2022. This part describes the evolution of NightClub from a easy backdoor to a totally modular C++ implant.
In abstract, NightClub is an implant household utilizing emails for its C&C communications. Since 2016, extra modules may very well be delivered by e mail to increase its spying capabilities.
NightClub – 2014
That is the oldest recognized model of NightClub. We discovered a dropper and an orchestrator.
The dropper (SHA-1: 0401EE7F3BC384734BF7E352C4C4BC372840C30D) is an executable named EsetUpdate-0117583943.exe, and it was uploaded to VirusTotal from Ukraine on 2014-11-19. We don’t know the way it was distributed at the moment.
The principle operate, illustrated in Determine 9, hundreds the useful resource MEMORY and writes its content material in %SystemRootpercentSystem32creh.dll. It’s saved in cleartext within the PE useful resource.

Then, the dropper modifies the Creation, Entry, and Write timestamps of creh.dll to these of the real Home windows DLL user32.dll.
Lastly, it creates a Home windows service named WmdmPmSp and units, within the registry, its ServiceDll to %SystemRootpercentSystem32creh.dll – see Determine 10.

The beforehand dropped DLL, creh.dll (SHA-1: 5B55250CC0DA407201B5F042322CFDBF56041632) is the NightClub orchestrator. It has a single export named ServiceMain and its PDB path is D:ProgrammingProjectsWorkSwampThingReleaseWin32WorkingDll.pdb.
It’s written in C++ and the names of some strategies and lessons are current within the RTTI information – see Determine 11.

Determine 11. Methodology and sophistication names from the RTTI information
Among the strings are encrypted utilizing the next linear congruential generator (LCG): staten+1 = (690069 × staten + 1) mod 232. For every encrypted string, a seed (state0) between 0 and 255 is supplied. To decrypt a string, the staten is subtracted from every encrypted byten. An instance of an encrypted string construction is proven in Determine 12.

A non-encrypted log file is current in C:WindowsSystem32servdll.log. It accommodates very primary details about the initialization of the orchestrator – see Determine 13.

NightClub has two foremost capabilities:
• Monitoring information
• Exfiltrating information by way of SMTP (e mail)
File monitor
Performance carried out right here could be very near that of the current file monitor plugin seen in 2020 and described above. It additionally browses the directories %USERPROFILEpercentRecent on Home windows XP, and in newer Home windows variations %APPDATApercentMicrosoftWindowsRecent, and implements the identical LNK parser – see Determine 14 and Determine 15.

Determine 14. LNK parser (2014 pattern – 5B55250CC0DA407201B5F042322CFDBF56041632)

Determine 15. LNK parser (2020 pattern – 0DAEA89F91A55F46D33C294CFE84EF06CE22E393)
The information retrieved from the LNK information are copied to %TEMP%<unique filename>.bin. Observe that not like the 2020 variant, solely information with extensions .doc, .docx, .xls, .xslx, or .pdf are copied.
It additionally displays detachable drives in a loop, with the intention to steal information from them.
SMTP C&C communications
NightClub makes use of the SMTP protocol to exfiltrate information. Even when C&C communication by e mail will not be distinctive to MoustachedBouncer and can be utilized by different adversaries corresponding to Turla (see LightNeuron and the Outlook backdoor), it’s fairly uncommon. The code is predicated on the CSmtp mission obtainable on GitHub. The e-mail accounts’ info is hardcoded, encrypted with the LCG algorithm. Within the pattern we analyzed, the mail configuration is:
• SMTP server: smtp.seznam.cz
• Sender tackle: glen.morriss75@seznam[.]cz
• Sender password: <redacted>
• Recipient tackle: SunyaF@seznam[.]cz
seznam.cz is a Czech internet portal providing a free webmail service. We imagine the attackers created their very own e mail accounts, as a substitute of compromising reliable ones.
NightClub exfiltrates the information beforehand copied to %TEMP% by the file monitor performance (FileMonitor in Determine 11). They’re encoded in base64 and added as an attachment. The attachment title is the unique filename with the .bin extension.
Determine 16 exhibits the exfiltration of a file by way of SMTP. NightClub authenticates utilizing the credentials for the glen.morriss75@seznam[.]cz account and sends an e mail to SunyaF@seznam[.]cz with the stolen file hooked up.

Determine 16. TCP stream of the SMTP communication from our check machine
Observe that some headers which may look suspicious at first sight are the defaults from the CSmtp mission, so they’re in all probability not distinctive. These embody:
• X-Mailer: The Bat! (v3.02) Skilled
• Content material-Kind: multipart/combined; boundary=”__MESSAGE__ID__54yg6f6h6y456345″
The Bat! is an e mail consumer broadly utilized in Japanese Europe. As such, the X-Mailer header possible blends in with e mail site visitors in Belarus.
NightClub – 2017 (SHA-1: F92FE4DD679903F75ADE64DC8A20D46DFBD3B277)
In 2017, we discovered a newer model of NightClub, which was compiled on 2017-06-05. On the sufferer’s machine, it was positioned at C:WindowsSystem32metamn.dll. Its filename within the DLL export listing is DownloaderService.dll, and it has a single export named ServiceMain. It accommodates the PDB path D:AbcdMainProjectRootsrcProjectsMainSInkReleasex64EtfFavoriteFinder.pdb.
To persist, it creates a Home windows service named WmdmPmSp, as in earlier variations. Sadly, we now have not been capable of get well the dropper.
This NightClub model additionally features a few C++ class and technique names, together with nightclub, within the RTTI information – see Determine 17.

Determine 17. Methodology and sophistication names from the RTTI information of the 2017 NightClub model
As in earlier variations, C&C communications use the SMTP protocol, by way of the CSmtp library, with hardcoded credentials. Within the pattern we analyzed, the mail configuration is:
• SMTP server: smtp.mail.ru
• Sender tackle: fhtgbbwi@mail[.]ru
• Sender password: [redacted]
• Recipient tackle: nvjfnvjfnjf@mail[.]ru
The principle distinction is that they switched the free e mail supplier from Seznam.cz to Mail.ru.
This NightClub model makes use of exterior plugins saved within the folder %APPDATApercentNvmFilter. They’re DLLs named <random>.cr (e.g., et2z7q0FREZ.cr) with a single export named Begins. We have now recognized two plugins: a keylogger and a file monitor.
Keylogger (SHA-1: 6999730D0715606D14ACD19329AF0685B8AD0299)
This plugin was saved in %APPDATApercentNvmFilteret2z7q0FREZ.cr and is a DLL with one export, Begins. It accommodates the PDB path D:ProgrammingProjectsAutogenKhAutogenAlgReleasex64SearchIdxDll.pdb and was developed in C++. RTTI information exhibits just a few class names – see Determine 18.

Determine 18. Methodology and sophistication names from the RTTI information of the NightClub keylogger plugin
The keylogger implementation is moderately conventional, utilizing the Home windows GetKeyState API operate – see Determine 19.

The keylogger maintains a cleartext log file in %TEMPpercentuirtl.tmp. It accommodates the date, the title of the appliance, and the logged keystrokes for this particular utility. An instance, which we generated, is supplied in Determine 20.

Determine 20. Instance of the output of the keylogger (generated by us)
File monitor (SHA-1: 6E729E84C7672F048ED8AE847F20A0219E917FA)
This plugin was saved in %APPDATApercentNvmFiltersTUlsWa1.cr and is a DLL with a single export named Begins. Its PDB path, D:ProgrammingProjectsAutogenKhAutogenAlgReleasex64FileMonitoringModule.pdb, has not been stripped, and it reuses code from the 2014 and 2020 file displays, described above. It displays drives and up to date information, and copies information for exfiltration to %TEMPpercentAcmSymrm. Its log file is saved in %TEMPpercentindexwti.sxd.
NightClub – 2020–2022
In 2020-11, we noticed a brand new model of NightClub deployed in Belarus, on the computer systems of the diplomatic employees of a European nation. In 2022-07, MoustachedBouncer once more compromised a number of the identical computer systems. The 2020 and 2022 variations of NightClub are virtually similar, and the compromise vector stays unknown.
Its structure is barely completely different from the earlier variations, because the orchestrator additionally implements networking capabilities. The second part, which its builders name the module agent, is barely chargeable for loading the plugins. All samples have been discovered within the folder %APPDATApercentmicrosoftdef and are written in C++ with statically linked libraries corresponding to CSmtp or cpprestsdk. Consequently, the executables are fairly massive – round 5MB.
Orchestrator
On the victims’ machines, each orchestrator variants (SHA-1: 92115E21E565440B1A26ECC20D2552A214155669 and D14D9118335C9BF6633CB2A41023486DACBEB052) have been named svhvost.exe. We imagine MoustachedBouncer tried to masquerade because the title of the reliable executable svchost.exe. For persistence, it creates a service named vAwast.
Opposite to earlier variations, to encrypt the strings they merely add 0x01 to every byte. For instance, the string cmd.exe can be encrypted as dne/fyf. One other distinction is that the configuration is saved in an exterior file, moderately than hardcoded within the binary. It’s saved within the hardcoded path %APPDATApercentMicrosoftdefGfr45.cfg and the info is decrypted with a personal 2048-bit RSA key (see Determine 21) utilizing the operate BCryptImportKeyPair and BCryptDecrypt.

The config is formatted in JSON, as proven in Determine 22.

A very powerful keys are transport and modules. The previous accommodates details about the mailbox used for C&C communications, as within the earlier variations. The latter accommodates the record of modules.
Module agent
The 2 variants of the module agent (SHA-1: DE0B38E12C0AF0FD63A67B03DD1F8C1BF7FA6128 and E6DE72516C1D4338D7E45E028340B54DCDC7A8AC) have been named schvost.exe, which is one other imitation of the svchost.exe filename.
This part is chargeable for beginning the modules which are specified within the configuration. They’re DLLs, every with an export named Begin or Begins. They’re saved on disk unencrypted with the .ini extension, however really are DLLs.
Modules
Over the course of our investigation, we discovered 5 completely different modules: an audio recorder, two virtually similar screenshotters, a keylogger, and a DNS backdoor. For all of them: their configuration, which is formatted in JSON, is handed as an argument to the Begin or Begins operate.
By default, the output of the plugin is written in %TEMPpercenttmp123.tmp. This may be modified utilizing the config area file. Desk 3 exhibits the completely different plugins.
Desk 3. NightClub plugins
DLL export title |
Configuration |
Description |
NotifyLoggers.dll |
{ “title”:”<worth>”, “enabled”:”<worth>”, “max_size”:”<worth>”, “file”:”<worth>”, “chk_t”:”<worth>”, “r_d”:”<worth>”, “f_hs”:”<worth>”, “t_hs”:”<worth>” } |
An audio recorder that makes use of the Lame library, and mciSendStringW to manage the audio gadget. The extra configuration fields are possible used to specify choices for Lame. |
MicroServiceRun.dll |
{ “title”:”<worth>”, “enabled”:”<worth>”, “max_size”:”<worth>”, “file”:”<worth>” “period_in_sec”:”<worth>”, “high quality”:”<worth>”, “app_keywords”:”<worth>” } |
A screenshotter that makes use of CreateCompatibleDC and GdipSaveImageToStream and writes captured photographs in file to disk. If app_keywords will not be empty, it makes use of GetForegroundWindow to verify the title of the energetic Window and seize it provided that it matches app_keywords. |
JobTesterDll.dll |
{ “title”:”<worth>”, “enabled”:”<worth>”, “max_size”:”<worth>”, “file”:”<worth>” } |
A keylogger that makes use of the GetKeyState API. It writes the log in file to disk and the format is <Date><Title bar><content material>. |
ParametersParserer.dll |
{ “title”:”<worth>”, “enabled”:”<worth>”, “max_size”:”<worth>”, “file”:”<worth>”, “cc_server_address”:”<worth>” } |
A DNS-tunneling backdoor. cc_server_address specifies the IP tackle of a DNS server to which requests are despatched. Extra particulars comply with. |
The DNS-tunneling backdoor (ParametersParserer.dll) makes use of a customized protocol to ship and obtain information from a malicious DNS server (cc_server_address). Determine 23 exhibits that the DNS request is shipped to the IP tackle supplied within the configuration, utilizing the pExtra parameter of DnsQuery_A.

The plugin provides the info to exfiltrate as a part of the subdomain title of the area that’s used within the DNS request (pszName above). The area is all the time 11.1.1.cid and the info is contained within the subdomain. It makes use of the next format, the place x is the letter, not some variable:
x + <modified base64(buffer)> + x.11.1.1.cid
For instance, the primary DNS request the plugin sends is xZW1wdHkx.11.1.1.cid, the place ZW1wdHk decodes to empty.
Observe that the base64 operate will not be commonplace. It removes the =, if any, from the results of the base64 encoding, and in addition replaces / characters with -s and + characters with -p. That is to create legitimate subdomains, as a result of commonplace base64 encoding output can embody +, / and = characters, all of that are invalid in domains and may very well be detected in community site visitors.
Then, the plugin reads the outcome that must be one or many TXT DNS data, for the reason that flag DNS_TYPE_TEXT is handed to DnsQuery_A. Microsoft names the underlying construction DNS_TXT_DATAA. It accommodates an array of strings, that are concatenated to compute the output buffer.

Determine 24. The plugin reads the TXT report
The anticipated format of the reply is:
x + <argument encoded with modified base64> + x.<cmd_id>.<unknown integer>.1.<cmd_name>
That is much like the format of the requests. The <argument encoded with modified base64> additionally makes use of the customized base64 encoding with out = and with -p for + and -s for /. <cmd_name> is an arbitrary string that isn’t utilized by the backdoor; it’s possible utilized by the operators to maintain monitor of the completely different instructions. <cmd_id> is an integer that corresponds to a command within the backdoor change assertion.
For instance, if the operators needed to execute calc.exe, the DNS C&C server would ship the reply xYzpcd2luZG93c1xzeXN0ZW0zMlxjYWxjLmV4ZQx.27.2.1.calc, the place Yzpcd2luZG93c1xzeXN0ZW0zMlxjYWxjLmV4ZQ decodes to c:windowssystem32calc.exe and 27 is the command ID to create a brand new course of. All instructions supported by this backdoor are detailed in Desk 4.
Desk 4. Instructions carried out by the DNS backdoor
ID |
Description |
0x15 (21) |
Copy a listing (from a supply to a vacation spot) |
0x16 (22) |
Transfer a file (from a supply to a vacation spot) |
0x17 (23) |
Take away a file or a listing |
0x18 (24) |
Search a file for a given sample (Observe: we’re uncertain concerning the precise conduct of this command) |
0x19 (25) |
Write a buffer to a file |
0x1A (26) |
Learn a file |
0x1B (27) |
Create a course of |
The results of the instructions is exfiltrated again to the attacker utilizing DNS requests, as detailed above. The one distinction is that 11 is changed by 12 within the area title, as proven on this instance: xdGltZW91dAx.12.1.1.cid. On this case, the plugin despatched the message timeout to the C&C server.
Conclusion
MoustachedBouncer is a talented risk actor focusing on overseas diplomats in Belarus. It makes use of fairly superior strategies for C&C communications together with community interception on the ISP stage for the Disco implant, emails for the NightClub implant, and DNS in one of many NightClub plugins.
The principle takeaway is that organizations in overseas nations the place the web can’t be trusted ought to use an end-to-end encrypted VPN tunnel to a trusted location for all their web site visitors with the intention to circumvent any community inspection units.
For any inquiries about our analysis printed on WeLiveSecurity, please contact us at [email protected].
ESET Analysis gives personal APT intelligence reviews and information feeds. For any inquiries about this service, go to the ESET Menace Intelligence web page.
ESET Analysis Podcast
If you wish to know the way ESET researchers named MoustachedBouncer and its instruments Disco and NightClub, what makes this group worthy of the “superior” label, or if workers of the focused embassies might have introduced the malware dwelling from work, then take heed to the most recent episode of the ESET Analysis podcast. ESET’s Director of Menace Analysis Jean-Ian Boutin explains the intricacies of MoustachedBouncer to our host and ESET Distinguished Researcher Aryeh Goretsky. If you happen to get pleasure from listening to cybersecurity matters, subscribe to our ESET Analysis podcast on Spotify, Google Podcasts, Apple Podcasts, or PodBean.
IoCs
Recordsdata
SHA-1 |
Filename |
Detection |
Description |
02790DC4B276DFBB26C714F29D19E53129BB6186 |
index.html |
JS/TrojanDownloader.Agent.YJJ |
Faux Home windows replace webpage. |
6EFF58EDF7AC0FC60F0B8F7E22CFE243566E2A13 |
jdrop.js |
JS/TrojanDownloader.Agent.YJJ |
JavaScript code that triggers the obtain immediate of the pretend Home windows replace. |
E65EB4467DDB1C99B09AE87BA0A964C36BAB4C30 |
MicrosoftUpdate845255.exe |
WinGo/Agent.ET |
Disco dropper. |
3A9B699A25257CBD0476CB1239FF9B25810305FE |
driverpackUpdate.exe |
WinGo/Runner.B |
Disco plugin. Executes PowerShell scripts. |
19E3D06FBE276D4AAEA25ABC36CC40EA88435630 |
DPU.exe |
WinGo/Runner.C |
Disco plugin. Executes PowerShell scripts. |
52BE04C420795B0D9C7CD1A4ACBF8D5953FAFD16 |
sdrive.exe |
Win64/Exploit.CVE-2021-1732.I |
Disco plugin. LPE exploit for CVE-2021-1732. |
0241A01D4B03BD360DD09165B59B63AC2CECEAFB |
nod32update.exe |
WinGo/Agent.EV |
Disco plugin. Reverse proxy primarily based on revsocks. |
A01F1A9336C83FFE1B13410C93C1B04E15E2996C |
aact.exe |
WinGo/Spy.Agent.W |
Disco plugin. Takes screenshots. |
C2AA90B441391ADEFAA3A841AA8CE777D6EC7E18 |
officetelemetry.exe |
WinGo/Agent.BT |
Disco plugin. Reverse proxy primarily based on revsocks. |
C5B2323EAE5E01A6019931CE35FF7623DF7346BA |
oracleTelemetry.exe |
WinGo/Spy.Agent.W |
Disco plugin full of Themida. Takes screenshots. |
C46CB98D0CECCB83EC7DE070B3FA7AFEE7F41189 |
outlooksync.exe |
WinGo/Spy.Agent.W |
Disco plugin. Takes screenshots. |
A3AE82B19FEE2756D6354E85A094F1A4598314AB |
kb4480959_EdgeUpdate.exe |
MSIL/TrojanDropper.Agent.FKQ |
Disco .NET dropper. |
4F1CECF6D05571AE35ED00AC02D5E8E0F878A984 |
WinSrcNT.exe |
Win32/Nightclub.B |
NightClub plugin utilized by Disco. Steals current information. |
0DAEA89F91A55F46D33C294CFE84EF06CE22E393 |
It11.exe |
Win32/Nightclub.B |
NightClub plugin utilized by Disco. Steals current information. |
11CF38D971534D9B619581CEDC19319962F3B996 |
It3.exe |
Win32/Nightclub.B |
NightClub plugin utilized by Disco. Makes uncooked dumps of detachable drives. |
F92FE4DD679903F75ADE64DC8A20D46DFBD3B277 |
metamn.dll |
Win64/Nightclub.B |
NightClub (2017 model). |
6999730D0715606D14ACD19329AF0685B8AD0299 |
et2z7q0FREZ.cr |
Win64/Nightclub.B |
NightClub plugin. Keylogger. |
6E729E84C7672F048ED8AE847F20A0219E917FA3 |
sTUlsWa1.cr |
Win64/Nightclub.A |
NightClub plugin. File stealer. |
0401EE7F3BC384734BF7E352C4C4BC372840C30D |
EsetUpdate-0117583943.exe |
Win32/Nightclub.C |
NightClub dropper. |
5B55250CC0DA407201B5F042322CFDBF56041632 |
creh.dll |
Win32/Nightclub.C |
NightClub (2014). |
D14D9118335C9BF6633CB2A41023486DACBEB052 |
svhvost.exe |
Win32/Nightclub.D |
Orchestrator (NightClub). |
E6DE72516C1D4338D7E45E028340B54DCDC7A8AC |
schvost.exe |
Win32/Nightclub.D |
Module agent (NightClub). |
3AD77281640E7BA754E9B203C8B6ABFD3F6A7BDD |
nullnat.ini |
Win32/Nightclub.D |
Backdoor with DNS tunneling (NightClub plugin). |
142FF0770BC6E3D077FBB64D6F23499D9DEB9093 |
soccix.ini |
Win32/Nightclub.D |
Keylogger (NightClub plugin). |
FE9527277C06D7F986161291CE7854EE79788CB8 |
oreonion.ini |
Win32/Nightclub.D |
Screenshotter (NightClub plugin). |
92115E21E565440B1A26ECC20D2552A214155669 |
svhvost.exe |
Win32/Nightclub.D |
Orchestrator (NightClub). |
DE0B38E12C0AF0FD63A67B03DD1F8C1BF7FA6128 |
schvost.exe |
Win32/Nightclub.D |
Module agent (NightClub). |
D2B715A72BBA307CC9BF7690439D34F62EDF1324 |
sysleg.ini |
Win32/Nightclub.D |
Information audio (NightClub plugin). |
DF8DED42F9B7DE1F439AEC50F9C2A13CD5EB1DB6 |
oreonion.ini |
Win32/Nightclub.D |
Takes screenshots (NightClub plugin). |
C&C servers
IP |
Area |
First seen |
Remark |
185.87.148[.]86 |
centrocspupdate[.]com |
November 3, 2021 |
Suspected NightClub C&C server. |
185.87.151[.]130 |
ocsp-atomsecure[.]com |
November 11, 2021 |
Suspected NightClub C&C server. |
45.136.199[.]67 |
securityocspdev[.]com |
July 5, 2022 |
NightClub C&C server. |
45.136.199[.]129 |
dervasopssec[.]com |
October 12, 2022 |
Suspected NightClub C&C server. |
“Faux” domains utilized in AitM
Observe: These domains are utilized in a context the place DNS queries are intercepted earlier than reaching the web. They don’t resolve outdoors the context of the AitM assault.
home windows.community.troubleshooter[.]com
updates.microsoft[.]com
SMB share IP addresses whereas AitM is ongoing
Observe: These IP addresses are utilized in a context the place site visitors to them is intercepted earlier than reaching the web. These internet-routable IP addresses should not malicious outdoors the context of the AitM assault.
24.9.51[.]94
35.214.56[.]2
38.9.8[.]78
52.3.8[.]25
59.6.8[.]25
209.19.37[.]184
Electronic mail addresses
fhtgbbwi@mail[.]ru
nvjfnvjfnjf@mail[.]ru
glen.morriss75@seznam[.]cz
SunyaF@seznam[.]cz
MITRE ATT&CK strategies
This desk was constructed utilizing model 13 of the MITRE ATT&CK framework.
Tactic |
ID |
Title |
Description |
Reconnaissance |
Collect Sufferer Community Data: IP Addresses |
MoustachedBouncer operators have collected IP addresses, or tackle blocks, of their targets with the intention to modify community site visitors for simply these addresses. |
|
Preliminary Entry |
Drive-by Compromise |
Disco is delivered by way of a pretend Home windows Replace web site. |
|
Execution |
Consumer Execution: Malicious File |
Disco must be manually executed by the sufferer. |
|
Persistence |
Scheduled Job/Job: Scheduled Job |
Disco persists as a scheduled process that downloads an executable from a “pretend” SMB share each minute. |
|
Create or Modify System Course of: Home windows Service |
NightClub persists as a ServiceDll of a service named WmdmPmSp. |
||
Privilege Escalation |
Exploitation for Privilege Escalation |
Disco has a plugin to use the CVE-2021-1732 native privilege escalation vulnerability. |
|
Protection Evasion |
Deobfuscate/Decode Recordsdata or Data |
Since 2020, NightClub has used an exterior configuration file encrypted with RSA. |
|
Assortment |
Knowledge from Native System |
NightClub steals current information from the native system. |
|
Knowledge from Detachable Media |
NightClub steals information from the native system. |
||
Enter Seize: Keylogging |
NightClub has a plugin to report keystrokes. |
||
Display screen Seize |
NightClub and Disco every have a plugin to take screenshots. |
||
Audio Seize |
NightClub has a plugin to report audio. |
||
Command and Management |
Utility Layer Protocol: File Switch Protocols |
Disco communicates by way of the SMB protocol. |
|
Utility Layer Protocol: Mail Protocols |
NightClub communicates by way of the SMTP protocol. |
||
Utility Layer Protocol: DNS |
One of many NightClub plugins is a backdoor that communicates by way of DNS. |
||
Knowledge Encoding: Customary Encoding |
NightClub encodes information, hooked up to e mail, in base64. |
||
Knowledge Encoding: Non-Customary Encoding |
NightClub encodes instructions and responses despatched by way of its DNS C&C channel with a modified type of base64. |
||
Encrypted Channel: Symmetric Cryptography |
NightClub receives plugins in e mail attachments, encrypted utilizing AES-CBC. |
||
Adversary-in-the-Center |
MoustachedBouncer has carried out AitM on the ISP stage to redirect its targets to a pretend Home windows Replace web page. It has additionally completed AitM on the SMB protocol to ship malicious information from “pretend” servers. |
||
Exfiltration |
Exfiltration Over C2 Channel |
NightClub and Disco exfiltrate information over the C&C channel (SMTP, SMB, and DNS). |
|
Affect |
Knowledge Manipulation: Transmitted Knowledge Manipulation |
MoustachedBouncer has modified the HTTP site visitors from particular IP addresses on the ISP stage with the intention to redirect its targets to a pretend Home windows Replace web page. |