<?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=LPuehringer</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=LPuehringer"/>
	<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php/Special:Contributions/LPuehringer"/>
	<updated>2026-09-10T15:34:15Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.5</generator>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11577</id>
		<title>Nooelec SDR: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11577"/>
		<updated>2023-03-02T10:09:54Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* Receiving Radio Signal */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the NooElec SDR. Specifically the NESDR Nano 2+ and the NESDR SMArt. At the end of the setup, the SDR will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
The Steps taken to install any NESDR Device should be the same according to Nooelec. This Setup shows mostly the installation and usage under Linux, these devices can also be used under Windows however the software options are limited.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating System: Ubuntu 20.04 is used in this Tutorial, but it also works with other Linux distributions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Run the command:&lt;br /&gt;
 lsusb&lt;br /&gt;
If you have your NESDR device plugged into your Ubuntu computer. This will list all of the USB devices attached to the computer. If things are working as they should be, you will see the NESDR SMArt listed as: &lt;br /&gt;
 RealtekSemiconductor Corp. RTL2838 DVB-T.&lt;br /&gt;
The DVB-T is the important part, because it means that the operating system has recognized the device and loaded, what it believes to be, the correct driver.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 1.png]]&lt;br /&gt;
&lt;br /&gt;
Can also be seen when using command: &lt;br /&gt;
 lsmod | grep dvb&lt;br /&gt;
This lists the loaded modules (drivers) and filters them to just show the ones that have the letters dvb in them. You will see they are loaded.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 2.png]]&lt;br /&gt;
&lt;br /&gt;
We need to remove those modules (drivers) and load the appropriate ones using the device as an SDR. We start by “blacklisting” the default drivers. This is done by editing the file:&lt;br /&gt;
 /etc/modprobe.d/blacklist-dvb.conf&lt;br /&gt;
Add the following line to blacklist this file:&lt;br /&gt;
 blacklist dvb_usb_rtl28xxu&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 3.png]]&lt;br /&gt;
&lt;br /&gt;
Then reboot and check. You should get nothing when running lsmod | grep dvb again.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 4.png]]&lt;br /&gt;
&lt;br /&gt;
What that does is disallow the default module (driver) to load. Now we need to tell it to load the driver we want. First, we need to download it onto the computer with:&lt;br /&gt;
 sudo apt-get install rtl-sdr&lt;br /&gt;
This will have the drivers and utilities related to using a SDR.&lt;br /&gt;
Now test the SDR if it works at the lowest level, which is tuning on a particular frequency and seeing if we hear anything. We do this by executing:&lt;br /&gt;
 rtl_test&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 5.png]]&lt;br /&gt;
&lt;br /&gt;
The first part of the test will test the parameters of the SDR and then it will attempt to tune in to a frequency. It is at this point you want the test to stop printing to the screen. You have the modules and libraries loaded that are needed to run the dongle as a software defined radio. The next step is to use a software, like Gqrx, that has a “waterfall display”, as you will see. With Ubuntu, the easiest way to do that is with Gqrx. It is available in the Ubuntu Software store, and therefore, easy to install.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 6.png]]&lt;br /&gt;
&lt;br /&gt;
However you will also need GNU radio to run Gqrx. Therefore it is recommended to simply install it via CLI with:&lt;br /&gt;
 sudo apt-get install gnuradio gqrx&lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Signal ===&lt;br /&gt;
&lt;br /&gt;
Having the device connected to the PC and the appropriate antenna, open a terminal and launch gqrx with the command:&lt;br /&gt;
 gqrx&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 7.png]]&lt;br /&gt;
&lt;br /&gt;
Make sure that the Device line shows the FunCube Dongle or the device you are using. Leave the other fields as they are then click OK. The main window of gqrx looks as below, you can listen to radio if you switch mode to WFM (stereo) – for example go to 104.2 MHz for Radio Energy in Vienna.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 8.png]]&lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[NooElec SDR Kit]]&lt;br /&gt;
* [[NESDR Nano 2+: Tiny RTL-SDR USB Set w/ 0.5PPM TCXO, R820T2 Tuner &amp;amp; Antenna]]&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfachprojekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://medium.com/poka-techblog/a-newbies-guide-to-software-defined-radios-on-kali-linux-part-1-fun-with-fm-radios-3a3589b78608&lt;br /&gt;
* https://www.nooelec.com/store/qs&lt;br /&gt;
* https://www.nooelec.com/store/downloads/dl/file/id/72/product/0/nesdr_installation_manual_for_ubuntu.pdf&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11576</id>
		<title>Nooelec SDR: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11576"/>
		<updated>2023-03-02T10:00:29Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the NooElec SDR. Specifically the NESDR Nano 2+ and the NESDR SMArt. At the end of the setup, the SDR will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
The Steps taken to install any NESDR Device should be the same according to Nooelec. This Setup shows mostly the installation and usage under Linux, these devices can also be used under Windows however the software options are limited.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating System: Ubuntu 20.04 is used in this Tutorial, but it also works with other Linux distributions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Run the command:&lt;br /&gt;
 lsusb&lt;br /&gt;
If you have your NESDR device plugged into your Ubuntu computer. This will list all of the USB devices attached to the computer. If things are working as they should be, you will see the NESDR SMArt listed as: &lt;br /&gt;
 RealtekSemiconductor Corp. RTL2838 DVB-T.&lt;br /&gt;
The DVB-T is the important part, because it means that the operating system has recognized the device and loaded, what it believes to be, the correct driver.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 1.png]]&lt;br /&gt;
&lt;br /&gt;
Can also be seen when using command: &lt;br /&gt;
 lsmod | grep dvb&lt;br /&gt;
This lists the loaded modules (drivers) and filters them to just show the ones that have the letters dvb in them. You will see they are loaded.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 2.png]]&lt;br /&gt;
&lt;br /&gt;
We need to remove those modules (drivers) and load the appropriate ones using the device as an SDR. We start by “blacklisting” the default drivers. This is done by editing the file:&lt;br /&gt;
 /etc/modprobe.d/blacklist-dvb.conf&lt;br /&gt;
Add the following line to blacklist this file:&lt;br /&gt;
 blacklist dvb_usb_rtl28xxu&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 3.png]]&lt;br /&gt;
&lt;br /&gt;
Then reboot and check. You should get nothing when running lsmod | grep dvb again.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 4.png]]&lt;br /&gt;
&lt;br /&gt;
What that does is disallow the default module (driver) to load. Now we need to tell it to load the driver we want. First, we need to download it onto the computer with:&lt;br /&gt;
 sudo apt-get install rtl-sdr&lt;br /&gt;
This will have the drivers and utilities related to using a SDR.&lt;br /&gt;
Now test the SDR if it works at the lowest level, which is tuning on a particular frequency and seeing if we hear anything. We do this by executing:&lt;br /&gt;
 rtl_test&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 5.png]]&lt;br /&gt;
&lt;br /&gt;
The first part of the test will test the parameters of the SDR and then it will attempt to tune in to a frequency. It is at this point you want the test to stop printing to the screen. You have the modules and libraries loaded that are needed to run the dongle as a software defined radio. The next step is to use a software, like Gqrx, that has a “waterfall display”, as you will see. With Ubuntu, the easiest way to do that is with Gqrx. It is available in the Ubuntu Software store, and therefore, easy to install.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 6.png]]&lt;br /&gt;
&lt;br /&gt;
However you will also need GNU radio to run Gqrx. Therefore it is recommended to simply install it via CLI with:&lt;br /&gt;
 sudo apt-get install gnuradio gqrx&lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Signal ===&lt;br /&gt;
&lt;br /&gt;
Having the device connected to the PC and the appropriate antenna, open a terminal and launch gqrx with the command: gqrx&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 7.png]]&lt;br /&gt;
&lt;br /&gt;
Make sure that the Device line shows the FunCube Dongle or the device you are using. Leave the other fields as they are then click OK. The main window of gqrx looks as below, you can listen to radio if you switch mode to WFM (stereo) – for example go to 104.2 MHz for Radio Energy in Vienna.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 8.png]]&lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[NooElec SDR Kit]]&lt;br /&gt;
* [[NESDR Nano 2+: Tiny RTL-SDR USB Set w/ 0.5PPM TCXO, R820T2 Tuner &amp;amp; Antenna]]&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfachprojekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://medium.com/poka-techblog/a-newbies-guide-to-software-defined-radios-on-kali-linux-part-1-fun-with-fm-radios-3a3589b78608&lt;br /&gt;
* https://www.nooelec.com/store/qs&lt;br /&gt;
* https://www.nooelec.com/store/downloads/dl/file/id/72/product/0/nesdr_installation_manual_for_ubuntu.pdf&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11575</id>
		<title>Nooelec SDR: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11575"/>
		<updated>2023-03-02T09:53:00Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the NooElec SDR. Specifically the NESDR Nano 2+ and the NESDR SMArt. At the end of the setup, the SDR will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
The Steps taken to install any NESDR Device should be the same according to Nooelec. This Setup shows mostly the installation and usage under Linux, these devices can also be used under Windows however the software options are limited.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating System: Ubuntu 20.04 is used in this Tutorial, but it also works with other Linux distributions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Run the command:&lt;br /&gt;
 lsusb&lt;br /&gt;
If you have your NESDR device plugged into your Ubuntu computer. This will list all of the USB devices attached to the computer. If things are working as they should be, you will see the NESDR SMArt listed as: &lt;br /&gt;
 RealtekSemiconductor Corp. RTL2838 DVB-T.&lt;br /&gt;
The DVB-T is the important part, because it means that the operating system has recognized the device and loaded, what it believes to be, the correct driver.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 1.png]]&lt;br /&gt;
&lt;br /&gt;
Can also be seen when using command: &lt;br /&gt;
 lsmod | grep dvb&lt;br /&gt;
This lists the loaded modules (drivers) and filters them to just show the ones that have the letters dvb in them. You will see they are loaded.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 2.png]]&lt;br /&gt;
&lt;br /&gt;
We need to remove those modules (drivers) and load the appropriate ones using the device as an SDR. We start by “blacklisting” the default drivers. This is done by editing the file:&lt;br /&gt;
 /etc/modprobe.d/blacklist-dvb.conf&lt;br /&gt;
Add the following line to blacklist this file:&lt;br /&gt;
 blacklist dvb_usb_rtl28xxu&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 3.png]]&lt;br /&gt;
&lt;br /&gt;
Then reboot and check. You should get nothing when running lsmod | grep dvb again.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 4.png]]&lt;br /&gt;
&lt;br /&gt;
What that does is disallow the default module (driver) to load. Now we need to tell it to load the driver we want. First, we need to download it onto the computer with:&lt;br /&gt;
 sudo apt-get install rtl-sdr&lt;br /&gt;
This will have the drivers and utilities related to using a SDR.&lt;br /&gt;
Now test the SDR if it works at the lowest level, which is tuning on a particular frequency and seeing if we hear anything. We do this by executing:&lt;br /&gt;
 rtl_test&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 5.png]]&lt;br /&gt;
&lt;br /&gt;
The first part of the test will test the parameters of the SDR and then it will attempt to tune in to a frequency. It is at this point you want the test to stop printing to the screen. You have the modules and libraries loaded that are needed to run the dongle as a software defined radio. The next step is to use a software, like Gqrx, that has a “waterfall display”, as you will see. With Ubuntu, the easiest way to do that is with Gqrx. It is available in the Ubuntu Software store, and therefore, easy to install.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 6.png]]&lt;br /&gt;
&lt;br /&gt;
However you will also need GNU radio to run Gqrx. Therefore it is recommended to simply install it via CLI with:&lt;br /&gt;
 sudo apt-get install gnuradio gqrx&lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Signal ===&lt;br /&gt;
&lt;br /&gt;
Having the device connected to the PC and the appropriate antenna, open a terminal and launch gqrx with the command: gqrx&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 7.png]]&lt;br /&gt;
&lt;br /&gt;
Make sure that the Device line shows the FunCube Dongle or the device you are using. Leave the other fields as they are then click OK. The main window of gqrx looks as below, you can listen to radio if you switch mode to WFM (stereo) – for example go to 104.2 MHz for Radio Energy in Vienna.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 8.png]]&lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[NooElec SDR Kit]]&lt;br /&gt;
* [[NESDR Nano 2+: Tiny RTL-SDR USB Set w/ 0.5PPM TCXO, R820T2 Tuner &amp;amp; Antenna]]&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfachprojekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://medium.com/poka-techblog/a-newbies-guide-to-software-defined-radios-on-kali-linux-part-1-fun-with-fm-radios-3a3589b78608&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11574</id>
		<title>Nooelec SDR: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11574"/>
		<updated>2023-03-02T09:03:18Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the NooElec SDR. Specifically the NESDR Nano 2+ and the NESDR SMArt. At the end of the setup, the SDR will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
The Steps taken to install any NESDR Device should be the same according to Nooelec. This Setup shows mostly the installation and usage under Linux, these devices can also be used under Windows however the software options are limited.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating System: Ubuntu 20.04 is used in this Tutorial, but it also works with other Linux distributions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Run the command lsusb if you have your NESDR SMArt plugged into your Ubuntu computer. This will list all of the USB devices attached to the computer. If things are working as they should be, you will see the NESDR SMArt listed as: RealtekSemiconductor Corp. RTL2838 DVB-T. &lt;br /&gt;
The DVB-T is the important part, because it means that the operating system has recognized the device and loaded, what it believes to be, the correct driver.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 1.png]]&lt;br /&gt;
&lt;br /&gt;
Can also be seen when using command: lsmod | grep dvb, which lists the loaded modules (drivers) and filters them to just show the ones that have the letters dvb in them. You will see they are loaded.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 2.png]]&lt;br /&gt;
&lt;br /&gt;
We need to remove those modules (drivers) and load the appropriate ones using the device as an SDR. We start by “blacklisting” the default drivers. This is done by editing the file/etc/modprobe.d/blacklist-dvb.conf. Add the following line to blacklist this file.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 3.png]]&lt;br /&gt;
&lt;br /&gt;
Then reboot and check. You should get nothing when doing the lsmod | grep dvb command.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 4.png]]&lt;br /&gt;
&lt;br /&gt;
What that does is disallow the default module (driver) to load. Now we need to tell it to load the driver we want. First, we need to download it onto the computer. sudo apt-get install rtl-sdr .This will have the drivers and utilities related to using a SDR.&lt;br /&gt;
Now test the SDR if it works at the lowest level, which is tuning on a particular frequency and seeing if we hear anything. We do this by executing rtl_test.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 5.png]]&lt;br /&gt;
&lt;br /&gt;
The first part of the test will test the parameters of the SDR and then it will attempt to tune in to a frequency. It is at this point you want the test to stop printing to the screen. You have the modules and libraries loaded that are needed to run the dongle as a software defined radio. The next step is to use a software, like Gqrx, that has a “waterfall display”, as you will see. With Ubuntu, the easiest way to do that is with Gqrx. It is available in the Ubuntu Software store, and therefore, easy to install.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 6.png]]&lt;br /&gt;
&lt;br /&gt;
Add GNU radio to that; I recommend to download it via CLI with: sudo apt-get install gnuradio gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Signal ===&lt;br /&gt;
&lt;br /&gt;
Having the device connected to the PC and the appropriate antenna, open a terminal and launch gqrx with the command: gqrx&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 7.png]]&lt;br /&gt;
&lt;br /&gt;
Make sure that the Device line shows the FunCube Dongle or the device you are using. Leave the other fields as they are then click OK. The main window of gqrx looks as below, you can listen to radio if you switch mode to WFM (stereo) – for example go to 104.2 MHz for Radio Energy in Vienna.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 8.png]]&lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[NooElec SDR Kit]]&lt;br /&gt;
* [[NESDR Nano 2+: Tiny RTL-SDR USB Set w/ 0.5PPM TCXO, R820T2 Tuner &amp;amp; Antenna]]&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfachprojekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://medium.com/poka-techblog/a-newbies-guide-to-software-defined-radios-on-kali-linux-part-1-fun-with-fm-radios-3a3589b78608&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=11573</id>
		<title>HackRF One: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=11573"/>
		<updated>2023-03-02T09:01:07Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the HackRF One Software Defined Radio. At the end of the setup, the HackRF One will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
This Setup shows mostly the installation and usage under Linux, this device can also be used under Windows however the software options are limited.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating system: Any Linux Distribution but preferably Kali or Pentoo&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation of Packages ===&lt;br /&gt;
&lt;br /&gt;
The following commands are for Debian/Ubuntu based Linux Distributions.&lt;br /&gt;
First, update your machine:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get update&lt;br /&gt;
  sudo apt upgrade&lt;br /&gt;
&lt;br /&gt;
Then install the hackrf tool and libraries:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install hackrf libhackrf-dev libhackrf0&lt;br /&gt;
&lt;br /&gt;
Now install GQRX:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
If that does not work use:&lt;br /&gt;
&lt;br /&gt;
  sudo aptitude install gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
We also must download the newest firmware from this Git repository: &lt;br /&gt;
&lt;br /&gt;
https://github.com/mossmann/hackrf/releases&lt;br /&gt;
&lt;br /&gt;
=== Installation under Windows using Zadig ===&lt;br /&gt;
&lt;br /&gt;
Download the latest release from: &lt;br /&gt;
&lt;br /&gt;
https://zadig.akeo.ie/&lt;br /&gt;
&lt;br /&gt;
Start the program. Under Options select List All Devices. Select HackRF One from the available devices and install the driver. Now you can use HackRF with Windows and for example Universal Radio Hacker.&lt;br /&gt;
&lt;br /&gt;
[[File:ZadigHackRFOne.png]]&lt;br /&gt;
&lt;br /&gt;
=== Check HackRF One ===&lt;br /&gt;
&lt;br /&gt;
Now, that we have installed the necessary software we can finally connect the HackRF One to our computer. IMPORTANT: Before you connect it to the computer, make sure you have attached the antenna. If you do not do this the HackRF One might get broken.&lt;br /&gt;
&lt;br /&gt;
[[File:Hackrf.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now we must activate the USB port in the virtual machine. In Oracle Virtual Box you can do that by right-clicking the VM -&amp;gt; select options -&amp;gt; click USB -&amp;gt; add USB drive -&amp;gt; choose the HackRF One -&amp;gt; Restart the machine. &lt;br /&gt;
&lt;br /&gt;
Now we can check if the HackRF one is recognized by the machine:&lt;br /&gt;
&lt;br /&gt;
  hackrf_info&lt;br /&gt;
&lt;br /&gt;
When everything is correct you should see an output like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Output.PNG]]&lt;br /&gt;
 &lt;br /&gt;
Here you can see the HackRF One was found and some more things. Important now is the firmware version. If it is not the newest, we have to do the following: &lt;br /&gt;
Unpack the folder we downloaded before from https://github.com/mossmann/hackrf/releases and navigate into the firmware-bin subdirectory. Then use this command to update the firmware:&lt;br /&gt;
&lt;br /&gt;
  hackrf_spiflash -w hackrf_one_usb.bin&lt;br /&gt;
&lt;br /&gt;
Older versions of HackRF firmware (prior to release 2021.03.1) require an additional step to program a bitstream into the CPLD:&lt;br /&gt;
&lt;br /&gt;
  hackrf_cpldjtag -x ./cpld/sgpio_if/default.xsvf&lt;br /&gt;
&lt;br /&gt;
Now restart the HackRF One by simply unplugging and plugging back in. You can now check if the version was updated. &lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Waves ===&lt;br /&gt;
&lt;br /&gt;
To validate that the HackRF One is properly working we want to test it by simply listening to Radio. To do that, we must start the previous downloaded program GQRX. You will be prompted a configuration window which you should edit like that: &lt;br /&gt;
&lt;br /&gt;
[[File:Iqinput.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now the program window will open. We must do some configuration here though: &lt;br /&gt;
&lt;br /&gt;
[[File:Gqrx.PNG]]&lt;br /&gt;
 &lt;br /&gt;
* Change the Mode to ‘WFM(stereo)’&lt;br /&gt;
* Increase the Gain (otherwise you will not hear anything)&lt;br /&gt;
* Click the ‘Start DSP processing’ button&lt;br /&gt;
* Change the Frequency (you can google for radio channel frequencies in your area or try to move the red bar inside one of the white curves)&lt;br /&gt;
&lt;br /&gt;
If you can listen to the radio channel now your HackRF One is set up properly and you can move on to do other, more interesting things with it.  &lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[HackRF One Software Defined Radio (SDR)]]&lt;br /&gt;
* Antenna (Antratek ANT500)&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfach Projekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://miloserdov.org/?p=4370 &lt;br /&gt;
* https://github.com/mossmann/hackrf/wiki/Getting-Started-with-HackRF-and-GNU-Radio&lt;br /&gt;
* https://hackrf.readthedocs.io/en/latest/index.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11572</id>
		<title>Nooelec SDR: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11572"/>
		<updated>2023-03-02T08:59:13Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the NooElec SDR. Specifically the NESDR Nano 2+ and the NESDR SMArt. At the end of the setup, the SDR will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
The Steps taken to install any NESDR Device should be the same according to Nooelec.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating System: Ubuntu 20.04 is used in this Tutorial, but it also works with other Linux distributions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Run the command lsusb if you have your NESDR SMArt plugged into your Ubuntu computer. This will list all of the USB devices attached to the computer. If things are working as they should be, you will see the NESDR SMArt listed as: RealtekSemiconductor Corp. RTL2838 DVB-T. &lt;br /&gt;
The DVB-T is the important part, because it means that the operating system has recognized the device and loaded, what it believes to be, the correct driver.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 1.png]]&lt;br /&gt;
&lt;br /&gt;
Can also be seen when using command: lsmod | grep dvb, which lists the loaded modules (drivers) and filters them to just show the ones that have the letters dvb in them. You will see they are loaded.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 2.png]]&lt;br /&gt;
&lt;br /&gt;
We need to remove those modules (drivers) and load the appropriate ones using the device as an SDR. We start by “blacklisting” the default drivers. This is done by editing the file/etc/modprobe.d/blacklist-dvb.conf. Add the following line to blacklist this file.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 3.png]]&lt;br /&gt;
&lt;br /&gt;
Then reboot and check. You should get nothing when doing the lsmod | grep dvb command.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 4.png]]&lt;br /&gt;
&lt;br /&gt;
What that does is disallow the default module (driver) to load. Now we need to tell it to load the driver we want. First, we need to download it onto the computer. sudo apt-get install rtl-sdr .This will have the drivers and utilities related to using a SDR.&lt;br /&gt;
Now test the SDR if it works at the lowest level, which is tuning on a particular frequency and seeing if we hear anything. We do this by executing rtl_test.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 5.png]]&lt;br /&gt;
&lt;br /&gt;
The first part of the test will test the parameters of the SDR and then it will attempt to tune in to a frequency. It is at this point you want the test to stop printing to the screen. You have the modules and libraries loaded that are needed to run the dongle as a software defined radio. The next step is to use a software, like Gqrx, that has a “waterfall display”, as you will see. With Ubuntu, the easiest way to do that is with Gqrx. It is available in the Ubuntu Software store, and therefore, easy to install.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 6.png]]&lt;br /&gt;
&lt;br /&gt;
Add GNU radio to that; I recommend to download it via CLI with: sudo apt-get install gnuradio gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Signal ===&lt;br /&gt;
&lt;br /&gt;
Having the device connected to the PC and the appropriate antenna, open a terminal and launch gqrx with the command: gqrx&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 7.png]]&lt;br /&gt;
&lt;br /&gt;
Make sure that the Device line shows the FunCube Dongle or the device you are using. Leave the other fields as they are then click OK. The main window of gqrx looks as below, you can listen to radio if you switch mode to WFM (stereo) – for example go to 104.2 MHz for Radio Energy in Vienna.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 8.png]]&lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[NooElec SDR Kit]]&lt;br /&gt;
* [[NESDR Nano 2+: Tiny RTL-SDR USB Set w/ 0.5PPM TCXO, R820T2 Tuner &amp;amp; Antenna]]&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfachprojekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://medium.com/poka-techblog/a-newbies-guide-to-software-defined-radios-on-kali-linux-part-1-fun-with-fm-radios-3a3589b78608&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11571</id>
		<title>Nooelec SDR: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=Nooelec_SDR:_Setup&amp;diff=11571"/>
		<updated>2023-03-02T08:53:12Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* Used Hardware */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the NooElec SDR. At the end of the setup, the SDR will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating System: Ubuntu 20.04 is used in this Tutorial, but it also works with other Linux distributions&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation ===&lt;br /&gt;
&lt;br /&gt;
Run the command lsusb if you have your NESDR SMArt plugged into your Ubuntu computer. This will list all of the USB devices attached to the computer. If things are working as they should be, you will see the NESDR SMArt listed as: RealtekSemiconductor Corp. RTL2838 DVB-T. &lt;br /&gt;
The DVB-T is the important part, because it means that the operating system has recognized the device and loaded, what it believes to be, the correct driver.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 1.png]]&lt;br /&gt;
&lt;br /&gt;
Can also be seen when using command: lsmod | grep dvb, which lists the loaded modules (drivers) and filters them to just show the ones that have the letters dvb in them. You will see they are loaded.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 2.png]]&lt;br /&gt;
&lt;br /&gt;
We need to remove those modules (drivers) and load the appropriate ones using the device as an SDR. We start by “blacklisting” the default drivers. This is done by editing the file/etc/modprobe.d/blacklist-dvb.conf. Add the following line to blacklist this file.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 3.png]]&lt;br /&gt;
&lt;br /&gt;
Then reboot and check. You should get nothing when doing the lsmod | grep dvb command.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 4.png]]&lt;br /&gt;
&lt;br /&gt;
What that does is disallow the default module (driver) to load. Now we need to tell it to load the driver we want. First, we need to download it onto the computer. sudo apt-get install rtl-sdr .This will have the drivers and utilities related to using a SDR.&lt;br /&gt;
Now test the SDR if it works at the lowest level, which is tuning on a particular frequency and seeing if we hear anything. We do this by executing rtl_test.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 5.png]]&lt;br /&gt;
&lt;br /&gt;
The first part of the test will test the parameters of the SDR and then it will attempt to tune in to a frequency. It is at this point you want the test to stop printing to the screen. You have the modules and libraries loaded that are needed to run the dongle as a software defined radio. The next step is to use a software, like Gqrx, that has a “waterfall display”, as you will see. With Ubuntu, the easiest way to do that is with Gqrx. It is available in the Ubuntu Software store, and therefore, easy to install.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 6.png]]&lt;br /&gt;
&lt;br /&gt;
Add GNU radio to that; I recommend to download it via CLI with: sudo apt-get install gnuradio gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Signal ===&lt;br /&gt;
&lt;br /&gt;
Having the device connected to the PC and the appropriate antenna, open a terminal and launch gqrx with the command: gqrx&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 7.png]]&lt;br /&gt;
&lt;br /&gt;
Make sure that the Device line shows the FunCube Dongle or the device you are using. Leave the other fields as they are then click OK. The main window of gqrx looks as below, you can listen to radio if you switch mode to WFM (stereo) – for example go to 104.2 MHz for Radio Energy in Vienna.&lt;br /&gt;
&lt;br /&gt;
[[File:Nooelec picture 8.png]]&lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[NooElec SDR Kit]]&lt;br /&gt;
* [[NESDR Nano 2+: Tiny RTL-SDR USB Set w/ 0.5PPM TCXO, R820T2 Tuner &amp;amp; Antenna]]&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfachprojekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://medium.com/poka-techblog/a-newbies-guide-to-software-defined-radios-on-kali-linux-part-1-fun-with-fm-radios-3a3589b78608&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=11492</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=11492"/>
		<updated>2023-02-16T15:11:06Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This article is about how UPnP works and what vulnerabilities it has, especially higlightening callstranger and flash attack.&lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing &amp;lt;br /&amp;gt;As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Discovery &amp;lt;br /&amp;gt;After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Description &amp;lt;br /&amp;gt;In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Control &amp;lt;br /&amp;gt;A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Eventing &amp;lt;br /&amp;gt;UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Presentation &amp;lt;br /&amp;gt;This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security in UPnP ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited.&lt;br /&gt;
In genereal security and authentication is not provided by default under UPnP. For this reason UPnP devices should not be publicly connected to the Internet or otherwise be outside the local network.&lt;br /&gt;
However, as an add-on service, there is also a certain level of security and authentication under UPnP, namely with the Device Protection Profile and with the security mechanism of the two profiles: Device Security and Security Console. These offer Security through role management and authentication.&lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
CVE-2020-12695 is a vulnerability in the UPnP 1.1 architecture, specifically affecting the callback header in the SUBSCRIBE function. &lt;br /&gt;
This header is used to send event messages to a specific location. According to the UPnP definition, several URLs can be specified.&lt;br /&gt;
which are systematically tried until one is accepted. Thanks to this security overview, an attacker can: &lt;br /&gt;
*exfiltrate data&lt;br /&gt;
*launch denial of service attacks&lt;br /&gt;
*scan internal ports&lt;br /&gt;
However, only devices whose UPnP subscriber function is externally accessible and not those that are only reachable in a local network. &lt;br /&gt;
This vulnerability no longer exists in UPnP 2.0, since the callback header only accepts private IP addresses.&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
Adobe Flash can load external data using the URLRequest method. &lt;br /&gt;
This attack makes use of this method by using it to perform UPnP discovery requests or action invocations on the local network of the victim who has executed this Flash program. &lt;br /&gt;
In principle, an attacker could use this vector for all UPnP operations. &lt;br /&gt;
An example would be adding a port mapping to an external IP to an Internet gateway device to give a malicious actor access to the local network.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStranger%20-%20Technical%20Report.pdf&lt;br /&gt;
* https://www.gnucitizen.org/blog/hacking-the-interwebs/&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;&amp;gt;https://de.wikipedia.org/wiki/Universal_Plug_and_Play/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=11491</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=11491"/>
		<updated>2023-02-16T15:08:54Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This article is about how UPnP works and what vulnerabilities it has, especially higlightening callstranger and flash attack.&lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing &amp;lt;br /&amp;gt;As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Discovery &amp;lt;br /&amp;gt;After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Description &amp;lt;br /&amp;gt;In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Control &amp;lt;br /&amp;gt;A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Eventing &amp;lt;br /&amp;gt;UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Presentation &amp;lt;br /&amp;gt;This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security in UPnP ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited.&lt;br /&gt;
In genereal security and authentication is not provided by default under UPnP. For this reason UPnP devices should not be publicly connected to the Internet or otherwise be outside the local network.&lt;br /&gt;
However, as an add-on service, there is also a certain level of security and authentication under UPnP, namely with the Device Protection Profile and with the security mechanism of the two profiles: Device Security and Security Console. These offer Security through role management and authentication.&lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
CVE-2020-12695 is a vulnerability in the UPnP 1.1 architecture, specifically affecting the callback header in the SUBSCRIBE function. &lt;br /&gt;
This header is used to send event messages to a specific location. According to the UPnP definition, several URLs can be specified.&lt;br /&gt;
which are systematically tried until one is accepted. Thanks to this security overview, an attacker can: &lt;br /&gt;
*exfiltrate data&lt;br /&gt;
*launch denial of service attacks&lt;br /&gt;
*scan internal ports&lt;br /&gt;
However, only devices whose UPnP subscriber function is externally accessible and not those that are only reachable in a local network. &lt;br /&gt;
This vulnerability no longer exists in UPnP 2.0, since the callback header only accepts private IP addresses.&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
Adobe Flash can load external data using the URLRequest method. &lt;br /&gt;
This attack makes use of this method by using it to perform UPnP discovery requests or action invocations on the local network of the victim who has executed this Flash program. &lt;br /&gt;
In principle, an attacker could use this vector for all UPnP operations. &lt;br /&gt;
An example would be adding a port mapping to an external IP to an Internet gateway device to give a malicious actor access to the local network.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStranger%20-%20Technical%20Report.pdf&lt;br /&gt;
* https://www.gnucitizen.org/blog/hacking-the-interwebs/&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;&amp;gt;https://de.wikipedia.org/wiki/Universal_Plug_and_Play/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10953</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10953"/>
		<updated>2023-01-08T17:30:48Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This article is about how UPnP works and what vulnerabilities it has, especially higlightening callstranger and flash attack.&lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing &amp;lt;br /&amp;gt;As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Discovery &amp;lt;br /&amp;gt;After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Description &amp;lt;br /&amp;gt;In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Control &amp;lt;br /&amp;gt;A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Eventing &amp;lt;br /&amp;gt;UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Presentation &amp;lt;br /&amp;gt;This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security in UPnP ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited.&lt;br /&gt;
In genereal security and authentication is not provided by default under UPnP. For this reason UPnP devices should not be publicly connected to the Internet or otherwise be outside the local network.&lt;br /&gt;
However, as an add-on service, there is also a certain level of security and authentication under UPnP, namely with the Device Protection Profile and with the security mechanism of the two profiles: Device Security and Security Console. These offer Security through role management and authentication.&lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
CVE-2020-12695 is a vulnerability in the UPnP 1.1 architecture, specifically affecting the callback header in the SUBSCRIBE function. &lt;br /&gt;
This header is used to send event messages to a specific location. According to the UPnP definition, several URLs can be specified.&lt;br /&gt;
which are systematically tried until one is accepted. Thanks to this security overview, an attacker can: &lt;br /&gt;
*exfiltrate data&lt;br /&gt;
*launch denial of service attacks&lt;br /&gt;
*scan internal ports&lt;br /&gt;
However, only devices whose UPnP subscriber function is externally accessible and not those that are only reachable in a local network. &lt;br /&gt;
This vulnerability no longer exists in UPnP 2.0, since the callback header only accepts private IP addresses.&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
Adobe Flash can load external data using the URLRequest method. &lt;br /&gt;
This attack makes use of this method by using it to perform UPnP discovery requests or action invocations on the local network of the victim who has executed this Flash program. &lt;br /&gt;
In principle, an attacker could use this vector for all UPnP operations. &lt;br /&gt;
An example would be adding a port mapping to an external IP to an Internet gateway device to give a malicious actor access to the local network.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStranger&lt;br /&gt;
* https://www.gnucitizen.org/blog/hacking-the-interwebs/&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;&amp;gt;https://de.wikipedia.org/wiki/Universal_Plug_and_Play/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10951</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10951"/>
		<updated>2023-01-08T17:24:49Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This article is about how UPnP works and what vulnerabilities it has, especially higlightening callstranger and flash attack.&lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing &amp;lt;br /&amp;gt;As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Discovery &amp;lt;br /&amp;gt;After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Description &amp;lt;br /&amp;gt;In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Control &amp;lt;br /&amp;gt;A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Eventing &amp;lt;br /&amp;gt;UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Presentation &amp;lt;br /&amp;gt;This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Security in UPnP ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited.&lt;br /&gt;
In genereal security and authentication is not provided by default under UPnP. For this reason UPnP devices should not be publicly connected to the Internet or otherwise be outside the local network.&lt;br /&gt;
However, as an add-on service, there is also a certain level of security and authentication under UPnP, namely with the Device Protection Profile and with the security mechanism of the two profiles: Device Security and Security Console. These offer Security through role management and authentication.&lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
CVE-2020-12695 is a vulnerability in the UPnP 1.1 architecture, specifically affecting the callback header in the SUBSCRIBE function. &lt;br /&gt;
This header is used to send event messages to a specific location. According to the UPnP definition, several URLs can be specified.&lt;br /&gt;
which are systematically tried until one is accepted. Thanks to this security overview, an attacker can: &lt;br /&gt;
*exfiltrate data&lt;br /&gt;
*launch denial of service attacks&lt;br /&gt;
*scan internal ports&lt;br /&gt;
However, only devices whose UPnP subscriber function is externally accessible and not those that are only reachable in a local network. &lt;br /&gt;
This vulnerability no longer exists in UPnP 2.0, since the callback header only accepts private IP addresses.&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
This attack type is starting off with the victim opening a malicious SWF (Adobe Flash Player) file in the browser. This starts a silent attack&lt;br /&gt;
which sends UPnP requests to the victim’s browser. These requests could open ports on the victim’s&lt;br /&gt;
computer or change the primary DNS-Server of the victim. The UPnP Flash Attack is still not fixed and thus, it is still possible to carry out this attack.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStrangerhttps://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/standards&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;&amp;gt;https://de.wikipedia.org/wiki/Universal_Plug_and_Play/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10950</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10950"/>
		<updated>2023-01-08T17:06:25Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* Summary */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This article is about how UPnP works and what vulnerabilities it has, especially higlightening callstranger and flash attack.&lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing &amp;lt;br /&amp;gt;As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Discovery &amp;lt;br /&amp;gt;After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Description &amp;lt;br /&amp;gt;In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Control &amp;lt;br /&amp;gt;A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Eventing &amp;lt;br /&amp;gt;UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Presentation &amp;lt;br /&amp;gt;This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Vulnerability ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited. &lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
In attack type, malicious actors send UPnP SUBSCRIBE requests to a target in which the CALLBACK header value is&lt;br /&gt;
modified. The CALLBACK head value indicates to which machine the answer should be send to. With this vulnerability the callbacks could be directed anywhere. This attack could allow:&lt;br /&gt;
• Scanning of internal ports&lt;br /&gt;
• Reflected or amplified DDoS attacks&lt;br /&gt;
• Bypassing DLP and network security to exfiltrate data&lt;br /&gt;
The “CallStranger” Attack was fixed in April 2019&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
This attack type is starting off with the victim opening a malicious SWF (Adobe Flash Player) file in the browser. This starts a silent attack&lt;br /&gt;
which sends UPnP requests to the victim’s browser. These requests could open ports on the victim’s&lt;br /&gt;
computer or change the primary DNS-Server of the victim. The UPnP Flash Attack is still not fixed and thus, it is still possible to carry out this attack.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStrangerhttps://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/standards&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;&amp;gt;https://de.wikipedia.org/wiki/Universal_Plug_and_Play/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10949</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10949"/>
		<updated>2023-01-08T17:04:33Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* References */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This document is about the general vulnerability and also about two well-known vulnerabilities of the UPnP protocol. &lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing &amp;lt;br /&amp;gt;As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Discovery &amp;lt;br /&amp;gt;After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Description &amp;lt;br /&amp;gt;In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Control &amp;lt;br /&amp;gt;A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Eventing &amp;lt;br /&amp;gt;UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Presentation &amp;lt;br /&amp;gt;This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Vulnerability ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited. &lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
In attack type, malicious actors send UPnP SUBSCRIBE requests to a target in which the CALLBACK header value is&lt;br /&gt;
modified. The CALLBACK head value indicates to which machine the answer should be send to. With this vulnerability the callbacks could be directed anywhere. This attack could allow:&lt;br /&gt;
• Scanning of internal ports&lt;br /&gt;
• Reflected or amplified DDoS attacks&lt;br /&gt;
• Bypassing DLP and network security to exfiltrate data&lt;br /&gt;
The “CallStranger” Attack was fixed in April 2019&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
This attack type is starting off with the victim opening a malicious SWF (Adobe Flash Player) file in the browser. This starts a silent attack&lt;br /&gt;
which sends UPnP requests to the victim’s browser. These requests could open ports on the victim’s&lt;br /&gt;
computer or change the primary DNS-Server of the victim. The UPnP Flash Attack is still not fixed and thus, it is still possible to carry out this attack.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStrangerhttps://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/standards&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;&amp;gt;https://de.wikipedia.org/wiki/Universal_Plug_and_Play/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10948</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10948"/>
		<updated>2023-01-08T17:03:06Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* UPnP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This document is about the general vulnerability and also about two well-known vulnerabilities of the UPnP protocol. &lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing &amp;lt;br /&amp;gt;As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Discovery &amp;lt;br /&amp;gt;After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Description &amp;lt;br /&amp;gt;In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Control &amp;lt;br /&amp;gt;A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Eventing &amp;lt;br /&amp;gt;UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Presentation &amp;lt;br /&amp;gt;This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Vulnerability ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited. &lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
In attack type, malicious actors send UPnP SUBSCRIBE requests to a target in which the CALLBACK header value is&lt;br /&gt;
modified. The CALLBACK head value indicates to which machine the answer should be send to. With this vulnerability the callbacks could be directed anywhere. This attack could allow:&lt;br /&gt;
• Scanning of internal ports&lt;br /&gt;
• Reflected or amplified DDoS attacks&lt;br /&gt;
• Bypassing DLP and network security to exfiltrate data&lt;br /&gt;
The “CallStranger” Attack was fixed in April 2019&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
This attack type is starting off with the victim opening a malicious SWF (Adobe Flash Player) file in the browser. This starts a silent attack&lt;br /&gt;
which sends UPnP requests to the victim’s browser. These requests could open ports on the victim’s&lt;br /&gt;
computer or change the primary DNS-Server of the victim. The UPnP Flash Attack is still not fixed and thus, it is still possible to carry out this attack.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStrangerhttps://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/standards&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10947</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10947"/>
		<updated>2023-01-08T17:02:51Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* UPnP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This document is about the general vulnerability and also about two well-known vulnerabilities of the UPnP protocol. &lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing &amp;lt;br /&amp;gt;As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&amp;lt;br /&amp;gt;&lt;br /&gt;
# Discovery &amp;lt;br /&amp;gt;After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&amp;lt;br /&amp;gt;&lt;br /&gt;
# Description &amp;lt;br /&amp;gt;In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
# Control &amp;lt;br /&amp;gt;A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&amp;lt;br /&amp;gt;&lt;br /&gt;
# Eventing &amp;lt;br /&amp;gt;UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&amp;lt;br /&amp;gt;&lt;br /&gt;
# Presentation &amp;lt;br /&amp;gt;This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Vulnerability ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited. &lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
In attack type, malicious actors send UPnP SUBSCRIBE requests to a target in which the CALLBACK header value is&lt;br /&gt;
modified. The CALLBACK head value indicates to which machine the answer should be send to. With this vulnerability the callbacks could be directed anywhere. This attack could allow:&lt;br /&gt;
• Scanning of internal ports&lt;br /&gt;
• Reflected or amplified DDoS attacks&lt;br /&gt;
• Bypassing DLP and network security to exfiltrate data&lt;br /&gt;
The “CallStranger” Attack was fixed in April 2019&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
This attack type is starting off with the victim opening a malicious SWF (Adobe Flash Player) file in the browser. This starts a silent attack&lt;br /&gt;
which sends UPnP requests to the victim’s browser. These requests could open ports on the victim’s&lt;br /&gt;
computer or change the primary DNS-Server of the victim. The UPnP Flash Attack is still not fixed and thus, it is still possible to carry out this attack.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStrangerhttps://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/standards&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10946</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10946"/>
		<updated>2023-01-08T17:02:39Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* UPnP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This document is about the general vulnerability and also about two well-known vulnerabilities of the UPnP protocol. &lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing &amp;lt;br /&amp;gt;As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&amp;lt;br /&amp;gt;&lt;br /&gt;
# Discovery &amp;lt;br /&amp;gt;After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&amp;lt;br /&amp;gt;&lt;br /&gt;
# Description &amp;lt;br /&amp;gt;In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&amp;lt;br /&amp;gt;&lt;br /&gt;
# Control &amp;lt;br /&amp;gt;A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&amp;lt;br /&amp;gt;&lt;br /&gt;
# Eventing &amp;lt;br /&amp;gt;UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&amp;lt;br /&amp;gt;&lt;br /&gt;
# Presentation &amp;lt;br /&amp;gt;This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Vulnerability ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited. &lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
In attack type, malicious actors send UPnP SUBSCRIBE requests to a target in which the CALLBACK header value is&lt;br /&gt;
modified. The CALLBACK head value indicates to which machine the answer should be send to. With this vulnerability the callbacks could be directed anywhere. This attack could allow:&lt;br /&gt;
• Scanning of internal ports&lt;br /&gt;
• Reflected or amplified DDoS attacks&lt;br /&gt;
• Bypassing DLP and network security to exfiltrate data&lt;br /&gt;
The “CallStranger” Attack was fixed in April 2019&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
This attack type is starting off with the victim opening a malicious SWF (Adobe Flash Player) file in the browser. This starts a silent attack&lt;br /&gt;
which sends UPnP requests to the victim’s browser. These requests could open ports on the victim’s&lt;br /&gt;
computer or change the primary DNS-Server of the victim. The UPnP Flash Attack is still not fixed and thus, it is still possible to carry out this attack.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStrangerhttps://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/standards&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10945</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10945"/>
		<updated>2023-01-08T17:02:10Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* UPnP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This document is about the general vulnerability and also about two well-known vulnerabilities of the UPnP protocol. &lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing &amp;lt;br /&amp;gt;As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&lt;br /&gt;
&lt;br /&gt;
# Discovery &amp;lt;br /&amp;gt;After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&lt;br /&gt;
# Description &amp;lt;br /&amp;gt;In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&lt;br /&gt;
# Control &amp;lt;br /&amp;gt;A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&lt;br /&gt;
# Eventing &amp;lt;br /&amp;gt;UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&lt;br /&gt;
# Presentation &amp;lt;br /&amp;gt;This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&lt;br /&gt;
&lt;br /&gt;
== UPnP Vulnerability ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited. &lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
In attack type, malicious actors send UPnP SUBSCRIBE requests to a target in which the CALLBACK header value is&lt;br /&gt;
modified. The CALLBACK head value indicates to which machine the answer should be send to. With this vulnerability the callbacks could be directed anywhere. This attack could allow:&lt;br /&gt;
• Scanning of internal ports&lt;br /&gt;
• Reflected or amplified DDoS attacks&lt;br /&gt;
• Bypassing DLP and network security to exfiltrate data&lt;br /&gt;
The “CallStranger” Attack was fixed in April 2019&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
This attack type is starting off with the victim opening a malicious SWF (Adobe Flash Player) file in the browser. This starts a silent attack&lt;br /&gt;
which sends UPnP requests to the victim’s browser. These requests could open ports on the victim’s&lt;br /&gt;
computer or change the primary DNS-Server of the victim. The UPnP Flash Attack is still not fixed and thus, it is still possible to carry out this attack.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStrangerhttps://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/standards&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10944</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10944"/>
		<updated>2023-01-08T17:01:56Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* UPnP */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This document is about the general vulnerability and also about two well-known vulnerabilities of the UPnP protocol. &lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing &amp;lt;br /&amp;gt;As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&lt;br /&gt;
# Discovery &amp;lt;br /&amp;gt;After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&lt;br /&gt;
# Description &amp;lt;br /&amp;gt;In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&lt;br /&gt;
# Control &amp;lt;br /&amp;gt;A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&lt;br /&gt;
# Eventing &amp;lt;br /&amp;gt;UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&lt;br /&gt;
# Presentation &amp;lt;br /&amp;gt;This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&lt;br /&gt;
&lt;br /&gt;
== UPnP Vulnerability ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited. &lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
In attack type, malicious actors send UPnP SUBSCRIBE requests to a target in which the CALLBACK header value is&lt;br /&gt;
modified. The CALLBACK head value indicates to which machine the answer should be send to. With this vulnerability the callbacks could be directed anywhere. This attack could allow:&lt;br /&gt;
• Scanning of internal ports&lt;br /&gt;
• Reflected or amplified DDoS attacks&lt;br /&gt;
• Bypassing DLP and network security to exfiltrate data&lt;br /&gt;
The “CallStranger” Attack was fixed in April 2019&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
This attack type is starting off with the victim opening a malicious SWF (Adobe Flash Player) file in the browser. This starts a silent attack&lt;br /&gt;
which sends UPnP requests to the victim’s browser. These requests could open ports on the victim’s&lt;br /&gt;
computer or change the primary DNS-Server of the victim. The UPnP Flash Attack is still not fixed and thus, it is still possible to carry out this attack.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStrangerhttps://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/standards&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10943</id>
		<title>UPnP vulnerabilities</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=UPnP_vulnerabilities&amp;diff=10943"/>
		<updated>2023-01-08T17:00:04Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
This document is about the general vulnerability and also about two well-known vulnerabilities of the UPnP protocol. &lt;br /&gt;
&lt;br /&gt;
== UPnP ==&lt;br /&gt;
&lt;br /&gt;
Universal Plug and Play is a protocol stack of known protocols, which is managed since 2016 by the Open Connectivity Forum, in order to automatically offer services in the network without configuration by the user. These services can range from editing port mappings on a router to switching a heater on/off. In order for a device to be a complete UPnP device it must go through a number of steps.&lt;br /&gt;
&lt;br /&gt;
[[File:UPnP Protocol Stack.png]]&amp;lt;ref name=&amp;quot;Protocol Stack&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
# Addressing&lt;br /&gt;
As soon as a device is connected to the network, it searches for a DHCP server for an IP address; if none is found, it assigns itself one by means of Auto-IP.&lt;br /&gt;
# Discovery&lt;br /&gt;
After an address has been obtained, the device must announce its presence to the network. This is done via a advertisement, which uses HTTPMU on the address 239.255.255.250:1900, with the method NOTIFY, setting the NTS header field to ssdp:alive. In addition, devices can also search specifically for devices or services by means of a discovery request, using the method M-SEARCH. A device responds to a discovery request with an HTTP 200 message.&lt;br /&gt;
# Description&lt;br /&gt;
In the Discovery Response is a Location header field that contains the URL of the UPnP Device Description, which contains merchant-specific information and a list of all services and their service description URLs. The Service Description describes the actions offered by the device, its arguments, status variables and event characteristics. Documents must conform to the UPnP template language, an XML syntax defined by the UPnP Forum.&lt;br /&gt;
# Control&lt;br /&gt;
A control point can use the services of a UPnP device by invoking the actions with their arguments via a action invocation. This is done using SOAP, which transmits an XML SOAP envelope via a HTTP POST, which contains the action and its arguments.&lt;br /&gt;
# Eventing&lt;br /&gt;
UPnP uses an asynchronous publisher/subscriber model to communicate changes of status variables to control points. For this purpose GENA is used, which, like SOAP, uses HTTP and XML as underlying technologies.&lt;br /&gt;
# Presentation&lt;br /&gt;
This is an optional step that a vendor can implement so that the device can be controlled and managed via a web interface.&lt;br /&gt;
&lt;br /&gt;
== UPnP Vulnerability ==&lt;br /&gt;
There are many known vulnerabilities and security risks when talking about the UPnP&lt;br /&gt;
Standard. On the Common Vulnerability and Exposure (CVE) website 130 different&lt;br /&gt;
known vulnerabilities with the keyword  ̈UPnPcan be found. Also, some known state&lt;br /&gt;
institutions, like the FBI have publicly recommended to disable UPnP in general. The&lt;br /&gt;
reason, according to the FBI Webpage, is that there are UPnP exploits which allow&lt;br /&gt;
access to different IoT devices. Not only these known vulnerabilities make security such&lt;br /&gt;
an important issue when talking about UPnP. The standard has also some general&lt;br /&gt;
vulnerabilities by design. In some steps in UPnP networking there is no verification, integrity check or access control. There are also some UPnP SDKs which can be exploited. &lt;br /&gt;
&lt;br /&gt;
== CallStranger Attack ==&lt;br /&gt;
In attack type, malicious actors send UPnP SUBSCRIBE requests to a target in which the CALLBACK header value is&lt;br /&gt;
modified. The CALLBACK head value indicates to which machine the answer should be send to. With this vulnerability the callbacks could be directed anywhere. This attack could allow:&lt;br /&gt;
• Scanning of internal ports&lt;br /&gt;
• Reflected or amplified DDoS attacks&lt;br /&gt;
• Bypassing DLP and network security to exfiltrate data&lt;br /&gt;
The “CallStranger” Attack was fixed in April 2019&lt;br /&gt;
&lt;br /&gt;
[[File:upnp_callstranger.jpg]]&amp;lt;ref name=&amp;quot;callstranger&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UPnP Flash Attack ==&lt;br /&gt;
This attack type is starting off with the victim opening a malicious SWF (Adobe Flash Player) file in the browser. This starts a silent attack&lt;br /&gt;
which sends UPnP requests to the victim’s browser. These requests could open ports on the victim’s&lt;br /&gt;
computer or change the primary DNS-Server of the victim. The UPnP Flash Attack is still not fixed and thus, it is still possible to carry out this attack.&lt;br /&gt;
&lt;br /&gt;
== Mirai Botnet ==&lt;br /&gt;
A real-world example of a large-scale UPnP attack is the Mirai Botnet which was discovered in 2018.&lt;br /&gt;
In this attack hundreds of thousands of routers over the internet where scanned and the attack&lt;br /&gt;
software was searching for exposed Telnet ports which were added by UPnP. The Attackers BruteForced the default passwords of the devices and added these to the botnet. &lt;br /&gt;
The botnet was then used to start large-scale DDoS attacks which shut down some target servers. A depiction of a simplified DDoS Attack with the Mirai Botnet can be seen in the picture below.&lt;br /&gt;
&lt;br /&gt;
[[File:Mirai-botnet-diagram.png]]&amp;lt;ref name=&amp;quot;mirai&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* [[Ausgewählte Kapitel der IT Security]] (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* https://www.upguard.com/blog/what-is-upnp&lt;br /&gt;
* https://openconnectivity.org/upnp-specs/UPnP-arch-DeviceArchitecture-v2.0-20200417.pdf&lt;br /&gt;
* https://github.com/yunuscadirci/CallStranger/blob/master/CallStrangerhttps://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* https://www.fbi.gov/news/stories/cyber-tip-be-vigilant-with-your-internet-of-things-iot-devices&lt;br /&gt;
* https://openconnectivity.org/developer/specifications/upnp-resources/upnp/standards&lt;br /&gt;
* An Overview of UPnP-based IoT Security: Threats, Vulnerabilities, and Prospective Solutions; Golam Kayas, Mahmud Hossain, Jamie Payton, S. M. Riazul Islam; 2020&lt;br /&gt;
* https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=upnp&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;callstranger&amp;quot;&amp;gt;https://www.helpnetsecurity.com/2020/06/09/cve-2020-12695/&amp;lt;/ref&amp;gt;&lt;br /&gt;
* &amp;lt;ref name=&amp;quot;mirai&amp;quot;&amp;gt;https://www.imperva.com/blog/how-to-identify-a-mirai-style-ddos-attack/&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Basics]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=File:UPnP_Protocol_Stack.png&amp;diff=10942</id>
		<title>File:UPnP Protocol Stack.png</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=File:UPnP_Protocol_Stack.png&amp;diff=10942"/>
		<updated>2023-01-08T16:46:53Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=10498</id>
		<title>HackRF One: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=10498"/>
		<updated>2023-01-02T10:02:37Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the HackRF One Software Defined Radio. At the end of the setup, the HackRF One will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating system: Any Linux Distribution but preferably Kali or Pentoo&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation of Packages ===&lt;br /&gt;
&lt;br /&gt;
The following commands are for Debian/Ubuntu based Linux Distributions.&lt;br /&gt;
First, update your machine:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get update&lt;br /&gt;
  sudo apt upgrade&lt;br /&gt;
&lt;br /&gt;
Then install the hackrf tool and libraries:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install hackrf libhackrf-dev libhackrf0&lt;br /&gt;
&lt;br /&gt;
Now install GQRX:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
If that does not work use:&lt;br /&gt;
&lt;br /&gt;
  sudo aptitude install gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
We also must download the newest firmware from this Git repository: &lt;br /&gt;
&lt;br /&gt;
https://github.com/mossmann/hackrf/releases&lt;br /&gt;
&lt;br /&gt;
=== Installation under Windows using Zadig ===&lt;br /&gt;
&lt;br /&gt;
Download the latest release from: &lt;br /&gt;
&lt;br /&gt;
https://zadig.akeo.ie/&lt;br /&gt;
&lt;br /&gt;
Start the program. Under Options select List All Devices. Select HackRF One from the available devices and install the driver. Now you can use HackRF with Windows and for example Universal Radio Hacker.&lt;br /&gt;
&lt;br /&gt;
[[File:ZadigHackRFOne.png]]&lt;br /&gt;
&lt;br /&gt;
=== Check HackRF One ===&lt;br /&gt;
&lt;br /&gt;
Now, that we have installed the necessary software we can finally connect the HackRF One to our computer. IMPORTANT: Before you connect it to the computer, make sure you have attached the antenna. If you do not do this the HackRF One might get broken.&lt;br /&gt;
&lt;br /&gt;
[[File:Hackrf.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now we must activate the USB port in the virtual machine. In Oracle Virtual Box you can do that by right-clicking the VM -&amp;gt; select options -&amp;gt; click USB -&amp;gt; add USB drive -&amp;gt; choose the HackRF One -&amp;gt; Restart the machine. &lt;br /&gt;
&lt;br /&gt;
Now we can check if the HackRF one is recognized by the machine:&lt;br /&gt;
&lt;br /&gt;
  hackrf_info&lt;br /&gt;
&lt;br /&gt;
When everything is correct you should see an output like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Output.PNG]]&lt;br /&gt;
 &lt;br /&gt;
Here you can see the HackRF One was found and some more things. Important now is the firmware version. If it is not the newest, we have to do the following: &lt;br /&gt;
Unpack the folder we downloaded before from https://github.com/mossmann/hackrf/releases and navigate into the firmware-bin subdirectory. Then use this command to update the firmware:&lt;br /&gt;
&lt;br /&gt;
  hackrf_spiflash -w hackrf_one_usb.bin&lt;br /&gt;
&lt;br /&gt;
Older versions of HackRF firmware (prior to release 2021.03.1) require an additional step to program a bitstream into the CPLD:&lt;br /&gt;
&lt;br /&gt;
  hackrf_cpldjtag -x ./cpld/sgpio_if/default.xsvf&lt;br /&gt;
&lt;br /&gt;
Now restart the HackRF One by simply unplugging and plugging back in. You can now check if the version was updated. &lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Waves ===&lt;br /&gt;
&lt;br /&gt;
To validate that the HackRF One is properly working we want to test it by simply listening to Radio. To do that, we must start the previous downloaded program GQRX. You will be prompted a configuration window which you should edit like that: &lt;br /&gt;
&lt;br /&gt;
[[File:Iqinput.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now the program window will open. We must do some configuration here though: &lt;br /&gt;
&lt;br /&gt;
[[File:Gqrx.PNG]]&lt;br /&gt;
 &lt;br /&gt;
* Change the Mode to ‘WFM(stereo)’&lt;br /&gt;
* Increase the Gain (otherwise you will not hear anything)&lt;br /&gt;
* Click the ‘Start DSP processing’ button&lt;br /&gt;
* Change the Frequency (you can google for radio channel frequencies in your area or try to move the red bar inside one of the white curves)&lt;br /&gt;
&lt;br /&gt;
If you can listen to the radio channel now your HackRF One is set up properly and you can move on to do other, more interesting things with it.  &lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[HackRF One Software Defined Radio (SDR)]]&lt;br /&gt;
* Antenna (Antratek ANT500)&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfach Projekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://miloserdov.org/?p=4370 &lt;br /&gt;
* https://github.com/mossmann/hackrf/wiki/Getting-Started-with-HackRF-and-GNU-Radio&lt;br /&gt;
* https://hackrf.readthedocs.io/en/latest/index.html&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=10497</id>
		<title>HackRF One: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=10497"/>
		<updated>2023-01-02T10:00:52Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the HackRF One Software Defined Radio. At the end of the setup, the HackRF One will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating system: Any Linux Distribution but preferably Kali or Pentoo&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation of Packages ===&lt;br /&gt;
&lt;br /&gt;
The following commands are for Debian/Ubuntu based Linux Distributions.&lt;br /&gt;
First, update your machine:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get update&lt;br /&gt;
  sudo apt upgrade&lt;br /&gt;
&lt;br /&gt;
Then install the hackrf tool and libraries:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install hackrf libhackrf-dev libhackrf0&lt;br /&gt;
&lt;br /&gt;
Now install GQRX:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
If that does not work use:&lt;br /&gt;
&lt;br /&gt;
  sudo aptitude install gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
We also must download the newest firmware from this Git repository: &lt;br /&gt;
&lt;br /&gt;
https://github.com/mossmann/hackrf/releases&lt;br /&gt;
&lt;br /&gt;
=== Installation under Windows using Zadig ===&lt;br /&gt;
&lt;br /&gt;
Download the latest release from: &lt;br /&gt;
&lt;br /&gt;
https://zadig.akeo.ie/&lt;br /&gt;
&lt;br /&gt;
Start the program. Under Options select List All Devices. Select HackRF One from the available devices and install the driver. Now you can use HackRF with Windows and for example Universal Radio Hacker.&lt;br /&gt;
&lt;br /&gt;
[[File:ZadigHackRFOne.png]]&lt;br /&gt;
&lt;br /&gt;
=== Check HackRF One ===&lt;br /&gt;
&lt;br /&gt;
Now, that we have installed the necessary software we can finally connect the HackRF One to our computer. IMPORTANT: Before you connect it to the computer, make sure you have attached the antenna. If you do not do this the HackRF One might get broken.&lt;br /&gt;
&lt;br /&gt;
[[File:Hackrf.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now we must activate the USB port in the virtual machine. In Oracle Virtual Box you can do that by right-clicking the VM -&amp;gt; select options -&amp;gt; click USB -&amp;gt; add USB drive -&amp;gt; choose the HackRF One -&amp;gt; Restart the machine. &lt;br /&gt;
&lt;br /&gt;
Now we can check if the HackRF one is recognized by the machine:&lt;br /&gt;
&lt;br /&gt;
  hackrf_info&lt;br /&gt;
&lt;br /&gt;
When everything is correct you should see an output like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Output.PNG]]&lt;br /&gt;
 &lt;br /&gt;
Here you can see the HackRF One was found and some more things. Important now is the firmware version. If it is not the newest, we have to do the following: &lt;br /&gt;
Unpack the folder we downloaded before from https://github.com/mossmann/hackrf/releases and navigate into the firmware-bin subdirectory. Then use this command to update the firmware:&lt;br /&gt;
&lt;br /&gt;
  hackrf_spiflash -w hackrf_one_usb.bin&lt;br /&gt;
&lt;br /&gt;
Older versions of HackRF firmware (prior to release 2021.03.1) require an additional step to program a bitstream into the CPLD:&lt;br /&gt;
&lt;br /&gt;
  hackrf_cpldjtag -x ./cpld/sgpio_if/default.xsvf&lt;br /&gt;
&lt;br /&gt;
Now restart the HackRF One by simply unplugging and plugging back in. You can now check if the version was updated. &lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Waves ===&lt;br /&gt;
&lt;br /&gt;
To validate that the HackRF One is properly working we want to test it by simply listening to Radio. To do that, we must start the previous downloaded program GQRX. You will be prompted a configuration window which you should edit like that: &lt;br /&gt;
&lt;br /&gt;
[[File:Iqinput.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now the program window will open. We must do some configuration here though: &lt;br /&gt;
&lt;br /&gt;
[[File:Gqrx.PNG]]&lt;br /&gt;
 &lt;br /&gt;
* Change the Mode to ‘WFM(stereo)’&lt;br /&gt;
* Increase the Gain (otherwise you will not hear anything)&lt;br /&gt;
* Click the ‘Start DSP processing’ button&lt;br /&gt;
* Change the Frequency (you can google for radio channel frequencies in your area or try to move the red bar inside one of the white curves)&lt;br /&gt;
&lt;br /&gt;
If you can listen to the radio channel now your HackRF One is set up properly and you can move on to do other, more interesting things with it.  &lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[HackRF One Software Defined Radio (SDR)]]&lt;br /&gt;
* Antenna (Antratek ANT500)&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfach Projekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://miloserdov.org/?p=4370 &lt;br /&gt;
* https://github.com/mossmann/hackrf/wiki/Getting-Started-with-HackRF-and-GNU-Radio&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=File:ZadigHackRFOne.png&amp;diff=10496</id>
		<title>File:ZadigHackRFOne.png</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=File:ZadigHackRFOne.png&amp;diff=10496"/>
		<updated>2023-01-02T09:59:56Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=10495</id>
		<title>HackRF One: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=10495"/>
		<updated>2023-01-02T08:36:33Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the HackRF One Software Defined Radio. At the end of the setup, the HackRF One will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating system: Any Linux Distribution but preferably Kali or Pentoo&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation of Packages ===&lt;br /&gt;
&lt;br /&gt;
The following commands are for Debian/Ubuntu based Linux Distributions.&lt;br /&gt;
First, update your machine:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get update&lt;br /&gt;
  sudo apt upgrade&lt;br /&gt;
&lt;br /&gt;
Then install the hackrf tool and libraries:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install hackrf libhackrf-dev libhackrf0&lt;br /&gt;
&lt;br /&gt;
Now install GQRX:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
If that does not work use:&lt;br /&gt;
&lt;br /&gt;
  sudo aptitude install gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
We also must download the newest firmware from this Git repository: &lt;br /&gt;
&lt;br /&gt;
https://github.com/mossmann/hackrf/releases&lt;br /&gt;
&lt;br /&gt;
=== Check HackRF One ===&lt;br /&gt;
&lt;br /&gt;
Now, that we have installed the necessary software we can finally connect the HackRF One to our computer. IMPORTANT: Before you connect it to the computer, make sure you have attached the antenna. If you do not do this the HackRF One might get broken.&lt;br /&gt;
&lt;br /&gt;
[[File:Hackrf.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now we must activate the USB port in the virtual machine. In Oracle Virtual Box you can do that by right-clicking the VM -&amp;gt; select options -&amp;gt; click USB -&amp;gt; add USB drive -&amp;gt; choose the HackRF One -&amp;gt; Restart the machine. &lt;br /&gt;
&lt;br /&gt;
Now we can check if the HackRF one is recognized by the machine:&lt;br /&gt;
&lt;br /&gt;
  hackrf_info&lt;br /&gt;
&lt;br /&gt;
When everything is correct you should see an output like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Output.PNG]]&lt;br /&gt;
 &lt;br /&gt;
Here you can see the HackRF One was found and some more things. Important now is the firmware version. If it is not the newest, we have to do the following: &lt;br /&gt;
Unpack the folder we downloaded before from https://github.com/mossmann/hackrf/releases and navigate into the firmware-bin subdirectory. Then use this command to update the firmware:&lt;br /&gt;
&lt;br /&gt;
  hackrf_spiflash -w hackrf_one_usb.bin&lt;br /&gt;
&lt;br /&gt;
Older versions of HackRF firmware (prior to release 2021.03.1) require an additional step to program a bitstream into the CPLD:&lt;br /&gt;
&lt;br /&gt;
  hackrf_cpldjtag -x ./cpld/sgpio_if/default.xsvf&lt;br /&gt;
&lt;br /&gt;
Now restart the HackRF One by simply unplugging and plugging back in. You can now check if the version was updated. &lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Waves ===&lt;br /&gt;
&lt;br /&gt;
To validate that the HackRF One is properly working we want to test it by simply listening to Radio. To do that, we must start the previous downloaded program GQRX. You will be prompted a configuration window which you should edit like that: &lt;br /&gt;
&lt;br /&gt;
[[File:Iqinput.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now the program window will open. We must do some configuration here though: &lt;br /&gt;
&lt;br /&gt;
[[File:Gqrx.PNG]]&lt;br /&gt;
 &lt;br /&gt;
* Change the Mode to ‘WFM(stereo)’&lt;br /&gt;
* Increase the Gain (otherwise you will not hear anything)&lt;br /&gt;
* Click the ‘Start DSP processing’ button&lt;br /&gt;
* Change the Frequency (you can google for radio channel frequencies in your area or try to move the red bar inside one of the white curves)&lt;br /&gt;
&lt;br /&gt;
If you can listen to the radio channel now your HackRF One is set up properly and you can move on to do other, more interesting things with it.  &lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[HackRF One Software Defined Radio (SDR)]]&lt;br /&gt;
* Antenna (Antratek ANT500)&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfach Projekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://miloserdov.org/?p=4370 &lt;br /&gt;
* https://github.com/mossmann/hackrf/wiki/Getting-Started-with-HackRF-and-GNU-Radio&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=10494</id>
		<title>HackRF One: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=10494"/>
		<updated>2023-01-02T08:24:17Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the HackRF One Software Defined Radio. At the end of the setup, the HackRF One will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating system: Any Linux Distribution but preferably Kali or Pentoo&lt;br /&gt;
* [[HackRF One Software Defined Radio (SDR)]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation of Packages ===&lt;br /&gt;
&lt;br /&gt;
The following commands are for Debian/Ubuntu based Linux Distributions.&lt;br /&gt;
First, update your machine:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get update&lt;br /&gt;
  sudo apt upgrade&lt;br /&gt;
&lt;br /&gt;
Then install the hackrf tool and libraries:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install hackrf libhackrf-dev libhackrf0&lt;br /&gt;
&lt;br /&gt;
Now install GQRX:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
If that does not work use:&lt;br /&gt;
&lt;br /&gt;
  sudo aptitude install gqrx-sdr&lt;br /&gt;
&lt;br /&gt;
We also must download the newest firmware from this Git repository: &lt;br /&gt;
&lt;br /&gt;
https://github.com/mossmann/hackrf/releases&lt;br /&gt;
&lt;br /&gt;
=== Check HackRF One ===&lt;br /&gt;
&lt;br /&gt;
Now, that we have installed the necessary software we can finally connect the HackRF One to our computer. IMPORTANT: Before you connect it to the computer, make sure you have attached the antenna. If you do not do this the HackRF One might get broken.&lt;br /&gt;
&lt;br /&gt;
[[File:Hackrf.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now we must activate the USB port in the virtual machine. In Oracle Virtual Box you can do that by right-clicking the VM -&amp;gt; select options -&amp;gt; click USB -&amp;gt; add USB drive -&amp;gt; choose the HackRF One -&amp;gt; Restart the machine. &lt;br /&gt;
&lt;br /&gt;
Now we can check if the HackRF one is recognized by the machine:&lt;br /&gt;
&lt;br /&gt;
  hackrf_info&lt;br /&gt;
&lt;br /&gt;
When everything is correct you should see an output like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Output.PNG]]&lt;br /&gt;
 &lt;br /&gt;
Here you can see the HackRF One was found and some more things. Important now is the firmware version. If it is not the newest, we have to do the following: &lt;br /&gt;
Unpack the folder we downloaded before from https://github.com/mossmann/hackrf/releases and navigate into the firmware-bin subdirectory. Then use this command to update the firmware:&lt;br /&gt;
&lt;br /&gt;
  hackrf_spiflash -w hackrf_one_usb.bin&lt;br /&gt;
&lt;br /&gt;
Older versions of HackRF firmware (prior to release 2021.03.1) require an additional step to program a bitstream into the CPLD:&lt;br /&gt;
&lt;br /&gt;
  hackrf_cpldjtag -x ./cpld/sgpio_if/default.xsvf&lt;br /&gt;
&lt;br /&gt;
Now restart the HackRF One by simply unplugging and plugging back in. You can now check if the version was updated. &lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Waves ===&lt;br /&gt;
&lt;br /&gt;
To validate that the HackRF One is properly working we want to test it by simply listening to Radio. To do that, we must start the previous downloaded program GQRX. You will be prompted a configuration window which you should edit like that: &lt;br /&gt;
&lt;br /&gt;
[[File:Iqinput.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now the program window will open. We must do some configuration here though: &lt;br /&gt;
&lt;br /&gt;
[[File:Gqrx.PNG]]&lt;br /&gt;
 &lt;br /&gt;
* Change the Mode to ‘WFM(stereo)’&lt;br /&gt;
* Increase the Gain (otherwise you will not hear anything)&lt;br /&gt;
* Click the ‘Start DSP processing’ button&lt;br /&gt;
* Change the Frequency (you can google for radio channel frequencies in your area or try to move the red bar inside one of the white curves)&lt;br /&gt;
&lt;br /&gt;
If you can listen to the radio channel now your HackRF One is set up properly and you can move on to do other, more interesting things with it.  &lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* HackRF One&lt;br /&gt;
* Antenna (Antratek ANT500)&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfach Projekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://miloserdov.org/?p=4370 &lt;br /&gt;
* https://github.com/mossmann/hackrf/wiki/Getting-Started-with-HackRF-and-GNU-Radio&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=10493</id>
		<title>HackRF One: Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=HackRF_One:_Setup&amp;diff=10493"/>
		<updated>2023-01-02T08:23:44Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
We want to get started with the HackRF One Software Defined Radio. At the end of the setup, the HackRF One will be ready to use and we will be able to see the first incoming radio signals.&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Operating system: Any Linux Distribution but preferably Kali or Pentoo&lt;br /&gt;
* [[HackRF One Software Defined Radio (SDR)]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Installation of Packages ===&lt;br /&gt;
&lt;br /&gt;
The following commands are for Debian/Ubuntu based Linux Distributions.&lt;br /&gt;
First, update your machine:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get update&lt;br /&gt;
  sudo apt upgrade&lt;br /&gt;
 &lt;br /&gt;
Then install the hackrf tool and libraries:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install hackrf libhackrf-dev libhackrf0&lt;br /&gt;
 &lt;br /&gt;
Now install GQRX:&lt;br /&gt;
&lt;br /&gt;
  sudo apt install gqrx-sdr&lt;br /&gt;
 &lt;br /&gt;
If that does not work use:&lt;br /&gt;
&lt;br /&gt;
  sudo aptitude install gqrx-sdr&lt;br /&gt;
 &lt;br /&gt;
We also must download the newest firmware from this Git repository: &lt;br /&gt;
&lt;br /&gt;
https://github.com/mossmann/hackrf/releases&lt;br /&gt;
&lt;br /&gt;
=== Check HackRF One ===&lt;br /&gt;
&lt;br /&gt;
Now, that we have installed the necessary software we can finally connect the HackRF One to our computer. IMPORTANT: Before you connect it to the computer, make sure you have attached the antenna. If you do not do this the HackRF One might get broken.&lt;br /&gt;
&lt;br /&gt;
[[File:Hackrf.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now we must activate the USB port in the virtual machine. In Oracle Virtual Box you can do that by right-clicking the VM -&amp;gt; select options -&amp;gt; click USB -&amp;gt; add USB drive -&amp;gt; choose the HackRF One -&amp;gt; Restart the machine. &lt;br /&gt;
&lt;br /&gt;
Now we can check if the HackRF one is recognized by the machine:&lt;br /&gt;
&lt;br /&gt;
  hackrf_info&lt;br /&gt;
 &lt;br /&gt;
When everything is correct you should see an output like this:&lt;br /&gt;
&lt;br /&gt;
[[File:Output.PNG]]&lt;br /&gt;
 &lt;br /&gt;
Here you can see the HackRF One was found and some more things. Important now is the firmware version. If it is not the newest, we have to do the following: &lt;br /&gt;
Unpack the folder we downloaded before from https://github.com/mossmann/hackrf/releases and navigate into the firmware-bin subdirectory. Then use this command to update the firmware:&lt;br /&gt;
&lt;br /&gt;
  hackrf_spiflash -w hackrf_one_usb.bin&lt;br /&gt;
 &lt;br /&gt;
Older versions of HackRF firmware (prior to release 2021.03.1) require an additional step to program a bitstream into the CPLD:&lt;br /&gt;
&lt;br /&gt;
  hackrf_cpldjtag -x ./cpld/sgpio_if/default.xsvf&lt;br /&gt;
 &lt;br /&gt;
Now restart the HackRF One by simply unplugging and plugging back in. You can now check if the version was updated. &lt;br /&gt;
&lt;br /&gt;
=== Receiving Radio Waves ===&lt;br /&gt;
&lt;br /&gt;
To validate that the HackRF One is properly working we want to test it by simply listening to Radio. To do that, we must start the previous downloaded program GQRX. You will be prompted a configuration window which you should edit like that: &lt;br /&gt;
&lt;br /&gt;
[[File:Iqinput.PNG]]&lt;br /&gt;
&lt;br /&gt;
Now the program window will open. We must do some configuration here though: &lt;br /&gt;
&lt;br /&gt;
[[File:Gqrx.PNG]]&lt;br /&gt;
 &lt;br /&gt;
* Change the Mode to ‘WFM(stereo)’&lt;br /&gt;
* Increase the Gain (otherwise you will not hear anything)&lt;br /&gt;
* Click the ‘Start DSP processing’ button&lt;br /&gt;
* Change the Frequency (you can google for radio channel frequencies in your area or try to move the red bar inside one of the white curves)&lt;br /&gt;
&lt;br /&gt;
If you can listen to the radio channel now your HackRF One is set up properly and you can move on to do other, more interesting things with it.  &lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* HackRF One&lt;br /&gt;
* Antenna (Antratek ANT500)&lt;br /&gt;
&lt;br /&gt;
== Courses ==&lt;br /&gt;
&lt;br /&gt;
* Wahlfach Projekt 1 (2021)&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://miloserdov.org/?p=4370 &lt;br /&gt;
* https://github.com/mossmann/hackrf/wiki/Getting-Started-with-HackRF-and-GNU-Radio&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=ScreenCrab_Setup&amp;diff=10443</id>
		<title>ScreenCrab Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=ScreenCrab_Setup&amp;diff=10443"/>
		<updated>2022-12-03T10:16:47Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
Setup for Screen Crab from Hak5 and connection to Cloud C²&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
[[Screen Crab, HDMI sniffer]]&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The Screen Crab is a covert inline screen grabber, which sits between two HDMI devices to capture screenshots or video. It also has a built-in antenna to connect to Hak5 Cloud C² to stream captured data.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Standard Setup ===&lt;br /&gt;
&lt;br /&gt;
Format a Micro SD-Card to either FAT32 or ExFAT. &lt;br /&gt;
* Put SD-Card into Screen Crab&lt;br /&gt;
* connect the device to monitor&lt;br /&gt;
* connect it to a power source providing 5W - 5V @ 1A&lt;br /&gt;
[[File:ScreenCrabDeviceDescription.png|Screen Crab]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring Screen Crab ===&lt;br /&gt;
&lt;br /&gt;
By default, the Screen Crab will save screenshots to the SD Card at 1 picture every 5 seconds. The configuration can be found under root, on the SD-Card, in config.txt. Every Option to configure is listed below.&lt;br /&gt;
&lt;br /&gt;
  LED [ON, OFF]&lt;br /&gt;
  CAPTURE_MODE [IMAGE, VIDEO, OFF]        &lt;br /&gt;
  DEDUPLICATE [ON, OFF] (Only for IMAGE CAPTURE_MODE)&lt;br /&gt;
  CAPTURE_INTERVAL [N] (in N seconds)&lt;br /&gt;
  STORAGE [ROTATE or FILL]&lt;br /&gt;
  BUTTON [EJECT, OFF]&lt;br /&gt;
  VIDEO_BITRATE [LOW, MEDIUM, HIGH] (low 2Mbps, medium 4Mbps, high 16Mbps)&lt;br /&gt;
  WIFI_SSID [WiFi network name]&lt;br /&gt;
  WIFI_PASS [WiFi network password]&lt;br /&gt;
  (Omit WIFI_PASS for open networks)&lt;br /&gt;
  (Omit BOTH WIFI_PASS and WIFI_SSID to disable wireless)&lt;br /&gt;
&lt;br /&gt;
== LED Status Indicators ==&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenCrabStatusIndicators.png|LED Status Indicators]]&lt;br /&gt;
&lt;br /&gt;
== Connecting the Screen Crab to Cloud C² ==&lt;br /&gt;
&lt;br /&gt;
First off, the Cloud C² server needs to be setup, the antenna needs to be screwed in and the WIFI options have to be configured.&lt;br /&gt;
Connect to the Web Interface of Cloud C². Click on the plus to add a Devcice to the Site. Device Type has to be set to Screen Crab. Click on the newly created device. It is still considered offline even if you already configured the WIFI parameters. Download the device.config from the setup button and put it in root on the sd card and restart the Screen Crab. Not it should automatically connect to the Cloud C² Server.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.hak5.org/screen-crab/&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=ScreenCrab_Setup&amp;diff=10442</id>
		<title>ScreenCrab Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=ScreenCrab_Setup&amp;diff=10442"/>
		<updated>2022-12-03T10:06:19Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
Setup for Screen Crab from Hak5 and connection to Cloud C²&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
Screen Crab&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The Screen Crab is a covert inline screen grabber, which sits between two HDMI devices to capture screenshots or video. It also has a built-in antenna to connect to Hak5 Cloud C² to stream captured data.&lt;br /&gt;
&lt;br /&gt;
== Setup ==&lt;br /&gt;
&lt;br /&gt;
=== Standard Setup ===&lt;br /&gt;
&lt;br /&gt;
Format a Micro SD-Card to either FAT32 or ExFAT. &lt;br /&gt;
* Put SD-Card into Screen Crab&lt;br /&gt;
* connect the device to monitor&lt;br /&gt;
* connect it to a power source providing 5W - 5V @ 1A&lt;br /&gt;
[[File:ScreenCrabDeviceDescription.png|Screen Crab]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring Screen Crab ===&lt;br /&gt;
&lt;br /&gt;
By default, the Screen Crab will save screenshots to the SD Card at 1 picture every 5 seconds. The configuration can be found under root, on the SD-Card, in config.txt. Every Option to configure is listed below.&lt;br /&gt;
&lt;br /&gt;
  LED [ON, OFF]&lt;br /&gt;
  CAPTURE_MODE [IMAGE, VIDEO, OFF]        &lt;br /&gt;
  DEDUPLICATE [ON, OFF] (Only for IMAGE CAPTURE_MODE)&lt;br /&gt;
  CAPTURE_INTERVAL [N] (in N seconds)&lt;br /&gt;
  STORAGE [ROTATE or FILL]&lt;br /&gt;
  BUTTON [EJECT, OFF]&lt;br /&gt;
  VIDEO_BITRATE [LOW, MEDIUM, HIGH] (low 2Mbps, medium 4Mbps, high 16Mbps)&lt;br /&gt;
  WIFI_SSID [WiFi network name]&lt;br /&gt;
  WIFI_PASS [WiFi network password]&lt;br /&gt;
  (Omit WIFI_PASS for open networks)&lt;br /&gt;
  (Omit BOTH WIFI_PASS and WIFI_SSID to disable wireless)&lt;br /&gt;
&lt;br /&gt;
== LED Status Indicators ==&lt;br /&gt;
&lt;br /&gt;
[[File:ScreenCrabStatusIndicators.png|LED Status Indicators]]&lt;br /&gt;
&lt;br /&gt;
== Connecting the Screen Crab to Cloud C² ==&lt;br /&gt;
&lt;br /&gt;
First off, the Cloud C² server needs to be setup, the antenna needs to be screwed in and the WIFI options have to be configured.&lt;br /&gt;
Connect to the Web Interface of Cloud C². Click on the plus to add a Devcice to the Site. Device Type has to be set to Screen Crab. Click on the newly created device. It is still considered offline even if you already configured the WIFI parameters. Download the device.config from the setup button and put it in root on the sd card and restart the Screen Crab. Not it should automatically connect to the Cloud C² Server.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.hak5.org/screen-crab/&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=ScreenCrab_Setup&amp;diff=10441</id>
		<title>ScreenCrab Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=ScreenCrab_Setup&amp;diff=10441"/>
		<updated>2022-12-03T10:05:05Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
Setup for Screen Crab from Hak5 and connection to Cloud C²&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
Screen Crab&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The Screen Crab is a covert inline screen grabber, which sits between two HDMI devices to capture screenshots or video. It also has a built-in antenna to connect to Hak5 Cloud C² to stream captured data.&lt;br /&gt;
&lt;br /&gt;
=== Standard Setup ===&lt;br /&gt;
&lt;br /&gt;
Format a Micro SD-Card to either FAT32 or ExFAT. &lt;br /&gt;
* Put SD-Card into Screen Crab&lt;br /&gt;
* connect the device to monitor&lt;br /&gt;
* connect it to a power source providing 5W - 5V @ 1A&lt;br /&gt;
[[File:ScreenCrabDeviceDescription.png|Screen Crab]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring Screen Crab ===&lt;br /&gt;
&lt;br /&gt;
By default, the Screen Crab will save screenshots to the SD Card at 1 picture every 5 seconds. The configuration can be found under root, on the SD-Card, in config.txt. Every Option to configure is listed below.&lt;br /&gt;
&lt;br /&gt;
  LED [ON, OFF]&lt;br /&gt;
  CAPTURE_MODE [IMAGE, VIDEO, OFF]        &lt;br /&gt;
  DEDUPLICATE [ON, OFF] (Only for IMAGE CAPTURE_MODE)&lt;br /&gt;
  CAPTURE_INTERVAL [N] (in N seconds)&lt;br /&gt;
  STORAGE [ROTATE or FILL]&lt;br /&gt;
  BUTTON [EJECT, OFF]&lt;br /&gt;
  VIDEO_BITRATE [LOW, MEDIUM, HIGH] (low 2Mbps, medium 4Mbps, high 16Mbps)&lt;br /&gt;
  WIFI_SSID [WiFi network name]&lt;br /&gt;
  WIFI_PASS [WiFi network password]&lt;br /&gt;
  (Omit WIFI_PASS for open networks)&lt;br /&gt;
  (Omit BOTH WIFI_PASS and WIFI_SSID to disable wireless)&lt;br /&gt;
&lt;br /&gt;
== LED Status Indicators ==&lt;br /&gt;
&lt;br /&gt;
[[ScreenCrabStatusIndicators.png|LED Status Indicators]]&lt;br /&gt;
&lt;br /&gt;
== Connecting the Screen Crab to Cloud C² ==&lt;br /&gt;
&lt;br /&gt;
First off, the Cloud C² server needs to be setup, the antenna needs to be screwed in and the WIFI options have to be configured.&lt;br /&gt;
Connect to the Web Interface of Cloud C². Click on the plus to add a Devcice to the Site. Device Type has to be set to Screen Crab. Click on the newly created device. It is still considered offline even if you already configured the WIFI parameters. Download the device.config from the setup button and put it in root on the sd card and restart the Screen Crab. Not it should automatically connect to the Cloud C² Server.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.hak5.org/screen-crab/&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=ScreenCrab_Setup&amp;diff=10440</id>
		<title>ScreenCrab Setup</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=ScreenCrab_Setup&amp;diff=10440"/>
		<updated>2022-12-03T10:01:47Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: Created page with &amp;quot;== Summary ==   Setup for Screen Crab from Hak5 and connection to Cloud C^2  == Requirements ==  Screen Crab  == Description ==  The Screen Crab is a covert inline screen grabber, which sits between two HDMI devices to capture screenshots or video. It also has a built-in antenna to connect to Hak5 Cloud C2 to stream captured data.  === Standard Setup ===  Format a Micro SD-Card to either FAT32 or ExFAT.  * Put SD-Card into Screen Crab * connect the device to monitor * co...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary == &lt;br /&gt;
&lt;br /&gt;
Setup for Screen Crab from Hak5 and connection to Cloud C^2&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
Screen Crab&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
The Screen Crab is a covert inline screen grabber, which sits between two HDMI devices to capture screenshots or video. It also has a built-in antenna to connect to Hak5 Cloud C2 to stream captured data.&lt;br /&gt;
&lt;br /&gt;
=== Standard Setup ===&lt;br /&gt;
&lt;br /&gt;
Format a Micro SD-Card to either FAT32 or ExFAT. &lt;br /&gt;
* Put SD-Card into Screen Crab&lt;br /&gt;
* connect the device to monitor&lt;br /&gt;
* connect it to a power source providing 5W - 5V @ 1A&lt;br /&gt;
[[File:ScreenCrabDeviceDescription.png|Screen Crab]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring Screen Crab ===&lt;br /&gt;
&lt;br /&gt;
By default, the Screen Crab will save screenshots to the SD Card at 1 picture every 5 seconds. The configuration can be found under root, on the SD-Card, in config.txt. Every Option to configure is listed below.&lt;br /&gt;
&lt;br /&gt;
  LED [ON, OFF]&lt;br /&gt;
  CAPTURE_MODE [IMAGE, VIDEO, OFF]        &lt;br /&gt;
  DEDUPLICATE [ON, OFF] (Only for IMAGE CAPTURE_MODE)&lt;br /&gt;
  CAPTURE_INTERVAL [N] (in N seconds)&lt;br /&gt;
  STORAGE [ROTATE or FILL]&lt;br /&gt;
  BUTTON [EJECT, OFF]&lt;br /&gt;
  VIDEO_BITRATE [LOW, MEDIUM, HIGH] (low 2Mbps, medium 4Mbps, high 16Mbps)&lt;br /&gt;
  WIFI_SSID [WiFi network name]&lt;br /&gt;
  WIFI_PASS [WiFi network password]&lt;br /&gt;
  (Omit WIFI_PASS for open networks)&lt;br /&gt;
  (Omit BOTH WIFI_PASS and WIFI_SSID to disable wireless)&lt;br /&gt;
&lt;br /&gt;
== LED Status Indicators ==&lt;br /&gt;
&lt;br /&gt;
[[ScreenCrabStatusIndicators.png|LED Status Indicators]]&lt;br /&gt;
&lt;br /&gt;
== Connecting the Screen Crab to Cloud C^2 ==&lt;br /&gt;
&lt;br /&gt;
First off, the Cloud C^2 server needs to be setup, the antenna needs to be screwed in and the WIFI options have to be configured.&lt;br /&gt;
Connect to the Web Interface of Cloud C^2. Click on the plus to add a Devcice to the Site. Device Type has to be set to Screen Crab. Click on the newly created device in C2. It is still considered offline even if you already configured the WIFI parameters. Download the device.config from the setup button and put it in root on the sd card and restart the Screen Crab. Not it should automatically connect to the Cloud C^2 Server.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* https://docs.hak5.org/screen-crab/&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=File:ScreenCrabStatusIndicators.png&amp;diff=10439</id>
		<title>File:ScreenCrabStatusIndicators.png</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=File:ScreenCrabStatusIndicators.png&amp;diff=10439"/>
		<updated>2022-12-03T09:44:49Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=File:ScreenCrabDeviceDescription.png&amp;diff=10438</id>
		<title>File:ScreenCrabDeviceDescription.png</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=File:ScreenCrabDeviceDescription.png&amp;diff=10438"/>
		<updated>2022-12-03T09:12:53Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
	<entry>
		<id>https://elvis.hcw.ac.at/wiki/index.php?title=AI:_Anomaly_Detection_in_logfiles&amp;diff=10340</id>
		<title>AI: Anomaly Detection in logfiles</title>
		<link rel="alternate" type="text/html" href="https://elvis.hcw.ac.at/wiki/index.php?title=AI:_Anomaly_Detection_in_logfiles&amp;diff=10340"/>
		<updated>2022-07-13T14:47:09Z</updated>

		<summary type="html">&lt;p&gt;LPuehringer: /* Step 2 - Create a model */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;border: 1px solid #8a6d3b; background-color: #fcf8e3; color: #8a6d3b; padding: 5px 10px; margin-bottom: 5px; text-align: justify&amp;quot;&amp;gt;&lt;br /&gt;
&amp;amp;emsp;&amp;amp;#10148; IMPORTANT: This page is still under construction.&amp;lt;/div&amp;gt;&lt;br /&gt;
== Summary == &lt;br /&gt;
&lt;br /&gt;
This guide will create a basic AI model to perform binary classification in order to detect anomalies in logfiles.&lt;br /&gt;
This AI model is also suitable for the [[Jetson AGX Xavier Development Kit]]&lt;br /&gt;
&lt;br /&gt;
== Requirements ==&lt;br /&gt;
&lt;br /&gt;
* Packages: TensorFlow, Keras, Pandas, sklearn, numpy, seaborn, matplotlib&lt;br /&gt;
* Software: Pycharm or any other python editor&lt;br /&gt;
&lt;br /&gt;
== Description ==&lt;br /&gt;
&lt;br /&gt;
=== Step 0 - Import the needed packages/libraries ===&lt;br /&gt;
&lt;br /&gt;
 from keras.callbacks import EarlyStopping, ModelCheckpoint # for training&lt;br /&gt;
 from keras.models import Sequential, load_model # for model&lt;br /&gt;
 from keras.layers import Dense, Activation # layers and activation function&lt;br /&gt;
 import pandas as pd # read/prep dataset&lt;br /&gt;
 pd.options.mode.chained_assignment = None # removes warning&lt;br /&gt;
 import numpy as np # read/prep dataset&lt;br /&gt;
 import sklearn.model_selection as sk # dataset splitting&lt;br /&gt;
 import tensorflow as tf # for model&lt;br /&gt;
 import seaborn as sns # plotting&lt;br /&gt;
 from sklearn.metrics import confusion_matrix # confusion matrix&lt;br /&gt;
 from matplotlib import pyplot as plt # plotting&lt;br /&gt;
&lt;br /&gt;
=== Step 1 - Read the dataset ===&lt;br /&gt;
&lt;br /&gt;
First we need to read the data, for that we can use the predefined function from pandas &#039;read_csv&#039;&lt;br /&gt;
 logfile_features = pd.read_csv(path)&lt;br /&gt;
Afterwards we replace the infinite values with nans and drop them all together&lt;br /&gt;
 logfile_features.replace([np.inf, -np.inf], np.nan, inplace=True)&lt;br /&gt;
 logfile_features.dropna(inplace=True)&lt;br /&gt;
Our dataset has labels which define if its an attack or not, so we replace them with numericals (0 and 1)&lt;br /&gt;
 logfile_features[&amp;quot;Label&amp;quot;].replace({&amp;quot;Benign&amp;quot;: 0, &amp;quot;DoS attacks-Slowloris&amp;quot;: 1, &amp;quot;DoS attacks-GoldenEye&amp;quot;: 1}, inplace=True)&lt;br /&gt;
Next we shuffle our dataset&lt;br /&gt;
 logfile_features = logfile_features.sample(frac=1) &lt;br /&gt;
&lt;br /&gt;
Now we need to split our data into 3 parts: Training data (60%), Test data (20%) and Validation data (20%).&lt;br /&gt;
To do that we use the following methods&lt;br /&gt;
 train_dataset, temp_test_dataset = sk.train_test_split(logfile_features, test_size=0.4)&lt;br /&gt;
 test_dataset, valid_dataset = sk.train_test_split(temp_test_dataset, test_size=0.5)&lt;br /&gt;
&lt;br /&gt;
Next we extract the labels from the actual dataset, we need them extra for our training&lt;br /&gt;
 train_labels = train_dataset.pop(&#039;Label&#039;)&lt;br /&gt;
 test_labels = test_dataset.pop(&#039;Label&#039;)&lt;br /&gt;
 valid_labels = valid_dataset.pop(&#039;Label&#039;)&lt;br /&gt;
&lt;br /&gt;
To norm our data correctly we need to get the stats of our training data (mean and standard deviation)&lt;br /&gt;
 train_stats = train_dataset.describe()&lt;br /&gt;
 train_stats = train_stats.transpose()&lt;br /&gt;
&lt;br /&gt;
For norming we use a following method&lt;br /&gt;
 def norm(x, stats):&lt;br /&gt;
     return (x - stats[&#039;mean&#039;]) / stats[&#039;std&#039;]&lt;br /&gt;
This method can then be used the following way&lt;br /&gt;
  normed_train_data = norm(train_dataset, train_stats)&lt;br /&gt;
  normed_test_data = norm(test_dataset, train_stats)&lt;br /&gt;
  normed_valid_dataset = norm(valid_dataset, train_stats)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Step 2 - Create a model ===&lt;br /&gt;
&lt;br /&gt;
First we need to create a sequential model, which can be trained later&lt;br /&gt;
 model = Sequential()&lt;br /&gt;
&lt;br /&gt;
The next step is to create an input layer with exactly as many nodes as features in our training data&lt;br /&gt;
  model.add(Dense(normed_train_data.shape[1],input_shape=(normed_train_data.shape[1],))&lt;br /&gt;
&lt;br /&gt;
Next a hidden layer consisting of 128 nodes with the ReLU (Rectified Linear Unit) activation function&lt;br /&gt;
 model.add(Dense(128, Activation(&#039;relu&#039;)))&lt;br /&gt;
&lt;br /&gt;
And finally the output layer consisting of 1 node which represents &#039;attack&#039; or &#039;no attack&#039;&lt;br /&gt;
 model.add(Dense(1))&lt;br /&gt;
&lt;br /&gt;
Now we could change the learning rate to a specific value, but we just leave it at the default 0.001&lt;br /&gt;
 learning_rate = 0.001&lt;br /&gt;
For the optimizer we just use the Adam Optimizer with the pre-defined learning rate&lt;br /&gt;
 optimizer = tf.optimizers.Adam(learning_rate)&lt;br /&gt;
&lt;br /&gt;
Lastly we need to compile the model, for the loss function we use BinaryCrossentropy, our optimizer and the metric should be the accuarcy of the model&lt;br /&gt;
 model.compile(loss=tf.keras.losses.BinaryCrossentropy(from_logits=True), &lt;br /&gt;
   optimizer=optimizer,&lt;br /&gt;
   metrics=[&#039;accuracy&#039;])&lt;br /&gt;
&lt;br /&gt;
=== Step 3 - Train the model ===&lt;br /&gt;
&lt;br /&gt;
First we set our epochs, a complete pass of the normed training data through the model, and our batch size, after how many datapoints the model gets updated&lt;br /&gt;
 EPOCHS = 5000&lt;br /&gt;
 batch_size = 1024&lt;br /&gt;
&lt;br /&gt;
To not have to wait for 5000 training epochs to finish and to prevent overfitting we can set an early stop&lt;br /&gt;
 es = EarlyStopping(monitor=&#039;val_loss&#039;, mode=&#039;min&#039;, verbose=1, patience=2)&lt;br /&gt;
&lt;br /&gt;
Finally the training, model fitting, can start&lt;br /&gt;
 with tf.device(&#039;/CPU:0&#039;): &lt;br /&gt;
    # with tf.device(&#039;/GPU:0&#039;): # wenn man mit der Grafikkarte trainieren will&lt;br /&gt;
    history = model.fit(&lt;br /&gt;
        normed_train_data,&lt;br /&gt;
        train_labels,&lt;br /&gt;
        batch_size=batch_size,&lt;br /&gt;
        epochs=EPOCHS,&lt;br /&gt;
        verbose=1,&lt;br /&gt;
        shuffle=True,&lt;br /&gt;
        steps_per_epoch=int(normed_train_data.shape[0] / batch_size),&lt;br /&gt;
        validation_data=(normed_valid_dataset, valid_labels), callbacks=[es],&lt;br /&gt;
    )&lt;br /&gt;
&lt;br /&gt;
=== Step 4 - Plot the results ===&lt;br /&gt;
After the training has been completed you can easily plot the accuarcy and validation accuracy during the training using&lt;br /&gt;
 plt.plot(history.history[&#039;accuracy&#039;])&lt;br /&gt;
 plt.plot(history.history[&#039;val_accuracy&#039;])&lt;br /&gt;
 plt.title(&#039;model accuracy&#039;)&lt;br /&gt;
 plt.ylabel(&#039;accuracy&#039;)&lt;br /&gt;
 plt.xlabel(&#039;epoch&#039;)&lt;br /&gt;
 plt.legend([&#039;Train&#039;, &#039;Cross-Validation&#039;], loc=&#039;upper left&#039;)&lt;br /&gt;
 plt.show()&lt;br /&gt;
&lt;br /&gt;
To show the accuarcy when tested against the test data, meaning data the model didn&#039;t train with, we can use a confusion matrix the following&lt;br /&gt;
 ax = plt.subplot()&lt;br /&gt;
 predict_results = model.predict(normed_test_data)&lt;br /&gt;
 predict_results = (predict_results &amp;gt; 0.5)&lt;br /&gt;
 cm = confusion_matrix(test_labels, predict_results)&lt;br /&gt;
 ax.set_xlabel(&#039;Predicted labels&#039;)&lt;br /&gt;
 ax.set_ylabel(&#039;True labels&#039;)&lt;br /&gt;
 ax.set_title(&#039;Confusion Matrix&#039;)&lt;br /&gt;
 ax.xaxis.set_ticklabels([&#039;No Attack&#039;, &#039;Attack&#039;])&lt;br /&gt;
 ax.yaxis.set_ticklabels([&#039;No Attack&#039;, &#039;Attack&#039;])&lt;br /&gt;
 plt.show()&lt;br /&gt;
&lt;br /&gt;
== Used Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[Jetson AGX Xavier Development Kit]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Documentation]]&lt;/div&gt;</summary>
		<author><name>LPuehringer</name></author>
	</entry>
</feed>