A Nine-Year Retrospective and Reflections on the Stuxnet Incident

1. Preface

        In July 2010, the Stuxnet worm attack came to light, drawing widespread attention from major international security vendors and researchers. Kaspersky, Symantec, Antiy, and other security companies, renowned security researchers like Ralph Langne, and emergency response organizations and research institutions from multiple countries all participated in a comprehensive analysis. This ultimately revealed numerous details of the attack: it was a long-planned, pre-planned, and covert intrusion operation; it utilized highly sophisticated malicious code and multiple zero-day vulnerabilities as its weapons; it targeted uranium centrifuges; and its effective mechanism was to cause overpressure leading to mass damage to centrifuges and to alter centrifuge speeds to prevent uranium from meeting weapons requirements, with the ultimate goal of disrupting Iran’s nuclear weapons program.

        Nine years have passed, and this security incident is still in Antiy’s research field. Antiy started its analysis of Stuxnet on July 15, 2010, built a simulation environment, and released the “Comprehensive Analysis Report on the Stuxnet Worm Attack on Industrial Control Systems” [1] on September 27. Subsequently, it formed the “Follow-up Analysis Report on the Stuxnet Worm” [2], which analyzed its propagation mechanism, and the “What Happened After WinCC” [3] series of analysis reports, which analyzed its mechanism of action on industrial production processes.

        Antiy Labs proposed the hypothesis that Stuxnet and Duqu share a common origin, and subsequently published two confirming reports. They also initiated a marathon-like modular analysis of the Flame malware. As their work progressed, Antiy Labs gradually realized that highly complex malware such as Stuxnet, Duqu, Gauss, and Flame shared common background connections. This research played a crucial role in Antiy Labs’ subsequent in-depth analysis of Equation Organization.

        Due to historical reasons, some of the research literature has not been published, and some analytical progress is fragmented. Although it has been mentioned in our external technical presentations, it has not been released as literature. This is one of the reasons why Antiy Labs compiled this paper. The chapters that organize the relationships between Stuxnet, Flame, Poison, Gaussian, Fanny, and Flowershop, which illustrate the overall operational framework of Stuxnet, the USB ferry mechanism and propagation runaway analysis, as well as the relationship between the Tilded framework and the Flame framework, are a summary of these results.

        In retrospect, our initial analysis of the Stuxnet incident revealed a lack of a truly framework-based methodology. We were still largely viewing the attack from our familiar anti-malware perspective. While we coined the term A2PT (Advanced Persistent Threat) to describe such a complex attack as Stuxnet, our analysis consistently lacked an operational-to-strategy perspective. Under the guidance of experts, we have gained new insights into cyber warfare and situational awareness, gradually shifting our methodology from a threat framework perspective to improve our capabilities. We also hope to interpret the seemingly still highly complex “war of yesterday”—the Stuxnet attack—through this threat framework lens.

        This article also delves into a thought-provoking question: why does Stuxnet, a worm without infectious properties, have such a large number of samples? We discovered this principle in our earlier analysis: Stuxnet’s payload delivery program performs a self-update of embedded configuration data each time it lands on a machine. This results in a different hash for the main executable each time Stuxnet lands, while its actual attack payload is mostly wrapped within the main DLL and not actually landed. Stuxnet’s related domains are only exposed after it has achieved its main operational effect. This, in a sense, indicates that threat intelligence based on hashes and domains is already facing the risk of ineffectiveness against more sophisticated and covert attacks.

Figure 1-1 Stuxnet Timeline

2. Why Stuxnet?

        Throughout the history of information technology development, numerous typical security incidents have occurred, but why is Stuxnet considered a landmark in terms of threat? Stuxnet is considered the first piece of malware to target critical industrial infrastructure in the real world and achieve its predetermined attack objectives. In other words, it was the first major attack in the “cyberspace” sense, rather than a traditional cyberattack. Although there had been previous rumors of information attacks affecting industrial facilities, these generally lacked empirical support at the technical level.

        From the perspective of Antiy’s previous views, the milestone significance of Stuxnet is not its complexity and sophistication compared to other simple network attacks, but its demonstration that attacks through cyberspace can achieve equivalence with traditional physical space attacks (or even firepower strikes). In the 2016 report, Antiy researchers compared and analyzed the Stuxnet incident with the “Operation Withering Blade and Babylon” (an event in which Israel and the United States jointly launched a military strike against Iraqi nuclear reactors during the Iran-Iraq War between 1977 and 1981) in the 1970s and 1980s. They found that the physical attack effect that required a lot of complex military intelligence and cost investment could be achieved through cyberspace operations, and the cost was also greatly reduced. As Maren Leed, former senior advisor to the U.S. Army Chief of Staff, said, cyber weapons have many environmentally adaptable attributes, and from the perspective of life cycle cost, they are superior to other weapon systems[4].

Table 2-1 Comparative Analysis of Military and Paramilitary Actions Used in Two Targets of Middle Eastern Countries’ Nuclear Programs

 Withering Blade and Operation Babylon (Traditional Physical Attack on Iraq)Operation Stuxnet (Cyberattack Against Iran)
Target of attackIraqi nuclear reactorIran’s Natanz uranium centrifuge facility
Time period1977-19812006-2010
Personnel inputIsraeli Air Force, intelligence agents, Iranian Air Force, US Air Force and intelligence agenciesSoftware and cybersecurity experts in the US and Israel’s intelligence and military fields, as well as experts in industrial control and nuclear weapons.
Combat preparationMultiple rounds of preliminary reconnaissance and airstrikes, nuclear reactor intelligenceBattlefield prefabrication, virus transmission, and intelligence on related nuclear facilities.
Equipment deployment from all sidesIraq: Two F-4 Phantoms bombed a hypothetical nuclear reactor construction site with 12 MK82 decelerated bombs; 10 F-4s attacked Iraq’s H-3 airbase. The aircraft consisted of: 2 F-4E(S) for reconnaissance missions; 8 F-16As (provided by the US), 4 F-15As, 2 F-15Bs, and 16 MK84 bombs for air strike reactors. Simulate the construction of a reactor Secret Service agents assassinate key Iraqi figures US: Strategic satellites and intelligence, aerial refueling tankersStuxnet virus development Simulate the construction of centrifuges and control systems
Upfront costsDuring 18 months of simulated air raid training, two F-4 Phantom fighters crashed, killing three pilots.Spanning two presidential terms, and undergoing five years of continuous development and improvement.
Damage effectThe destruction of the reactor deterred French suppliers from continuing to provide services, permanently halting Iraq’s nuclear weapons program.This resulted in the malfunction of numerous centrifuges, leading to a shortage of uranium for weapons and virtually permanently halting Iran’s nuclear weapons program.
Cost-effectivenessThe operation is characterized by its rapid pace, long preparation period, huge cost, high consumption, complex nature, and high risk.It takes longer and costs less than a military strike, but it is more precise, covert, and has less uncertain consequences.

        The Stuxnet attacks also fully demonstrated the risk of industrial infrastructure being comprehensively compromised and even pre-positioned on the battlefield. Stuxnet’s success was built on the long-term operation and information gathering of the Flame and Poison malware. Before attacking Iran’s uranium centrifuge facilities, the attackers had already infiltrated and compromised several major Iranian defense and basic industrial companies, including equipment manufacturers, suppliers, and software developers. Table 2-2 lists several instances of these companies being compromised.

Table 2-2 Infiltration of Iran’s Basic Industrial System

CompanyGeographical locationAttack timeMain business
FOOLAD Technic Engineering Co(FIECO)Iran Isfahan2009/6/23
2010/4/26
The company manufactures automation systems for Iranian industrial facilities (primarily steel and electricity production) and possesses data, drawings, and plans from many of Iran’s largest industrial enterprises.
Behpajooh Co. Elec & Comp. EngineeringIran Isfahan2009/6/28
2010/3/23
2010/5/13
2010/7
We develop industrial automation systems and have experts in SCADA/PLC .
Neda Industrial GroupIran2009/7/7We provide industrial automation services for hydropower plants, cement plants, and the oil, gas and petrochemical industries.
Control-Gostar Jahed CompanyIran2009/7/7An Iranian industrial automation company has very deep cooperation with Iran’s largest oil production, metallurgy, and energy companies.
Kala ElectricIran2010/5/11the main supplier of uranium enrichment centrifuge equipment IR-1 . Reports indicate that Iran assembled and tested IR-1 in Kala between 1997 and 2002 .
Mobarakeh Steel Company(MSC)Iran2010/4/24The company is Iran’s largest steel manufacturer and operates one of the largest industrial parks in Iran.

3. Structure and Operational Logic of Stuxnet


        Stuxnet has a very complex structure. It has undergone version iterations from 0.5 to 1.x, with its destructive mechanism changing from interfering with centrifuge valves and causing overpressure leading to mass damage to centrifuges to modifying centrifuge speeds. Its development framework has also changed. We will focus on the more widely used 1.x version to analyze its overall structure and operational logic. The core of Stuxnet is a DLL file (hereinafter referred to as the main DLL file) that exists only in memory after decryption. The DLL file contains 32 different exported functions and 15 different resources. Each exported function has different control functions, mainly involving exported function 15 (initial entry point), exported function 16 (installation), exported function 32 (infecting connected mobile devices and starting RPC services), and exported function 2 (hooking APIs to infect Step7 project files), etc. Each resource also performs different functions, mainly involving resource 250, resource 201, and resource 242, etc. The exported functions utilize these resources with different functions to control Stuxnet to perform different branch operations.

Table 3-1 List of Stuxnet Dropper Resources

Resource IDFunction
201MRxNet.sys loads the driver, which is signed by Realtek.
202DLL infected with Step 7
203CAB files infected with WinCC
205Data file of resource 201
207Stuxnet’s auto-run version
208Step 7: Replace the DLL
209Data file ( %windows%\help\winmic.fts )
210PE template file used for injection
221MS08-067 transmitted via SMB utilizes
222MS10-061 printer spooler vulnerability exploitation
231Network connectivity check
240LNK template file used to create LNK exploits
241USB Loader DLL ~WTR4141.tmp
242Mrxcls.sys rootkit driver
250Exploitation of Windows Win32k.sys local privilege escalation ( MS10-073 )

        The Stuxnet Dropper releases its resources during the installation and execution process. The Stuxnet drop file is shown in Table 3-2.

Table 3-2 Stuxnet Landing File List

Main name of landing fileFile function / Resource ID
~WTR4141.tmpUSB loader
~DF540C.tmpStatus marker file
~wtr4132.tmpDropper name in USB infection
DEFRAG[RANDLNT].tmpDropper name in shared infection
Oem7a.pnfEncrypted main DLL
mdmeric3.PNF90- byte data file
mdmcpq3.PNFStuxnet configuration file
oem6C.PNFLog
MrxCls.sysResource 242
MrxNet.sysResource 201
s7otbxdx.dllThe replaced Step7 file
s7hkimdb.dllResource 202 ( stuxnet loader )
cc_tlg7.savCAB file Bag Includes a DLL that loads and executes Stuxnet .
winmic.ftsResource 209 (Data File)
winsta.exeStuxnet executable file released during the exploitation of a printer vulnerability
sysnullevnt.mofManaged Object Format File
~WTR4141.tmpUSB loader
~DF540C.tmpStatus marker file

        Based on resource type and their compilation timestamps, the version iterations of PE type resources are obtained, as shown in Figure 3-1. The figure shows that resources 202 and 210 each have three possible versions, resource 208 has two possible versions, and all other resources have only one version. Additionally, resources 207 and 231 had only a few samples and have been removed in subsequent versions of Stuxnet.

Figure 3-1 PE Resource Version Iteration

        Antiy CERT, based on the analysis of Stuxnet sample set and existing data, has drawn up the overall operational framework of Stuxnet, which includes propagation and installation execution.

Figure 3-2 Stuxnet Overall Operational Framework Diagram

        Stuxnet spreads primarily through two methods: mobile device infection, utilizing LNK vulnerabilities or spreading via the autorun.inf file; and network propagation, involving various methods such as WinCC database infection, network sharing propagation, printer spooler vulnerability propagation, and Windows server vulnerability propagation. Although these two propagation methods differ, they both ultimately release the main DLL file for subsequent installation and execution. After infecting a target system, Stuxnet starts an RPC server to listen on the network, connecting other infected computers on the network to the RPC server and querying the Stuxnet version installed on remote computers for peer-to-peer communication and updates. If the Stuxnet version on the remote computer is newer, the local computer requests the new version and updates itself; if the Stuxnet version on the remote machine is older, the local computer’s Stuxnet sends a copy of itself to the remote machine. In this way, Stuxnet can update on any infected machine and eventually spread to all machines.

        During installation, when the main DLL file is first loaded, exported function 15 is called to perform a series of checks, including checking if the configuration data is up-to-date, if the operating system is 64-bit, and if the operating system version is compatible. If the installation requirements are not met, the process exits. In addition, it checks if the target system has administrator privileges. If not, it uses two zero-day vulnerabilities in resource 250 to escalate privileges and obtain the highest privileges. After that, it checks which antivirus software is installed on the target system and which process is suitable for injection. After exported function 15 completes the above-mentioned checks, Stuxnet calls exported function 16.

        Export function 16 is the main installer for Stuxnet. First, it checks if the target system configuration matches, if the registry key value is a specific value, and if the current time is less than the termination time. If these installation requirements are not met, it exits. Execution continues. Stuxnet communicates with different components by creating a global mutex and checks the target system’s current time again to ensure execution only on target systems with a time less than the termination time. It reads the encrypted version from the disk, decrypts it, loads it into memory, calls export function 6 from the newly loaded file to obtain its own configuration data version information, and if it matches the version in the disk file, execution continues. Stuxnet extracts and decrypts resources 201 and 242 and writes the two driver files to the disk. These are used for persistence and hiding malicious files, respectively. To evade detection, Stuxnet modifies the timestamps of these two files to match the timestamps of other files in the target system directory. It creates a rootkit service and registry entries to achieve Stuxnet’s persistence and recreates a global mutex. To continue installation and propagation, Stuxnet transfers control to other exported functions. One method is to inject the main DLL file into the service.exe process and call exported function 32 to infect newly connected mobile devices and start an RPC server. Another method is to inject the main DLL file into the Step7 process and call exported function 2 to infect all specified Step7 files.

4. An Interpretation of Stuxnet from a Threat Framework Perspective


        The ability to develop sophisticated malware like Stuxnet stems from the ample resources and cost support of advanced cyber threat actors. Their operations are supported by a massive engineering system and a large team of personnel, involving a series of complex actions. However, this complexity is not necessarily supported entirely by “advanced” attack methods and equipment. Basic configuration errors and unpatched vulnerabilities on the defending side can become entry points for threat actors; advanced cyber threat actors can also hijack and utilize resources such as botnets controlled by lower-level cyber threat actors, further complicating the situation.

        Deciphering complex attack actions and driving defense improvements requires more ideal structured methods. Models such as kill chains are still insufficient for deconstructing complex attacks like Stuxnet and need further improvement. Threat frameworks, as a more structured and data-driven description of the attack process, are beginning to become the foundation for threat cognition in improving defense capabilities. Currently popular threat frameworks include MITRE’s ATT&CK and the NSA’s NSA/CSS Technical Cyber Threat Framework. The latter draws some inspiration from the former. Given the NSA/CSS Technical Cyber Threat Framework’s intelligence agency background, it is more suitable for extrapolating A2PT attacks similar to Stuxnet.

        Starting from the threat framework, and deducing each stage and behavior of the threat, is a beneficial task for assessing the effectiveness and rationality of the current defense system and related security product capabilities, as well as for forming a systematic defense plan and construction goals. In June 2019, Antiy released a retrospective analysis report on the “Equation Group” attack on SWIFT service provider EastNets[5], which mapped the threat behaviors involved in the incident to the “NSA/CSS Threat Framework” V2 version.

        The threat behaviors involved in the Stuxnet incident are mapped to the categories and actions of the threat framework, as shown in Figure 4-1.

Figure 4-1 Stuxnet Incident Mapped to Threat Framework

        Operation Stuxnet involved 83 actions across 21 targets, including speculative and determined actions.

Table 4-1 Categories and Actions Involved in the Stuxnet Incident

Threat framework categoriesThreat framework actionsSpecific actions
Administration (Action management and resource support)PlanThere may be analysis of the action process; before launching an attack, strategies and objectives may be determined, action plans may be developed in advance, target victims may be selected, and approval may be obtained to carry out the action.
Resource developmentBefore the operation, a simulated firing range environment is set up for testing; prior to the operation, necessary infrastructure, funding, alliances and partners may be acquired, and relevant personnel may be trained.
ResearchThis may involve collecting information about the target and studying its network capabilities;
Preparation (Target survey and environmental preparationt)ReconnaissanceThey may choose to investigate the network environment and devices of potential victims;
Environment presetAdd exploitable points to the application data file; allocate the infrastructure required for the operation; pre-load the target;
Engagement (Target contact and offensive penetration)DeliveryPayload delivery via removable media; payload delivery via exploitation of vulnerabilities; payload delivery via infected host; infection of WinCC machines via hard-coded database server passwords; potential intrusion into the target supply chain / trust source.
UseRPC remote execution vulnerability ( MS08-067 ); shortcut file parsing vulnerability ( MS10-046 ); printer spooler service vulnerability ( MS10-061 ); Kernel-mode driver vulnerability ( MS10-073 ); Task Scheduler vulnerability ( MS10-092 );
Presence (Persistent residence and latency)ExecuteInjecting into system processes such as lsass.exe and csrss.exe ; injecting itself in a special way; replacing Siemens STEP 7 driver files; running a fileless payload; using a DLLName like KERNEL32.DLL.ASLR.XXXX to call LoadLibraryA to load the main DLL file; utilizing remote services; writing to multiple PNF files;
Internal reconnaissanceEnumerate accounts and permissions; detect security products; search for specific keys in the registry; enumerate processes; scan connected mobile devices;
Privilege escalationShortcut file parsing vulnerability; RPC remote execution vulnerability; Printer spooler service vulnerability; Windows Win32K.sys local privilege escalation ( MS10-073 );
Credential accessTransfer voucher, location voucher;
Lateral movementUtilizing peer-to-peer networks; employing password hash authentication; allowing automated execution of removable drives by exploiting a vulnerability; copying and executing itself on a remote computer via network shares; writing to remote file shares; infecting WinCC machines by hard-coding database server passwords;
PersistenceThe MrxCIs.sys driver file can be registered as a startup service; create new services; modify service configurations; and hijack services using library searches.
Effect (Application of effectiveness)MonitorRecord information to the oem6c.pnf file; monitor inserted USB devices;
LeakageLeaking data or information; storing data in a designated location; sending basic information about the infected machine to attackers via HTTP ;
ModifyHiding modified code on the PLC is essentially a PLC rootkit ; modifying process results; reprogramming industrial control systems by modifying the programmable logic controller code; modifying inter-machine communication;
DestroyCentrifuges that damage industrial control systems;
Ongoing rocesses (Continuous support throughout the entire process)Analysis, evaluation, and feedbackThere may be an impact on the objectives that needs to be assessed;
Command and ControlEstablish a peer-to-peer network; send basic information about the infected machine to the attacker via HTTP ; utilize the peer-to-peer connection; update via the peer-to-peer network using RPC ; check network connectivity; execute encrypted binary code via command and control responses;
EvasionEmploying anti-forensic measures; employing anti-reverse engineering measures; using rootkits ; encoding data; encrypting configurations and appending data; using digital signature certificates signed by JMicron and Realtek ; manipulating trusted processes; modifying malicious code to evade detection and obfuscate data; adjusting behavior based on configuration files;

        For attacks of Stuxnet scale, the key focus should be on their decision-making and preparation processes. Such complex and sophisticated attacks are difficult to execute effectively without a fully equivalent simulated test environment. Simply focusing on the malware and exploit tools themselves, without conducting in-depth analysis of the preliminary stages such as action management and resource security, target reconnaissance and environment preparation, diminishes the significance of introducing a threat framework. Undoubtedly, this part of the analysis is more difficult and complex.

        Re-examining Stuxnet from the perspective of threat framework also allows us to answer the “Michael question”. In March 2014, Michael, a senior researcher at Lockheed Martin, analyzed the intent and capabilities of the Stuxnet incident on his blog and raised the question “Why Stuxnet Isn’t APT?” [6]. In this paper, Michael argued that the uncontrolled spread of Stuxnet and the obvious physical spatial consequences did not conform to the high directionality and stealth of APT, and that Stuxnet was more advanced than common APT attacks. He was more inclined to believe that Stuxnet was a combat operation rather than an APT attack. Michael’s view that Stuxnet is more advanced than APT is similar to Antiy’s view that Stuxnet-level attacks are named A2PT. However, Michael’s fundamental concept is to map APT with CNE (cyber intelligence exploitation). Therefore, when Stuxnet aims to achieve CNA (cyber attack, combat), it is reasonable to raise such questions. However, in reality, it is difficult to separate CNE from CNA. CNE is usually the basis of CNA. The transformation of CNE into CNA may just be an adjustment of instructions and strategies. In the threat framework, CNA actions are several action links in the effective use of capabilities. This integrates CNE and CNA into a single framework, thereby better promoting the improvement of the analysis and defense system.

5. Reasons for the “Out of Control” of USB Transfer and Propagation in Stuxnet


        Stuxnet is a malicious code designed to attack very specific industrial scenarios. In 2019, some media reported that the Stuxnet virus entered the physically isolated industrial network of Iran by recruiting “insiders” at the request of Dutch intelligence personnel [7]. In the internal network, Stuxnet mainly spreads by using USB slingshots and lateral movement based on vulnerabilities. Its preset attack scenario is an internal network isolated from the Internet. In its earliest analysis report [1], Antiy explained its propagation mechanism with Figure 5-1:

Figure 5-1 Multiple Propagation Modes of Samples

        The overall propagation strategy is as follows: infected USB drives exploit shortcut file parsing vulnerabilities to spread to the internal network; within the internal network, propagation occurs between networked hosts via shortcut parsing vulnerabilities, RPC remote execution vulnerabilities, and printer spooler service vulnerabilities; finally, it reaches the host with WinCC software installed and launches an attack. During this process, there is also a possibility that the infected host will infect the inserted USB drive, but according to Antiy’s analysis, this action is not unconditional.

Figure 5-2 Configuration File Parsing During USB Flash Drive Infection Process

        Computers infected with Stuxnet monitor connected devices. Once a USB drive is inserted and certain conditions are met, the computer begins writing files to the USB drive. These conditions are as follows:

·  The USB drive is not currently infected;

·  Infect the disk based on the configuration flag (not the default setting). If the default configuration does not infect, then the occurrence of infection depends on the date.

·  The computer has been infected for less than 21 days.

·  The USB drive must have at least 5MB of free space.

·  The USB drive contains at least 3 files.

        The USB file and loading attack logic are shown in Figure 5-3. It contains four LNK shortcut vulnerability (CVE-2010-2568) files applicable to different Windows versions and two TMP files (~WTR4141.tmp is the USB Loader, and ~WTR4132.tmp is the Dropper, both in DLL format, with hidden and system attributes). Stuxnet hides these six files through a rootkit, so the computers infected by Stuxnet cannot see these files on the USB drive.

        The USB flash drive spoofing attack process is as follows: An infected USB flash drive is inserted into a new computer. When the user opens the USB flash drive, the system begins to traverse the USB flash drive’s directory files. When the traversal reaches the LNK file, the vulnerability triggers the loading and execution of ~WTR4141.tmp. ~WTR4141.tmp first hooks file-related functions to hide these 6 files (these 4 LNK files can be seen momentarily when the USB flash drive is opened; if the options to show hidden and system files are enabled, 2 TMP files can also be seen, but the vulnerability triggers and all 6 files are instantly hidden in the folder and cannot be seen). Subsequently, ~WTR4141.tmp loads and calls ~WTR4132.tmp in memory to complete the execution of the Stuxnet main module.

Figure 5-3 Schematic Diagram of USB File and Loading Attack Logic

        Whether Stuxnet infects the USB drive depends on several values in the encrypted configuration file mdmcpq3.pnf, including:

·  Flag bits at offsets 0x6c, 0x70, and 0xc8;

·  The timestamp at offsets 0x78 and 0x7c;

·  The values at offsets 0x80 and 0x84.

        The USB drive will only be infected if all conditions corresponding to each value are met. The bit at offset 0xc8 is set to not be infected by default.

        Stuxnet does not actively modify configuration data; configuration updates are accomplished through version updates. Therefore, we believe it attempts to connect to the internet to determine if it is on an internal network. If so, it spreads only through other means; it only infects USB drives after connecting to a server or other infected host for updates.

        When Stuxnet infects a USB drive, it copies multiple .lnk shortcut files and two .tmp files to the root directory. One of the .tmp files is digitally signed and used to hide its own driver; the other contains the virus itself and a delivery program, with configuration information already present in the virus.

        According to data from the Stuxnet attack monitored by Symantec from July to October 2010, computers in 155 countries around the world were infected, with about 60% of the affected hosts located in Iran[8]. Regarding the reason why an operation that was considered to be highly targeted exhibited a divergent propagation effect, various analysts have offered several different speculations:

        The first hypothesis is that various factors led to the uncontrolled spread. Although Stuxnet’s USB ferret and lateral movement design limited its propagation to intranets, its propagation and attack strategies, based on isolated network targets, meant that unlike internet-based attacks, it couldn’t be remotely controlled or adjusted, often relying on preset stop times for propagation. The worm infected a laptop brought to the site by a vendor engineer, subsequently spreading to the vendor’s own network and other customers’ intranets. VPN connections within these intranets exacerbated the spread, ultimately causing Stuxnet’s uncontrolled propagation. This view contradicts some real-world examples; for instance, Stuxnet version 0.5, despite its longer operation cycle and the achievement of its attack objectives, did not experience widespread dissemination.

        The second speculation is that this was done intentionally by the operators to obtain more information. The purpose was to further understand the situation of suppliers in Iran’s nuclear industry system based on the infection chain. In his book “Stuxnet’s Secret Twin” [9], German control system security consultant Ralph Langner speculated that this external spread was because the attackers wanted to take the opportunity to obtain intelligence on suppliers of facilities related to Iran. He pointed out that “given that Stuxnet reported the IP address, hostname and basic configuration information of the infected system to its C&C server, it seems that the attackers obviously expected (and accepted) the spread to non-military systems and were quite eager to monitor it closely—the attackers would eventually obtain information on contractors working in Natanz and their clients, and even information on Iran’s secret nuclear facilities”.

        The third hypothesis is that the perpetrators wanted to conceal their intention to launch a targeted attack, thus increasing the difficulty of evidence collection and tracing by expanding the scope of the infection. This includes interfering with the more accurate identification and location of the true attack target.

        The fourth speculation is that the attackers were demonstrating their capabilities to intimidate or even blackmail other countries. If the incident had occurred solely in Iran, it might have remained hidden. Only by allowing it to “escape” and spread could this effect be achieved more quickly. In his article “Stuxnet’s Secret Twin”, Ralph Langner similarly speculated that “the discovery of Stuxnet signifies the end of the operation, but its practicality does not necessarily end. It will demonstrate to the world what cyber weapons can do in the hands of a superpower. Unlike the display of physical military equipment, a USB drive cannot be displayed during a military parade. The attackers may also be targeting another country, or at worst, an adversary; and will be the first to demonstrate their capabilities in the digital domain—this scenario could be considered another Sputnik moment in the history of superpowers. All these reasons make it less worrying for the attackers to be detected”.

        Whether the spread of Stuxnet was “out of control”, intentional on the part of the attackers, or a combination of both remains to be seen. The final outcome may not be due to a single cause, but rather a combination of factors.

6. Why Does Stuxnet Have Thousands of Samples?


        As a highly targeted attack, one puzzling fact is that Stuxnet does not have the ability to infect other host files, yet a large number of samples exist.

        In malware countermeasures, samples are considered a crucial foundational resource. Samples are viewed as a physical file representation of malware, including host files containing infectious viruses, files containing non-infectious malware, and file images of sectors or memory where malware resides. As the depth of threat countermeasures has expanded from initial detection and erasure to response, in-depth mechanism analysis, and attribution, we’ve observed changes in the demand for and definition of samples. Samples in the sense of investigation/hunting differ from samples in the traditional sense of detection. Samples in the traditional sense include files collected in real-world scenarios, as well as transformed samples constructed for testing antivirus engine capabilities and analysis. Such sample construction is essential for detection and removal capabilities. For example, sample specifications, especially for infectious viruses, require a specified number of infected files based on file sizes such as DOS_COM and DOS_MZ, to ensure the effectiveness of detection and removal. For polymorphic viruses, even more samples need to be constructed. For investigation/hunting purposes, the objective existence of something in an attack scenario becomes an important sample attribute that needs to be identified.

        Antiy Labs captured thousands of Stuxnet samples, which can be categorized into several distinct dimensions: raw payloads transferred via USB drives, files stored on the host machine, and non-stored modules (requiring static extraction or dynamic dumping). One category consists of the final attack payloads extracted from these samples (most of which are not stored on the host in actual attacks) and auxiliary drivers. The majority of the physical files extracted from the disk media fall into three categories: attack payload droppers (original filename ~WTR4132.tmp), USB loaders (~WTR4141.tmp), and LNK exploit files. The number of dropper samples is dispersive, reaching thousands according to Antiy Labs’ data. The final attack module payloads and auxiliary drivers are in the hundreds, showing a convergence in total number.

        The classification of the Stuxnet sample set is shown in Figure 6-1.

Figure 6-1 Stuxnet Sample Collection Classification

        Antiy CERT analysis revealed that the large sample size of the Stuxnet dataset was due to the following reasons:

1. The Dropper Sample Writes the Target Configuration upon Deployment, Causing File Changes.

        The attack payload dropper has a resource segment called “stub”, where the attack payload (i.e., the main DLL) resides. When the virus is deployed, the configuration data stored in the stub segment is updated with relevant information from the currently infected node. This is a primary reason for the large number of samples in the Stuxnet sample set. In other words, each deployment to Stuxnet creates a new dropper with a different hash. This results in a dispersed distribution of samples in terms of hash count. Furthermore, the actual “versions” of the dropper functionality within the sample set are limited. 98.84% of the import tables in the dropper are identical, and 91% of the samples have completely identical files extracted from their text segments, all with the MD5 hash 17e2270d82d774b7f06902fa7d630c74. This is a dominant dropper version used in large-scale infections.

Figure 6-2 Dropper Import Table Statistics

        The stub segment is the location where the main DLL is stored, and its layout is shown in Table 6-1.

Table 6-1 Stub Segment Layout Analysis

OffsetLengthExplain
+00DwordFlag
+04DwordMain DLL is offset relative to the current position.
+08DwordMain DLL length

        The function for decrypting the main DLL is as follows:

Figure 6-3 Decryption of Main DLL Functions

        The data following the main DLL contains encrypted configuration information that can control Stuxnet’s behavior during the infection process. This allows Stuxnet to continue operating according to preset strategies even when remote control is unavailable, ensuring the success of its complex operations. Its configuration file also records information about the infected machine and time characteristics. The attackers likely intend for this information to be extracted and recorded during the infection process, allowing them to directly submit the relevant data to the C2 server once connected to the network, without requiring secondary extraction and reducing manipulation of the host environment to minimize the chance of exposure.

        The partially decrypted configuration information is as follows:

Figure 6-4 Partial Decrypted Configuration Information

        Table 6-2 provides a breakdown of some configuration values. These values control Stuxnet’s behavior on the victim host. Specifically, they include: controlling the infection start time via the +A4 value (if this value fails to meet infection requirements, the infection will terminate); controlling the termination time of USB infection via the +78 value; and values related to controlling Stuxnet propagation and version updates. The decrypted configuration information contains nearly a hundred such values controlling Stuxnet’s behavior; these values are what control Stuxnet’s complex actions.

Table 6-2 Partial Configuration Analysis

OffsetLengthExplain
+00DwordConfiguration file start flag
+04DwordConfiguration file header length
+08DwordConfiguration file checksum
+0CDwordConfiguration file length
+68DwordThe flag bit, if it is 0 , checks the flag at +70 (if it is 1 , it directly infects the USB ).
+70DwordFlag If the value is 0 , then check the timestamp at +78.
+78QwordTermination of USB infection time
+80DwordNumber of files required on the USB drive
+8CQwordEnd time
+A4QwordInfection start time (if more than 21 days have passed, infection of USB drives will cease ).

        Dropper’s configuration file validation function:

Figure 6-5 Dropper’s Configuration File Validation Function

        Key information about the configuration block, such as infection path, infection time, and configuration block length, was extracted and analyzed. It was found that Stuxnet updates its data configuration block after each new device infection, resulting in an additional dropper sample with the new configuration for each infected device. Figure 6-6 shows the distribution of the number of Stuxnet infection times. The infection times from 2008 to 2010 are considered to be of higher confidence, while the infection times from 2000 to 2007 are considered to be of lower confidence.

Figure 6-6 Distribution of the Number of Infections Starting at the Time of Infection (The Incorrect Start Time May Be Due to Clock Synchronization Issues Between Internal Network Hosts).

        During the installation and execution of Stuxnet, the current time of the target system is checked multiple times. If the target system time is greater than the termination time, Stuxnet will exit the installation and execution process. Figure 6-7 shows the statistics of the termination time of USB drive infection in Stuxnet version 1.x. There are three termination times for USB drive infection: July 31, 2010, August 31, 2010, and December 31, 2010. The vast majority of the termination times for USB drive infection are December 31, 2010.

Figure 6-7 Statistics on the Time of Termination of USB Flash Drive Infection

2. Caused by the Analysis and Extraction Process

        Extracting the various functional payloads of Stuxnet from the main DLL is a crucial task in Stuxnet analysis. This introduces a new factor to consider in sample statistics: what constitutes the original sample and what represents the processing data. The Stuxnet main DLL file is stored in the Dropper using UPX compression to prevent excessively large sample sizes and reduce propagation opportunities. In actual infection processes, the main DLL is not permanently stored on the disk. The sample set contains a UPX-packed main DLL file, and different versions exist due to dumping, including unpacked versions and versions generated using different unpacking methods.

        In the samples used in A2PT’s organized operations, the use of shells was rarely observed. This may be related to some antivirus software issuing warnings about shells or outputting logs. However, the main DLL file of Stuxnet is compressed using UPX shell in Dropper (as is the case with Duqu), which is likely due to considerations of reducing file size.

Figure 6-8 Incompletely Unpacked File

3. Interference Data

        In Stuxnet’s USB Loader sample set, hundreds of sample files had corrupted signatures, and many of these files also had other LNK files and alarm logs from some antivirus product appended to their ends. Based on current analysis, this is caused by a bug in a certain antivirus product. A certain version of the product would incorrectly append data to the end of the samples when scanning them, thus introducing hundreds of corrupted samples.

Figure 6-9 LNK File Appended to the End of USB Loader

7. Association Between a Malware Framework and Multiple A2PT Incidents

        Before and after the Stuxnet incident, advanced malware such as Poison, Gauss, and Flame were successively exposed. Because these malware programs were unprecedentedly complex and were often found in Middle Eastern countries, it was a natural assumption that they were related to each other.

        In early 2011, Antiy CERT proposed the speculation that there might be some kind of connection between Stuxnet and Duqu, but it was not until early the following year that a relatively systematic verification was completed. They published two papers, “Exploring the Mystery of the Origin of the Duqu Trojan” [10] and “From the Homology of Duqu Virus and Stuxnet Worm to See Industrial Control System Security” [11], which respectively confirmed the existence of a homology relationship between the two from the perspectives of module structure similarity analysis, compiler architecture similarity analysis, key function implementation similarity analysis, key and other key data similarity analysis, coding psychological characteristics analysis, and the analysis of the same program bugs.

Figure 7-1 Comparison of Code Fragments Between Stuxnet Worm and Duqu Virus

Figure 7-2 The Stuxnet Worm and the Duqu Virus Use the Same Key

        Antiy Labs concluded at the time that “by comparing the key code structure, key usage methods, and code logic of the Stuxnet worm and the Poison Virus, we discovered a large number of identical or similar code fragments, indicating that there is a code reuse relationship between the two, or that they are developed based on the same code framework”. However, no definitive conclusion was reached at the time regarding whether it was a reuse relationship or development based on the same framework. Integrating the later analysis results and progress of other organizations, the conclusion that relevant A2PT attack groups maintained at least two malicious code frameworks, Tilded and Flame, can be drawn. Stuxnet, Poison Virus, Flame, and Gauss were developed based on the Tilded and Flame frameworks, respectively. On June 11, 2012, Kaspersky released a report stating that the early 2009 version (version 0.5) of the Stuxnet module (called “Resource 207”) was actually a Flame plugin. This finding also connected the two completely different frameworks, Flame and Tilded. Malicious code based on these two frameworks has unique techniques in infecting target systems and performing main tasks, and both are used to develop different cyberattack tools. Kaspersky concluded that the teams behind the two frameworks had shared the source code of at least one module, indicating that they had collaborated at least once and were two parallel projects belonging to the same organization [12]. Based on further clues, Fanny and Flowershop can be linked to the above events, and their relationship is shown in Figure 7-3.

Figure 7-3 Relationship Diagram Between Stuxnet and Duqu, Flame, Gaussian, Fanny, and Flowershop

7.1 Flamer Framework

        The development of the Flamer framework can be traced back to December 2006. Flame and Gauss are based on the Flamer framework. Antiy Labs captured samples of the Flame worm starting from May 28, 2012[13] and established a special analysis team to conduct continuous analysis. They found that Flame is a type of malware that steals information using a complex multi-modal structure. Its main module file is over 6MB in size and contains a large amount of encrypted data, embedded scripts (such as Lua), vulnerability exploit code, module configuration files, multiple encryption and compression algorithms, and multiple modules for information theft.

        Flame has two main versions, Flame 1.0 and Flame 2.0, both of which consist of multiple submodules that rely on a master coordinator that is embedded in the Lua VM. Flame and Gauss share some code and also share the MiniFlame malware plugin.

7.2 Tilded Framework

        Stuxnet and PoisonQu are developed based on the Tilded framework. The Tilded framework’s infection method can generally be summarized as utilizing driver files to load a main module designed as an encryption library. Simultaneously, the entire malware complex has a separate configuration file, and an encrypted block in the system registry defines the location of the loaded module and the name of the injection process.

        Known versions of Stuxnet include Stuxnet 0.5, Stuxnet 1.001, and Stuxnet 1.100. Stuxnet 0.5 was an earlier version of Stuxnet, but it was later discovered and exposed, and this variant ceased its attacks on computers on July 4, 2009. The main differences between Stuxnet 0.5 and Stuxnet 1.x versions include: Stuxnet 1.x versions significantly increased propagation and exploit capabilities; Stuxnet 0.5 was partially based on the Flamer framework, while Stuxnet 1.x versions were primarily based on the Tilded framework; Stuxnet 0.5 used overpressure to massively damage centrifuges, while Stuxnet 1.x versions adopted a new attack strategy, shifting from uranium enrichment valve sabotage to centrifuge speed modification.

Table 7-1 Comprehensive Comparison of Technical Details between Stuxnet Versions 0.5 and 1.x

VersionTimeDescriptionVulnerability exploitationEvolution of communication technologyPlatform evolutionEvolution of attack strategies
0.5002005/11/3C&C Server RegistrationCVE-2012-3015 — Step 7 : Loading the security library;Step7
is executed via USB by infecting the Step7 project file
and updating the peer-to-peer network via mailslot.
Based on Flamer platformfor S7-400 ( 417 ) PLCs (modification of cascade protection system valve operation during uranium enrichment)
0.5002005/11/15Date submitted to public scanning service
0.5002009/6/4Infection stop date
1.0012009/6/12Binary compilation timestamp updateCVE-2010-2729 — Print Service RCE;
CVE-2008-4250 — Windows Server Service RPC RCE;
CVE-2012-3015 — Step7 Security Library Loading;
CVE-2010-2772 — WinCC Default Password
MS09-025; NtUserRegisterClassExWow
/NtUserMessagerCall EOP
This involves infecting Step7 project files
to enable self-starting
network sharing
via USB , Windows Server RPC
Printer spooler, and
WinCC server
updates to the peer-to-peer network via RPC.
Primarily based on the Tilded platformCode
for S7-300 ( 315 ) PLCs (controlling the speed of the rotary centrifuge) and
incomplete code sequences for 417 PLCs.
1.100 1.0012010/3/1
2010/4/14
Binary compilation timestamp updateCVE-2010-3888 — Task Scheduler EOP
CVE-2010-2743 — LoadKeyboardLayout EOP
CVE-2010-2729 — Print Service RCE
CVE-2008-4250 — Windows Server Service RPC RCE
CVE-2012-3015 — Step7 Security Library Loading
CVE-2010-2772 — WinCC Default Password
CVE-2010-2568 — Shortcut .lnk RCE
Step 7: Project files
trigger CVE-2010-2568
network sharing
via USB . Windows Server RPC
Printer spooler
WinCC server
updates peer-to-peer network via RPC.

        The main versions of Duqu include Duqu 1.0, Duqu 1.5, and Duqu 2.0. Duqu and Duqu 2.0 use the same algorithm and reuse a lot of the same code. There is a lot of overlap in attack targets between Duqu 1.0 and Duqu 2.0. Both Duqu 1.5 and Duqu 2.0 use the Pipe Backdoor plugin.

        Stuxnet and Duqu share similarities in module structure, compiler structure, key functions, data structure, and the psychology of virus authors[14]. Furthermore, Stuxnet, Duqu1.0, and Duqu2.0 all use digital certificates stolen from IT vendors in Taiwan, China.

7.3 The Connection Between Stuxnet and Fanny and Flowershop

        As can be seen from Figure 7-3, in addition to being associated with Poisonous Melody and Flame, Stunnet is also associated with Fanny and Flowershop.

        Stuxshop was an early component of Stuxnet, used to manage early C2 servers. There is code overlap or sharing between Stuxshop and Flowershop (a malware platform active from 2002 to 2013).

        Fanny, an early component of Equation, used two zero-day vulnerabilities from Stuxnet: the LNK vulnerability (CVE-2010-2568) and a privilege escalation vulnerability embedded in “Resource 207”. Furthermore, Stuxnet and Equation developers shared coding styles or used the same development guidelines.

8. Facing the Challenges of Detection Engines and Threat Intelligence


        In previous analysis reports by Antiy, we discussed and explored the defense challenges posed by A2PT. However, in our review of Stuxnet, we hope to focus on a specific issue: the challenges that advanced malware poses to detection engines and threat intelligence.

        Malicious code, serving as the attack payload, is the “warhead” of cyberattacks. It appears in almost every cyberattack, especially in the activities of high-capability cyber threat actors. From a threat framework perspective, high-capability cyber threat actors need to achieve target contact and penetration, persistent presence and covert operations, and continuous support throughout the entire process, further realizing various effective capabilities. This requires not only achieving operational intent tailored to specific business scenarios but also circumventing systematic defenses to achieve deep persistence and covert communication, necessitating the execution of highly complex logical functions. This has led to an increasing reliance on malicious code in APT attacks, with advanced malicious code exhibiting trends of increasingly large frameworks, numerous modules, and atomic instruction sets.

        In its past analysis of cyber threats and tracking of cyber threat actors, Antiy has continuously monitored and analyzed attack activities by Stuxnet, Flame, Poison, and Equation, which possess complete and rigorous operational frameworks and methodologies, as well as the advanced malware they use. It has also analyzed targeted attack activities that combine “commercial weaponry” with open-source and free tools, i.e., lower-level self-developed malware. This analysis is long-term and costly, but it forms the foundation for more effective defense and targeting. Empowering clients to build dynamic and comprehensive defense systems is our goal; and the fight against attack tools (malicious code, exploits, and other tools) has always been a key focus.

        In this confrontation, traditional antivirus engines and threat intelligence become two complementary mechanisms. The former possesses unparalleled depth in detecting and identifying massive amounts of malicious code, and utilizes deep preprocessing and virtual execution mechanisms to counter variants and variations of malicious code. Therefore, it offers unparalleled depth in payload detection and provides a precise judgment mechanism for massive payload objects. However, the shortcomings of traditional antivirus engines in threat countermeasures are also obvious. They are the easiest security resources for attackers to obtain. Most antivirus software can be publicly downloaded or purchased at low cost, and publicly available multi-engine scanning mechanisms like VirusTotal also become testing resources for attackers. Therefore, antivirus engines are inevitably susceptible to being bypassed by automated evasion tests. Furthermore, their mechanism of regularly updating local detection libraries, or the reliance of cloud engines on remote access, imposes deployment costs on internal network users. Another issue is that traditional antivirus engines operate based on sample detection rate as the core indicator, lacking a more specific focus on threat countermeasures in their information output. These shortcomings require threat intelligence to address. In the threat intelligence pyramid, “narrowly defined intelligence” such as hashes, IP addresses, and domain names are placed at the bottom, meaning they are easy to obtain and inexpensive to apply. They are relatively easy for the defending party to extract as attack indicators (beacons), and can also be integrated with various existing extension interfaces of security devices, management devices, and protection software.

Figure 8-1 Threat Intelligence Pyramid Model

        While hash detection mechanisms are far less robust than traditional antivirus engines, their uniqueness, coupled with reliable knowledge base support, allows for precise targeting of attack organizations. For example, two different attack organizations might each create the same version of a commercial Trojan, attaching their respective C2 configurations to the end of the file. To an antivirus engine, this is the same sample, but hash intelligence, when analyzed, can differentiate them. However, the usability of hash intelligence hinges on the existence of reusable samples with unchanged binary form. The same applies to IP and domain name rules. When the intelligence provider can direct malicious activity to a specific communication infrastructure (C2) to perform heartbeats, control, upgrades, and data transmission, and then direct this malicious activity to a particular attack organization, the corresponding network IoC can be matched with other attack activities, thus establishing a link between the attack behavior and the organization. This low-level attack targeting mechanism, while simpler in its mechanism than antivirus and traffic detection engines, offers a rapid, widely expandable, and precisely defined capability, providing a fast and more universal monitoring and survey function. Therefore, the combination of traditional detection engines and IoC intelligence can create a complementary effect. This combination model is also the model that Antiy Labs has been promoting over the past few years.

        However, a review of the Stuxnet incident nine years ago reveals that this level of intelligence is nearly ineffective against A2PT attacks. The hash of the Dropper file extracted from each host could not possibly match the equivalent file on another host. We cannot assume that Stuxnet’s self-writing update mechanism was primarily designed to circumvent hash detection mechanisms, but it objectively achieved this effect. More importantly, although the analysis shows that domains related to the Stuxnet attack were registered as early as 2005, Stuxnet’s attack effect was already achieved when the analysts used relevant communication characteristics as rules. In attacks like Poison, we also widely observe the existence of internal C2 mechanisms. If the antivirus engine is a heavily overloaded mechanism that attackers can easily bypass, and the attack indicator (beacon) is an intelligence mechanism with extremely low stability, the effectiveness of this double-layered protection will be greatly reduced.

        Antiy, recognizing that traditional threat detection engines are often exploited by attackers in threat adversarial operations, began developing its next-generation threat detection engine in 2016. Antiy’s next-generation engine inherits and enhances the format recognition and deep analysis capabilities of its traditional engine, maintaining its ability to accurately classify and identify variants of massive amounts of malicious code. Furthermore, assuming no trusted formats or objects exist, it achieves full-format recognition of detected objects and deep analysis capabilities for more critical formats. Beyond simply outputting judgment results to the calling stage, it can also structure and output the vector decomposition results of detected objects, forming data resources to support analysis, correlation, and tracing in product scenarios and situational awareness scenarios.

        Exploring a better integration of detection engines and threat intelligence, establishing more reliable basic identification capabilities and response mechanisms, more effectively supporting TTPs and even intelligence related to personnel and organizations, and building a more complete knowledge engineering operation system will be a direction that requires long-term efforts for us.

Appendix 1: References


[1] Comprehensive Analysis Report on Stuxnet Worm Attacks on Industrial Control Systems

https://www.antiy.com/response/stuxnet/Report_on_the_Worm_Stuxnet_Attack.html

[2] Follow-up analysis report on the Stuxnet worm

Antiy Technical Articles Compilation (V) – Industrial Control System Security Volume

[3] What happened after WinCC?

Antiy Technical Articles Compilation (V) – Industrial Control System Security Volume

[4] “Offensive Cyber Capabilities at the Operation Level”

https://csis-prod.s3.amazonaws.com/s3fs-public/legacy_files/files/publication/130916_Leed_OffensiveCyberCapabilities_Web.pdf

[5] Retrospective Analysis Report on the “Equation Group” Attack on SWIFT Service Provider EastNets

https://www.antiy.com/response/20190601.html

[6] Why Stuxnet Isn’t APT

https://digital-forensics.sans.org/blog/2011/03/24/digital-forensics-stuxnet-apt

 [7] Revealed: How a secret Dutch mole aided the US-Israeli Stuxnet cyberattack on Iran

https://news.yahoo.com/revealed-how-a-secret-dutch-mole-aided-the-us-israeli-stuxnet-cyber-attack-on-iran-160026018.html

[8] W32.Stuxnet

https://www.symantec.com/security-center/writeup/2010-071400-3123-99

[9] Stuxnet’s Secret Twin

http://www.foreignpolicy.com/articles/2013/11/19/stuxnets_secret_twin_iran_nukes_cyber_attack#sthash.ENqwTV0K.dpbs

[10] Exploring the mystery of the origin of the Duqu Trojan: a homology analysis of Duqu and Stuxnet

http://blog.sina.com.cn/s/blog_64a6dc1501016sed.html

[11] Industrial Control System Security Based on the Homology between Duqu Virus and Stuxnet Worm

Antiy Technical Articles Compilation (V) – Industrial Control System Security Volume

[12] Resource 207: Kaspersky Lab Research Proves that Stuxnet and Flame Developers are Connected

https://www.kaspersky.com/about/press-releases/2012_resource-207-kaspersky-lab-research-proves-that-stuxnet-and-flame-developers-are-connected

[13] Flame Worm Sample Set Analysis Report

https://www.antiy.com/response/flame/Analysis_on_the_Flame.html

[14] Series of reports on homology analysis of Duqu and Stuxnet

Antiy Technical Articles Compilation (V) – Industrial Control System Security Volume