<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://elvis.hcw.ac.at/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MArastu</id>
	<title>Elvis Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://elvis.hcw.ac.at/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=MArastu"/>
	<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php/Special:Contributions/MArastu"/>
	<updated>2026-09-10T20:07:23Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Lightbulb_Worm&amp;diff=13719</id>
		<title>Lightbulb Worm</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Lightbulb_Worm&amp;diff=13719"/>
		<updated>2024-01-07T19:40:37Z</updated>

		<summary type="html">&lt;p&gt;MArastu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is a Lightbulb Worm? ==&lt;br /&gt;
&lt;br /&gt;
The Lightbulb Worm is a construct that results from the research and attacks done by Colin O&#039;Flynn, Eyal Ronen, Adi Shamir, and Achi-Or Weingarten. &lt;br /&gt;
They provide the ingredients of the first worm that affects smart lighting systems.&lt;br /&gt;
&lt;br /&gt;
The worm has the power to spread only through physical proximity and would also be able to destroy lightbulbs permanently. It only takes one infected lightbulb to be installed, and the worm can spread - through its ZigBee wireless connectivity - directly to the physical neighbors of this lamp. These newly infected lamps would again infect all their neighbor lamps.&lt;br /&gt;
That leads to a massive chain reaction that spreads in an epidemic fashion and attacks whole cities. The critical mass to infect all lightbulbs within a urban area like Paris was estimated to around 15.000 lightbulbs. &amp;lt;ref name=&amp;quot;ronenarticle&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Philips Hue and Zigbee Light Link ==&lt;br /&gt;
&lt;br /&gt;
The research and experiments of constructing the lightbulb worm have been done by using Philips Hue smart lighting systems and exploiting the implementation of their inbuilt ZigBee Light Link Protocol and firmware update mechanisms.&lt;br /&gt;
&lt;br /&gt;
The Philips Hue smart lamp system works as follows:&lt;br /&gt;
The lightbulbs are connected to a bridge device which creates a network the lightbulbs can join. The bridge controls all the lamps and also contains an IP link. Via the Router, it is connected to the Internet through which you can control your system with the Philips Hue Lightning App. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PhilipsHue.jpg|thumb|none|600px|Philips Hue and ZLL Architecture &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Philips Hue lamps communicate with their controllers through the Zigbee protocol and use the ZigBee Light Link protocol. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ZigBee Light Link protocol is standardized by the ZigBee Alliance and is a very popular standard in the lighting industry because it provides network flexibility and scalability. &lt;br /&gt;
It also offers high interoperability between products from different vendors. &lt;br /&gt;
To enable high interoperability, the Touchlink Commissioning protocol is used. It makes the installation of the light bulbs very easy and intuitive. &amp;lt;ref name=&amp;quot;wan13/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Touchlink commissioning protocol creates PANs (Personal Area Networks) and directs every new device placed in proximity to a specific bridge to join the PAN. &lt;br /&gt;
The new device receives an encryption key that is used to encrypt and authenticate messages within the PAN. &lt;br /&gt;
This encryption key is unique for every PAN and encrypted by a “Master key.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This “Master key&amp;quot; is a secret key, but it is used and stored on every ZLL certifed&lt;br /&gt;
product. In the case for Philipps Hue products the same AES-CCM key was used on every device. This resulted in the fact that the team was able to send faulty OTA updates to each device since using the same key on each device does not offer any protection if this key is known to the attacker. &lt;br /&gt;
&lt;br /&gt;
The Touchlink protocol provides two message types with which the state of a lightbulb can be changed:&lt;br /&gt;
&lt;br /&gt;
1. Reset to factory new request: If the target device receives this message&lt;br /&gt;
with a valid Transaction ID, it is reset to a factory new state, and all Network information and keys are deleted. &lt;br /&gt;
&lt;br /&gt;
2. Join (or start) network request: With this message, the device is instructed to join&lt;br /&gt;
the PAN. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security Features of Philips Hue ==&lt;br /&gt;
&#039;&#039;&#039;Encryption Mechanisms&#039;&#039;&#039; – see [[#Philips Hue and Zigbee Light Link|Philips Hue and ZigBee Light Link]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proximity Check&#039;&#039;&#039; - prevents a takeover of lightbulbs in the nearest neighborhood. &lt;br /&gt;
:The proximity check ensures that the initiator is physically very close to the target.&lt;br /&gt;
:It must be passed successfully to connect lamps to the bridge.&lt;br /&gt;
:Without the proximity check, any initiator that owns the ZLL master key could instruct lightbulbs to reset to a factory new state or join a new PAN. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ingredients of the Lightbulb Worm ==&lt;br /&gt;
&lt;br /&gt;
;Persistence of code execution on the lamps to take over the control of the lamps&lt;br /&gt;
:The researchers achieved the Persistence of Code Execution by exploiting the (OTA - Over the Air) update mechanisms of the Philips Hue. And they did that by reverse engineering.&lt;br /&gt;
:The reverse engineering was possible because the system was vulnerable to side channel analysis and also some parts of the encryption was already known.&lt;br /&gt;
&lt;br /&gt;
:So the team managed to upload selfwritten firmware on the lamps instead of the original firmware.&amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Lateral movement - the worm should spread automatically through proximity&lt;br /&gt;
:The lateral movement had been achieved by passing the proximity check.&lt;br /&gt;
:That was possible by exploiting the software implementation of the Touchlink protocol and a feature of the ZLL protocol. &lt;br /&gt;
:ZLL devices should also be able to join other ZigBee networks, where no ZLL is used. When no ZLL is used, there is also no proximity check.&lt;br /&gt;
&lt;br /&gt;
:So they just had to set the lightbulbs to a Factory New state and make the lightbulbs actively search for ZigBee networks and are open to connection.&lt;br /&gt;
:Setting them to a Factory New state was possible due to a software bug which could have been found with negative testing during the Zigbee certification process. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security Issues of the Philips Hue System ==&lt;br /&gt;
&lt;br /&gt;
*   Use of a &#039;&#039;&#039;single symmetric encryption key&#039;&#039;&#039; shared across many devices to protect the firmware update process&lt;br /&gt;
&lt;br /&gt;
*   The attacks were also possible because the hardware is &#039;&#039;&#039;vulnerable to side-channel analysis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*   And also, the &#039;&#039;&#039;bugs and errors in the implementation of protocols&#039;&#039;&#039; (designed to prevent long-range take-over attacks) &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Estimated Damage ==&lt;br /&gt;
&lt;br /&gt;
To estimate the actual damage of such an attack, the researchers calculated how many smart lamps would have to be installed to launch the attack.&lt;br /&gt;
&lt;br /&gt;
Result: Paris, the critical mass would be around 15,000 lamps (installed within a distance of about 100 meters).&lt;br /&gt;
That is not an unrealistic amount of lamps concerning the popularity of Philips Hue. &lt;br /&gt;
So the researchers assumed that cities might be already vulnerable to such attacks. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This attack is even more remarkable because there is no internet communication used. &lt;br /&gt;
The worm only spreads through physical proximity and is independent of established networking structures – so once created, the worm is probably impossible to stop. &lt;br /&gt;
&lt;br /&gt;
System administrators usually try to stop such an attack by isolating subnetworks from each other, which in this case would not be possible because only ZigBee communication is used, which is not monitored or protected. &lt;br /&gt;
&lt;br /&gt;
Also, locating the source of the attack and also detecting the attack itself would be very difficult. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Possible Attacks ==&lt;br /&gt;
&lt;br /&gt;
;Bricking Attacks &lt;br /&gt;
:Unlike usual DoS irreversible, all devices would have to be replaced &lt;br /&gt;
;Wireless Network Jamming&lt;br /&gt;
:ZigBee runs over the IEEE 802.15.4 standard, which uses the 2.4 GHz, license-free band (continuous wave signal from &#039;test mode&#039; could overlap other channels)&lt;br /&gt;
;Data infiltration and exfiltration&lt;br /&gt;
;Affect peoples health&lt;br /&gt;
:The light can be programmed in such a blinking rate which causes epileptic seizures &lt;br /&gt;
:The LEDs can also be driven at frequencies that are creating discomfort in humans &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Countermeasures ==&lt;br /&gt;
&lt;br /&gt;
* Unique keys per lightbulb&lt;br /&gt;
&lt;br /&gt;
* Asymetric cryptography for software verification&lt;br /&gt;
&lt;br /&gt;
* Reducing the amount of damage a leaked key might be able to cause&lt;br /&gt;
&lt;br /&gt;
* Negative testing to avoid implementation bugs &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zigbee Protocol Overview ==&lt;br /&gt;
* ZigBee is a low-power, low-data-rate wireless communication protocol.&lt;br /&gt;
* Used in smart homes, industrial automation, and sensor networks.&lt;br /&gt;
* Operates in 2.4 GHz frequency band with mesh network communication.&lt;br /&gt;
&lt;br /&gt;
== Zigbee Architecture ==&lt;br /&gt;
* Architecture includes Application, Application Interface, Security, Network, Medium Access Control, and Physical Layer.&lt;br /&gt;
&lt;br /&gt;
== Zigbee Addressing and Frames ==&lt;br /&gt;
* Uses short (16-bit) and long (64-bit) addresses for device identification.&lt;br /&gt;
* Packet-based communication with data frames, acknowledgment frames, and command frames.&lt;br /&gt;
&lt;br /&gt;
== Zigbee Security and Sniffing ==&lt;br /&gt;
* Features encryption and authentication for secure device communication.&lt;br /&gt;
* Tools like Wireshark and nRF52840 dongle mentioned for Zigbee sniffing.&lt;br /&gt;
&lt;br /&gt;
=== Initial Steps for Experimentation ===&lt;br /&gt;
* Details on using nRF Connect for Desktop, firmware installation, and programming the nRF52840 Dongle.&lt;br /&gt;
* Installation of nRF Sniffer capture plugin in Wireshark discussed.&lt;br /&gt;
* [https://www.nordicsemi.com/Products/Development-hardware/nrf52840-dongle nRF52840 Dongle - Nordic Semiconductor]&lt;br /&gt;
* [https://github.com/NordicSemiconductor/nRF-Sniffer-for-802.15.4 nRF Sniffer for 802.15.4 - GitHub Repository]&lt;br /&gt;
* [https://infocenter.nordicsemi.com/index.jsp?topic=%2Fug_sniffer_802154%2FUG%2Fsniffer_802154%2Fintro_802154.html nRF Sniffer for 802.15.4 Introduction - Nordic Semiconductor Infocenter]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;ronenarticle&amp;quot;&amp;gt;Eyal Ronen, Colin O&#039;Flynn, Adi Shamir, and Achi Or Weingarten.  IoT Goes Nuclear: Creating a ZigBee Chain Reaction. In Proceedings – IEEE Symposium on Security and Privacy, 2017 &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;wan13&amp;quot;&amp;gt; Jianfeng Wang. Zigbee light link and its applicationss. IEEE Wireless Communications, 2013 &amp;lt;/ref&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;&amp;gt; Eyal Ronen, Adi Shamir, Achi Or Weingarten, and Colin O‘Flynn. IoT Goes Nuclear: Creating a Zigbee Chain Reaction. IEEE Security and Privacy, 2018 &amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Further Information ==&lt;br /&gt;
* Colin O&#039;Flynn. A LIGHTBULB WORM? Details of the Philips Hue Smart Lighting Design. In Black Hat USA, 2016 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Basic]]&lt;/div&gt;</summary>
		<author><name>MArastu</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Lightbulb_Worm&amp;diff=13718</id>
		<title>Lightbulb Worm</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Lightbulb_Worm&amp;diff=13718"/>
		<updated>2024-01-07T19:35:35Z</updated>

		<summary type="html">&lt;p&gt;MArastu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What is a Lightbulb Worm? ==&lt;br /&gt;
&lt;br /&gt;
The Lightbulb Worm is a construct that results from the research and attacks done by Colin O&#039;Flynn, Eyal Ronen, Adi Shamir, and Achi-Or Weingarten. &lt;br /&gt;
They provide the ingredients of the first worm that affects smart lighting systems.&lt;br /&gt;
&lt;br /&gt;
The worm has the power to spread only through physical proximity and would also be able to destroy lightbulbs permanently. It only takes one infected lightbulb to be installed, and the worm can spread - through its ZigBee wireless connectivity - directly to the physical neighbors of this lamp. These newly infected lamps would again infect all their neighbor lamps.&lt;br /&gt;
That leads to a massive chain reaction that spreads in an epidemic fashion and attacks whole cities. The critical mass to infect all lightbulbs within a urban area like Paris was estimated to around 15.000 lightbulbs. &amp;lt;ref name=&amp;quot;ronenarticle&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Philips Hue and Zigbee Light Link ==&lt;br /&gt;
&lt;br /&gt;
The research and experiments of constructing the lightbulb worm have been done by using Philips Hue smart lighting systems and exploiting the implementation of their inbuilt ZigBee Light Link Protocol and firmware update mechanisms.&lt;br /&gt;
&lt;br /&gt;
The Philips Hue smart lamp system works as follows:&lt;br /&gt;
The lightbulbs are connected to a bridge device which creates a network the lightbulbs can join. The bridge controls all the lamps and also contains an IP link. Via the Router, it is connected to the Internet through which you can control your system with the Philips Hue Lightning App. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:PhilipsHue.jpg|thumb|none|600px|Philips Hue and ZLL Architecture &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Philips Hue lamps communicate with their controllers through the Zigbee protocol and use the ZigBee Light Link protocol. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The ZigBee Light Link protocol is standardized by the ZigBee Alliance and is a very popular standard in the lighting industry because it provides network flexibility and scalability. &lt;br /&gt;
It also offers high interoperability between products from different vendors. &lt;br /&gt;
To enable high interoperability, the Touchlink Commissioning protocol is used. It makes the installation of the light bulbs very easy and intuitive. &amp;lt;ref name=&amp;quot;wan13/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The Touchlink commissioning protocol creates PANs (Personal Area Networks) and directs every new device placed in proximity to a specific bridge to join the PAN. &lt;br /&gt;
The new device receives an encryption key that is used to encrypt and authenticate messages within the PAN. &lt;br /&gt;
This encryption key is unique for every PAN and encrypted by a “Master key.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This “Master key&amp;quot; is a secret key, but it is used and stored on every ZLL certifed&lt;br /&gt;
product. In the case for Philipps Hue products the same AES-CCM key was used on every device. This resulted in the fact that the team was able to send faulty OTA updates to each device since using the same key on each device does not offer any protection if this key is known to the attacker. &lt;br /&gt;
&lt;br /&gt;
The Touchlink protocol provides two message types with which the state of a lightbulb can be changed:&lt;br /&gt;
&lt;br /&gt;
1. Reset to factory new request: If the target device receives this message&lt;br /&gt;
with a valid Transaction ID, it is reset to a factory new state, and all Network information and keys are deleted. &lt;br /&gt;
&lt;br /&gt;
2. Join (or start) network request: With this message, the device is instructed to join&lt;br /&gt;
the PAN. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security Features of Philips Hue ==&lt;br /&gt;
&#039;&#039;&#039;Encryption Mechanisms&#039;&#039;&#039; – see [[#Philips Hue and Zigbee Light Link|Philips Hue and ZigBee Light Link]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Proximity Check&#039;&#039;&#039; - prevents a takeover of lightbulbs in the nearest neighborhood. &lt;br /&gt;
:The proximity check ensures that the initiator is physically very close to the target.&lt;br /&gt;
:It must be passed successfully to connect lamps to the bridge.&lt;br /&gt;
:Without the proximity check, any initiator that owns the ZLL master key could instruct lightbulbs to reset to a factory new state or join a new PAN. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ingredients of the Lightbulb Worm ==&lt;br /&gt;
&lt;br /&gt;
;Persistence of code execution on the lamps to take over the control of the lamps&lt;br /&gt;
:The researchers achieved the Persistence of Code Execution by exploiting the (OTA - Over the Air) update mechanisms of the Philips Hue. And they did that by reverse engineering.&lt;br /&gt;
:The reverse engineering was possible because the system was vulnerable to side channel analysis and also some parts of the encryption was already known.&lt;br /&gt;
&lt;br /&gt;
:So the team managed to upload selfwritten firmware on the lamps instead of the original firmware.&amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
;Lateral movement - the worm should spread automatically through proximity&lt;br /&gt;
:The lateral movement had been achieved by passing the proximity check.&lt;br /&gt;
:That was possible by exploiting the software implementation of the Touchlink protocol and a feature of the ZLL protocol. &lt;br /&gt;
:ZLL devices should also be able to join other ZigBee networks, where no ZLL is used. When no ZLL is used, there is also no proximity check.&lt;br /&gt;
&lt;br /&gt;
:So they just had to set the lightbulbs to a Factory New state and make the lightbulbs actively search for ZigBee networks and are open to connection.&lt;br /&gt;
:Setting them to a Factory New state was possible due to a software bug which could have been found with negative testing during the Zigbee certification process. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security Issues of the Philips Hue System ==&lt;br /&gt;
&lt;br /&gt;
*   Use of a &#039;&#039;&#039;single symmetric encryption key&#039;&#039;&#039; shared across many devices to protect the firmware update process&lt;br /&gt;
&lt;br /&gt;
*   The attacks were also possible because the hardware is &#039;&#039;&#039;vulnerable to side-channel analysis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
*   And also, the &#039;&#039;&#039;bugs and errors in the implementation of protocols&#039;&#039;&#039; (designed to prevent long-range take-over attacks) &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Estimated Damage ==&lt;br /&gt;
&lt;br /&gt;
To estimate the actual damage of such an attack, the researchers calculated how many smart lamps would have to be installed to launch the attack.&lt;br /&gt;
&lt;br /&gt;
Result: Paris, the critical mass would be around 15,000 lamps (installed within a distance of about 100 meters).&lt;br /&gt;
That is not an unrealistic amount of lamps concerning the popularity of Philips Hue. &lt;br /&gt;
So the researchers assumed that cities might be already vulnerable to such attacks. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This attack is even more remarkable because there is no internet communication used. &lt;br /&gt;
The worm only spreads through physical proximity and is independent of established networking structures – so once created, the worm is probably impossible to stop. &lt;br /&gt;
&lt;br /&gt;
System administrators usually try to stop such an attack by isolating subnetworks from each other, which in this case would not be possible because only ZigBee communication is used, which is not monitored or protected. &lt;br /&gt;
&lt;br /&gt;
Also, locating the source of the attack and also detecting the attack itself would be very difficult. &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Possible Attacks ==&lt;br /&gt;
&lt;br /&gt;
;Bricking Attacks &lt;br /&gt;
:Unlike usual DoS irreversible, all devices would have to be replaced &lt;br /&gt;
;Wireless Network Jamming&lt;br /&gt;
:ZigBee runs over the IEEE 802.15.4 standard, which uses the 2.4 GHz, license-free band (continuous wave signal from &#039;test mode&#039; could overlap other channels)&lt;br /&gt;
;Data infiltration and exfiltration&lt;br /&gt;
;Affect peoples health&lt;br /&gt;
:The light can be programmed in such a blinking rate which causes epileptic seizures &lt;br /&gt;
:The LEDs can also be driven at frequencies that are creating discomfort in humans &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Countermeasures ==&lt;br /&gt;
&lt;br /&gt;
* Unique keys per lightbulb&lt;br /&gt;
&lt;br /&gt;
* Asymetric cryptography for software verification&lt;br /&gt;
&lt;br /&gt;
* Reducing the amount of damage a leaked key might be able to cause&lt;br /&gt;
&lt;br /&gt;
* Negative testing to avoid implementation bugs &amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Zigbee Protocol Overview ==&lt;br /&gt;
* ZigBee is a low-power, low-data-rate wireless communication protocol.&lt;br /&gt;
* Used in smart homes, industrial automation, and sensor networks.&lt;br /&gt;
* Operates in 2.4 GHz frequency band with mesh network communication.&lt;br /&gt;
&lt;br /&gt;
== Zigbee Architecture ==&lt;br /&gt;
* Architecture includes Application, Application Interface, Security, Network, Medium Access Control, and Physical Layer.&lt;br /&gt;
&lt;br /&gt;
== Zigbee Addressing and Frames ==&lt;br /&gt;
* Uses short (16-bit) and long (64-bit) addresses for device identification.&lt;br /&gt;
* Packet-based communication with data frames, acknowledgment frames, and command frames.&lt;br /&gt;
&lt;br /&gt;
== Zigbee Security and Sniffing ==&lt;br /&gt;
* Features encryption and authentication for secure device communication.&lt;br /&gt;
* Tools like Wireshark and nRF52840 dongle mentioned for Zigbee sniffing.&lt;br /&gt;
&lt;br /&gt;
=== Initial Steps for Experimentation ===&lt;br /&gt;
* Details on using nRF Connect for Desktop, firmware installation, and programming the nRF52840 Dongle.&lt;br /&gt;
* Installation of nRF Sniffer capture plugin in Wireshark discussed.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&amp;lt;references&amp;gt;&lt;br /&gt;
&amp;lt;ref name=&amp;quot;ronenarticle&amp;quot;&amp;gt;Eyal Ronen, Colin O&#039;Flynn, Adi Shamir, and Achi Or Weingarten.  IoT Goes Nuclear: Creating a ZigBee Chain Reaction. In Proceedings – IEEE Symposium on Security and Privacy, 2017 &amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;ref name=&amp;quot;wan13&amp;quot;&amp;gt; Jianfeng Wang. Zigbee light link and its applicationss. IEEE Wireless Communications, 2013 &amp;lt;/ref&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;ref name=&amp;quot;ronenpaper&amp;quot;&amp;gt; Eyal Ronen, Adi Shamir, Achi Or Weingarten, and Colin O‘Flynn. IoT Goes Nuclear: Creating a Zigbee Chain Reaction. IEEE Security and Privacy, 2018 &amp;lt;/ref&amp;gt;&lt;br /&gt;
&amp;lt;/references&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Further Information ==&lt;br /&gt;
* Colin O&#039;Flynn. A LIGHTBULB WORM? Details of the Philips Hue Smart Lighting Design. In Black Hat USA, 2016 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;br /&gt;
[[Category:Basic]]&lt;/div&gt;</summary>
		<author><name>MArastu</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Host_CTF_Platforms_with_Docker&amp;diff=11744</id>
		<title>Host CTF Platforms with Docker</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Host_CTF_Platforms_with_Docker&amp;diff=11744"/>
		<updated>2023-09-15T20:33:31Z</updated>

		<summary type="html">&lt;p&gt;MArastu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
In the world, there are many different types of platforms to learn and compete in so called Capture The Flags (CTFs). While the possibilities to host our own CTF platform in the cloud are nearly endless, there are also open-source variants which can be hosted with Docker or on-premise. These types of platforms are often preferred, since they do not cost any money and also one can learn many things about the hosting machine, the used technologies and about the platform itself.&lt;br /&gt;
This Article focuses on three open-source platforms and shows how to host them in a dockerized environment.&lt;br /&gt;
&lt;br /&gt;
== Infrastructure used for this work ==&lt;br /&gt;
&lt;br /&gt;
[[File:Infrastructure.jpeg|1000px]]&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating system: &lt;br /&gt;
** Windows 8 or higher&lt;br /&gt;
** Ubuntu Linux 20.04 LTS or higher&lt;br /&gt;
** macOS 10.14 or higher&lt;br /&gt;
** Or any other OS which support Docker&lt;br /&gt;
* Docker Engine &amp;gt;= 20.10&lt;br /&gt;
** optional: Docker Desktop&lt;br /&gt;
* Ruby&lt;br /&gt;
* Internet Browser of any type&lt;br /&gt;
* GIT&lt;br /&gt;
&lt;br /&gt;
== Docker Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
First, uninstall any conflicting packages:&lt;br /&gt;
 for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done&lt;br /&gt;
&lt;br /&gt;
Then update the apt package index:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl gnupg&lt;br /&gt;
&lt;br /&gt;
After that, install the official GPG keys:&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.gpg&lt;br /&gt;
&lt;br /&gt;
When that&#039;s done, setup the repository:&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=&amp;quot;$(dpkg --print-architecture)&amp;quot; signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \&lt;br /&gt;
  &amp;quot;$(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;)&amp;quot; stable&amp;quot; | \&lt;br /&gt;
  sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Then install the Docker Engine with the latest version:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
=== Verification ===&lt;br /&gt;
&lt;br /&gt;
After the installation, verify that the Docker Engine was installed successfully:&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
== MITRE CTF Scoreboard ==&lt;br /&gt;
&lt;br /&gt;
The MITRE CTF Scoreboard is an open-source application developed by the MITRE Cyber Academy and focuses on hosting Capture The Flags in safe environments for learning, practicing and competing. It offers a wide variety of functionality, including authentication and authorization of individuals, the creation and management of teams, management of competitions and their including challenges, and much more.&lt;br /&gt;
MITRE CTF Scoreboard is installed with Docker and the according plugin &#039;docker-compose&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
These steps are for production deployments using [https://docs.docker.com/compose/ docker-compose].&lt;br /&gt;
&lt;br /&gt;
Download the git repository:&lt;br /&gt;
 git clone https://github.com/mitre-cyber-academy/ctf-scoreboard.git&lt;br /&gt;
&lt;br /&gt;
Then navigate into the folder:&lt;br /&gt;
 cd ctf-scoreboard&lt;br /&gt;
&lt;br /&gt;
After that, generate your credentials:&lt;br /&gt;
 ./setup-docker-secrets.sh&lt;br /&gt;
&lt;br /&gt;
Then run scoreboard database setup:&lt;br /&gt;
 docker-compose run web rails db:initial_setup&lt;br /&gt;
&lt;br /&gt;
Add appropriate [https://github.com/mitre-cyber-academy/ctf-scoreboard/wiki/Production-Installation#Environment-Configuration Environment Variables] into your `.env-prod` file for your environment.&lt;br /&gt;
Add NGINX_HOST to the &#039;.env&#039; file for your environment&lt;br /&gt;
 NGINX_HOST=your-scoreboard-domain.com&lt;br /&gt;
&lt;br /&gt;
Start the container:&lt;br /&gt;
 docker-compose up -d&lt;br /&gt;
&lt;br /&gt;
The software is now be accessible via &#039;https://&amp;lt;ip address of docker container&amp;gt;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Create an Admin User ===&lt;br /&gt;
After the initial installation, navigate with yout browser to &#039;https://&amp;lt;ip address of docker container&amp;gt;&#039;. This will prompt you a registration mask, on which you can create your Admin User - the following page may differ from the actual &#039;Admin Registration&#039; page.&lt;br /&gt;
&lt;br /&gt;
[[File:CreatUserCTFMitre.png|500px]]&lt;br /&gt;
&lt;br /&gt;
== MELLIVORA ==&lt;br /&gt;
&lt;br /&gt;
Mellivora Capture the Flag (CTF) platform is a comprehensive and dynamic online platform designed for hosting and participating in cybersecurity Capture the Flag competitions. Developed with the aim of enhancing practical cybersecurity skills, Mellivora CTF offers a robust and challenging environment for individuals and teams to engage in offensive and defensive cybersecurity exercises. The platform provides a feature-rich and intuitive interface, making it accessible to both beginners and experienced cybersecurity enthusiasts. It offers a wide range of challenges across various categories, including cryptography, web exploitation, reverse engineering, forensics, and more. These challenges are designed to mimic real-world scenarios, allowing participants to develop and apply their technical skills in a safe and controlled environment.&lt;br /&gt;
Mellivora CTF emphasizes collaboration and learning by fostering a competitive and engaging atmosphere. Participants can form teams and compete against others, leveraging their collective expertise to solve complex challenges and earn points. The platform offers a scoring system that rewards both speed and accuracy, encouraging participants to strategize, communicate effectively, and think critically to maximize their score. One notable aspect of Mellivora CTF is its flexibility and extensibility. The platform supports custom challenge creation, allowing organizers to tailor the competition to their specific needs and objectives. Additionally, Mellivora CTF provides a comprehensive administrative dashboard that enables organizers to manage competitions, track progress, and analyze performance metrics in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
Mellivora is easy to use with docker-compose. Mellivora comes with an included docker-compose configuration intended for development use. If you&#039;re looking to run Mellivora using Docker(-compose) in production, a good place to start might be to copy the provided docker-compose config and changing it to suit your needs.&lt;br /&gt;
&lt;br /&gt;
Download the git repository:&lt;br /&gt;
 git clone https://github.com/Nakiami/mellivora&lt;br /&gt;
&lt;br /&gt;
Then navigate into the folder:&lt;br /&gt;
 cd mellivora&lt;br /&gt;
&lt;br /&gt;
After that, run following command:&lt;br /&gt;
 docker-compose -f docker-compose.dev.yml up&lt;br /&gt;
&lt;br /&gt;
in the Mellivora home directory to give Apache the permissions necessary for challenge file upload and caching run following command:&lt;br /&gt;
 sudo chown -R www-data:www-data writable/&lt;br /&gt;
&lt;br /&gt;
=== Create an admin user: ===&lt;br /&gt;
* Visit http://localhost/ which should now display the Mellivora landing page.&lt;br /&gt;
* Register a new user. You will probably get an error about emails not working. The user is created and functional despite the error.&lt;br /&gt;
* Go to http://localhost:18080 where Adminer should be running (assuming you&#039;re running in dev mode). Log in with&lt;br /&gt;
&lt;br /&gt;
 Server: db&lt;br /&gt;
 Username: root&lt;br /&gt;
 Password: password&lt;br /&gt;
 Database: mellivora&lt;br /&gt;
&lt;br /&gt;
To make your user an administrator, go to &amp;quot;SQL command&amp;quot; in the menu and run:&lt;br /&gt;
 UPDATE users SET class = 100 WHERE id = 1;&lt;br /&gt;
&lt;br /&gt;
Log in at http://localhost/. Done!&lt;br /&gt;
&lt;br /&gt;
=== Create basic challenge === &lt;br /&gt;
For creating a basic challenge login with your admin user. &lt;br /&gt;
From the top menu select &amp;quot;Manage&amp;quot;. &lt;br /&gt;
By selecting &amp;quot;Manage&amp;quot; you can create and edit already existing challenges and categories by pressing on &amp;quot;Categories&amp;quot; for changing or editing the categories or &amp;quot;Challenges&amp;quot; for editing or adding new challenges.&lt;br /&gt;
&lt;br /&gt;
=== Tips ===&lt;br /&gt;
* The dev docker-compose profile mounts to use files directly from the host. Making changes to files on disk will result in changes to the running instance without rebuilding the container.&lt;br /&gt;
* If you are making changes to composer requirements, you will need to delete/rebuild the docker image composerdependencies.&lt;br /&gt;
* Call docker-compose -f docker-compose.dev.yml up --build to rebuild and start.&lt;br /&gt;
* Copy include/config/config.default.inc.php to include/config/config.inc.php to make your configuration changes.&lt;br /&gt;
&lt;br /&gt;
== RootTheBox ==&lt;br /&gt;
&lt;br /&gt;
Hackers can practice and learn using Root the Box, a real-time capture the flag (CTF) scoring system for computer wargames. Any CTF-style game may be easily configured and adjusted using the application. By fusing a fun game-like atmosphere with practical tasks that communicate knowledge applicable to the real-world, such as penetration testing, incident response, digital forensics, and threat hunting, the platform enables you to engage both inexperienced and experienced players.&lt;br /&gt;
RootTheBox is installed with Docker and the according plugin &#039;docker-compose&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
These steps are for production deployments using [https://docs.docker.com/compose/ docker-compose].&lt;br /&gt;
&lt;br /&gt;
Download the git repository:&lt;br /&gt;
 git clone https://github.com/moloch--/RootTheBox.git&lt;br /&gt;
&lt;br /&gt;
Then navigate into the folder:&lt;br /&gt;
 cd RootTheBox&lt;br /&gt;
&lt;br /&gt;
Update the repository:&lt;br /&gt;
 git pull&lt;br /&gt;
 docker-compose build&lt;br /&gt;
&lt;br /&gt;
Start the container:&lt;br /&gt;
 docker-compose up -d&lt;br /&gt;
&lt;br /&gt;
The software is now be accessible via &#039;https://&amp;lt;ip address of docker container&amp;gt;:8888&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Access Admin Dashboard ===&lt;br /&gt;
&lt;br /&gt;
RootTheBox enables Users to access an admin dashboard, which enables them to configure the platform to their need.&lt;br /&gt;
Usually, when just installed, the credentials for the admin user are the following:&lt;br /&gt;
 admin&lt;br /&gt;
 rootthebox&lt;br /&gt;
&lt;br /&gt;
Always make sure to change the password of your admin account before you start hosting the platform in production!&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.docker.com/&lt;br /&gt;
* https://github.com/mitre-cyber-academy/ctf-scoreboard&lt;br /&gt;
* https://github.com/Nakiami/mellivora&lt;br /&gt;
* https://github.com/moloch--/RootTheBox.git&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>MArastu</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Host_CTF_Platforms_with_Docker&amp;diff=11646</id>
		<title>Host CTF Platforms with Docker</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Host_CTF_Platforms_with_Docker&amp;diff=11646"/>
		<updated>2023-07-03T16:20:20Z</updated>

		<summary type="html">&lt;p&gt;MArastu: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
In the world, there are many different types of platforms to learn and compete in so called Capture The Flags (CTFs). While the possibilities to host our own CTF platform in the cloud are nearly endless, there are also open-source variants which can be hosted with Docker or on-premise. These types of platforms are often preferred, since they do not cost any money and also one can learn many things about the hosting machine, the used technologies and about the platform itself.&lt;br /&gt;
This Article focuses on two open-source platforms and shows how to host them in a dockerized environment.&lt;br /&gt;
&lt;br /&gt;
== System Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating system: &lt;br /&gt;
** Windows 8 or higher&lt;br /&gt;
** Ubuntu Linux 20.04 LTS or higher&lt;br /&gt;
** macOS 10.14 or higher&lt;br /&gt;
** Or any other OS which support Docker&lt;br /&gt;
* Docker Engine &amp;gt;= 20.10&lt;br /&gt;
** optional: Docker Desktop&lt;br /&gt;
* Ruby&lt;br /&gt;
* Internet Browser of any type&lt;br /&gt;
* GIT&lt;br /&gt;
&lt;br /&gt;
== Docker Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
First, uninstall any conflicting packages:&lt;br /&gt;
 for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done&lt;br /&gt;
&lt;br /&gt;
Then update the apt package index:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install ca-certificates curl gnupg&lt;br /&gt;
&lt;br /&gt;
After that, install the official GPG keys:&lt;br /&gt;
 sudo install -m 0755 -d /etc/apt/keyrings&lt;br /&gt;
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg&lt;br /&gt;
 sudo chmod a+r /etc/apt/keyrings/docker.gpg&lt;br /&gt;
&lt;br /&gt;
When that&#039;s done, setup the repository:&lt;br /&gt;
 echo \&lt;br /&gt;
  &amp;quot;deb [arch=&amp;quot;$(dpkg --print-architecture)&amp;quot; signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \&lt;br /&gt;
  &amp;quot;$(. /etc/os-release &amp;amp;&amp;amp; echo &amp;quot;$VERSION_CODENAME&amp;quot;)&amp;quot; stable&amp;quot; | \&lt;br /&gt;
  sudo tee /etc/apt/sources.list.d/docker.list &amp;gt; /dev/null&lt;br /&gt;
&lt;br /&gt;
Then install the Docker Engine with the latest version:&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin&lt;br /&gt;
&lt;br /&gt;
=== Verification ===&lt;br /&gt;
&lt;br /&gt;
After the installation, verify that the Docker Engine was installed successfully:&lt;br /&gt;
 sudo docker run hello-world&lt;br /&gt;
&lt;br /&gt;
== MITRE CTF Scoreboard ==&lt;br /&gt;
&lt;br /&gt;
The MITRE CTF Scoreboard is an open-source application developed by the MITRE Cyber Academy and focuses on hosting Capture The Flags in safe environments for learning, practicing and competing. It offers a wide variety of functionality, including authentication and authorization of individuals, the creation and management of teams, management of competitions and their including challenges, and much more.&lt;br /&gt;
MITRE CTF Scoreboard is installed with Docker and the according plugin &#039;docker-compose&#039;.&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
These steps are for production deployments using [https://docs.docker.com/compose/ docker-compose].&lt;br /&gt;
&lt;br /&gt;
Download the git repository:&lt;br /&gt;
 git clone https://github.com/mitre-cyber-academy/ctf-scoreboard.git&lt;br /&gt;
&lt;br /&gt;
Then navigate into the folder:&lt;br /&gt;
 cd ctf-scoreboard&lt;br /&gt;
&lt;br /&gt;
After that, generate your credentials:&lt;br /&gt;
 ./setup-docker-secrets.sh&lt;br /&gt;
&lt;br /&gt;
Then run scoreboard database setup:&lt;br /&gt;
 docker-compose run web rails db:initial_setup&lt;br /&gt;
&lt;br /&gt;
Add appropriate [https://github.com/mitre-cyber-academy/ctf-scoreboard/wiki/Production-Installation#Environment-Configuration Environment Variables] into your `.env-prod` file for your environment.&lt;br /&gt;
Add NGINX_HOST to the &#039;.env&#039; file for your environment&lt;br /&gt;
 NGINX_HOST=your-scoreboard-domain.com&lt;br /&gt;
&lt;br /&gt;
Start the container:&lt;br /&gt;
 docker-compose up -d&lt;br /&gt;
&lt;br /&gt;
== MELLIVORA ==&lt;br /&gt;
&lt;br /&gt;
Mellivora Capture the Flag (CTF) platform is a comprehensive and dynamic online platform designed for hosting and participating in cybersecurity Capture the Flag competitions. Developed with the aim of enhancing practical cybersecurity skills, Mellivora CTF offers a robust and challenging environment for individuals and teams to engage in offensive and defensive cybersecurity exercises. The platform provides a feature-rich and intuitive interface, making it accessible to both beginners and experienced cybersecurity enthusiasts. It offers a wide range of challenges across various categories, including cryptography, web exploitation, reverse engineering, forensics, and more. These challenges are designed to mimic real-world scenarios, allowing participants to develop and apply their technical skills in a safe and controlled environment.&lt;br /&gt;
Mellivora CTF emphasizes collaboration and learning by fostering a competitive and engaging atmosphere. Participants can form teams and compete against others, leveraging their collective expertise to solve complex challenges and earn points. The platform offers a scoring system that rewards both speed and accuracy, encouraging participants to strategize, communicate effectively, and think critically to maximize their score. One notable aspect of Mellivora CTF is its flexibility and extensibility. The platform supports custom challenge creation, allowing organizers to tailor the competition to their specific needs and objectives. Additionally, Mellivora CTF provides a comprehensive administrative dashboard that enables organizers to manage competitions, track progress, and analyze performance metrics in real-time.&lt;br /&gt;
&lt;br /&gt;
=== Setup ===&lt;br /&gt;
&lt;br /&gt;
Mellivora is easy to use with docker-compose. Mellivora comes with an included docker-compose configuration intended for development use. If you&#039;re looking to run Mellivora using Docker(-compose) in production, a good place to start might be to copy the provided docker-compose config and changing it to suit your needs.&lt;br /&gt;
&lt;br /&gt;
Download the git repository:&lt;br /&gt;
 git clone https://github.com/Nakiami/mellivora&lt;br /&gt;
&lt;br /&gt;
Then navigate into the folder:&lt;br /&gt;
 cd mellivora&lt;br /&gt;
&lt;br /&gt;
After that, run following command:&lt;br /&gt;
 docker-compose -f docker-compose.dev.yml up&lt;br /&gt;
&lt;br /&gt;
in the Mellivora home directory to give Apache the permissions necessary for challenge file upload and caching run following command:&lt;br /&gt;
 sudo chown -R www-data:www-data writable/&lt;br /&gt;
&lt;br /&gt;
=== Create an admin user: ===&lt;br /&gt;
* Visit http://localhost/ which should now display the Mellivora landing page.&lt;br /&gt;
* Register a new user. You will probably get an error about emails not working. The user is created and functional despite the error.&lt;br /&gt;
* Go to http://localhost:18080 where Adminer should be running (assuming you&#039;re running in dev mode). Log in with&lt;br /&gt;
&lt;br /&gt;
 Server: db&lt;br /&gt;
 Username: root&lt;br /&gt;
 Password: password&lt;br /&gt;
 Database: mellivora&lt;br /&gt;
&lt;br /&gt;
To make your user an administrator, go to &amp;quot;SQL command&amp;quot; in the menu and run:&lt;br /&gt;
 UPDATE users SET class = 100 WHERE id = 1;&lt;br /&gt;
&lt;br /&gt;
Log in at http://localhost/. Done!&lt;br /&gt;
&lt;br /&gt;
=== Tips ===&lt;br /&gt;
* The dev docker-compose profile mounts to use files directly from the host. Making changes to files on disk will result in changes to the running instance without rebuilding the container.&lt;br /&gt;
* If you are making changes to composer requirements, you will need to delete/rebuild the docker image composerdependencies.&lt;br /&gt;
* Call docker-compose -f docker-compose.dev.yml up --build to rebuild and start.&lt;br /&gt;
* Copy include/config/config.default.inc.php to include/config/config.inc.php to make your configuration changes.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.docker.com/&lt;br /&gt;
* https://github.com/mitre-cyber-academy/ctf-scoreboard&lt;br /&gt;
* https://github.com/Nakiami/mellivora&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>MArastu</name></author>
	</entry>
</feed>