From a3cbaca42ce7ed486c94d701c97e4c9b6ed76be2 Mon Sep 17 00:00:00 2001 From: BitwiseOperator Date: Sun, 28 Jul 2024 01:01:07 -0400 Subject: [PATCH] content-update --- ...nners_Guide_to_IoT_and_Hardware_Hacking.md | 2115 +++++++++-------- .../Cyber_Journey/TCM_Security/image-5.png | Bin 0 -> 102900 bytes .../Cyber_Journey/TCM_Security/image-6.png | Bin 0 -> 20317 bytes .../Cyber_Journey/TCM_Security/image-7.png | Bin 0 -> 3749 bytes .../Cyber_Journey/TCM_Security/image-8.png | Bin 0 -> 58610 bytes .../Cyber_Journey/TCM_Security/image-9.png | Bin 0 -> 61986 bytes 6 files changed, 1071 insertions(+), 1044 deletions(-) create mode 100644 docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-5.png create mode 100644 docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-6.png create mode 100644 docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-7.png create mode 100644 docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-8.png create mode 100644 docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-9.png diff --git a/docs/Knowledge_Base/Cyber_Journey/TCM_Security/Beginners_Guide_to_IoT_and_Hardware_Hacking.md b/docs/Knowledge_Base/Cyber_Journey/TCM_Security/Beginners_Guide_to_IoT_and_Hardware_Hacking.md index fcf3819aa..b7dced32b 100644 --- a/docs/Knowledge_Base/Cyber_Journey/TCM_Security/Beginners_Guide_to_IoT_and_Hardware_Hacking.md +++ b/docs/Knowledge_Base/Cyber_Journey/TCM_Security/Beginners_Guide_to_IoT_and_Hardware_Hacking.md @@ -1,1535 +1,1562 @@ !!! info "" + !!! warning "" + + ## Section 0 - Course Introduction - ## Section 0 - Course Introduction - - ### Required Equipment and Tooling + ### Required Equipment and Tooling - Product Links - This document contains a list of the physical tools that are used throughout the lesson along with links to where the items can be purchased. + Product Links + This document contains a list of the physical tools that are used throughout the lesson along with links to where the items can be purchased. - I have selected these tools as the best balance of affordability and quality that I was able to find in an effort to keep this course as affordable as possible. I have tested all the tools linked and used them throughout the recording of this course. That being said, if you are interested in continuing with hardware hacking you may want to invest in more expensive tools, I'd encourage you to do so however I can only support and guarantee the lab activities will work with the tools in this list. + I have selected these tools as the best balance of affordability and quality that I was able to find in an effort to keep this course as affordable as possible. I have tested all the tools linked and used them throughout the recording of this course. That being said, if you are interested in continuing with hardware hacking you may want to invest in more expensive tools, I'd encourage you to do so however I can only support and guarantee the lab activities will work with the tools in this list. - I've split the list into two sections: + I've split the list into two sections: - Required for Hands-On Participation: These items are required at a minimum if you'd like to participate in all of the hands-on labs and activities in the course. - Optional: These are items that I use or demonstrate in the course but are not required to follow along with the hands-on portions however they make things easier. - Note that I've tried to add as much detail as possible about what each tool will be used for and if there are alternatives to purchasing. + Required for Hands-On Participation: These items are required at a minimum if you'd like to participate in all of the hands-on labs and activities in the course. + Optional: These are items that I use or demonstrate in the course but are not required to follow along with the hands-on portions however they make things easier. + Note that I've tried to add as much detail as possible about what each tool will be used for and if there are alternatives to purchasing. - None of the links provided are affiliate links and I make no commission of off their sales. + None of the links provided are affiliate links and I make no commission of off their sales. - Required: - Practice Target: TP-Link WR841n Wireless Router - Where is this used: The router is used throughout almost the entire course as the practice target that we will be using for practicing taking measurements, sniffing communications and extracting firmware. + Required: + Practice Target: TP-Link WR841n Wireless Router + Where is this used: The router is used throughout almost the entire course as the practice target that we will be using for practicing taking measurements, sniffing communications and extracting firmware. - Alternative to purchasing: If you are unable to or would prefer not to purchase this router then you won't be able to follow along with any of the hands-on measuring or testing, however, I'll make things like the analyzer captures available and you can download a copy of the firmware for analysis from the TP-Link website. With these files, you'll still be able to follow along with and complete all the portions of the course that rely on analyzing the captures and firmware. If you choose to not purchase the router then I'd suggest skipping the rest of the tools below as you'll need something to test or use the tools on. + Alternative to purchasing: If you are unable to or would prefer not to purchase this router then you won't be able to follow along with any of the hands-on measuring or testing, however, I'll make things like the analyzer captures available and you can download a copy of the firmware for analysis from the TP-Link website. With these files, you'll still be able to follow along with and complete all the portions of the course that rely on analyzing the captures and firmware. If you choose to not purchase the router then I'd suggest skipping the rest of the tools below as you'll need something to test or use the tools on. - Links to Purchase: + Links to Purchase: - Link 1: https://www.tp-link.com/us/where-to-buy/ + Link 1: https://www.tp-link.com/us/where-to-buy/ - Link 2: https://www.amazon.com/TP-Link-N300-Wireless-Wi-Fi-Router-TL-WR841N/dp/B001FWYGJS + Link 2: https://www.amazon.com/TP-Link-N300-Wireless-Wi-Fi-Router-TL-WR841N/dp/B001FWYGJS - Number 1 Phillips Screw Driver - Where is this used: Used to open the two retaining screws on the router. + Number 1 Phillips Screw Driver + Where is this used: Used to open the two retaining screws on the router. - Alternative to purchasing: You'll need this to open the router, pretty much any Number 1, 0 or 00 Phillips screwdriver will work for this. + Alternative to purchasing: You'll need this to open the router, pretty much any Number 1, 0 or 00 Phillips screwdriver will work for this. - Links to Purchase: + Links to Purchase: - Note - you don't need to purchase these specific ones - I'm only linking for convenience if you need to buy one. Use whatever ph1/ph0 screwdriver you prefer or have. + Note - you don't need to purchase these specific ones - I'm only linking for convenience if you need to buy one. Use whatever ph1/ph0 screwdriver you prefer or have. - Link to Jewellers Screw Driver Kit: https://www.amazon.com/Screwdriver-Eyeglass-Precision-Different-Screwdrivers/dp/B07YJG766F + Link to Jewellers Screw Driver Kit: https://www.amazon.com/Screwdriver-Eyeglass-Precision-Different-Screwdrivers/dp/B07YJG766F - Number 1 Phillips Screwdriver: https://www.amazon.com/Wera-05118020001-Screwdriver-Electronic-Applications/dp/B0001P18LO + Number 1 Phillips Screwdriver: https://www.amazon.com/Wera-05118020001-Screwdriver-Electronic-Applications/dp/B0001P18LO - UART to USB Adapter: CP2102 TTL USB to UART Adapter - Where this is used: This tool is used to interface with the UART pins on the router and establish a serial shell connection. + UART to USB Adapter: CP2102 TTL USB to UART Adapter + Where this is used: This tool is used to interface with the UART pins on the router and establish a serial shell connection. - Alternative to purchasing: Unfortunately there is not a great alternative to purchasing this, if you'd prefer to skip this then you won't be able to follow along with any of the sessions where we use the serial shell to the router. + Alternative to purchasing: Unfortunately there is not a great alternative to purchasing this, if you'd prefer to skip this then you won't be able to follow along with any of the sessions where we use the serial shell to the router. - Links to Purchase: + Links to Purchase: - Note that you'll see these devices sold in many different form factors and branding, any of the CP2102 TTL to USB should be sufficient however I've linked the one I used in the course below from a few different vendors. + Note that you'll see these devices sold in many different form factors and branding, any of the CP2102 TTL to USB should be sufficient however I've linked the one I used in the course below from a few different vendors. - Link 1: https://www.amazon.com/IZOKEE-CP2102-Converter-Adapter-Downloader/dp/B07D6LLX19 + Link 1: https://www.amazon.com/IZOKEE-CP2102-Converter-Adapter-Downloader/dp/B07D6LLX19 - Link 2: https://www.amazon.com/HiLetgo-CP2102-Converter-Adapter-Downloader/dp/B00LODGRV8 + Link 2: https://www.amazon.com/HiLetgo-CP2102-Converter-Adapter-Downloader/dp/B00LODGRV8 - Link 3: https://www.amazon.com/CP2102-Serial-Adapter-Converter-Module/dp/B08ZS6H9VS + Link 3: https://www.amazon.com/CP2102-Serial-Adapter-Converter-Module/dp/B08ZS6H9VS - Link 4: https://www.aliexpress.com/item/1005003536455256.html + Link 4: https://www.aliexpress.com/item/1005003536455256.html - Male through-hole header pins - Where this is used: These are used to enable a connection to the UART pins on the router. The router PCB has bare through-hole pads exposed for UART and in order to interface with them with the other tools we need to attach these header pins. A solderless option using these pins is demonstrated in the course. + Male through-hole header pins + Where this is used: These are used to enable a connection to the UART pins on the router. The router PCB has bare through-hole pads exposed for UART and in order to interface with them with the other tools we need to attach these header pins. A solderless option using these pins is demonstrated in the course. - Alternative to purchasing: Unfortunately there is not a great alternative to purchasing this, luckily they are not expensive and are a great component to keep in your home lab. That being said, if you do purchase one of the ch341a programmers below many of them come with 4-pin headers for breakout additions and you could use one of those. + Alternative to purchasing: Unfortunately there is not a great alternative to purchasing this, luckily they are not expensive and are a great component to keep in your home lab. That being said, if you do purchase one of the ch341a programmers below many of them come with 4-pin headers for breakout additions and you could use one of those. - Links to Purchase: + Links to Purchase: - Note these are pretty standard and you can grab them from any electronics shop. I've linked a few below. + Note these are pretty standard and you can grab them from any electronics shop. I've linked a few below. - Link 1: https://www.amazon.com/Proto-Advantage-HDR100IMP40M-G-V-TH-Vertical-Header-Through/dp/B098KLMT7T + Link 1: https://www.amazon.com/Proto-Advantage-HDR100IMP40M-G-V-TH-Vertical-Header-Through/dp/B098KLMT7T - Link 2: https://www.digikey.com/en/products/detail/w%C3%BCrth-elektronik/61300311121/4846825 + Link 2: https://www.digikey.com/en/products/detail/w%C3%BCrth-elektronik/61300311121/4846825 - Link 3: https://www.mouser.com/ProductDetail/Chip-Quik/HDR100IMP40M-G-V-TH?qs=Wj%2FVkw3K%252BMBASWNGaQOKpg%3D%3D + Link 3: https://www.mouser.com/ProductDetail/Chip-Quik/HDR100IMP40M-G-V-TH?qs=Wj%2FVkw3K%252BMBASWNGaQOKpg%3D%3D - Digital Multimeter: AstroAI AM33D Multimeter 2000 Counts Digital Multimeter - Where this is used: The multimeter is used throughout the course for testing and verification, in addition, most of section 2 of the course is dedicated to teaching how to use a multimeter and its various functions. + Digital Multimeter: AstroAI AM33D Multimeter 2000 Counts Digital Multimeter + Where this is used: The multimeter is used throughout the course for testing and verification, in addition, most of section 2 of the course is dedicated to teaching how to use a multimeter and its various functions. - Alternative to purchasing: If you don't purchase a multimeter then you won't be able to follow along with section 2 and a few of the additional verification steps in other lessons. While it's not advised, you could skip the verification steps using the multimeter and rely on the verification that I perform. I strongly discourage you from doing this though as the multimeter is your best tool in protecting your other equipment from being damaged by verifying voltage levels. It's also probably the most important tool in your hardware hacking toolkit moving forwards. If you would like to purchase another multimeter or already have one, any multimeter that can perform DC voltage reading and has a continuity tester setting will work. + Alternative to purchasing: If you don't purchase a multimeter then you won't be able to follow along with section 2 and a few of the additional verification steps in other lessons. While it's not advised, you could skip the verification steps using the multimeter and rely on the verification that I perform. I strongly discourage you from doing this though as the multimeter is your best tool in protecting your other equipment from being damaged by verifying voltage levels. It's also probably the most important tool in your hardware hacking toolkit moving forwards. If you would like to purchase another multimeter or already have one, any multimeter that can perform DC voltage reading and has a continuity tester setting will work. - Links to Purchase: + Links to Purchase: - Link 1: https://www.amazon.com/AstroAI-Digital-Multimeter-Voltage-Tester/dp/B01ISAMUA6 + Link 1: https://www.amazon.com/AstroAI-Digital-Multimeter-Voltage-Tester/dp/B01ISAMUA6 - Link 2: https://www.astroai.com/digital-multimeter-2000-counts-am33d/ap/100071 + Link 2: https://www.astroai.com/digital-multimeter-2000-counts-am33d/ap/100071 - Logic Analyzer: Comidox USB Logic Analyzer - Where this is used: The logic analyzer is used to sniff and capture both UART and SPI communications taking place on the router PCB. + Logic Analyzer: Comidox USB Logic Analyzer + Where this is used: The logic analyzer is used to sniff and capture both UART and SPI communications taking place on the router PCB. - Alternative to purchasing: If you don't purchase the logic analyzer you can still do the majority of the lessons involving it as I will post links to the captures that I take and you will be able to then analyze them the same as if you took them yourself. If you're trying to save some money on tools to buy then this is one I'd recommend skipping. + Alternative to purchasing: If you don't purchase the logic analyzer you can still do the majority of the lessons involving it as I will post links to the captures that I take and you will be able to then analyze them the same as if you took them yourself. If you're trying to save some money on tools to buy then this is one I'd recommend skipping. - Links to purchase: + Links to purchase: - Note that you can get these logic analyzers from multiple different manufacturers and they all look very similar and usually function identically with the only difference being the sticker applied to the top. The exact one I've used in the course is linked first. + Note that you can get these logic analyzers from multiple different manufacturers and they all look very similar and usually function identically with the only difference being the sticker applied to the top. The exact one I've used in the course is linked first. - Link 1: https://www.amazon.com/Comidox-Analyzer-Device-Channel-Arduino/dp/B07KW445DJ + Link 1: https://www.amazon.com/Comidox-Analyzer-Device-Channel-Arduino/dp/B07KW445DJ - Link 2: https://www.aliexpress.com/item/1005003375736481.html + Link 2: https://www.aliexpress.com/item/1005003375736481.html - Link 3: https://www.amazon.com/HiLetgo-Analyzer-Ferrite-Channel-Arduino/dp/B077LSG5P2 + Link 3: https://www.amazon.com/HiLetgo-Analyzer-Ferrite-Channel-Arduino/dp/B077LSG5P2 - Flash ROM Programmer: ch341a USB Programmer - Where this is used: The flash ROM programmer is used to extract the firmware from the device. + Flash ROM Programmer: ch341a USB Programmer + Where this is used: The flash ROM programmer is used to extract the firmware from the device. - Alternative to purchasing: If you don't purchase the flash programmer then you can use the firmware that is downloadable from the TP-Link support website for the router and use that instead to perform the firmware analysis. + Alternative to purchasing: If you don't purchase the flash programmer then you can use the firmware that is downloadable from the TP-Link support website for the router and use that instead to perform the firmware analysis. - Links to purchase: + Links to purchase: - Note that you can get these flash programmers from multiple different manufacturers and they all look very similar and usually function identically make sure you get one that uses the ch341a chip. I've linked below to the one that I used in the course. + Note that you can get these flash programmers from multiple different manufacturers and they all look very similar and usually function identically make sure you get one that uses the ch341a chip. I've linked below to the one that I used in the course. - Link 1: https://www.amazon.com/KeeYees-SOIC8-EEPROM-CH341A-Programmer/dp/B07SHSL9X9 + Link 1: https://www.amazon.com/KeeYees-SOIC8-EEPROM-CH341A-Programmer/dp/B07SHSL9X9 - Link 2: https://www.amazon.com/Geekstory-CH341A-EEPROM-Programmer-Module/dp/B098DYJ3LQ + Link 2: https://www.amazon.com/Geekstory-CH341A-EEPROM-Programmer-Module/dp/B098DYJ3LQ - Link 3: https://www.aliexpress.com/item/32793476447.html + Link 3: https://www.aliexpress.com/item/32793476447.html - Optional: - Spudger Set - Link: https://www.amazon.com/STREBITO-Spudger-Ultimate-Computer-Electronics/dp/B0BHPC2WB5 + Optional: + Spudger Set + Link: https://www.amazon.com/STREBITO-Spudger-Ultimate-Computer-Electronics/dp/B0BHPC2WB5 - Soldering Station: Weller WLC100 - Link: https://www.amazon.com/Weller-Digital-Soldering-Station-WLC100/dp/B000AS28UC + Soldering Station: Weller WLC100 + Link: https://www.amazon.com/Weller-Digital-Soldering-Station-WLC100/dp/B000AS28UC - ESD Mat - Link: https://www.amazon.ca/Anti-Static-Electronic-Wristband-Grounding-HPFIX/dp/B07X7VL7VR + ESD Mat + Link: https://www.amazon.ca/Anti-Static-Electronic-Wristband-Grounding-HPFIX/dp/B07X7VL7VR - Third-Hand - Link: https://www.amazon.com/Helping-Soldering-Workshop-Non-slip-Weighted/dp/B07MDKXNPC + Third-Hand + Link: https://www.amazon.com/Helping-Soldering-Workshop-Non-slip-Weighted/dp/B07MDKXNPC - Test Clips - Style 1 Link: https://www.amazon.com/Tegg-Electrical-Testing-Multimeter-Grabber/dp/B07NY73PQF + Test Clips + Style 1 Link: https://www.amazon.com/Tegg-Electrical-Testing-Multimeter-Grabber/dp/B07NY73PQF - Style 2 Link: https://www.amazon.com/Adapter-oscilloscope-multimeter-Generator-Programmer/dp/B07XNQ8CQW + Style 2 Link: https://www.amazon.com/Adapter-oscilloscope-multimeter-Generator-Programmer/dp/B07XNQ8CQW - Extra Jumper Wires - Link: https://www.amazon.com/Elegoo-EL-CP-004-Multicolored-Breadboard-arduino/dp/B01EV70C78 + Extra Jumper Wires + Link: https://www.amazon.com/Elegoo-EL-CP-004-Multicolored-Breadboard-arduino/dp/B01EV70C78 - ## Testing Notes + ## Testing Notes - Target Information - Manufacturer: TP-Link + Target Information + Manufacturer: TP-Link - Part Number: TL-WR841N + Part Number: TL-WR841N - Serial Number: 22295L6001357 + Serial Number: 22295L6001357 - Test-Equipment - Multimeter: ASTRO AI AM33D + Test-Equipment + Multimeter: ASTRO AI AM33D - Logic Analyzer: Comidox USB Logic Analyzer + Logic Analyzer: Comidox USB Logic Analyzer - USB to UART Adapter: Silicon Labs CP210x UART Bridge + USB to UART Adapter: Silicon Labs CP210x UART Bridge - Flash ROM Programmer: CH341a USB EPROM Programmer + Flash ROM Programmer: CH341a USB EPROM Programmer - Software: + Software: - Sigrok Pulsview (for logic captures) - NMAP - Firefox - Screen - Flashrom - Binwalk - DD (Data Duplicater) - Ghidra - Openssl - Cyberchef - Initial Recon - Visual Inspection - Inspected exterior of the router, and noted label on the back that contained FCC ID for further review. + Sigrok Pulsview (for logic captures) + NMAP + Firefox + Screen + Flashrom + Binwalk + DD (Data Duplicater) + Ghidra + Openssl + Cyberchef + Initial Recon + Visual Inspection + Inspected exterior of the router, and noted label on the back that contained FCC ID for further review. - FCC ID: 2AXJ4WR841NV14 + FCC ID: 2AXJ4WR841NV14 - Opened router case by removing two Phillips screws and applying pressure between pressure-fit parts with a spudger tool. + Opened router case by removing two Phillips screws and applying pressure between pressure-fit parts with a spudger tool. - Noted three chips of interest on the PCB for further inspection (shown as details A, B, and C in the picture below) + Noted three chips of interest on the PCB for further inspection (shown as details A, B, and C in the picture below) - On-board testing - Noted the presence of a test connection that appears to be a UART connection based on the 4 pins labelled with VCC, GND, RX and TX (shown as detail D above) + On-board testing + Noted the presence of a test connection that appears to be a UART connection based on the 4 pins labelled with VCC, GND, RX and TX (shown as detail D above) - Verified operating voltage of the PCB is 9V by testing the voltage drop across the input jack with a multimeter. + Verified operating voltage of the PCB is 9V by testing the voltage drop across the input jack with a multimeter. - Identified ground connection on P1 (detail E above) by testing continuity with the ground connection on the input jack. + Identified ground connection on P1 (detail E above) by testing continuity with the ground connection on the input jack. - Tested the suspected UART connection with a multimeter to verify pins matched the silk screen labels, each was pin tested as follows: + Tested the suspected UART connection with a multimeter to verify pins matched the silk screen labels, each was pin tested as follows: - VCC: Measured voltage drop between VCC and ground as 3.3V confirming operating voltage of UART at 3.3V - GND: Checked for continuity between GND pin on UART and known ground on board and confirmed GND is in fact a ground. - RX: Measured voltage drop between RX and ground as 0V, test to ensure it was not connected to ground by checking continuity between RX and known ground connections, no continuity found - TX: Measured Voltage drop between RX and ground as ~3.3V during standard operation. - After confirming pinout, based on the observations of the pins this appears to be a UART connection, checked for transmission on the TX pin during boot up by power cycling router and measuring voltage drop. Noted fluctuation on TX pin from ~1V - 3V suggests busy and active transmission during bootup. + VCC: Measured voltage drop between VCC and ground as 3.3V confirming operating voltage of UART at 3.3V + GND: Checked for continuity between GND pin on UART and known ground on board and confirmed GND is in fact a ground. + RX: Measured voltage drop between RX and ground as 0V, test to ensure it was not connected to ground by checking continuity between RX and known ground connections, no continuity found + TX: Measured Voltage drop between RX and ground as ~3.3V during standard operation. + After confirming pinout, based on the observations of the pins this appears to be a UART connection, checked for transmission on the TX pin during boot up by power cycling router and measuring voltage drop. Noted fluctuation on TX pin from ~1V - 3V suggests busy and active transmission during bootup. - Soldered through hole inline header pins to suspected UART connection to facilitate further testing with a logic analyzer and later on USB to Serial Adapter. + Soldered through hole inline header pins to suspected UART connection to facilitate further testing with a logic analyzer and later on USB to Serial Adapter. - Attached Logic Analyzer to TX and GND pins of UART connection and captured a transmission during boot up, a screenshot of single transmission frame shown below. + Attached Logic Analyzer to TX and GND pins of UART connection and captured a transmission during boot up, a screenshot of single transmission frame shown below. - Manual framing of the signal confirmed a UART transmission, noted the start bit, 8 data bits, one stop bit and no parity bit. + Manual framing of the signal confirmed a UART transmission, noted the start bit, 8 data bits, one stop bit and no parity bit. - Measured the baud rate as 125,000 however based on standard serial baud rates suspect that it is actually 115,200. + Measured the baud rate as 125,000 however based on standard serial baud rates suspect that it is actually 115,200. - Based on these findings applied a UART decoder to the channel with the below settings. + Based on these findings applied a UART decoder to the channel with the below settings. - Decoded UART signal confirmed UART parameters and showed the presence of a boot loader and boot-up logs to be investigated further. + Decoded UART signal confirmed UART parameters and showed the presence of a boot loader and boot-up logs to be investigated further. - OSINT and Online Recon - Used previously located FCC ID to find FCC Equipment Authorization filing for the router (https://fccid.io/2AXJ4WR841NV14) + OSINT and Online Recon + Used previously located FCC ID to find FCC Equipment Authorization filing for the router (https://fccid.io/2AXJ4WR841NV14) - Noted in the filing that the ID had been changed from the previous TE7WR841NV14. + Noted in the filing that the ID had been changed from the previous TE7WR841NV14. - Inspecting the previous filing (https://fccid.io/TE7WR841NV14) internal photos of the router were located. Unfortunately, schematics, functional descriptions and block diagrams were redacted as confidential. + Inspecting the previous filing (https://fccid.io/TE7WR841NV14) internal photos of the router were located. Unfortunately, schematics, functional descriptions and block diagrams were redacted as confidential. - Detailed pictures of two chips of interest were shown that detailed the chip manufacturer and part number. + Detailed pictures of two chips of interest were shown that detailed the chip manufacturer and part number. - Previously denoted chip A Id'd as MEDIATEK MT7628NN + Previously denoted chip A Id'd as MEDIATEK MT7628NN - Previously denoted chip B Id'd as Zentel A3S56D40GTP -50L + Previously denoted chip B Id'd as Zentel A3S56D40GTP -50L - Unfortunately, the markers on chip C were not readable in the FCC pictures. Returning to the test router, high-resolution pictures were taken and blown up to Id chip. + Unfortunately, the markers on chip C were not readable in the FCC pictures. Returning to the test router, high-resolution pictures were taken and blown up to Id chip. - Chip C was Id'd as cFeon QH32B-104HIP. + Chip C was Id'd as cFeon QH32B-104HIP. - Data sheets were located online for each of the chips. + Data sheets were located online for each of the chips. - MEDIATEK MT7628NN: System On Chip (SOC) containing CPU. Important details included that this is a purpose-built SOC for N300 routers. The CPU is MIPS24KEc, which supports Linux 2.6.36 SDK and Linux 3.10 SDK. Interfaces with flash memory via SPI. + MEDIATEK MT7628NN: System On Chip (SOC) containing CPU. Important details included that this is a purpose-built SOC for N300 routers. The CPU is MIPS24KEc, which supports Linux 2.6.36 SDK and Linux 3.10 SDK. Interfaces with flash memory via SPI. - Product Page: https://www.mediatek.com/products/home-networking/mt7628k-n-a + Product Page: https://www.mediatek.com/products/home-networking/mt7628k-n-a - Data Sheet: https://files.seeedstudio.com/products/114992470/MT7628_datasheet.pdf + Data Sheet: https://files.seeedstudio.com/products/114992470/MT7628_datasheet.pdf - Zentel A3S56D40GTP -50L: DRAM 32Kb + Zentel A3S56D40GTP -50L: DRAM 32Kb - Data Sheet: https://www.mouser.ca/datasheet/2/1130/DSA3S56D340GTPF_02-1984099.pdf + Data Sheet: https://www.mouser.ca/datasheet/2/1130/DSA3S56D340GTPF_02-1984099.pdf - cFeon QH32B-104HIP: Id'd as full part number EN25Q32B-104HIP. Noted as Flash ROM that communicates via SPI. + cFeon QH32B-104HIP: Id'd as full part number EN25Q32B-104HIP. Noted as Flash ROM that communicates via SPI. - Data Sheet: https://www.alldatasheet.com/datasheet-pdf/pdf/675622/EON/EN25QH32A.html + Data Sheet: https://www.alldatasheet.com/datasheet-pdf/pdf/675622/EON/EN25QH32A.html - Searching for the firmware found it supplied through the official support page for the router. + Searching for the firmware found it supplied through the official support page for the router. - https://www.tp-link.com/ca/support/download/tl-wr841n/#Firmware + https://www.tp-link.com/ca/support/download/tl-wr841n/#Firmware - Initial Network Recon - Connected test computer to the network hosed by the router. Router IP address id'd as 192.168.0.1. + Initial Network Recon + Connected test computer to the network hosed by the router. Router IP address id'd as 192.168.0.1. - Nmap scans were performed for both TCP and UDP. + Nmap scans were performed for both TCP and UDP. - TCP scans revealed 3 open ports: + TCP scans revealed 3 open ports: - Port 22 - ssh running Dropbear sshd 2012.55 + Port 22 - ssh running Dropbear sshd 2012.55 - Port 80 - http hosting the routers configuration web portal + Port 80 - http hosting the routers configuration web portal - Port 1900 - UPnP (Portable SDK for UPnP devices 1.6.19 (Linux 2.6.36)) + Port 1900 - UPnP (Portable SDK for UPnP devices 1.6.19 (Linux 2.6.36)) - Notable detail confirmed the suspicion that the router is running Linux kernel 2.6.36. + Notable detail confirmed the suspicion that the router is running Linux kernel 2.6.36. - UDP scans revealed 2 open ports: + UDP scans revealed 2 open ports: - Port 67/udp - dhcps + Port 67/udp - dhcps - Port 1900/udp - UPnP + Port 1900/udp - UPnP - Scouting Previously Disclosed CVEs - Scouted for previously disclosed and patched CVEs and multiple. Noted a common theme of a lack of proper user input validation on forms and inputs in the web portal that led to either buffer overflow or command injection of an underlying function or service being called. + Scouting Previously Disclosed CVEs + Scouted for previously disclosed and patched CVEs and multiple. Noted a common theme of a lack of proper user input validation on forms and inputs in the web portal that led to either buffer overflow or command injection of an underlying function or service being called. - https://www.opencve.io/cve?vendor=tp-link&product=tl-wr841n + https://www.opencve.io/cve?vendor=tp-link&product=tl-wr841n - https://blog.viettelcybersecurity.com/1day-to-0day-on-tl-link-tl-wr841n/ + https://blog.viettelcybersecurity.com/1day-to-0day-on-tl-link-tl-wr841n/ - https://ktln2.org/2020/03/29/exploiting-mips-router/ + https://ktln2.org/2020/03/29/exploiting-mips-router/ - Enumeration via UART Connection - Reviewing Bootlogs - Connected USB to UART adapter to the previously located UART pins based on the below pinout: + Enumeration via UART Connection + Reviewing Bootlogs + Connected USB to UART adapter to the previously located UART pins based on the below pinout: - Opened Terminal Session via Screen with the previously identified baud rate. + Opened Terminal Session via Screen with the previously identified baud rate. - After powering on the router the bootloader logging and Linux initialization logging from init and init scripts were displayed over the serial console session: + After powering on the router the bootloader logging and Linux initialization logging from init and init scripts were displayed over the serial console session: - Command: screen /dev/ttyUSB0 115200 + Command: screen /dev/ttyUSB0 115200 - [04080B0F][04080C0C][8A7F0000][26253B38][00262539] - DU Setting Cal Done + [04080B0F][04080C0C][8A7F0000][26253B38][00262539] + DU Setting Cal Done - U-Boot 1.1.3 (Feb 3 2021 - 10:10:08) + U-Boot 1.1.3 (Feb 3 2021 - 10:10:08) - Board: Ralink APSoC DRAM: 32 MB - relocate_code Pointer at: 81fc0000 - flash manufacture id: 1c, device id 70 16 - Warning: un-recognized chip ID, please update bootloader! - ============================================ - Ralink UBoot Version: 4.3.0.0 - -------------------------------------------- - ASIC 7628_MP (Port5<->None) - DRAM component: 256 Mbits DDR, width 16 - DRAM bus: 16 bit - Total memory: 32 MBytes - Flash component: SPI Flash - Date:Feb 3 2021 Time:10:10:08 - ============================================ - icache: sets:512, ways:4, linesz:32 ,total:65536 - dcache: sets:256, ways:4, linesz:32 ,total:32768 + Board: Ralink APSoC DRAM: 32 MB + relocate_code Pointer at: 81fc0000 + flash manufacture id: 1c, device id 70 16 + Warning: un-recognized chip ID, please update bootloader! + ============================================ + Ralink UBoot Version: 4.3.0.0 + -------------------------------------------- + ASIC 7628_MP (Port5<->None) + DRAM component: 256 Mbits DDR, width 16 + DRAM bus: 16 bit + Total memory: 32 MBytes + Flash component: SPI Flash + Date:Feb 3 2021 Time:10:10:08 + ============================================ + icache: sets:512, ways:4, linesz:32 ,total:65536 + dcache: sets:256, ways:4, linesz:32 ,total:32768 - ##### The CPU freq = 580 MHZ #### - estimate memory size =32 Mbytes - RESET MT7628 PHY!!!!!! - continue to starting system. - 0 - disable switch phyport... - - 3: System Boot system code via Flash.(0xbc010000) - do_bootm:argc=2, addr=0xbc010000 - ## Booting image at bc010000 ... - Uncompressing Kernel Image ... OK - No initrd - ## Transferring control to Linux (at address 8000c150) ... - ## Giving linux memsize in MB, 32 - - Starting kernel ... - - - LINUX started... - - THIS IS ASIC - Linux version 2.6.36 (jenkins@mobile-System) (gcc version 4.6.3 (Buildroot 2012.11.1) ) #1 Wed Feb 3 10:13:07 CST 2021 - - The CPU feqenuce set to 575 MHz - - MIPS CPU sleep mode enabled. - CPU revision is: 00019655 (MIPS 24Kc) - Software DMA cache coherency - Determined physical RAM map: - memory: 02000000 @ 00000000 (usable) - Initrd not found or empty - disabling initrd - Zone PFN ranges: - Normal 0x00000000 -> 0x00002000 - Movable zone start PFN for each node - early_node_map[1] active PFN ranges - 0: 0x00000000 -> 0x00002000 - Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 - Kernel command line: console=ttyS1,115200 root=/dev/mtdblock2 rootfstype=squashfs init=/sbin/init - PID hash table entries: 128 (order: -3, 512 bytes) - Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) - Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) - Primary instruction cache 64kB, VIPT, , 4-waylinesize 32 bytes. - Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes - Writing ErrCtl register=00048820 - Readback ErrCtl register=00048820 - Memory: 29228k/32768k available (2180k kernel code, 3540k reserved, 583k data, 156k init, 0k highmem) - NR_IRQS:128 - console [ttyS1] enabled - Calibrating delay loop... 386.04 BogoMIPS (lpj=772096) - pid_max: default: 4096 minimum: 301 - Mount-cache hash table entries: 512 - NET: Registered protocol family 16 - bio: create slab at 0 - Switching to clocksource Ralink Systick timer - NET: Registered protocol family 2 - IP route cache hash table entries: 1024 (order: 0, 4096 bytes) - TCP established hash table entries: 1024 (order: 1, 8192 bytes) - TCP bind hash table entries: 1024 (order: 0, 4096 bytes) - TCP: Hash tables configured (established 1024 bind 1024) - TCP reno registered - NET: Registered protocol family 1 - squashfs: version 4.0 (2009/01/31) Phillip Lougher - msgmni has been set to 57 - io scheduler noop registered - io scheduler deadline registered (default) - Ralink gpio driver initialized - Serial: 8250/16550 driver, 2 ports, IRQ sharing enabled - serial8250: ttyS0 at MMIO 0x10000d00 (irq = 21) is a 16550A - serial8250: ttyS1 at MMIO 0x10000c00 (irq = 20) is a 16550A - brd: module loaded - flash manufacture id: 1c, device id 70 16 - Warning: un-recognized chip ID, please update SPI driver! - EN25Q32B(1c 30161c30) (4096 Kbytes) - mtd .name = raspi, .size = 0x00400000 (4M) .erasesize = 0x00010000 (64K) .numeraseregions = 0 - Creating 5 MTD partitions on "raspi": - 0x000000000000-0x000000010000 : "boot" - 0x000000010000-0x000000100000 : "kernel" - 0x000000100000-0x0000003e0000 : "rootfs" - mtd: partition "rootfs" set to be root filesystem - 0x0000003e0000-0x0000003f0000 : "config" - 0x0000003f0000-0x000000400000 : "radio" - Register flash device:flash0 - PPP generic driver version 2.4.2 - PPP MPPE Compression module registered - NET: Registered protocol family 24 - Mirror/redirect action on - u32 classifier - Actions configured - Netfilter messages via NETLINK v0.30. - nf_conntrack version 0.5.0 (456 buckets, 1824 max) - ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Linux - TCP cubic registered - NET: Registered protocol family 10 - ip6_tables: (C) 2000-2006 Netfilter Core Team - IPv6 over IPv4 tunneling driver - NET: Registered protocol family 17 - Ebtables v2.0 registered - 802.1Q VLAN Support v1.8 Ben Greear - All bugs added by David S. Miller - VFS: Mounted root (squashfs filesystem) readonly on device 31:2. - Freeing unused kernel memory: 156k freed - starting pid 29, tty '': '/etc/init.d/rcS' - mount: mounting devpts on /dev/pts failed: No such device - rdm_major = 253 - spiflash_ioctl_read, Read from 0x003ff100 length 0x6, ret 0, retlen 0x6 - Read MAC from flash( 3ff100) ffffffac-15-ffffffa2-5f-fffffff6-ffffffb4 - GMAC1_MAC_ADRH -- : 0x0000ac15 - GMAC1_MAC_ADRL -- : 0xa25ff6b4 - Ralink APSoC Ethernet Driver Initilization. v3.1 256 rx/tx descriptors allocated, mtu = 1500! - NAPI enable, Tx Ring = 256, Rx Ring = 256 - spiflash_ioctl_read, Read from 0x003ff100 length 0x6, ret 0, retlen 0x6 - Read MAC from flash( 3ff100) ffffffac-15-ffffffa2-5f-fffffff6-ffffffb4 - GMAC1_MAC_ADRH -- : 0x0000ac15 - GMAC1_MAC_ADRL -- : 0xa25ff6b4 - PROC INIT OK! - add domain:tplinkwifi.net - add domain:tplinkap.net - add domain:tplinkrepeater.net - add domain:tplinklogin.net - tp_domain init ok - L2TP core driver, V2.0 - PPPoL2TP kernel driver, V2.0 - Set: phy[0].reg[0] = 3900 - Set: phy[1].reg[0] = 3900 - Set: phy[2].reg[0] = 3900 - Set: phy[3].reg[0] = 3900 - Set: phy[4].reg[0] = 3900 - Set: phy[0].reg[0] = 3300 - Set: phy[1].reg[0] = 3300 - Set: phy[2].reg[0] = 3300 - Set: phy[3].reg[0] = 3300 - Set: phy[4].reg[0] = 3300 - resetMiiPortV over. - Set: phy[0].reg[4] = 01e1 - Set: phy[0].reg[0] = 3300 - Set: phy[1].reg[4] = 01e1 - Set: phy[1].reg[0] = 3300 - Set: phy[2].reg[4] = 01e1 - Set: phy[2].reg[0] = 3300 - Set: phy[3].reg[4] = 01e1 - Set: phy[3].reg[0] = 3300 - Set: phy[4].reg[4] = 01e1 - Set: phy[4].reg[0] = 3300 - turn off flow control over. - starting pid 79, tty '/dev/ttyS1': '/bin/sh' - ~ # [ util_execSystem ] 141: ipt_init cmd is "/var/tmp/dconf/rc.router" - - [ dm_readFile ] 2061: can not open xml file /var/tmp/pc/reduced_data_model.xml!, about to open file /etc/reduced_data_model.xml - spiflash_ioctl_read, Read from 0x003e0000 length 0x10000, ret 0, retlen 0x10000 - spiflash_ioctl_read, Read from 0x003e0000 length 0xa5e0, ret 0, retlen 0xa5e0 - ===>Enter AP modspiflash_ioctl_read, Read from 0x003ff100 length 0x6, ret 0, retlen 0x6 - e - [ oal_sys_readMaspiflash_ioctl_read, Read from 0x003ff200 length 0x4, ret 0, retlen 0x4 - cFlash ] 1958: spiflash_ioctl_read, Read from 0x003ff300 length 0x4, ret 0, retlen 0x4 - 3ff100 set flasspiflash_ioctl_read, Read from 0x003ff400 length 0x10, ret 0, retlen 0x10 - h mac : AC:15:A2spiflash_ioctl_read, Read from 0x003ff500 length 0x29, ret 0, retlen 0x29 - :5F:F6:B4. - spiflash_ioctl_read, Read from 0x003ff600 length 0x21, ret 0, retlen 0x21 - spiflash_ioctl_read, Read from 0x003ff700 length 0x10, ret 0, retlen 0x10 - spiflash_ioctl_read, Read from 0x003ff700 length 0x10, ret 0, retlen 0x10 - spiflash_ioctl_read, Read from 0x00010000 length 0x1d0, ret 0, retlen 0x1d0 - spiflash_ioctl_read, Read from 0x003ff100 length 0x6, ret 0, retlen 0x6 - [ oal_sys_readMacFlash ] 1958: 3ff100 set flash mac : AC:15:A2:5F:F6:B4. - sendto: No such file or directory - pid 78 send 2001 error - [ util_execSystem ] 141: oal_startDynDns cmd is "dyndns /var/tmp/dconf/dyndns.conf" - - Get SNTP new config - [ util_execSystem ] 141: oal_startNoipDns cmd is "noipdns /var/tmp/dconf/noipdns.conf" - - [ util_execSystem ] 141: oal_startCmxDns cmd is "cmxdns /var/tmp/dconf/cmxdns.conf" - - ioctl: No such device - [ util_execSystem ] 141: oal_br_addBridge cmd is "brctl addbr br0;brctl setfd br0 0;brctl stp br0 off" - - [ util_execSystem ] 141: oal_ipt_addLanRules cmd is "iptables -t filter -A INPUT -i br+ -j ACCEPT - " - - [ rsl_initLanIpIntfObj ] 1025: Smart DHCP, use 192.168.0.1/255.255.255.0 as default Static IP at initial stage! - - [ util_execSystem ] 141: oal_intf_setIntf cmd is "Raeth v3.1 (ifconfig br0 192NAPI - .168.0.1 netmask,SkbRecycle 255.255.255.0 u) - p" - - [ util_exe - phy_tx_ring = 0x00ca1000, tx_ring = 0xa0ca1000 - cSystem ] 141: - phy_rx_ring0 = 0x00ca2000, rx_ring0 = 0xa0ca2000 - oal_util_setProc[fe_sw_init:5357]rt305x_esw_init. - LanAddr cmd is "echo "br0 16820416," > /proc/net/conntract_LocalAddr" - - [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0 up" - - disable switch phyport... - GMAC1_MAC_ADRH -- : 0x0000ac15 - GMAC1_MAC_ADRL -- : 0xa25ff6b4 - RT305x_ESW: Link Status Changed - [ util_execSystem ] 141: rsl_initLanEthIntfObj cmd is "ifconfig eth0 up" - - [ util_execSystem ] 141: oal_br_addIntfIntoBridge cmd is "brctldevice eth0 entered promiscuous mode - addif br0 eth0"br0: port 1(eth0) entering forwarding state - - - br0: port 1(eth0) entering forwarding state - [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 3" - - [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0.3 up" - - set if eth0.3 to *not wan dev - [ util_execSystem ] 141: oal_br_device eth0.3 entered promiscuous mode - addIntfIntoBridgbr0: port 2(eth0.3) entering forwarding state - e cmd is "brctl br0: port 2(eth0.3) entering forwarding state - addif br0 eth0.3" - - [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 4" - [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 4" + ##### The CPU freq = 580 MHZ #### + estimate memory size =32 Mbytes + RESET MT7628 PHY!!!!!! + continue to starting system. + 0 + disable switch phyport... + + 3: System Boot system code via Flash.(0xbc010000) + do_bootm:argc=2, addr=0xbc010000 + ## Booting image at bc010000 ... + Uncompressing Kernel Image ... OK + No initrd + ## Transferring control to Linux (at address 8000c150) ... + ## Giving linux memsize in MB, 32 + + Starting kernel ... + + + LINUX started... + + THIS IS ASIC + Linux version 2.6.36 (jenkins@mobile-System) (gcc version 4.6.3 (Buildroot 2012.11.1) ) #1 Wed Feb 3 10:13:07 CST 2021 + + The CPU feqenuce set to 575 MHz + + MIPS CPU sleep mode enabled. + CPU revision is: 00019655 (MIPS 24Kc) + Software DMA cache coherency + Determined physical RAM map: + memory: 02000000 @ 00000000 (usable) + Initrd not found or empty - disabling initrd + Zone PFN ranges: + Normal 0x00000000 -> 0x00002000 + Movable zone start PFN for each node + early_node_map[1] active PFN ranges + 0: 0x00000000 -> 0x00002000 + Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128 + Kernel command line: console=ttyS1,115200 root=/dev/mtdblock2 rootfstype=squashfs init=/sbin/init + PID hash table entries: 128 (order: -3, 512 bytes) + Dentry cache hash table entries: 4096 (order: 2, 16384 bytes) + Inode-cache hash table entries: 2048 (order: 1, 8192 bytes) + Primary instruction cache 64kB, VIPT, , 4-waylinesize 32 bytes. + Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes + Writing ErrCtl register=00048820 + Readback ErrCtl register=00048820 + Memory: 29228k/32768k available (2180k kernel code, 3540k reserved, 583k data, 156k init, 0k highmem) + NR_IRQS:128 + console [ttyS1] enabled + Calibrating delay loop... 386.04 BogoMIPS (lpj=772096) + pid_max: default: 4096 minimum: 301 + Mount-cache hash table entries: 512 + NET: Registered protocol family 16 + bio: create slab at 0 + Switching to clocksource Ralink Systick timer + NET: Registered protocol family 2 + IP route cache hash table entries: 1024 (order: 0, 4096 bytes) + TCP established hash table entries: 1024 (order: 1, 8192 bytes) + TCP bind hash table entries: 1024 (order: 0, 4096 bytes) + TCP: Hash tables configured (established 1024 bind 1024) + TCP reno registered + NET: Registered protocol family 1 + squashfs: version 4.0 (2009/01/31) Phillip Lougher + msgmni has been set to 57 + io scheduler noop registered + io scheduler deadline registered (default) + Ralink gpio driver initialized + Serial: 8250/16550 driver, 2 ports, IRQ sharing enabled + serial8250: ttyS0 at MMIO 0x10000d00 (irq = 21) is a 16550A + serial8250: ttyS1 at MMIO 0x10000c00 (irq = 20) is a 16550A + brd: module loaded + flash manufacture id: 1c, device id 70 16 + Warning: un-recognized chip ID, please update SPI driver! + EN25Q32B(1c 30161c30) (4096 Kbytes) + mtd .name = raspi, .size = 0x00400000 (4M) .erasesize = 0x00010000 (64K) .numeraseregions = 0 + Creating 5 MTD partitions on "raspi": + 0x000000000000-0x000000010000 : "boot" + 0x000000010000-0x000000100000 : "kernel" + 0x000000100000-0x0000003e0000 : "rootfs" + mtd: partition "rootfs" set to be root filesystem + 0x0000003e0000-0x0000003f0000 : "config" + 0x0000003f0000-0x000000400000 : "radio" + Register flash device:flash0 + PPP generic driver version 2.4.2 + PPP MPPE Compression module registered + NET: Registered protocol family 24 + Mirror/redirect action on + u32 classifier + Actions configured + Netfilter messages via NETLINK v0.30. + nf_conntrack version 0.5.0 (456 buckets, 1824 max) + ip_tables: (C) 2000-2006 Netfilter Core Team, Type=Linux + TCP cubic registered + NET: Registered protocol family 10 + ip6_tables: (C) 2000-2006 Netfilter Core Team + IPv6 over IPv4 tunneling driver + NET: Registered protocol family 17 + Ebtables v2.0 registered + 802.1Q VLAN Support v1.8 Ben Greear + All bugs added by David S. Miller + VFS: Mounted root (squashfs filesystem) readonly on device 31:2. + Freeing unused kernel memory: 156k freed + starting pid 29, tty '': '/etc/init.d/rcS' + mount: mounting devpts on /dev/pts failed: No such device + rdm_major = 253 + spiflash_ioctl_read, Read from 0x003ff100 length 0x6, ret 0, retlen 0x6 + Read MAC from flash( 3ff100) ffffffac-15-ffffffa2-5f-fffffff6-ffffffb4 + GMAC1_MAC_ADRH -- : 0x0000ac15 + GMAC1_MAC_ADRL -- : 0xa25ff6b4 + Ralink APSoC Ethernet Driver Initilization. v3.1 256 rx/tx descriptors allocated, mtu = 1500! + NAPI enable, Tx Ring = 256, Rx Ring = 256 + spiflash_ioctl_read, Read from 0x003ff100 length 0x6, ret 0, retlen 0x6 + Read MAC from flash( 3ff100) ffffffac-15-ffffffa2-5f-fffffff6-ffffffb4 + GMAC1_MAC_ADRH -- : 0x0000ac15 + GMAC1_MAC_ADRL -- : 0xa25ff6b4 + PROC INIT OK! + add domain:tplinkwifi.net + add domain:tplinkap.net + add domain:tplinkrepeater.net + add domain:tplinklogin.net + tp_domain init ok + L2TP core driver, V2.0 + PPPoL2TP kernel driver, V2.0 + Set: phy[0].reg[0] = 3900 + Set: phy[1].reg[0] = 3900 + Set: phy[2].reg[0] = 3900 + Set: phy[3].reg[0] = 3900 + Set: phy[4].reg[0] = 3900 + Set: phy[0].reg[0] = 3300 + Set: phy[1].reg[0] = 3300 + Set: phy[2].reg[0] = 3300 + Set: phy[3].reg[0] = 3300 + Set: phy[4].reg[0] = 3300 + resetMiiPortV over. + Set: phy[0].reg[4] = 01e1 + Set: phy[0].reg[0] = 3300 + Set: phy[1].reg[4] = 01e1 + Set: phy[1].reg[0] = 3300 + Set: phy[2].reg[4] = 01e1 + Set: phy[2].reg[0] = 3300 + Set: phy[3].reg[4] = 01e1 + Set: phy[3].reg[0] = 3300 + Set: phy[4].reg[4] = 01e1 + Set: phy[4].reg[0] = 3300 + turn off flow control over. + starting pid 79, tty '/dev/ttyS1': '/bin/sh' + ~ # [ util_execSystem ] 141: ipt_init cmd is "/var/tmp/dconf/rc.router" + + [ dm_readFile ] 2061: can not open xml file /var/tmp/pc/reduced_data_model.xml!, about to open file /etc/reduced_data_model.xml + spiflash_ioctl_read, Read from 0x003e0000 length 0x10000, ret 0, retlen 0x10000 + spiflash_ioctl_read, Read from 0x003e0000 length 0xa5e0, ret 0, retlen 0xa5e0 + ===>Enter AP modspiflash_ioctl_read, Read from 0x003ff100 length 0x6, ret 0, retlen 0x6 + e + [ oal_sys_readMaspiflash_ioctl_read, Read from 0x003ff200 length 0x4, ret 0, retlen 0x4 + cFlash ] 1958: spiflash_ioctl_read, Read from 0x003ff300 length 0x4, ret 0, retlen 0x4 + 3ff100 set flasspiflash_ioctl_read, Read from 0x003ff400 length 0x10, ret 0, retlen 0x10 + h mac : AC:15:A2spiflash_ioctl_read, Read from 0x003ff500 length 0x29, ret 0, retlen 0x29 + :5F:F6:B4. + spiflash_ioctl_read, Read from 0x003ff600 length 0x21, ret 0, retlen 0x21 + spiflash_ioctl_read, Read from 0x003ff700 length 0x10, ret 0, retlen 0x10 + spiflash_ioctl_read, Read from 0x003ff700 length 0x10, ret 0, retlen 0x10 + spiflash_ioctl_read, Read from 0x00010000 length 0x1d0, ret 0, retlen 0x1d0 + spiflash_ioctl_read, Read from 0x003ff100 length 0x6, ret 0, retlen 0x6 + [ oal_sys_readMacFlash ] 1958: 3ff100 set flash mac : AC:15:A2:5F:F6:B4. + sendto: No such file or directory + pid 78 send 2001 error + [ util_execSystem ] 141: oal_startDynDns cmd is "dyndns /var/tmp/dconf/dyndns.conf" + + Get SNTP new config + [ util_execSystem ] 141: oal_startNoipDns cmd is "noipdns /var/tmp/dconf/noipdns.conf" + + [ util_execSystem ] 141: oal_startCmxDns cmd is "cmxdns /var/tmp/dconf/cmxdns.conf" + + ioctl: No such device + [ util_execSystem ] 141: oal_br_addBridge cmd is "brctl addbr br0;brctl setfd br0 0;brctl stp br0 off" + + [ util_execSystem ] 141: oal_ipt_addLanRules cmd is "iptables -t filter -A INPUT -i br+ -j ACCEPT + " + + [ rsl_initLanIpIntfObj ] 1025: Smart DHCP, use 192.168.0.1/255.255.255.0 as default Static IP at initial stage! + + [ util_execSystem ] 141: oal_intf_setIntf cmd is "Raeth v3.1 (ifconfig br0 192NAPI + .168.0.1 netmask,SkbRecycle 255.255.255.0 u) + p" + + [ util_exe + phy_tx_ring = 0x00ca1000, tx_ring = 0xa0ca1000 + cSystem ] 141: + phy_rx_ring0 = 0x00ca2000, rx_ring0 = 0xa0ca2000 + oal_util_setProc[fe_sw_init:5357]rt305x_esw_init. + LanAddr cmd is "echo "br0 16820416," > /proc/net/conntract_LocalAddr" + + [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0 up" + + disable switch phyport... + GMAC1_MAC_ADRH -- : 0x0000ac15 + GMAC1_MAC_ADRL -- : 0xa25ff6b4 + RT305x_ESW: Link Status Changed + [ util_execSystem ] 141: rsl_initLanEthIntfObj cmd is "ifconfig eth0 up" + + [ util_execSystem ] 141: oal_br_addIntfIntoBridge cmd is "brctldevice eth0 entered promiscuous mode + addif br0 eth0"br0: port 1(eth0) entering forwarding state + + + br0: port 1(eth0) entering forwarding state + [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 3" + + [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0.3 up" + + set if eth0.3 to *not wan dev + [ util_execSystem ] 141: oal_br_device eth0.3 entered promiscuous mode + addIntfIntoBridgbr0: port 2(eth0.3) entering forwarding state + e cmd is "brctl br0: port 2(eth0.3) entering forwarding state + addif br0 eth0.3" + + [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 4" + [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 4" - [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0.4 up" + [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0.4 up" - set if eth0.4 to *not wan dev - [ util_execSystem ] 141: oal_br_device eth0.4 entered promiscuous mode - addIntfIntoBridgbr0: port 3(eth0.4) entering forwarding state - e cmd is "brctl br0: port 3(eth0.4) entering forwarding state - addif br0 eth0.4" + set if eth0.4 to *not wan dev + [ util_execSystem ] 141: oal_br_device eth0.4 entered promiscuous mode + addIntfIntoBridgbr0: port 3(eth0.4) entering forwarding state + e cmd is "brctl br0: port 3(eth0.4) entering forwarding state + addif br0 eth0.4" - [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 5" + [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 5" - [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0.5 up" + [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0.5 up" - set if eth0.5 to *not wan dev - [ util_execSystem ] 141: oal_br_device eth0.5 entered promiscuous mode - addIntfIntoBridgbr0: port 4(eth0.5) entering forwarding state - e cmd is "brctl br0: port 4(eth0.5) entering forwarding state - addif br0 eth0.5" + set if eth0.5 to *not wan dev + [ util_execSystem ] 141: oal_br_device eth0.5 entered promiscuous mode + addIntfIntoBridgbr0: port 4(eth0.5) entering forwarding state + e cmd is "brctl br0: port 4(eth0.5) entering forwarding state + addif br0 eth0.5" - [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 6" + [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 6" - [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0.6 up" + [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0.6 up" - set if eth0.6 to *not wan dev - [ util_execSystem ] 141: oal_br_device eth0.6 entered promiscuous mode - addIntfIntoBridgbr0: port 5(eth0.6) entering forwarding state - e cmd is "brctl br0: port 5(eth0.6) entering forwarding state - addif br0 eth0.6" + set if eth0.6 to *not wan dev + [ util_execSystem ] 141: oal_br_device eth0.6 entered promiscuous mode + addIntfIntoBridgbr0: port 5(eth0.6) entering forwarding state + e cmd is "brctl br0: port 5(eth0.6) entering forwarding state + addif br0 eth0.6" - [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 7" + [ util_execSystem ] 141: oal_addVlanTagIntf cmd is "vconfig add eth0 7" - [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0.7 up" + [ util_execSystem ] 141: oal_intf_enableIntf cmd is "ifconfig eth0.7 up" - set if eth0.7 to *not wan dev - [ util_execSystem ] 141: oal_br_device eth0.7 entered promiscuous mode - addIntfIntoBridgbr0: port 6(eth0.7) entering forwarding state - e cmd is "brctl br0: port 6(eth0.7) entering forwarding state - addif br0 eth0.7" + set if eth0.7 to *not wan dev + [ util_execSystem ] 141: oal_br_device eth0.7 entered promiscuous mode + addIntfIntoBridgbr0: port 6(eth0.7) entering forwarding state + e cmd is "brctl br0: port 6(eth0.7) entering forwarding state + addif br0 eth0.7" - [ util_execSystem ] 141: oal_br_delIntfFromBridge cmd is "br0: port 1(eth0) entering forwarding state - brctl delif br0 eth0" + [ util_execSystem ] 141: oal_br_delIntfFromBridge cmd is "br0: port 1(eth0) entering forwarding state + brctl delif br0 eth0" - [ util_execSystem ] 141: oal_eth_setIGMPSnoopParam cmd is "for i in /sys/devices/virtual/net/*/bridge/multicast_snooping;do echo 1 > $i ; done" + [ util_execSystem ] 141: oal_eth_setIGMPSnoopParam cmd is "for i in /sys/devices/virtual/net/*/bridge/multicast_snooping;do echo 1 > $i ; done" - [ util_execSystem ] 141: rsl_initApIgmpSnoop cmd is "for i in /sys/devices/virtual/net/*/bridge/igmp_query_version; do echo 3 > $i; done" + [ util_execSystem ] 141: rsl_initApIgmpSnoop cmd is "for i in /sys/devices/virtual/net/*/bridge/igmp_query_version; do echo 3 > $i; done" - [ util_execSystem ] 141: oal_wlan_ra_setCountryRegion cmd is "cp /etc/SingleSKU_FCC.dat /var/Wireless/RT2860AP/SingleSKU.dat" + [ util_execSystem ] 141: oal_wlan_ra_setCountryRegion cmd is "cp /etc/SingleSKU_FCC.dat /var/Wireless/RT2860AP/SingleSKU.dat" - [ util_execSystem ] 141: oal_wlan_ra_setCountryRegion cmd is "iwpriv ra0 set CountryRegion=0" + [ util_execSystem ] 141: oal_wlan_ra_setCountryRegion cmd is "iwpriv ra0 set CountryRegion=0" - ra0 no private ioctls. + ra0 no private ioctls. - [ util_execSystem ] 141: oal_wlan_ra_loadDriver cmd is "insmod /lib/modules/kmdir/kernel/drivers/net/wireless/mt_wifi_ap/mt_wifi.ko" + [ util_execSystem ] 141: oal_wlan_ra_loadDriver cmd is "insmod /lib/modules/kmdir/kernel/drivers/net/wireless/mt_wifi_ap/mt_wifi.ko" - [ util_execSystem ] 141: oal_wlan_ra_initWlan cmd is "ifconfig ra0 up" + [ util_execSystem ] 141: oal_wlan_ra_initWlan cmd is "ifconfig ra0 up" - [RTMPReadParametersHook:297]wifi read profile faild. + [RTMPReadParametersHook:297]wifi read profile faild. - efuse_probe: efuse = 10000012 - exec! - spiflash_ioctl_read, Read from 0x003f0000 length 0x400, ret 0, retlen 0x400 - eeFlashId = 0x7628! - tssi_1_target_pwr_g_band = 36 - [ util_execSystem ] 141: oal_wlan_ra_initWlan cmd is "echo 1 > /proc/tplink/led_wlan_24G" + efuse_probe: efuse = 10000012 + exec! + spiflash_ioctl_read, Read from 0x003f0000 length 0x400, ret 0, retlen 0x400 + eeFlashId = 0x7628! + tssi_1_target_pwr_g_band = 36 + [ util_execSystem ] 141: oal_wlan_ra_initWlan cmd is "echo 1 > /proc/tplink/led_wlan_24G" - [ util_execSystem ] 141: oal_wlan_ra_initWlan cmd is "iwpriv ra0 set ed_chk=0" + [ util_execSystem ] 141: oal_wlan_ra_initWlan cmd is "iwpriv ra0 set ed_chk=0" - [ util_execSystem ] 141: oal_wlan_ra_setStaNum cmd is "iwpriv ra0 set MaxStaNum=32" + [ util_execSystem ] 141: oal_wlan_ra_setStaNum cmd is "iwpriv ra0 set MaxStaNum=32" - [ util_execSystem ] 141device ra0 entered promiscuous mode - : oal_br_addIntbr0: port 1(ra0) entering forwarding state - fIntoBridge cmd br0: port 1(ra0) entering forwarding state - is "brctl addif br0 ra0" + [ util_execSystem ] 141device ra0 entered promiscuous mode + : oal_br_addIntbr0: port 1(ra0) entering forwarding state + fIntoBridge cmd br0: port 1(ra0) entering forwarding state + is "brctl addif br0 ra0" - [ util_execSystem ] 141: oal_br_addIntfIntoBridge cdevice apcli0 entered promiscuous mode - md is "brctl addif br0 apcli0" + [ util_execSystem ] 141: oal_br_addIntfIntoBridge cdevice apcli0 entered promiscuous mode + md is "brctl addif br0 apcli0" - [ util_execSystem ] 141: oal_br_addIntfIntoBrdevice ra1 entered promiscuous mode - idge cmd is "brctl addif br0 ra1" + [ util_execSystem ] 141: oal_br_addIntfIntoBrdevice ra1 entered promiscuous mode + idge cmd is "brctl addif br0 ra1" - [ util_execSystem ] 141: oal_wlan_ra_initEspiflash_ioctl_read, Read from 0x003f0000 length 0x2, ret 0, retlen 0x2 - nd cmd is "wlNetlinkTool &" + [ util_execSystem ] 141: oal_wlan_ra_initEspiflash_ioctl_read, Read from 0x003f0000 length 0x2, ret 0, retlen 0x2 + nd cmd is "wlNetlinkTool &" - [ util_execSystem ] 141: oal_wlan_ra_initEnd cmd is "killall -q wscd" + [ util_execSystem ] 141: oal_wlan_ra_initEnd cmd is "killall -q wscd" - [ util_execSystem ] 141: oal_wlan_ra_initEnd cmd is "wscd -i ra0 -m 1 -w /var/tmp/wsc_upnp/ &" + [ util_execSystem ] 141: oal_wlan_ra_initEnd cmd is "wscd -i ra0 -m 1 -w /var/tmp/wsc_upnp/ &" - [ util_execSystem ] 141: rsl_initLanWlanObj cmd is "echo 1 > /proc/tplink/wl_mode" + [ util_execSystem ] 141: rsl_initLanWlanObj cmd is "echo 1 > /proc/tplink/wl_mode" - WLAN-Start wlNetlinkTool - Waiting for Wireless Events from interfaces... - swWlanChkAhbErr: netlink to do - [ oal_wlan_ra_loadDriver ] 2119: no 5G chip. + WLAN-Start wlNetlinkTool + Waiting for Wireless Events from interfaces... + swWlanChkAhbErr: netlink to do + [ oal_wlan_ra_loadDriver ] 2119: no 5G chip. - [ rsl_initLanWlanObj ] 9620: perror:1 - wscd: SSDP UDP PORT = 1900 - [ util_execSystem ] 141: oal_ipt_setWanPort cmd is "iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT" + [ rsl_initLanWlanObj ] 9620: perror:1 + wscd: SSDP UDP PORT = 1900 + [ util_execSystem ] 141: oal_ipt_setWanPort cmd is "iptables -t filter -A INPUT -p tcp --dport 80 -j ACCEPT" - [ util_execSystem ] 141: oal_ipt_setWanPort cmd is "iptables -t nat -I PREROUTING 1 -p tcp --dport 80 -j ACCEPT" + [ util_execSystem ] 141: oal_ipt_setWanPort cmd is "iptables -t nat -I PREROUTING 1 -p tcp --dport 80 -j ACCEPT" - sendto: No such file or directory - pid 78 send 2004 error - [ util_execSystem ] 141: oal_startDhcps cmd is "dhcpd /var/tmp/dconf/udhcpd.conf" + sendto: No such file or directory + pid 78 send 2004 error + [ util_execSystem ] 141: oal_startDhcps cmd is "dhcpd /var/tmp/dconf/udhcpd.conf" - iptables: Bad rule (does a matching rule exist in that chain?). - [ rsl_initAppObj ] 1038: ===>Smart DHCP, use 192.168.0.1/255.255.255.0 as default Static IP at initial stage! + iptables: Bad rule (does a matching rule exist in that chain?). + [ rsl_initAppObj ] 1038: ===>Smart DHCP, use 192.168.0.1/255.255.255.0 as default Static IP at initial stage! - [ util_execSystem ] 141: oal_intf_setIntf cmd is "ifconfig br0 192.168.0.1 netmask 255.255.255.0 up" + [ util_execSystem ] 141: oal_intf_setIntf cmd is "ifconfig br0 192.168.0.1 netmask 255.255.255.0 up" - [ util_execSystem ] 141: oal_util_setProcLanAddr cmd is "echo "br0 16820416," > /proc/net/conntract_LocalAddr" + [ util_execSystem ] 141: oal_util_setProcLanAddr cmd is "echo "br0 16820416," > /proc/net/conntract_LocalAddr" - [ rsl_initAppObj ] 1055: lanCfgObj.IPRouters 192.168.0.1, lanCfgObj.X_TP_RemoteDns 192.168.0.1,0.0.0.0, lanCfgObj.DNSServers 192.168.0.1,0.0.0.0, lanCfgObj.minAddress 192.168.0.100, lanCfgObj.maxAddress 192.168.0.199. + [ rsl_initAppObj ] 1055: lanCfgObj.IPRouters 192.168.0.1, lanCfgObj.X_TP_RemoteDns 192.168.0.1,0.0.0.0, lanCfgObj.DNSServers 192.168.0.1,0.0.0.0, lanCfgObj.minAddress 192.168.0.100, lanCfgObj.maxAddress 192.168.0.199. - [ rsl_initAppObj ] 1068: ==> start dhcp client + [ rsl_initAppObj ] 1068: ==> start dhcp client - iptables: Bad rule (does a matching rule exist in that chain?). - [ util_execSystem ] 141: oal_ipt_fwDdos cmd is "iptables -D FORWARD -j FIREWALL_DDOS - " + iptables: Bad rule (does a matching rule exist in that chain?). + [ util_execSystem ] 141: oal_ipt_fwDdos cmd is "iptables -D FORWARD -j FIREWALL_DDOS + " - iptables: No chain/target/match by that name. - [ util_execSystem ] 141: oal_ipt_forbidLanPing cmd is "iptables -t filter -D INPUT -i br+ -p icmp --icmp-type echo-request -j DROP - iptables -t filter -D FORWARD -i br+ -p icmp --icmp-type echo-request -j DROP - " + iptables: No chain/target/match by that name. + [ util_execSystem ] 141: oal_ipt_forbidLanPing cmd is "iptables -t filter -D INPUT -i br+ -p icmp --icmp-type echo-request -j DROP + iptables -t filter -D FORWARD -i br+ -p icmp --icmp-type echo-request -j DROP + " - iptables: Bad rule (does a matching rule exist in that chain?). - iptables: Bad rule (does a matching rule exist in that chain?). - [ util_execSystem ] 141: oal_ddos_delPingRule cmd is "iptables -t filter -D INPUT ! -i br+ -p icmp --icmp-type echo-request -j ACCEPT - " + iptables: Bad rule (does a matching rule exist in that chain?). + iptables: Bad rule (does a matching rule exist in that chain?). + [ util_execSystem ] 141: oal_ddos_delPingRule cmd is "iptables -t filter -D INPUT ! -i br+ -p icmp --icmp-type echo-request -j ACCEPT + " - iptables: Bad rule (does a matching rule exist in that chain?). - [ util_execSystem ] 141: oal_ipt_setDDoSRules cmd is "iptables -F FIREWALL_DDOS" + iptables: Bad rule (does a matching rule exist in that chain?). + [ util_execSystem ] 141: oal_ipt_setDDoSRules cmd is "iptables -F FIREWALL_DDOS" - [ util_execSystem ] 141: ddos_clearAll cmd is "rm -f /var/tmp/dosHost" + [ util_execSystem ] 141: ddos_clearAll cmd is "rm -f /var/tmp/dosHost" - sh: diagTool: not found - [ util_execSystem ] 141: oal_initFirewallObj cmd is "ebtables -N FIREWALL" + sh: diagTool: not found + [ util_execSystem ] 141: oal_initFirewallObj cmd is "ebtables -N FIREWALL" - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_ftp.ko" + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_ftp.ko" - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_ftp.ko" + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_ftp.ko" - [ util_execSystem ] 141: oal_openAlg cmd is "iptables -D FORWARD_VPN_PASSTHROUGH -p udp --dport 500 -j DROP" + [ util_execSystem ] 141: oal_openAlg cmd is "iptables -D FORWARD_VPN_PASSTHROUGH -p udp --dport 500 -j DROP" - iptables: Bad rule (does a matching rule exist in that chain?). - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko" + iptables: Bad rule (does a matching rule exist in that chain?). + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_proto_gre.ko" - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_pptp.ko" + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_pptp.ko" - [ util_execSystem ] 141: oal_openAlg cmd is "iptables -D FORWARD_VPN_PASSTHROUGH -p tcp --dport 1723 -j DROP" + [ util_execSystem ] 141: oal_openAlg cmd is "iptables -D FORWARD_VPN_PASSTHROUGH -p tcp --dport 1723 -j DROP" - iptables: Bad rule (does a matching rule exist in that chain?). - [ util_execSystem ] 141: oal_openAlg cmd is "iptables -D FORWARD_VPN_PASSTHROUGH -p udp --dport 1701 -j DROP" + iptables: Bad rule (does a matching rule exist in that chain?). + [ util_execSystem ] 141: oal_openAlg cmd is "iptables -D FORWARD_VPN_PASSTHROUGH -p udp --dport 1701 -j DROP" - iptables: Bad rule (does a matching rule exist in that chain?). - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_tftp.ko" + iptables: Bad rule (does a matching rule exist in that chain?). + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_tftp.ko" - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_tftp.ko" + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_tftp.ko" - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_h323.ko" + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_h323.ko" - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_h323.ko" + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_h323.ko" - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_sip.ko" + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_sip.ko" - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_sip.ko" + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_sip.ko" - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_rtsp.ko" + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/netfilter/nf_conntrack_rtsp.ko" - [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_rtsp.ko" + [ util_execSystem ] 141: setupModules cmd is "insmod /lib/modules/kmdir/kernel/net/ipv4/netfilter/nf_nat_rtsp.ko" - nf_nat_rtsp v0.6.21 loading - [ util_execSystem ] 141: rsl_initPingWatchDogObj cmd is "pwdog &" + nf_nat_rtsp v0.6.21 loading + [ util_execSystem ] 141: rsl_initPingWatchDogObj cmd is "pwdog &" - enable switch phyport... - Set: phy[0].reg[0] = 3900 - Set: phy[1].reg[0] = 3900 - Set: phy[2].reg[0] = 3900 - Set: phy[3].reg[0] = 3900 - Set: phy[4].reg[0] = 3900 - Set: phy[0].reg[0] = 3300 - Set: phy[1].reg[0] = 3300 - Set: phy[2].reg[0] = 3300 - Set: phy[3].reg[0] = 3300 - Set: phy[4].reg[0] = 3300 - resetMiiPortV over. - Set: phy[0].reg[4] = 01e1 - Set: phy[0].reg[0] = 3300 - [cmd_dutInit():1094] init shm - [tddp_taskEntry():151] tddp task start - Set: phy[1].reg[4] = 01e1 - Set: phy[1].reg[0] = 3300 - Set: phy[2].reg[4] = 01e1 - Set: phy[2].reg[0] = 3300 - Set: phy[3].reg[4] = 01e1 - Set: phy[3].reg[0] = 3300 - Set: phy[4].reg[4] = 01e1 - Set: phy[4].reg[0] = 3300 - turn off flow control over. - [ read_dhcpc_config ] 113: error, unable to open config file: /var/tmp/dconf/udhcpc.conf - [ util_execSystem ] 141: prepareDropbear cmd is "dropbearkey -t rsa -f /var/tmp/dropbear/dropbear_rsa_host_key" + enable switch phyport... + Set: phy[0].reg[0] = 3900 + Set: phy[1].reg[0] = 3900 + Set: phy[2].reg[0] = 3900 + Set: phy[3].reg[0] = 3900 + Set: phy[4].reg[0] = 3900 + Set: phy[0].reg[0] = 3300 + Set: phy[1].reg[0] = 3300 + Set: phy[2].reg[0] = 3300 + Set: phy[3].reg[0] = 3300 + Set: phy[4].reg[0] = 3300 + resetMiiPortV over. + Set: phy[0].reg[4] = 01e1 + Set: phy[0].reg[0] = 3300 + [cmd_dutInit():1094] init shm + [tddp_taskEntry():151] tddp task start + Set: phy[1].reg[4] = 01e1 + Set: phy[1].reg[0] = 3300 + Set: phy[2].reg[4] = 01e1 + Set: phy[2].reg[0] = 3300 + Set: phy[3].reg[4] = 01e1 + Set: phy[3].reg[0] = 3300 + Set: phy[4].reg[4] = 01e1 + Set: phy[4].reg[0] = 3300 + turn off flow control over. + [ read_dhcpc_config ] 113: error, unable to open config file: /var/tmp/dconf/udhcpc.conf + [ util_execSystem ] 141: prepareDropbear cmd is "dropbearkey -t rsa -f /var/tmp/dropbear/dropbear_rsa_host_key" - Will output 1024 bit rsa secret key to '/var/tmp/dropbear/dropbear_rsa_host_key' - Generating key, this may take a while... - [ util_execSystem ] 141: prepareDropbear cmd is "dropbearkey -t dss -f /var/tmp/dropbear/dropbear_dss_host_key" + Will output 1024 bit rsa secret key to '/var/tmp/dropbear/dropbear_rsa_host_key' + Generating key, this may take a while... + [ util_execSystem ] 141: prepareDropbear cmd is "dropbearkey -t dss -f /var/tmp/dropbear/dropbear_dss_host_key" - Will output 1024 bit dss secret key to '/var/tmp/dropbear/dropbear_dss_host_key' - Generating key, this may take a while... - [ util_execSystem ] 141: prepareDropbear cmd is "dropbear -p 22 -r /var/tmp/dropbear/dropbear_rsa_host_key -d /var/tmp/dropbear/dropbear_dss_host_key -A /var/tmp/dropbear/dropbearpwd" + Will output 1024 bit dss secret key to '/var/tmp/dropbear/dropbear_dss_host_key' + Generating key, this may take a while... + [ util_execSystem ] 141: prepareDropbear cmd is "dropbear -p 22 -r /var/tmp/dropbear/dropbear_rsa_host_key -d /var/tmp/dropbear/dropbear_dss_host_key -A /var/tmp/dropbear/dropbearpwd" - start ntp_request - [ oal_sys_getOldTZInfo ] 592: Open TZ file error! - [ util_execSystem ] 141: oal_sys_unsetTZ cmd is "echo "" > /etc/TZ" + start ntp_request + [ oal_sys_getOldTZInfo ] 592: Open TZ file error! + [ util_execSystem ] 141: oal_sys_unsetTZ cmd is "echo "" > /etc/TZ" - Some key information of note from the boot logs were: + Some key information of note from the boot logs were: - Bootloader: + Bootloader: - Appears to be a repurposed build of open source version U-Boot 1.1.3 (Feb 3 2021 - 10:10:08), denoted as Ralink UBoot Version: 4.3.0.0 + Appears to be a repurposed build of open source version U-Boot 1.1.3 (Feb 3 2021 - 10:10:08), denoted as Ralink UBoot Version: 4.3.0.0 - Bootloader default selected 3: System Boot system code via Flash.(0xbc010000) as the boot option, may be able to interrupt boot process and select another boot option + Bootloader default selected 3: System Boot system code via Flash.(0xbc010000) as the boot option, may be able to interrupt boot process and select another boot option - Linux Initialization: + Linux Initialization: - Version: Linux version 2.6.36 (jenkins@mobile-System) (gcc version 4.6.3 (Buildroot 2012.11.1) ) #1 Wed Feb 3 10:13:07 CST 2021 + Version: Linux version 2.6.36 (jenkins@mobile-System) (gcc version 4.6.3 (Buildroot 2012.11.1) ) #1 Wed Feb 3 10:13:07 CST 2021 - CPU Information: CPU revision is: 00019655 (MIPS 24Kc) + CPU Information: CPU revision is: 00019655 (MIPS 24Kc) - Kernel Command Line: Kernel command line: console=ttyS1,115200 root=/dev/mtdblock2 rootfstype=squashfs init=/sbin/init + Kernel Command Line: Kernel command line: console=ttyS1,115200 root=/dev/mtdblock2 rootfstype=squashfs init=/sbin/init - Shows the console being set to ttyS1 with a baud rate of 115200 (this is the console session we are connected to). Show the root file system as type squashfs which is a compressed read-only file system. Show the initialization bin is /sbin/init. + Shows the console being set to ttyS1 with a baud rate of 115200 (this is the console session we are connected to). Show the root file system as type squashfs which is a compressed read-only file system. Show the initialization bin is /sbin/init. - Boot Partition Details: + Boot Partition Details: - EN25Q32B(1c 30161c30) (4096 Kbytes) + EN25Q32B(1c 30161c30) (4096 Kbytes) - mtd .name = raspi, .size = 0x00400000 (4M) .erasesize = 0x00010000 (64K) .numeraseregions = 0 + mtd .name = raspi, .size = 0x00400000 (4M) .erasesize = 0x00010000 (64K) .numeraseregions = 0 - Creating 5 MTD partitions on "raspi": + Creating 5 MTD partitions on "raspi": - 0x000000000000-0x000000010000 : "boot" + 0x000000000000-0x000000010000 : "boot" - 0x000000010000-0x000000100000 : "kernel" + 0x000000010000-0x000000100000 : "kernel" - 0x000000100000-0x0000003e0000 : "rootfs" + 0x000000100000-0x0000003e0000 : "rootfs" - mtd: partition "rootfs" set to be root filesystem + mtd: partition "rootfs" set to be root filesystem - 0x0000003e0000-0x0000003f0000 : "config" + 0x0000003e0000-0x0000003f0000 : "config" - 0x0000003f0000-0x000000400000 : "radio" + 0x0000003f0000-0x000000400000 : "radio" - Identifies flash chip as EN25Q32B (the same chip we ID'd in initial recon) + Identifies flash chip as EN25Q32B (the same chip we ID'd in initial recon) - Shows the partition of the ROM. + Shows the partition of the ROM. - Initialization Script: starting pid 29, tty '': '/etc/init.d/rcS' + Initialization Script: starting pid 29, tty '': '/etc/init.d/rcS' - Shows the location of the initialization script. + Shows the location of the initialization script. - Configuration Files: + Configuration Files: - Multiple configuration files are listed for use during start-up, the below appears to be a main configuration file. + Multiple configuration files are listed for use during start-up, the below appears to be a main configuration file. - [ dm_readFile ] 2061: can not open xml file /var/tmp/pc/reduced_data_model.xml!, about to open file /etc/reduced_data_model.xml + [ dm_readFile ] 2061: can not open xml file /var/tmp/pc/reduced_data_model.xml!, about to open file /etc/reduced_data_model.xml - Dropbear: + Dropbear: - Multiple details about Dropbear initialization including the below line also reveal what is most likely a writeable filepath. + Multiple details about Dropbear initialization including the below line also reveal what is most likely a writeable filepath. - [ util_execSystem ] 141: prepareDropbear cmd is "dropbearkey -t rsa -f /var/tmp/dropbear/dropbear_rsa_host_key" + [ util_execSystem ] 141: prepareDropbear cmd is "dropbearkey -t rsa -f /var/tmp/dropbear/dropbear_rsa_host_key" - Interrupting Bootloader - Through online research, it was discovered that the bootloader interrupt command is "tpl". There is a very small window to interrupt the bootloader so the easiest way to do it is to issue a reboot command and then immediately being typing "tpl" repeatedly. + Interrupting Bootloader + Through online research, it was discovered that the bootloader interrupt command is "tpl". There is a very small window to interrupt the bootloader so the easiest way to do it is to issue a reboot command and then immediately being typing "tpl" repeatedly. - ~ # reboot - The system is going down NOW! - Sent SIGTERM to all processes - Terminated - Sent SIGKILL toRestarting system. + ~ # reboot + The system is going down NOW! + Sent SIGTERM to all processes + Terminated + Sent SIGKILL toRestarting system. - Doing so interrupted the bootloader and provided access to the bootloaders Command Line Interface. + Doing so interrupted the bootloader and provided access to the bootloaders Command Line Interface. - switch BootType: - - 4: System Enter Boot Command Line Interface. + switch BootType: + + 4: System Enter Boot Command Line Interface. - U-Boot 1.1.3 (Feb 3 2021 - 10:10:08) - MT7628 # help - Unknown command 'help' - try 'help' - MT7628 # + U-Boot 1.1.3 (Feb 3 2021 - 10:10:08) + MT7628 # help + Unknown command 'help' - try 'help' + MT7628 # - Usually this CLI provides access to tools to read and write to memory, set environment details and gather further information about the board. Unfortunately, the repurposed version of U-Boot has removed this functionality. The only functionality remaining is to perform a TFTP boot. This can be done to boot from firmware over the network as a recovery method. + Usually this CLI provides access to tools to read and write to memory, set environment details and gather further information about the board. Unfortunately, the repurposed version of U-Boot has removed this functionality. The only functionality remaining is to perform a TFTP boot. This can be done to boot from firmware over the network as a recovery method. - Enumeration via UART Shell - Pressing Enter revealed there was shell access with no login as root user: + Enumeration via UART Shell + Pressing Enter revealed there was shell access with no login as root user: - Checking over the available binaries in the bin folder, busybox was discovered: + Checking over the available binaries in the bin folder, busybox was discovered: - Busybox is a popular binary used on embedded systems as it packages many common Linux/Unix binaries into one smaller package. + Busybox is a popular binary used on embedded systems as it packages many common Linux/Unix binaries into one smaller package. - Observing the available functions in busybox it was noted that this appears to be a stripped-down version of Busybox, however, TFTP was still available. + Observing the available functions in busybox it was noted that this appears to be a stripped-down version of Busybox, however, TFTP was still available. - Transferring Full Version of Busybox over TFTP - The full version of Busybox was downloaded from: https://busybox.net/downloads/binaries/ + Transferring Full Version of Busybox over TFTP + The full version of Busybox was downloaded from: https://busybox.net/downloads/binaries/ - The TFTP from the existing busybox was then used to transfer over the full version of busybox. + The TFTP from the existing busybox was then used to transfer over the full version of busybox. - Command From Kali VM to start TFTP server as daemon: sudo atftpd --daemon + Command From Kali VM to start TFTP server as daemon: sudo atftpd --daemon - Created a folder to transfer over tools in /var/tmp/_tools /var was previously identified as writable. + Created a folder to transfer over tools in /var/tmp/_tools /var was previously identified as writable. - Command from Router to initiate file transfer: tftp -r busybox-mipsel -g 192.168.0.100 + Command from Router to initiate file transfer: tftp -r busybox-mipsel -g 192.168.0.100 - The full version of busybox was then available to use for further enumeration. + The full version of busybox was then available to use for further enumeration. - Enumerating /var folder - Using the new full version of Busybox grep was utilized to search for files with "pass" in it in order to identify possible hardcoded passwords. + Enumerating /var folder + Using the new full version of Busybox grep was utilized to search for files with "pass" in it in order to identify possible hardcoded passwords. - Command: /var/temp/_tools/busybox-mipsel grep -r 'pass' . + Command: /var/temp/_tools/busybox-mipsel grep -r 'pass' . - Noted three config files that may contain passwords and what appears to be a hashed password for Dropbear. + Noted three config files that may contain passwords and what appears to be a hashed password for Dropbear. - Config file passwords were blank, Dropbear hash was saved to attempt to crack at a later time. + Config file passwords were blank, Dropbear hash was saved to attempt to crack at a later time. - Command: /var/temp/_tools/busybox-mipsel grep -r 'pass' . + Command: /var/temp/_tools/busybox-mipsel grep -r 'pass' . - Command: /var/temp/_tools/busybox-mipsel find -name '*.xml' + Command: /var/temp/_tools/busybox-mipsel find -name '*.xml' - Command: /var/temp/_tools/busybox-mipsel find -name '*.conf' + Command: /var/temp/_tools/busybox-mipsel find -name '*.conf' - Further enumeration of the config files did not reveal any additional useful information. + Further enumeration of the config files did not reveal any additional useful information. - Cracking Password Hashes - Admin hash from passwd file was identified as Unix Md5 hash and cracked using the below command. + Cracking Password Hashes + Admin hash from passwd file was identified as Unix Md5 hash and cracked using the below command. - Command on Kali VM: hashcat -a 0 -m 500 admin.hash /usr/share/wordlists/rockyou.txt + Command on Kali VM: hashcat -a 0 -m 500 admin.hash /usr/share/wordlists/rockyou.txt - Admin Password cracked as "1234" + Admin Password cracked as "1234" - Dropbear hash form dropbearpasswd file was identified as normal MD5 hash and cracked using the below command. + Dropbear hash form dropbearpasswd file was identified as normal MD5 hash and cracked using the below command. - Command on Kali VM: hashcat -a 0 -m 0 dropbear.hash /usr/share/wordlists/rockyou.txt + Command on Kali VM: hashcat -a 0 -m 0 dropbear.hash /usr/share/wordlists/rockyou.txt - Dropbear password was cracked "1234qwer" this was noted to be the password that was created for the admin login of the router via the browser. + Dropbear password was cracked "1234qwer" this was noted to be the password that was created for the admin login of the router via the browser. - The password file is dynamically created on startup from the router's admin password. + The password file is dynamically created on startup from the router's admin password. - Checking Running Processes and Network Connections - The busybox binary transferred was used again to check the running processes via ps. + Checking Running Processes and Network Connections + The busybox binary transferred was used again to check the running processes via ps. - Command: /var/temp/_tools/busybox-mipsel ps + Command: /var/temp/_tools/busybox-mipsel ps - Noted that all processes were running as the admin user and there was no principle of least privilege being followed. + Noted that all processes were running as the admin user and there was no principle of least privilege being followed. - The same process was followed to check running processes using netstat. + The same process was followed to check running processes using netstat. - Command: /var/temp/_tools/busybox-mipsel netstat + Command: /var/temp/_tools/busybox-mipsel netstat - Prompting Additional Console Log Messages - Looking through the unprompted console log messages one repeating log message stood out: + Prompting Additional Console Log Messages + Looking through the unprompted console log messages one repeating log message stood out: - A repeated call by [ util_execSystem ] appears to be indicative of a log from a function in a shared object library. + A repeated call by [ util_execSystem ] appears to be indicative of a log from a function in a shared object library. - It also appears to be a system call which is a c function that allows the running of a system command. These can be dangerous in nature for command injection if the function uses user input. + It also appears to be a system call which is a c function that allows the running of a system command. These can be dangerous in nature for command injection if the function uses user input. - These console log messages, especially those which allow tracing back to specific functions can allow for easier reverse engineering. To test this the wireless setup of the router was performed using the web portal. + These console log messages, especially those which allow tracing back to specific functions can allow for easier reverse engineering. To test this the wireless setup of the router was performed using the web portal. - This triggered many console logs that showed the use of the execSystem function for user-supplied inputs. + This triggered many console logs that showed the use of the execSystem function for user-supplied inputs. - [ rsl_sendAppWlanCfg ] 1232: Tell TMPD server that wlan/guest cfg has been c - hanged. + [ rsl_sendAppWlanCfg ] 1232: Tell TMPD server that wlan/guest cfg has been c + hanged. - [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set - CountryCode=US_NOCOUNTRY" + [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set + CountryCode=US_NOCOUNTRY" - [ util_execSystem ] 141: oal_wlan_ra_setCountryRegion cmd is "cp /etc/Single - SKU_FCC.dat /var/Wireless/RT2860AP/SingleSKU.dat" + [ util_execSystem ] 141: oal_wlan_ra_setCountryRegion cmd is "cp /etc/Single + SKU_FCC.dat /var/Wireless/RT2860AP/SingleSKU.dat" - [ util_execSystem ] 141: oal_wlan_ra_setCountryRegion cmd is "iwpriv ra0 set - CountryRegion=0" + [ util_execSystem ] 141: oal_wlan_ra_setCountryRegion cmd is "iwpriv ra0 set + CountryRegion=0" - [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set - WirelessMode=9" + [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set + WirelessMode=9" - [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set - HtBw=1" + [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set + HtBw=1" - [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set - HtBssCoex=0" + [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set + HtBssCoex=0" - [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set AutoChannelSel=2" + [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set AutoChannelSel=2" - [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set Channel=0" + [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set Channel=0" - [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set SSID='i''o''t''h''a''c''k''i''n''g'" + [ util_execSystem ] 141: oal_wlan_ra_setWlanBasicCfg cmd is "iwpriv ra0 set SSID='i''o''t''h''a''c''k''i''n''g'" - [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set TxPower=100" + [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set TxPower=100" - [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set BeaconPeriod=100" + [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set BeaconPeriod=100" - [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set RTSThreshold=2346" + [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set RTSThreshold=2346" - [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set FragThreshold=2346" + [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set FragThreshold=2346" - [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set DtimPeriod=1" + [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set DtimPeriod=1" - [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set HtGi=1" + [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set HtGi=1" - [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set HideSSID=0" + [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set HideSSID=0" - [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set WmmCapable=1" + [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set WmmCapable=1" - [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set NoForwarding=0" + [ util_execSystem ] 141: oal_wlan_ra_setWlanAdvCfg cmd is "iwpriv ra0 set NoForwarding=0" - [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set AuthMode=WPA2PSK" + [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set AuthMode=WPA2PSK" - [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set EncrypType=AES" + [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set EncrypType=AES" - [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set IEEE8021X=0" + [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set IEEE8021X=0" - [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set DefaultKeyID=2" + [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set DefaultKeyID=2" - [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set SSID='i''o''t''h''a''c''k''i''n''g'" + [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set SSID='i''o''t''h''a''c''k''i''n''g'" - [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set RekeyInterval=0" + [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set RekeyInterval=0" - [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set WPAPSK='1''2''3''4''5''q''w''e''r''t'" + [ util_execSystem ] 141: oal_wlan_ra_setSec cmd is "iwpriv ra0 set WPAPSK='1''2''3''4''5''q''w''e''r''t'" - [ util_execSystem ] 141: oal_wlan_ra_updateWlanCfg cmd is "iwpriv ra0 set AccessPolicy=0" + [ util_execSystem ] 141: oal_wlan_ra_updateWlanCfg cmd is "iwpriv ra0 set AccessPolicy=0" - [ util_execSystem ] 141: oal_wlan_ra_updateWlanCfg cmd is "iwpriv ra0 set SSID='i''o''t''h''a''c''k''i''n''g'" + [ util_execSystem ] 141: oal_wlan_ra_updateWlanCfg cmd is "iwpriv ra0 set SSID='i''o''t''h''a''c''k''i''n''g'" - [ util_execSystem ] 141: oal_wlan_ra_updateWlanCfg cmd is "ifconfig ra1 down" + [ util_execSystem ] 141: oal_wlan_ra_updateWlanCfg cmd is "ifconfig ra1 down" - [ util_execSystem ] 141: oal_wlan_ra_updateWlanCfg cmd is "ifconfig ra0 down; " + [ util_execSystem ] 141: oal_wlan_ra_updateWlanCfg cmd is "ifconfig ra0 down; " - br0: port 1(ra0) entering forwarding state - [ util_execSystem ] 141: oal_wlan_ra_updateWlanCfg cmd is "ifconfig ra0 up; " + br0: port 1(ra0) entering forwarding state + [ util_execSystem ] 141: oal_wlan_ra_updateWlanCfg cmd is "ifconfig ra0 up; " - [RTMPReadParametersHook:297]wifi read profile faild. - efuse_probe: efuse = 10000012 - exec! - spiflash_ioctl_read, Read from 0x003f0000 length 0x400, ret 0, retlen 0x400 - eeFlashId = 0x7628! - tx or rx disable[f0000300][count=0]!!! - tx or rx disable[f0000300][count=1]!!! - tssi_1_target_pwr_g_band = 36 - [ ntp_start ] 504: ntp connect failed, return. + [RTMPReadParametersHook:297]wifi read profile faild. + efuse_probe: efuse = 10000012 + exec! + spiflash_ioctl_read, Read from 0x003f0000 length 0x400, ret 0, retlen 0x400 + eeFlashId = 0x7628! + tx or rx disable[f0000300][count=0]!!! + tx or rx disable[f0000300][count=1]!!! + tssi_1_target_pwr_g_band = 36 + [ ntp_start ] 504: ntp connect failed, return. - [APCheckBcnQHandler] check_point_num 5 == 4 ARB_SCR=[f0000001] - br0: port 1(ra0) entering forwarding state - br0: port 1(ra0) entering forwarding state - [ util_execSystem ] 141: oal_intf_setIntf cmd is "ifconfig br0 192.168.0.1 netmask 255.255.255.0 up" + [APCheckBcnQHandler] check_point_num 5 == 4 ARB_SCR=[f0000001] + br0: port 1(ra0) entering forwarding state + br0: port 1(ra0) entering forwarding state + [ util_execSystem ] 141: oal_intf_setIntf cmd is "ifconfig br0 192.168.0.1 netmask 255.255.255.0 up" - [ util_execSystem ] 141: oal_util_setProcLanAddr cmd is "echo "br0 16820416," > /proc/net/conntract_LocalAddr" + [ util_execSystem ] 141: oal_util_setProcLanAddr cmd is "echo "br0 16820416," > /proc/net/conntract_LocalAddr" - [ util_execSystem ] 141: oal_sys_unsetTZ cmd is "echo "" > /etc/TZ" + [ util_execSystem ] 141: oal_sys_unsetTZ cmd is "echo "" > /etc/TZ" - iptables: Bad rule (does a matching rule exist in that chain?). - spiflash_ioctl_read, Read from 0x003e0000 length 0x10000, ret 0, retlen 0x10000 - . - spiflash_ioctl_erase, erase to 0x003f0000 length 0x0, nerase done - spiflash_ioctl_write, Write to 0x003e0000 length 0x10000, ret 0, retlen 0x10000 + iptables: Bad rule (does a matching rule exist in that chain?). + spiflash_ioctl_read, Read from 0x003e0000 length 0x10000, ret 0, retlen 0x10000 + . + spiflash_ioctl_erase, erase to 0x003f0000 length 0x0, nerase done + spiflash_ioctl_write, Write to 0x003e0000 length 0x10000, ret 0, retlen 0x10000 - Primary investigation showed that some user validation was being performed on the inputs, notably the SSID and Password had their individual characters escaped. + Primary investigation showed that some user validation was being performed on the inputs, notably the SSID and Password had their individual characters escaped. - Further investigation to be performed by using the function names to trace back and reverse engineering the firmware. + Further investigation to be performed by using the function names to trace back and reverse engineering the firmware. - Firmware Extraction and Analysis - Firmware Extraction from onboard ROM - From the previous recon, it was confirmed that the flash ROM on the board (EN25Q32B-104HIP) was using SPI to communicate with the processor, to confirm this a logic analyzer was attached to the pins of the ROM using test clips. + Firmware Extraction and Analysis + Firmware Extraction from onboard ROM + From the previous recon, it was confirmed that the flash ROM on the board (EN25Q32B-104HIP) was using SPI to communicate with the processor, to confirm this a logic analyzer was attached to the pins of the ROM using test clips. - The initial boot process was captured as this process contains many reads from the processor to the flash ROM. The logic analyzer confirmed the SPI function of the flash ROM matched that of the datasheet. + The initial boot process was captured as this process contains many reads from the processor to the flash ROM. The logic analyzer confirmed the SPI function of the flash ROM matched that of the datasheet. - After confirming the SPI flash functioned as expected a ch341a flash programmer was connected to the flash ROM as per the data sheet pinout in order to read the entire contents of the flash ROM. + After confirming the SPI flash functioned as expected a ch341a flash programmer was connected to the flash ROM as per the data sheet pinout in order to read the entire contents of the flash ROM. - The firmware was then extracted from the ROM using flashrom and the following command: + The firmware was then extracted from the ROM using flashrom and the following command: - flashrom -p ch341a_spi -r tp_link_wr841n_ext.bin + flashrom -p ch341a_spi -r tp_link_wr841n_ext.bin - Firmware Analysis - To confirm the firmware extraction was successful an initial analysis was performed on it using binwalk with the following command: + Firmware Analysis + To confirm the firmware extraction was successful an initial analysis was performed on it using binwalk with the following command: - binwalk tp_link_wr841n_ext.bin + binwalk tp_link_wr841n_ext.bin - The initial analysis by binwalk showed that the extraction appeared to be successful as it was able to pickout three partitions on the firwmare that very closely matched the partition table that was previously observed during bootup. + The initial analysis by binwalk showed that the extraction appeared to be successful as it was able to pickout three partitions on the firwmare that very closely matched the partition table that was previously observed during bootup. - As an additional confirmation, the entropy of the file was analyzed using binwalk. + As an additional confirmation, the entropy of the file was analyzed using binwalk. - binwalk -E tp_link_wr841n_ext.bin + binwalk -E tp_link_wr841n_ext.bin - The entropy confirmed the layout of the firmware matched what was expected on the ROM. The first partition was clearly the unencrypted/uncompressed bootloader as the entropy was floating around 0.5. + The entropy confirmed the layout of the firmware matched what was expected on the ROM. The first partition was clearly the unencrypted/uncompressed bootloader as the entropy was floating around 0.5. - The second partition matched the starting address location and length of the kernel. The entropy being around a solid 1 confirms that it is LZMA compressed as was shown by binwalk. + The second partition matched the starting address location and length of the kernel. The entropy being around a solid 1 confirms that it is LZMA compressed as was shown by binwalk. - The third partition also matched the starting address location and length of the root file system, in addition the entropy shows that it is in fact compressed as well. + The third partition also matched the starting address location and length of the root file system, in addition the entropy shows that it is in fact compressed as well. - An additional partition or section of data is visible in the entropy analysis that binwalk was not able to identify previously, this most likely indicates an encrypted section. + An additional partition or section of data is visible in the entropy analysis that binwalk was not able to identify previously, this most likely indicates an encrypted section. - Binwalk was then used to automatically extract the contents of the firmware. + Binwalk was then used to automatically extract the contents of the firmware. - binwalk -e tp_link_wr841n_ext.bin + binwalk -e tp_link_wr841n_ext.bin - The automatic extraction by binwalk was able to carve out the LZMA compressed kernel and squashfs filesystem and then automatically decompress both of the files. + The automatic extraction by binwalk was able to carve out the LZMA compressed kernel and squashfs filesystem and then automatically decompress both of the files. - As binwalk was not able to automatically extract the bootloader it was extracted manually using dd. + As binwalk was not able to automatically extract the bootloader it was extracted manually using dd. - dd if=tp_link_ext.bin bs=1 skip=53536 count=12512 of=u_boot.bin + dd if=tp_link_ext.bin bs=1 skip=53536 count=12512 of=u_boot.bin - After extracting the root file system the contents of it were enumerated which revealed multiple binaries and shared object files that may be of interest to reverse engineer. In addition, two config files called default_config.xml and reduced_data_model.xml were located however these config files appear to be encrypted. + After extracting the root file system the contents of it were enumerated which revealed multiple binaries and shared object files that may be of interest to reverse engineer. In addition, two config files called default_config.xml and reduced_data_model.xml were located however these config files appear to be encrypted. - Strings was then used to identify any binaries or shared object files that had the above xml file names as strings in them to identify which files to reverse engineer in an attempt to decrypt them. + Strings was then used to identify any binaries or shared object files that had the above xml file names as strings in them to identify which files to reverse engineer in an attempt to decrypt them. - strings -f * | grep ".xml" + strings -f * | grep ".xml" - This revealed that the libcmm.so shared object file had both the xml file names as strings in it. + This revealed that the libcmm.so shared object file had both the xml file names as strings in it. - Locating the Decryption Algorithm and Key - The libcmm.so was loaded in Ghidra and decompiled in an attempt to reverse engineer the encryption/decryption of the xml files. + Locating the Decryption Algorithm and Key + The libcmm.so was loaded in Ghidra and decompiled in an attempt to reverse engineer the encryption/decryption of the xml files. - Running a search for "decrypt" in Ghidra revealed a function called "dm_decryptFile" that was then investigated further. + Running a search for "decrypt" in Ghidra revealed a function called "dm_decryptFile" that was then investigated further. - Upon initial inspection of the decompiled, based on the error messaging this appeared to be the correct function to decrypt the config files. + Upon initial inspection of the decompiled, based on the error messaging this appeared to be the correct function to decrypt the config files. - Some variables were renamed based on guesses of their function based on the decompiled code. + Some variables were renamed based on guesses of their function based on the decompiled code. - int dm_decryptFile(uint dm_file_size,undefined4 param_2,uint dec_buf_size,int param_4) + int dm_decryptFile(uint dm_file_size,undefined4 param_2,uint dec_buf_size,int param_4) - { - int iVar1; - int iVar2; - char enc_key [8]; - - memcpy(enc_key,&DAT_000c9f70,8); - if (dec_buf_size < dm_file_size) { - cdbg_printf(8,"dm_decryptFile",0xbcf, - "Buffer exceeded, decrypt buf size is %u, but dm file size is %u",dec_buf_size, - dm_file_size); - iVar2 = 0; - } - else { - iVar2 = cen_desMinDo(param_2,dm_file_size,param_4,dec_buf_size,enc_key,0); - iVar1 = iVar2; - if (iVar2 == 0) { - cdbg_printf(8,"dm_decryptFile",0xbd6,"DES decrypt error\n"); + { + int iVar1; + int iVar2; + char enc_key [8]; + + memcpy(enc_key,&DAT_000c9f70,8); + if (dec_buf_size < dm_file_size) { + cdbg_printf(8,"dm_decryptFile",0xbcf, + "Buffer exceeded, decrypt buf size is %u, but dm file size is %u",dec_buf_size, + dm_file_size); + iVar2 = 0; } else { - do { - iVar2 = iVar1; - if (((undefined *)(param_4 + iVar2))[-1] != '\0') break; - iVar1 = iVar2 + -1; - } while (iVar2 != 0); - *(undefined *)(param_4 + iVar2) = 0; + iVar2 = cen_desMinDo(param_2,dm_file_size,param_4,dec_buf_size,enc_key,0); + iVar1 = iVar2; + if (iVar2 == 0) { + cdbg_printf(8,"dm_decryptFile",0xbd6,"DES decrypt error\n"); + } + else { + do { + iVar2 = iVar1; + if (((undefined *)(param_4 + iVar2))[-1] != '\0') break; + iVar1 = iVar2 + -1; + } while (iVar2 != 0); + *(undefined *)(param_4 + iVar2) = 0; + } } - } - return iVar2; + return iVar2; - Reverse engineering of the function revealed that based on the error messaging and the cen_desMinDo() function the encryption algorithm appears to be DES. Further research on the DES algorithm reveals that it uses 64-bit (8 x 8 bytes) keys. An array of 8 chars was noted to be created at the start of the function and then memcpy is later used to copy 8 bytes into it from a data location in the .data section of the shared object file. Inspecting the data location revealed what appears to be the DES encryption key. As DES is a symmetric encryption algorithm it can also be used for decryption. + Reverse engineering of the function revealed that based on the error messaging and the cen_desMinDo() function the encryption algorithm appears to be DES. Further research on the DES algorithm reveals that it uses 64-bit (8 x 8 bytes) keys. An array of 8 chars was noted to be created at the start of the function and then memcpy is later used to copy 8 bytes into it from a data location in the .data section of the shared object file. Inspecting the data location revealed what appears to be the DES encryption key. As DES is a symmetric encryption algorithm it can also be used for decryption. - DES Encryption Key: 478DA50FF9E3D2CB + DES Encryption Key: 478DA50FF9E3D2CB - The default_config.xml file was then decrypted using OpenSSL and the above key. + The default_config.xml file was then decrypted using OpenSSL and the above key. - openssl enc -d -des-ecb -K 478DA50FF9E3D2CB -nopad -in default_config.xml + openssl enc -d -des-ecb -K 478DA50FF9E3D2CB -nopad -in default_config.xml - Unfortunately, this config file did not contain any notable details. + Unfortunately, this config file did not contain any notable details. - The reduced_data_model.xml config file was then decrypted making use of Cyberchef (https://cyberchef.io/). + The reduced_data_model.xml config file was then decrypted making use of Cyberchef (https://cyberchef.io/). - It also did not contain any notable details but confirmed that it was using the same encryption key and scheme as the previous xml file. + It also did not contain any notable details but confirmed that it was using the same encryption key and scheme as the previous xml file. - Checking for command injection - Based on the previous testing performed on the web portal and reviewing the console logging in UART it appears that some of the functions of the router are being performed by making system calls to execute bash commands. More specifically it appears that some of these system calls are being passed user supplied inputs from the web portal. + Checking for command injection + Based on the previous testing performed on the web portal and reviewing the console logging in UART it appears that some of the functions of the router are being performed by making system calls to execute bash commands. More specifically it appears that some of these system calls are being passed user supplied inputs from the web portal. - Initial recon showed that some of the user supplied inputs were at a minimum being escaped as individual characters to prevent command injection, however use of system calls on user supplied inputs can lead to command injection. + Initial recon showed that some of the user supplied inputs were at a minimum being escaped as individual characters to prevent command injection, however use of system calls on user supplied inputs can lead to command injection. - The util_execSystem function which appeared to be the one performing the system calls was located to be part of the libcmm.so shared object file by using strings to search for it through the binaries and other shared object files. + The util_execSystem function which appeared to be the one performing the system calls was located to be part of the libcmm.so shared object file by using strings to search for it through the binaries and other shared object files. - strings -f * | grep "util_execSystem" + strings -f * | grep "util_execSystem" - The util_execSystem function was then found via a program text search in Ghidra using the previously decompiled libcmm.so that was investigated above. + The util_execSystem function was then found via a program text search in Ghidra using the previously decompiled libcmm.so that was investigated above. - int util_execSystem(int cmd_id,char *unformat_string,undefined4 str_format_var_1, - undefined4 str_format_var_2) + int util_execSystem(int cmd_id,char *unformat_string,undefined4 str_format_var_1, + undefined4 str_format_var_2) - { - char *pcVar1; - __pid_t _Var2; - uint uVar3; - undefined4 uVar4; - int iVar5; - int iVar6; - undefined4 va_ptr_format_var; - undefined4 va_end_format_var; - uint local_234; - char cmd_string [512]; - int local_30; - char *cmd_string_ptr; - - cmd_string_ptr = cmd_string; - local_234 = 0; - va_ptr_format_var = str_format_var_1; - va_end_format_var = str_format_var_2; - memset(cmd_string_ptr,0,0x200); - local_30 = vsnprintf(cmd_string_ptr,0x1ff,unformat_string,&va_ptr_format_var); - cdbg_printf(8,"util_execSystem",0xb9,"%s cmd is \"%s\"\n",cmd_id,cmd_string_ptr); - iVar5 = 1; - if (0 < local_30) { - while( true ) { - local_234 = system(cmd_string); - uVar3 = local_234 & 0x7f; - if ((int)local_234 < 0) { - if (local_234 == 0xffffffff) { - cdbg_printf(8,"util_execSystem",0xcd,"system fork failed.",cmd_id,cmd_string_ptr); - } - else { - perror("util_execSystem call error:"); - } - } - else if (uVar3 == 0) { - iVar6 = (int)(local_234 & 0xff00) >> 8; - if (iVar6 == 0) { - return 0; - } - if (iVar6 != 4) { - return iVar6; - } - pcVar1 = strstr(cmd_string,"iptable"); - if (pcVar1 == (char *)0x0) { - return 4; - } - sleep(1); - } - else { - if ((int)((uVar3 + 1) * 0x1000000) >> 0x19 < 1) { - if ((local_234 & 0xff) == 0x7f) { - uVar4 = 0xe6; - pcVar1 = "process stopped, signal number = %d\n"; - uVar3 = (int)(local_234 & 0xff00) >> 8; - } - else { - uVar4 = 0xe8; - pcVar1 = "Oh,no possible here. status = %d\n"; - uVar3 = local_234; + { + char *pcVar1; + __pid_t _Var2; + uint uVar3; + undefined4 uVar4; + int iVar5; + int iVar6; + undefined4 va_ptr_format_var; + undefined4 va_end_format_var; + uint local_234; + char cmd_string [512]; + int local_30; + char *cmd_string_ptr; + + cmd_string_ptr = cmd_string; + local_234 = 0; + va_ptr_format_var = str_format_var_1; + va_end_format_var = str_format_var_2; + memset(cmd_string_ptr,0,0x200); + local_30 = vsnprintf(cmd_string_ptr,0x1ff,unformat_string,&va_ptr_format_var); + cdbg_printf(8,"util_execSystem",0xb9,"%s cmd is \"%s\"\n",cmd_id,cmd_string_ptr); + iVar5 = 1; + if (0 < local_30) { + while( true ) { + local_234 = system(cmd_string); + uVar3 = local_234 & 0x7f; + if ((int)local_234 < 0) { + if (local_234 == 0xffffffff) { + cdbg_printf(8,"util_execSystem",0xcd,"system fork failed.",cmd_id,cmd_string_ptr); + } + else { + perror("util_execSystem call error:"); + } } + else if (uVar3 == 0) { + iVar6 = (int)(local_234 & 0xff00) >> 8; + if (iVar6 == 0) { + return 0; + } + if (iVar6 != 4) { + return iVar6; + } + pcVar1 = strstr(cmd_string,"iptable"); + if (pcVar1 == (char *)0x0) { + return 4; + } + sleep(1); } else { - uVar4 = 0xe4; - pcVar1 = "abnormal termination, signal number = %d\n"; + if ((int)((uVar3 + 1) * 0x1000000) >> 0x19 < 1) { + if ((local_234 & 0xff) == 0x7f) { + uVar4 = 0xe6; + pcVar1 = "process stopped, signal number = %d\n"; + uVar3 = (int)(local_234 & 0xff00) >> 8; + } + else { + uVar4 = 0xe8; + pcVar1 = "Oh,no possible here. status = %d\n"; + uVar3 = local_234; + } + } + else { + uVar4 = 0xe4; + pcVar1 = "abnormal termination, signal number = %d\n"; + } + cdbg_printf(8,"util_execSystem",uVar4,pcVar1,uVar3,cmd_string_ptr); + while (_Var2 = waitpid(-1,(int *)&local_234,1), 0 < _Var2) { + cdbg_printf(8,"util_execSystem",0xee,"get a zombie process %d",_Var2); + } } - cdbg_printf(8,"util_execSystem",uVar4,pcVar1,uVar3,cmd_string_ptr); - while (_Var2 = waitpid(-1,(int *)&local_234,1), 0 < _Var2) { - cdbg_printf(8,"util_execSystem",0xee,"get a zombie process %d",_Var2); + if (iVar5 == 3) break; + cmd_id = iVar5; + cdbg_printf(8,"util_execSystem",199,"system execute again, and %d times",iVar5); + iVar5 = iVar5 + 1; } } - if (iVar5 == 3) break; - cmd_id = iVar5; - cdbg_printf(8,"util_execSystem",199,"system execute again, and %d times",iVar5); - iVar5 = iVar5 + 1; + return -1; } - } - return -1; - } - A review of the decompiled source code revealed that the function was in fact making system calls. The only formatting being performed on the inputs to the function which were passed to the system call was to format the specified arguments into the command string using the vsnprintf function. No further validation appeared to be performed in the util_execSystem function on the string created which would then be passed into the system call. This finding demonstrates that all validation or checking of user inputs for things like command injection characters or escaping characters must be done by whatever calls the util_execSystem. + A review of the decompiled source code revealed that the function was in fact making system calls. The only formatting being performed on the inputs to the function which were passed to the system call was to format the specified arguments into the command string using the vsnprintf function. No further validation appeared to be performed in the util_execSystem function on the string created which would then be passed into the system call. This finding demonstrates that all validation or checking of user inputs for things like command injection characters or escaping characters must be done by whatever calls the util_execSystem. - Previously the Wireless Setup was run and the user-specified SSID and PSK were passed onto the util_execSystem however the debugging messages shown in the UART console logs showed that the user specified values had each individual character escaped by single quotation marks. This is done to prevent command injection as any characters such as ";" or "&" will only be interpreted as a string and not as part of the command. + Previously the Wireless Setup was run and the user-specified SSID and PSK were passed onto the util_execSystem however the debugging messages shown in the UART console logs showed that the user specified values had each individual character escaped by single quotation marks. This is done to prevent command injection as any characters such as ";" or "&" will only be interpreted as a string and not as part of the command. - Further investigation was done to see how this escaping was performed. In order to locate the file or binary that was making the specific util_execSystem call that was printing the debug message seen earlier strings and grep were used to search for words in the string (keeping in mind the formatting of the input string performed by the util_execSystem function itself. The string used that matched the formatting previously seen in the util_execSystem function was found again in the libcmm.so shared object. + Further investigation was done to see how this escaping was performed. In order to locate the file or binary that was making the specific util_execSystem call that was printing the debug message seen earlier strings and grep were used to search for words in the string (keeping in mind the formatting of the input string performed by the util_execSystem function itself. The string used that matched the formatting previously seen in the util_execSystem function was found again in the libcmm.so shared object. - Searching for the string making use of the strings search in Ghidra led to the function that appeared to be calling util_execSystem to update the SSID when the wireless setup was being performed in the previous test. + Searching for the string making use of the strings search in Ghidra led to the function that appeared to be calling util_execSystem to update the SSID when the wireless setup was being performed in the previous test. - The string had 9 references to it in the rest of the libcmm.so, following the first external reference luckily led to the correct function that was performing the util_execSystem call from the previous wireless setup test. Unfortunately, this function had its label (name) removed in the compilation process and as such Ghidra added the generic FUN_XXXX label to it. + The string had 9 references to it in the rest of the libcmm.so, following the first external reference luckily led to the correct function that was performing the util_execSystem call from the previous wireless setup test. Unfortunately, this function had its label (name) removed in the compilation process and as such Ghidra added the generic FUN_XXXX label to it. - int FUN_000aa1e8(int param_1,undefined4 param_2,char *param_3,int param_4,undefined4 unsan_ssid) + int FUN_000aa1e8(int param_1,undefined4 param_2,char *param_3,int param_4,undefined4 unsan_ssid) - { - int iVar1; - undefined4 uVar2; - char *pcVar3; - int local_1c0; - int local_1bc; - char acStack_1b8 [12]; - char acStack_1ac [20]; - undefined auStack_198 [32]; - undefined auStack_178 [32]; - undefined SSID [100]; - undefined auStack_f4 [196]; - char *local_30; - - local_1bc = 1; - local_1c0 = 1; - cstr_strncpy(auStack_178,&DAT_000c1e4c,0xc); - cstr_strncpy(auStack_198,&DAT_000c302c,4); - iVar1 = oal_wlan_getSecMode(param_1,&local_1bc,&local_1c0); - if (iVar1 == 0) { - if (local_1bc - 1U < 0xb) { - /* WARNING: Could not find normalized switch variable to match jumptable */ - /* WARNING: This code block may not be properly labeled as switch case */ - strcpy(acStack_1ac,"OPEN"); - } - uVar2 = 2; - if (local_1c0 - 1U < 5) { - /* WARNING: Could not find normalized switch variable to match jumptable */ - /* WARNING: This code block may not be properly labeled as switch case */ - uVar2 = 2; - strcpy(acStack_1b8,"NONE"); - } - else if (local_1c0 == 2) { - uVar2 = *(undefined4 *)(param_1 + 0x17c); - } - iVar1 = strcmp("Up",param_3); - if (iVar1 != 0) { - return 0; - } - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set AuthMode=%s",param_2,acStack_1ac); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set EncrypType=%s",param_2,acStack_1b8); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set IEEE8021X=0",param_2); - if (local_1c0 == 2) { - if (*(char *)(param_1 + 0x180) != '\0') { - FUN_000aa13c(auStack_f4,param_1 + 0x180); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set Key1=%s",param_2,auStack_f4); - } - if (*(char *)(param_1 + 0x210) != '\0') { - FUN_000aa13c(auStack_f4,param_1 + 0x210); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set Key2=%s",param_2,auStack_f4); - } - if (*(char *)(param_1 + 0x2a0) != '\0') { - FUN_000aa13c(auStack_f4,param_1 + 0x2a0); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set Key3=%s",param_2,auStack_f4); - } - if (*(char *)(param_1 + 0x330) != '\0') { - FUN_000aa13c(auStack_f4,param_1 + 0x330); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set Key4=%s",param_2,auStack_f4); - } - } - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set DefaultKeyID=%d",param_2,uVar2); - if (local_1c0 - 1U < 2) { - return 0; - } - FUN_000aa13c(SSID,unsan_ssid); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set SSID=%s",param_2,SSID); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set RekeyInterval=%d",param_2, - *(undefined4 *)(param_1 + 0xf0)); - if ((((local_1bc - 6U < 2) || (local_1bc == 9)) || (local_1bc == 10)) || (local_1bc == 0xb)) { - FUN_000aa13c(auStack_f4,param_1 + 0xae); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set WPAPSK=%s",param_2,auStack_f4); - return 0; - } - iVar1 = oal_wlan_getBrNamebyIfName(param_4,param_4,auStack_198); + { + int iVar1; + undefined4 uVar2; + char *pcVar3; + int local_1c0; + int local_1bc; + char acStack_1b8 [12]; + char acStack_1ac [20]; + undefined auStack_198 [32]; + undefined auStack_178 [32]; + undefined SSID [100]; + undefined auStack_f4 [196]; + char *local_30; + + local_1bc = 1; + local_1c0 = 1; + cstr_strncpy(auStack_178,&DAT_000c1e4c,0xc); + cstr_strncpy(auStack_198,&DAT_000c302c,4); + iVar1 = oal_wlan_getSecMode(param_1,&local_1bc,&local_1c0); if (iVar1 == 0) { - iVar1 = oal_wlan_getIfAddr(auStack_198,auStack_178); - if (iVar1 == 0) { - local_30 = "bObj"; - iVar1 = strcmp("2.4GHz",(char *)(param_4 + 1099)); - if (iVar1 == 0) { - pcVar3 = "killall -q -SIGINT rt2860apd"; + if (local_1bc - 1U < 0xb) { + /* WARNING: Could not find normalized switch variable to match jumptable */ + /* WARNING: This code block may not be properly labeled as switch case */ + strcpy(acStack_1ac,"OPEN"); } - else { - pcVar3 = "killall -q -SIGINT rtinicapd"; + uVar2 = 2; + if (local_1c0 - 1U < 5) { + /* WARNING: Could not find normalized switch variable to match jumptable */ + /* WARNING: This code block may not be properly labeled as switch case */ + uVar2 = 2; + strcpy(acStack_1b8,"NONE"); + } + else if (local_1c0 == 2) { + uVar2 = *(undefined4 *)(param_1 + 0x17c); + } + iVar1 = strcmp("Up",param_3); + if (iVar1 != 0) { + return 0; } - util_execSystem("oal_wlan_ra_setSec",pcVar3); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set AuthMode=%s",param_2,acStack_1ac); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set EncrypType=%s",param_2,acStack_1b8); util_execSystem("oal_wlan_ra_setSec","iwpriv %s set IEEE8021X=0",param_2); + if (local_1c0 == 2) { + if (*(char *)(param_1 + 0x180) != '\0') { + FUN_000aa13c(auStack_f4,param_1 + 0x180); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set Key1=%s",param_2,auStack_f4); + } + if (*(char *)(param_1 + 0x210) != '\0') { + FUN_000aa13c(auStack_f4,param_1 + 0x210); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set Key2=%s",param_2,auStack_f4); + } + if (*(char *)(param_1 + 0x2a0) != '\0') { + FUN_000aa13c(auStack_f4,param_1 + 0x2a0); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set Key3=%s",param_2,auStack_f4); + } + if (*(char *)(param_1 + 0x330) != '\0') { + FUN_000aa13c(auStack_f4,param_1 + 0x330); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set Key4=%s",param_2,auStack_f4); + } + } + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set DefaultKeyID=%d",param_2,uVar2); + if (local_1c0 - 1U < 2) { + return 0; + } + FUN_000aa13c(SSID,unsan_ssid); util_execSystem("oal_wlan_ra_setSec","iwpriv %s set SSID=%s",param_2,SSID); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set RADIUS_Server=%s",param_2,param_1 + 0xf4 - ); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set RADIUS_Port=%d",param_2, - *(undefined4 *)(param_1 + 0x134)); - FUN_000aa13c(auStack_f4,param_1 + 0x138); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set RADIUS_Key=%s",param_2,auStack_f4); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set EAPifname=%s",param_2,auStack_198); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set own_ip_addr=%s",param_2,auStack_178); - util_execSystem("oal_wlan_ra_setSec","iwpriv %s set SSID=%s",param_2,SSID); - sleep(4); - iVar1 = strcmp("2.4GHz",(char *)(param_4 + 1099)); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set RekeyInterval=%d",param_2, + *(undefined4 *)(param_1 + 0xf0)); + if ((((local_1bc - 6U < 2) || (local_1bc == 9)) || (local_1bc == 10)) || (local_1bc == 0xb)) { + FUN_000aa13c(auStack_f4,param_1 + 0xae); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set WPAPSK=%s",param_2,auStack_f4); + return 0; + } + iVar1 = oal_wlan_getBrNamebyIfName(param_4,param_4,auStack_198); if (iVar1 == 0) { - pcVar3 = "rt2860apd &"; + iVar1 = oal_wlan_getIfAddr(auStack_198,auStack_178); + if (iVar1 == 0) { + local_30 = "bObj"; + iVar1 = strcmp("2.4GHz",(char *)(param_4 + 1099)); + if (iVar1 == 0) { + pcVar3 = "killall -q -SIGINT rt2860apd"; + } + else { + pcVar3 = "killall -q -SIGINT rtinicapd"; + } + util_execSystem("oal_wlan_ra_setSec",pcVar3); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set IEEE8021X=0",param_2); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set SSID=%s",param_2,SSID); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set RADIUS_Server=%s",param_2,param_1 + 0xf4 + ); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set RADIUS_Port=%d",param_2, + *(undefined4 *)(param_1 + 0x134)); + FUN_000aa13c(auStack_f4,param_1 + 0x138); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set RADIUS_Key=%s",param_2,auStack_f4); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set EAPifname=%s",param_2,auStack_198); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set own_ip_addr=%s",param_2,auStack_178); + util_execSystem("oal_wlan_ra_setSec","iwpriv %s set SSID=%s",param_2,SSID); + sleep(4); + iVar1 = strcmp("2.4GHz",(char *)(param_4 + 1099)); + if (iVar1 == 0) { + pcVar3 = "rt2860apd &"; + } + else { + pcVar3 = "rtinicapd &"; + } + util_execSystem("oal_wlan_ra_setSec",pcVar3); + return 0; + } + uVar2 = 0xbb2; } else { - pcVar3 = "rtinicapd &"; + uVar2 = 0xbad; } - util_execSystem("oal_wlan_ra_setSec",pcVar3); - return 0; - } - uVar2 = 0xbb2; } else { - uVar2 = 0xbad; + uVar2 = 0xb10; + } + cdbg_perror("oal_wlan_ra_setSec",uVar2,iVar1); + return iVar1; } - } - else { - uVar2 = 0xb10; - } - cdbg_perror("oal_wlan_ra_setSec",uVar2,iVar1); - return iVar1; - } - The util_execSystem function call in reference was located using the specific formatting string "iwpriv %s set SSID=%s" that was previously found. + The util_execSystem function call in reference was located using the specific formatting string "iwpriv %s set SSID=%s" that was previously found. - The parameters being passed into the function lined up with what was expected from the investigation of the util_execSystem function. The last parameter was clearly the SSID, searching through the rest of the function for more references to the SSID variable showed that above the util_execSystem call in question another function "FUN_000aa13c" was called and passed the SSID variable. + The parameters being passed into the function lined up with what was expected from the investigation of the util_execSystem function. The last parameter was clearly the SSID, searching through the rest of the function for more references to the SSID variable showed that above the util_execSystem call in question another function "FUN_000aa13c" was called and passed the SSID variable. - Following the function in libcmm.so showed that the function was responsible for performing the character escaping on the SSID. + Following the function in libcmm.so showed that the function was responsible for performing the character escaping on the SSID. - void FUN_000aa13c(int param_1,char *param_2) + void FUN_000aa13c(int param_1,char *param_2) - { - char cVar1; - size_t sVar2; - undefined *puVar3; - int iVar4; - int iVar5; - - sVar2 = strlen(param_2); - iVar4 = 0; - for (iVar5 = 0; puVar3 = (undefined *)(param_1 + iVar4), iVar5 < (int)sVar2; iVar5 = iVar5 + 1) { - if (*param_2 == '\'') { - *puVar3 = 0x5c; - iVar4 = iVar4 + 2; - puVar3[1] = *param_2; + { + char cVar1; + size_t sVar2; + undefined *puVar3; + int iVar4; + int iVar5; + + sVar2 = strlen(param_2); + iVar4 = 0; + for (iVar5 = 0; puVar3 = (undefined *)(param_1 + iVar4), iVar5 < (int)sVar2; iVar5 = iVar5 + 1) { + if (*param_2 == '\'') { + *puVar3 = 0x5c; + iVar4 = iVar4 + 2; + puVar3[1] = *param_2; + } + else { + *puVar3 = 0x27; + cVar1 = *param_2; + iVar4 = iVar4 + 3; + puVar3[2] = 0x27; + puVar3[1] = cVar1; + } + param_2 = param_2 + 1; } - else { - *puVar3 = 0x27; - cVar1 = *param_2; - iVar4 = iVar4 + 3; - puVar3[2] = 0x27; - puVar3[1] = cVar1; + *puVar3 = 0; + return; } - param_2 = param_2 + 1; - } - *puVar3 = 0; - return; - } - A review of the function indicated that it iterated over the unsanitized SSID and performed individual character escaping by first checking if the character was already a single quote and if it was adding the c escape character "" in front of it. It then padded each individual character by shifting a single quotation "'" in front of and behind each character. + A review of the function indicated that it iterated over the unsanitized SSID and performed individual character escaping by first checking if the character was already a single quote and if it was adding the c escape character "" in front of it. It then padded each individual character by shifting a single quotation "'" in front of and behind each character. - This function was also called prior to the util_execSystem call that used the PSK specified by the user. + This function was also called prior to the util_execSystem call that used the PSK specified by the user. - The character escaping appears to be properly implemented so this specific call of the util_execSystem does not appear vulnerable to command injection, however, Ghidra noted that there are 510 references to the function inside the libcmm.so file. Upon initial inspection, many of these appear to be other functions that are calling util_execSystem. These functions should be reviewed to check if there is any way to pass unsanitized user inputs into the util_execSystem function. + The character escaping appears to be properly implemented so this specific call of the util_execSystem does not appear vulnerable to command injection, however, Ghidra noted that there are 510 references to the function inside the libcmm.so file. Upon initial inspection, many of these appear to be other functions that are calling util_execSystem. These functions should be reviewed to check if there is any way to pass unsanitized user inputs into the util_execSystem function. + !!! warning "" + + ## Section 1 - Electrical Engineering For Hackers 101 - ## Section 1 - Electrical Engineering For Hackers 101 + ### What is Electricity - ### What is Electricity + Nucleus is at the center of the Atom and is made up of + - Proton (Positive charge) + - Neutron (No charge) + - Electron (Negative charge). much lighter and is around the Nucleus - Nucleus is at the center of the Atom and is made up of - - Proton (Positive charge) - - Neutron (No charge) - - Electron (Negative charge). much lighter and is around the Nucleus + Electrons flow from a negative electrode to a positive electrode as a result of a potential difference between them. - Electrons flow from a negative electrode to a positive electrode as a result of a potential difference between them. + ### Electrical Engineering Fundamentals: Schematics, Voltage Source, Resistors and Ohm's Law - ### Electrical Engineering Fundamentals: Schematics, Voltage Source, Resistors and Ohm's Law + - Schematics: + - Visual representation of a Circuit. + - Current: + - Series Circuit: + - All components are connected end-to-end, forming a single path for current flow. + - Current remains at the same value through out a circuit. + - ![alt text](image-3.png) + - [ohms-law calculator](https://www.allaboutcircuits.com/tools/ohms-law-calculator/) + - Parallel Circuit: + - All components are connected across each other, forming exactly two sets of electrically common points. + - Each individual path is called a Branch + - ![alt text](image-4.png) + - [parallel-resistance calculator](https://www.allaboutcircuits.com/tools/parallel-resistance-calculator/) + - voltage: + - Series Circuit: + - Drops across resistor(s). + - Parallel Circuit: + - Remains constant across a circuit. + - Resistor: + - Electrical Power is absorbed by a resistance as it is the product of voltage and current with some resistances converting this power into heat. + - Resistors Wattage Rating and is defined as the amount of heat that a resistive element can dissipate for an indefinite period of time without degrading its performance. + - [Resistor color code calculator](https://www.allaboutcircuits.com/tools/resistor-color-code-calculator/) + + ![alt text](Schematics-3.png) - - Schematics: - - Visual representation of a Circuit. - - Current: - - Series Circuit: - - All components are connected end-to-end, forming a single path for current flow. - - Current remains at the same value through out a circuit. - - ![alt text](image-3.png) - - [ohms-law calculator](https://www.allaboutcircuits.com/tools/ohms-law-calculator/) - - Parallel Circuit: - - All components are connected across each other, forming exactly two sets of electrically common points. - - Each individual path is called a Branch - - ![alt text](image-4.png) - - [parallel-resistance calculator](https://www.allaboutcircuits.com/tools/parallel-resistance-calculator/) - - voltage: - - Series Circuit: - - Drops across resistor(s). - - Parallel Circuit: - - Remains constant across a circuit. - - Resistor: - - Electrical Power is absorbed by a resistance as it is the product of voltage and current with some resistances converting this power into heat. - - Resistors Wattage Rating and is defined as the amount of heat that a resistive element can dissipate for an indefinite period of time without degrading its performance. - - [Resistor color code calculator](https://www.allaboutcircuits.com/tools/resistor-color-code-calculator/) - - ![alt text](Schematics-3.png) + #### Standard Electrical Units of Measure - #### Standard Electrical Units of Measure + |Electrical Parameter |Measuring Unit |Symbol| Description| X | + |:-|:-|:-|:-|:-| + |Voltage |Volt |V or E| Unit of Electrical Potential V = I × R|Pressure that triggers electron flow| + |Current |Ampere |I or i| Unit of Electrical Current I = V ÷ R|Rate of electron flow, I = intensity| + |Resistance |Ohm |R or Ω| Unit of DC Resistance R = V ÷ I|Flow inhibitor, Ω = Greek letter omega| + |Conductance |Siemen |G or ℧| Reciprocal of Resistance G = 1 ÷ R|| + |Capacitance |Farad |C| Unit of Capacitance C = Q ÷ V|| + |Charge |Coulomb |Q| Unit of Electrical Charge Q = C × V|| + |Inductance |Henry |L or H| Unit of Inductance VL = -L(di/dt)|| + |Power |Watts |W| Unit of Power P = V × I or I2 × R|| + |Impedance |Ohm |Z| Unit of AC Resistance Z2 = R2 + X2|| + |Frequency |Hertz |Hz| Unit of Frequency ƒ = 1 ÷ T|| - |Electrical Parameter |Measuring Unit |Symbol| Description| X | - |:-|:-|:-|:-|:-| - |Voltage |Volt |V or E| Unit of Electrical Potential V = I × R|Pressure that triggers electron flow| - |Current |Ampere |I or i| Unit of Electrical Current I = V ÷ R|Rate of electron flow, I = intensity| - |Resistance |Ohm |R or Ω| Unit of DC Resistance R = V ÷ I|Flow inhibitor, Ω = Greek letter omega| - |Conductance |Siemen |G or ℧| Reciprocal of Resistance G = 1 ÷ R|| - |Capacitance |Farad |C| Unit of Capacitance C = Q ÷ V|| - |Charge |Coulomb |Q| Unit of Electrical Charge Q = C × V|| - |Inductance |Henry |L or H| Unit of Inductance VL = -L(di/dt)|| - |Power |Watts |W| Unit of Power P = V × I or I2 × R|| - |Impedance |Ohm |Z| Unit of AC Resistance Z2 = R2 + X2|| - |Frequency |Hertz |Hz| Unit of Frequency ƒ = 1 ÷ T|| + **1kV** = 1 kilo-volt – which is equal to 1,000 Volts. + **1mA** = 1 milli-amp – which is equal to one thousandths (1/1000) of an Ampere. + **47kΩ** = 47 kilo-ohms – which is equal to 47 thousand Ohms. + **100uF** = 100 micro-farads – which is equal to 100 millionths (100/1,000,000) of a Farad. + **1kW** = 1 kilo-watt – which is equal to 1,000 Watts. + **1MHz** = 1 mega-hertz – which is equal to one million Hertz. - **1kV** = 1 kilo-volt – which is equal to 1,000 Volts. - **1mA** = 1 milli-amp – which is equal to one thousandths (1/1000) of an Ampere. - **47kΩ** = 47 kilo-ohms – which is equal to 47 thousand Ohms. - **100uF** = 100 micro-farads – which is equal to 100 millionths (100/1,000,000) of a Farad. - **1kW** = 1 kilo-watt – which is equal to 1,000 Watts. - **1MHz** = 1 mega-hertz – which is equal to one million Hertz. + #### ohms law + Voltage (E in Volts) = Current (I in Amps A) *X* Resistance (R in Ohms Ω) + V = I * R - #### ohms law - Voltage (E in Volts) = Current (I in Amps A) *X* Resistance (R in Ohms Ω) - V = I * R + ![alt text](ohms-law-3.png) - ![alt text](ohms-law-3.png) + #### Kirchhoff voltage law and the Conservation of Energy - #### Kirchhoff voltage law and the Conservation of Energy + For a **closed loop** series path the **algebraic sum** of all the **voltages** around any closed loop in a circuit is **equal to zero**. This is because a circuit loop is a closed conducting path so no energy is lost. + + Calculations can be checked here [kirchhoffs-voltage-law](https://www.electronics-tutorials.ws/dccircuits/kirchhoffs-voltage-law.html) + + #### Kirchhoff’s Current Law (KCL) + + Deals with the conservation of charge entering and leaving a junction. + + Parallel Circuit + + + ### Circuit Lab Simulation Demo + + [Circuit Lab](https://www.circuitlab.com/) + + + ### Section Challenge Solution + + ![alt text](image-5.png) + + Voltage Divider + + ![alt text](image-6.png) + + ![alt text](image-7.png) + + ![alt text](image-8.png) + + ![alt text](image-9.png) + + We can check [Standard Electronic Decade Value Tables](https://www.vishay.com/docs/31001/dectable.pdf) to fin dthe closest resistor - For a **closed loop** series path the **algebraic sum** of all the **voltages** around any closed loop in a circuit is **equal to zero**. This is because a circuit loop is a closed conducting path so no energy is lost. - Calculations can be checked here [kirchhoffs-voltage-law](https://www.electronics-tutorials.ws/dccircuits/kirchhoffs-voltage-law.html) - #### Kirchhoff’s Current Law (KCL) - Deals with the conservation of charge entering and leaving a junction. - Parallel Circuit - - ### Circuit Lab Simulation Demo - [Circuit Lab](https://www.circuitlab.com/) + !!! info "" ## Sources diff --git a/docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-5.png b/docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-5.png new file mode 100644 index 0000000000000000000000000000000000000000..bcd8b04aa962a53d69c67663859ea5f000d0195e GIT binary patch literal 102900 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 literal 0 HcmV?d00001 diff --git a/docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-6.png b/docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-6.png new file mode 100644 index 0000000000000000000000000000000000000000..6210b91b513094a3f19297efcd805d9af98313ae GIT binary patch literal 20317 zcmXuLbyQnV_r4vVNb%C*UhIPvhvM!o#kCao;u5q#ad$5k9EwYDcM0z9!QI~U`TpLO zKa!QqnRDixnc4Tg_Pr9Oq9l!hN`wjk05D`_B-CK<^#A}I00jy5>4u7D833RF$V!N6 zc)*=zxw{z10tX(bVs}U|DJkE_zC(FW^A08Nmtnk!3`Je+q_{tI>&Rd11hG?p&v^DZl!XtE9%Q|g4SesiIQG}vM@GRM zIS;Gr&wD%^RZTt*e=7~arRnKJtL?z2cE|m3($!{Xy-nsP-}5Wub3#x>#WzpS=HcPt zPv}Uq)6;*v@1TdfDMoXQ42+C@h$NQQ)@l^kDyF9S%OQ6UtSzPGoW;L=OUm!~^G9q=#n7<8tJ%Ym`F@m_Mo|e|U=?Sp+%Ry#R_HCSUT)6T#ZX|Oj*1g5}#_daqhJLmCk3NkzTUhA#o(tBjrrhYZz^o$H#R4!ginzErE zGTwj#Jmg!j=Ca8X@0sgM<2ruuO2Sv9N5Lm{LB^51=2K)@QeV~U^v6dpi=GCFwwyBW zJ3~B5Y?RW5hVezP>N)QoxYF;A{vaE$xa=+CPO;8WGtIu%#t`bBb5$)x*!CIk2H|iN zBlQV3+~U<%_txwI*6PjQ3s^>Xf1}BTp_SrUgqeY4=+!{bQ*HSZqV?xKzRRpLA8Dhf zrFoa@169gq43FFQsqg$AMvRV-h3^A`GE4!&jvXm9acd&T(@|&hIoJZ0PItVJPq>0# zB?L^m-vM{1$fv?_8TC^N1MK$WrbUEJ`_bvfFdpy2`F-kv?^{YgX?mPq5JQ;bQC=__ zd9rScf16EYudcgQ$=&cme(;^+T)-yWwes7wve#ak#Zsp1K@m0JygL}}=BCQefZrYJ z@^)(So&LueSJAk3VHlqBJ}Y|m<0dc^ddu(k3Pt0cg4SQ&9ZjtP$9vEpa1xZpf|0n~ zPNc~^C5)c8@RL$f=Jx=>1x1bfo1x@$6TY_`S^VzfvhE`LuO7bo6XIKKfi+qECBXMz zrO)Lq4xUVE|D@qR`Pn3ApI`M|w%>kvZFrJfVNuE0c{g1spK|mu=l++Pnp!5NB0m2l zRbR*RE{n~0CNHLA!rv9*kqOikPDjvUn`iCx%#1<))yZNl=FhS?+xPn3ejE43?`-e2 zRlk?@-nPHG#pcp(2YeE_NPIlf>L?u`^Bz4#;Ic1e0bj?zZVSJPKRi6xsVz}N7UrJn zKDQPtr2Y9f9wK4iwrrnE*(f3|xxT)>FNWDY#IajJq$i#r$m&Sij^bY zKz!PoN||5t;^T4LGo4Sc+`f8V7JM;i*rL>8!*7CK;OQP$bOTxRZl%ZDA0K zkM-{aR7vBUCnWxJ5&=d)abe*hPsc+PmaFi6Cjq%(QcvrI=R#g!Z-uYp#}C*9(3|J0 ziDTIPYRvXJqBm&snCg;(Lm&>D%#}DpvL^C+d&qe!=?TSZ4U|TfTyIdW7fkGP(2JH1 z(YC%5(eH6yyqd`1nFwtm_vhYQ@Dja+_Jm)|P=UfSQGTP4V+*w+W0E*}{SB~G@uuP0 z<9!yh1gOCs6x2Z7&cqkxDG(JuFVn4U?4{>n`+$&(NH&5lZ(&dM?sCQyB-;t#=v-WK z%B9W2H}uF;RHLe?;hpJ3u=XNPVbYn-Q>VdGVb0R7JUz4Vz%x?26J9_-;_8eg0C*Ei zxLD>KnjpY|1N2+Qk&g$QUJ4Nh(*}uS@6ydLp;nj;zq)^S%Q=U(2cKb*WcR z`M8>UDN3hC0_z#QzJvh% z&}%DIpD?__98j7XH$-`ESh*w2w&KMEc! zgr9W4yUY$#MsGJptya{w0JivLMw2Z?mbl8hJThufTpK4kp}3Vb5<&!_>BE?VuX+{m z)aFL7<3>-(3xPi~%MHFS{z#1A(V$AY9 z6DNO+U3(&s4ZY^*I6<@_tA^!d2%hN&kyO8`T3K9j~uqtEbogNp}e%!{2soJW7|HUWkKSsyms{<;;kwqK`^pEEacFQY?SRgzH;IZD# zCYIkq2?>ZSazG+b&rIY`ZO(z??ez;R(xX@hVN=9aDuni5V=APDtUfrr?m3W*ij4gb za*4?gq3CK(@oq{9yngl4tq$|a!Ez-R!$@>-CFge=)nQ7lBmh3ZBto$s?YsIQSyni* z*!L?RG0a&OPUzSRF4|jR%|$RWe^5uY-W<>K^Iv7GUDJYLdlAIwb=RmxcEgGQo@1Ue z%M@-A&8-bFV{raS<&F|Esu~D=-X?!r7#n!$=V_lxJ2<~EjXhxfU*W6vH2_|!b( z5Keon3sUBB4-Jn`P4p5;IA)IUO$}%9fT1t8y>vaDFp||%6yd))Ly%{B)R=CK6Z1bCO1DE6q%8?M? ztBmz>zxz->$JMQ-jPE_P29=E>0=E%&gg6h6zXF%2DbZ*v48co^BD^+pOce&LbIdx@ zR9Gn!LC9DwUu@Y!y}eLT9Em_kUS?*6&OByZH8H>wQ%rk~tF%^nob0FA4X|uS@r2;Y znf!ksMX$dMcnn?ZuczxR^nn=GJ{f6tNl9o2pPGSBZlOp9%4o~eTwFmOmaN~)%((*m z9#Z_Ka$s9@>-$5U;;f5^a-b<1--Gc0R9Bi{F5)^eO8gj&fL0Mnd; z#i@%(ox%}4#EtyIqmboIHpZn$DT~2JnBYIa#@l1n+tHluKxI^TZ|#HQ08(R8%KRz> z7BfahOwPQ9BM1scfnzO)oO1vq@O%-5lv*t`-+faJp|+|)AfkkzAZF(a6Vs<7?4!Xl zqZjL!p`7P11kwSzs$(l7!JZ%@WiipH#Jymrhk|1wkHg_TWbI7x9CJ7t&ByO~YW$eL zG+VvV5H7S$WA87Dxp_1+<&7~0dD=EH9%qDK)c*-kC!1YXna%jn@IJ&BUM{Y0>rZQUnT9Ww z?%m+qRS;Z!3dH}hMfC+~=I=Wcdk|AisC~?rs1mFMa({eW+~(mBYC6XptokZ-ch){Q z#P|;){%Iiu@(Yw%P9npDgO17Aqh51KV}d89@Dd$G8T^{K006V1JU$l!k9s*Xi09z+ zJ|y@1!jY*DTT?cw2u;CHo%9QhB8m3ow(S>il=xZud&Ww_ISfez1P;=ab{4!_zVAem{fH2~{F?^X>W*0)QVaW+%dbsGWi6-r{n9z9u*4HyZJ|q8( zV6`Eat-r&aFYhAO*ZXM;hv*oI|K&c&NY>PxEIkMD6F{hQB^?$&YbWIg&qEg9i-^aw zw^xVxr_f&#yPcl{eK8`-G%KuwR@ujmZ{ZcqHVhS-EF zw`vVxg+O?E&39hs2Rp{T7@hEHhB#rvCo-AEjKqVg;<4xD+rJ-0dE6{i5a@8;U^*Ad zcz&qtr(5N{dVFo+cWd!D?%uxb_1Ot83+#3<$kCIeTChS^EE673(xOnTS?=voJKDjOI~&?;tFSWc2?=}J44S> z06kU~ewY;lVE=%7Vr09q5tfxQS{x|mh0oC94^oXSfZL73!i za99_@CpXUMrF|K^|GWt;2fS?G_1JqJA}+R0JeXkBH*RF*c)-v({mbkyJdZlwWn>??~ z1z+#C?Uk%;XGEeO9Q(p?$3L642;MCN*P32lpe79hpWhbl+e2w7b|y)1Lg7x5O+gD5(Ul4t6E1O}R`K(VtZa+9EvTyk$nV z!njr?z~jRMWj{UccpZ$|e`yG#(@JZUffv{dcqU_OIu%8JawM^kigC&WJYl_^V`V81 z&L|6?GO=r0H#P8B(GG)!AgeOgED#_fVp3qFG&}+)4zV#@N~N>8*b6Lc0KTl9y<}f~ zczBrbtK8c9UYv6$8GKZBM^Jikui}nSFMH7bc#XgkC5?74#wkJ=5G3?6Tjl%hUY)}i zC+S_s2iqg`{+od4G59TUL4XPZ6)RO*0O61VzThJ#Dc^+9Q+dXh041X5HdRp-$!ceB zMWFaMcFg+y%e-iWBaZ?uijRZF3FDm#L5Lmkk`Z{k6T-=v2<9s)I?HDJ<5}b7$j>V_ zIIF1EAUMuXIRlr&%U`dd&TH*n?-y0BOUWD7zljnJ8Zsh3c|5YQ`}9W=Dp^SN<%-__ zOZe4`6r8g7_HZrLvYyHT<=8E9%fk4Y%08g&LL$6NKEFZ6sk z$|rvT)e6^|E#P@^Mu|IHcf*UBZTOzC=n@5a+BW$x`+!;lh<^WhX>(Lvct_3A(*WCZ zPHMaW$1SXQQ`crK!*B#c=%fB)?R}ey6B!{L>)>Av0+)IA!7V&$gSoxqqv@d@TP7Cf zPRbe>*OtVNfJuJ^L=i0eE@C57O)T-Rwih)} zB3ru3El3%JMr&Z{;_hu8lnSJ%n;)J^A3bXJ8y_4z+R(co({^#d{3DL4{PV%A8;}Wc z&u9jSc>b?x07f-4faj5e(AJTomA;l`bGb_-;9`4#|B1`k8H{Cn*V!L04LdiAYaKfB zPinSFoY9p55Wc|q`S?{HlsJ|74W={+tw$_7xpS~K`sKP$6dGJ=SxTNTZOM<|0*RX9 zmdsO>K#qi_WHd(u0upp>vGC_qHkm`n{wYq;eB`N+1ww>7v39I%=+JC zR|sGB{wY+qlT!sQZJhSlam#QVj!(}wlVhfke^PlGHic4h-L%fvuCRz8YwjHMQOs-9 z^#NnapEwb(VP1%nVwG=Pl7xABjAVLsuAd!D+bvBK3 zYEXu(yCqMqH2@^L6Br23^WFDyXUHzWmdHon6t+EKQN#k{7C(`!?tG$M-TB9)R#(VG zjMb`GrVmHHdYEU=7gPnv5S?Vaj&^Qg`Q7)}FPTEn5_*fIIUYm1aLRRt*jgvDXG6VG zyKE5$@UlLNw5{&=D^Yq^9iIxtUQj5^|h-(m{7$QU`t&-e|v@?Kk-uy(F&Glz9JFZpuib~6dM^t=%0KoFDJJm;3qQVVp&clOY_c9XdiGK zoF1H;Dulrm)K9g+F_~&&i!Q)T?=a~~3*h5ddi}u1?=ZmZTQ$51!&80RW#oe8fFHTC z9dy|q-HJJY(T=Cqj^iR#k7K>{qm48^*HR8o#SCu6Ai`>u>UNCEn)1!)B@>JlUgy20 z?X?g5B4Qiq7TKQtibNBr7H!U&n#l-RG}XLV2S~-TcKk?*z1uHm;1IbVZ_VQr(JM>5 zFa-x3hfPmxa|d&Ef`eii@O;PXjn^)t(P6InNCA&F76C?3Maqp46302Zk19wz^)PnQ zrF;^vb8b{OLFW4!GQd-L4NFB^BuO&8+RgDr+4u4z4{ZXWe)F9F_jL*`mFAr7wd1D# zX-dUCDr&<@HdgS%Xge%B1Q4f{Oug!f)=We3+s_f{Ds%)sfxRFgReL!^)EKe4K+7GR1_lFQlAs06!CR5eC?*t2LZC80@#-O*Ko*9s-g}+Qb-#=Zz&y0-cg|)}X4y?0NrQ4!bl%LOz*go-w5y54k{*7ir*0+tu_8aEn0S@Nnl#XXJ3p>$ts++V*4A)>((WhVc zC~E?>Z~xeHW@GsOUA9aD1dAO4*h5@G%Pe6F#Ugj(_GA)X=yP)Uvl&_$>CLd$yE~G? zf8J=ndQ?tzA2sRN`}}^R0X_)M`tV-m4o72TP`e@QovXzI9Hc14^wd}qF`>zgq$C_u zQLksYb4TC^m5;xh631MACKMJMdWx4j52`9;9RY|!>WKHs>2BE-r^F|2%mb}nLgd!u zM_=F$QM1=F5fqHMn!ve4C$^_V{0{pkesvb-c}gN6s(=l@of^w(^tl?3oG~=6BMgSf zb(IskN&3vZNtMW7zuw{okkB^TW#&U$asbhqU&RrREGKR$NU#3I&QDn_!i;hF)_egl z+C@$olL(2Vy(qo}`(=aI;LpTYW3Z(eGcEbJ+;p9h!rfy0n1s%OAmsPfBo|J3y-oup z>HneIR4>jU^9kh+v5+5$272udCp`{pwQnKS@9pk3TOlgwBDfR)=R*12nqWr~Sa;IQ z=n&o=8@;vs!&?W=IZv6yFWnoOS33O9ePbVK`ofXc9s%0r4YO-h4_$W|zO0Y)i{E*bA zZRtwOwn9Fastvq^gQ7UrJy*9~{zJlfQ1MtQH2+aVTc*!nXE^G@K2XU(=i6`V?Y}}` zfLoDgBN1xISU%|S{6;F;==1-Mp#u$RYoPg?OQ4h@ee7VZ#*KZuk9pJfJ4g1*#R49P z+h=2t90R!usM@l=nUf#+26F3$75ZWt(J`VUjOAFpW z)W7oqNcQ2@uRATBo(7fzV7L+h!ua7_E3w5s2FMpA80sP+JoB9JUUB&m*=_!ppa@WH z)dEP)!LsLXGT04{X+$Sad?iHV#QDfh%X@8Bbo@9dE%e8|<7u_BHh2iX(ROi*PY;mey^#KkI~VBR ziu6_Y6}A*8Aw~QM9OCzB!C{2g>o=9|hyQqB`{Qg?3w?d6-3l6<<^faap^E_6 zBY~+&YzKZ?dJ8Y6y)qG_f2{0eZw$e)2+^3Dvou(XK^+C@ue(j~j>9&>N@xpKUjJO% z_dZmf7!tR=e~`Tl-Rif?U%^X^9~RHP_b7S_pH+kAre_7hNNns~`INQhOrnwF7)0N~%=7p?0S zT^Cd{+iMnx;dWuZzzQ7mT-Z8zLG(UpaVTJ-7=f!o?k2GD9X0SR``t}35=qbmBPCeH zxt$It^J^O)$0WNvojQb_nR#_B^~%xk`xn6iz8R~$bZtpfn~7a za@^!8I2=e4s)$!~X6#!3e=ooa^1>SY!H_fcmf#NI*(oezKO38Y;h2p-cbI61x27k9 zqrf(oL$yZ#30So;3rL6!Cd9^~SVI*h0ayprH#`6QxzY*9hI3wrm2^evh6wk9?Usp> zR^$;)h?O71d@6R6@PGVEu6;rTA)h!|5X!Hiz$5jXpJ-6lNV1n?f3i`Rn(OD9lXM;g zFSKx3hoD5Lqxozxj>$y-TaYVCT3MQoFsxJi==L#Z4?i$48TsM$SJ0Bnx1wpusy@*i zQ-AaG4dzf?f8B20k%D$WfSei5@^oK&lnuRFy4mNox7Ry<;=6s}H&33;ug7^C9N#B4 z-80-PEcApt3u|G;ZLG+GJu|?29;FaPwq~CA_z=?R3@Os_dl|*?tglXg)`ebvlor}p zV>;Fvq8g$4l;}ibCQy7#NEU@X>4WQWDDaEY6bgI%?U3m|9TjbO`$A$iib=7kZf|%ZRh0J(HAV&ReMh2 z0;x{N^}4xhzY}cyiEH$spYD=G6Xl{Pb)lL^blF+vStwiiLwaMP%y+h z|1c8E4^|qqW_rQPXaE@C!M|LbO_jOtCbcQ4$ezSv(*zJOR0OWIT@pTgQAju+QuduL zocJt!FyC;1b+_;mhGMC_#%q#`q!N^9HZqxEh4Q_Y7H|qN#8Fis^!1bJr7C zRWj;&q$2H7FZ_@`Oi~i^z6Oy$caAl8vAH;m+QIB0uCGMebO4+;4E8TXwj@_#Ll!Z| zIw%Q96i0||R?}XGg(>=dVnz-7R0dFFf%V}j@GD70APi6gq^l@7KEn|{GT?kl0?fjH z16T&6k>{&wYh_504VRZK1M!8tf&_4^t4v+44SywjY{bAXjm4@>O z>N+9oBu`ne5^_&|BT+^HVQ@BZzN=B5k;ELmZ5}AeiCY1|gUCf>#iJ{2UJf42(FN8OUz_f4)AEa6yGV;A_SqqjOECC3hNB%NQ*!3t; zk1YwVD)nTtFd*IL>)pR9Pje*uNBY$T8Ha0YYL)>N{PU^K>jAbA0VuMXfPNXQl?hUw6&rZ82ap(m+8MEP=_DMAz zIz;oq!(=(;UGR2i@FyAo9k<E#FO1EUP%gNy!iq0$iAduI3h*a@$LbAqhTmZC0DA^@b8Z>JQl+f z+fh!|8g*x*ofka(0Yxx{P&>}S8Hh{ayZ9Z?>c&FpVSMq0-1bb%E*Q70mXnFu&s+E; zk?LV@!Obnd*Q>}!1eZ9wXJ->Bgkr+Hr#ep51P=>P#pMU&;*J1Yxl}Pmy z5-mMDNy+NBot_60mep?uhpmJVP1QkpCWdmd^Mm{tJ|OYX7y#+oQEF!rtYoNXa>IEl z(L8ZEg!b3H0|BB9?@u)1FKfqmkIdHd&kEuF)DEIH4-=ggi78gKx>Da({^#*nYR-ch z5vmpE_dUHbUW0u6^i{5!d++cM17(K`LUV>LfMi1~2@rqOm21Q47o|o%we%s!HCSP! z#oqPg2;{BtPPnRd;w)u~cwYd+neo4lprWVehPKO65?BVB;pl*Kkwe7SL!OdVQ!;ug>Sh!4%cmpV$07;Mo7HQkdH~rTz$`IhE+3 z{Q@$A0r&%E2hRw@yO#OGe>gBBHMpzfD;kZLl-GKW0u6vVV4MhvI+vyP8Sxcz=Dq&3 zlKbx3>@pVVtC4^RlJS%0_RU?Zmf&E1Q?Ar{?dB8t+xA##4yBy{)E~kBc+Z*<6$~`~eLqO#JtK)|7v~@*Y z^sph{jUq1^lG;dpHh8biZd+dwO76P=LpdBZ+@F1^GI$)^_Ed83x=HBs0{G_YUXJ+! z$?+iv(+*xU8Q0Q&*V5y6sYn>pzm+XMTa?2o3dPc430}v}B&p7;aHXDxSz(srS^ zvrRaWT#=L#WiivHfjzenmu|uPFE0xsF=*C8Sqd|KA{zceE(ftT?~n$VDO^K z(INVMvRu_c=GfF{qoPNJ-Ng1xg?*l3p8l@rv`;9CcOrSXIs<0*|70JHQ(|>5!!iJs5Z&U_sOFV`w_X0kf-}e zoXThVP>sKucZvvcu$qn|821aYqolBf3qfjhxV|%&k%?j~tYu4(A1$CFg2uM(p)1Yf zoJZoMdTV{Cob!DcTxvwlpD<5BloH=NJaCkHZ32i&6pCt#K99q|RS-HCAD7D2d#>Zq zuJ;QKXAb%JiTKt`mK`fSaOAITfFN%yTPE~A zM6N7m8Efj1Afa>axM$~RQ~7{j;L!>T+m;|n>bv=?iKRtSlN#Ff8B9^`k%R` z;$?}kBw%U2Ik4voZHqqXiBEdjD@2?FG=Rx*GeR>jm?zJ|}WNpW<8a0fv!0l$8+SSXeMJk5u zbngMl4I%yhPw?Q^ijC*PHE7CxGS6Dr94v52Q>Y%U797LwwV_2Ox=G;ZpFf`)&*>uk zpv#R_Be5wd`*R~E6(r9>+ULLDFPwf|9*1{IK%x{DULT7^JP2cmYV~p;KO&Q{9^s@N zl87SU{aGLtNw7JG>j(4Ht+bp@HI(NMqFMl6ddOc@)*t5@uOaHnyj;JIRi#@{3%ZUh zWjyBM4{g~BDp3VKjO#pjz*O*h3Pd%xQ5j!8m_*1&yVd<{4klAq!p)W&?9`b|j^`?% zUUOQJG}S~zR`QC2`HWYm(fD7L!)T6Pl)_K=O!m5CVm}+6HN9e68pWo zlrJ3#m z<#V|5;fF)t{~9CVGbT@^n!OW&5CmS&3eL5lsi{di08zU+2Ps|i52e`+lyCD0Aoqx_PUI+N@Ms;^}I3^BN$w@y|aul2S%Gq=- zo9~!z>qSw-%X}8)0Soik>)sD$A0GMEx*{iryI=urJ+uWGQHdqTjKrL$9Pgl~9B1X* zSNGR8y_@oe%F3~BQ2{)ywp@bhIK7C_ZDt|JsZD$8amiuaE4S@Ztq<$BUx?rESq#hB zO#7RZKJqC`NxjdPikbVZn$PJu{E3v;O(814Km8!k!AeuUY;kfc+H6Fy=GWfb@%J$2 zCjB0*sBrJAJ;fTO4}mnavSWSa5VQKV^#;FgdY^>Ka#V%JTbLPiiHQ;z!IT$?O6;6?9?X;qY zzJY+{!wTL=->T(r5GFYJV6N+;q?q6PACE)Ful#*3LzZ{+wDR_%p%91*%Eg|;&dcgc z49{yW>l_^ zOILYiK%&5!U*p@BVNmbYbYFF68B+22LrHnMYypDbHYVdsOy-2)D_%JWvq4veFX?YZ z?)?1qvesW3uuYg=m#af%Hws{M47shP9$@@)3oeqrsWL@X7mfD2P$-{&S&G_>XJ8qZF+qP>+9^PLJvQc>}jdGTKfOxdH>x6L})oUbJcn@xnO zI4bHN^+F7Sb7*{oa#ftw@6*ILpUOi*w^4$8-Z<8TeHa%$spXdFbYW8#(26-n1VXiC z0#p(LD*}K|4o_>$^PX>^cVYQD0Y!KzN))|*-oEXrx9yvDlcLH3aEM|iptuDe$?l6^ zIajYPd_`lmD{rqs?xW8GF(kZy-hZV1kBUlMM@PrL)#u^oSUQ({T3T9*?@NpGGdm?N z4`fUc4v~o1<<7pseyyc~-`(2fr5}To_os%|mlWRI08k#KEhU@PF!x`nMR7-xxA$lD zZP)`K;96wS9=xrcU6y=n4cmVV>P=#B=0Re4A_SaT&D}j!@Lf`?V7+arDr}aE#N_0b zr5I`oL5GdSrpk7qXEGBj+*dxxEKg~rP;QHq?Fc0)3lpRyUTt=k=Rc9B{Jgc`M-fwk zgT2@w5>PCNq{_xt1xN)5d0Q65=zz|Lo417-d_4V#q5~#vP zSwsjj=F@Fu=`H-$wx|cA&CU#8e=0QE&kq7+GpVsaLL!#v@=#+HR}73&nyQ)vgd1$Q zjAtofsq+nG%+99MEh^`&-uM4p)epsVG&H;jNPFhn$lvnyZV-kfXps@%xR8kx8|n09 zYZExV-Tv;4>*bR2yVKKI#C*|jI)KE+Cj2_(`>OJJbunZU&|CfP$1z46_VNu9H z2Bdi***#3A!S2!Cd*o3TL2H?rD z3={RjLQ*?obZ)-)L$&ebzgj}1=5^w;0BM&!I++K7nAq>wr+CSmb0%5O$hlMSR9t`EaBce4VXr4r4a z4=t`w(IW_2Y1m8^6S$iEDmF5qoIOVPce7zm#x+T@ezqSN{Jk!BWVP%QXcd31MQHOH z0~`r^+Z;E=EX>3x`Y>F@DbR1g#^C9F+T*?{7VFv4S#S}up6KY%uIo^}qSG(ai)YhDJA{lQjn#8N^+{xbry2C!mDmPQ1P zD_Fxwt5_Tv%krg#OSjRjqQC8{(nw0hbiECa%kiAuYLk;eRMZXX=L>iYrQL-V*9cmr z%mTBKWSgFlsHJ9S3q37vt{j%};0XM0`f6J~Us2Iw_%rrv@(1cz96Cnoii)HRntgO= z`U)BT`&uL(8Uy-!RGL6t;yhDlIrJ0OyL_Yly4%@b-~eV8)0e5$7B4#NOqEWE%YK8L zQp$n$rV}ZjkG59Tx8tqCk)@=piZC z&$-&>*;D8f$i$_m9}O2X$^xqjC0V?Y*WmLKAOW;ohzRVU8GNS6B*xv!01Z{0!g9$7 zlHSN|@d-+{{;SRAZlbO8q>AVrjD#1UU@2t1`6-z7I86Z*p{d~dcK}w}D zL|nR_o=^IcTQd@SyE{K@V8xV5oT8$!ncksxXwv!2T9TP`%8!m1 zmM^29 z9nkr}t=B7rQ5mdC&T8@XzS~Hriy4g6FVENLG&IGQH!WN(ZeTgR2K&j(ogalP`b9}) z+@&p#EpwGR#|*neTi@@3Gx=Ez4hePm3|$nK-EAQ;Gn=NtN<}KJ6)HGH-k2m(9^k?mI`D2tE(KBgo$2U7j$vLh3ByH7p`nljB)60&iN zPp;Ii*bXk{bQ}FzSj++m2nyx&I{8{yFs42`Ydy>J3&=tDW{S#y=nK!k#Hdr5W=5MFE4G%|CTwwVch^Sld zRezNy>d}p4Yqr1BG^`VP6d;L)rp!w5tatxiH^p-Vj91@A;wEg#ad;v72kBQ{5 zHTXOuPPfgY(Cu`stVbG^%lVe%bbM$w-i(n`7?@X?m{hW5okXjcQ*_$uZZ&diCzqCS z1c?s6{Hb+pyE9l`K<%E1wEW9y`zB*QM@!1QD1Lu@wka&ZrQqP#QO(!fc?1{J{PFBB zs?+6ZP&8FdovEd!t-kI@tA)o88tT81jKDJ;GBH(%Nx!ESVa8OAr8W(^yrOZ1>GT_7 z{XD(}bv2iVVO-oSrs?}IQ`fB@aeK@%T94g@utlABWW#f_bx^a^$fL|*F+M$9Pn_7w zW2F4NC99YvpeUbGF&VK3c$#-_XX!kz*Sqg^(k|G3%cP3@2{ zB9V{9z|_b~7Ev0lPMAgcYM&XBxr5GZ)ZQg)U2xe}-pBAoFn^aZnUS7XN7i}&Sfoo8 zH;ZBJm#n%=-TAL{U8q%0!&rJYyL?Ke{#6pId=W-@_zgMg^6LiPnw!~g6rNhuVOm4 zdfB`KWOb=k7i^xiS3t`TLR0>9)aR7{Ouy;BcWAgpk?M+sFcMtS2VWh^>~Qyay{rYrWc#HbIoMXq*m!{q0A`k z*U_(#S-uE+z>{&?L|o>Xw>!IKHS`5HdOS9|m$t}UrTsf4>et=BKcoxTg?m>iX3QNP zT9D7T+?2Td7u$GYm8wFWG_RcwKadkkw5FVOX#;ejGNaLfp3XgH&S3>~WHaB*{HRG9 zF-3iFesIrWKI+J=9C=U7U9Kf1)$+xl`A?!JTAkSw=H_yn)0Nbio=hS0d`Y}|x`1oE zQZ^qw(Jy7et4us5{T+=e$WAi@3*&ruFrjX<7r1QYc-~&cdRU)XKeeQsX2hkST88T; zb&M#h;0xb3kQGM}pY!+sK0#_sLlfiq21@V_bt3Am2EG_nf*_Syi@J&R63#R1oc1d} zvcAyI#uqXs)wm>~M&nyOT++xHHHnzgDNbG1AG>aal zc;w7Jq>`vlQlE)CZSB_Ev8QsO8fwUaaPum*m`JXb*X83`;M}DpBrYVe(q_HlkHvBt zhN`W~cSkk0 za&e7E)&lpH?A96-5eK3VH5H@M)6aNkG;-UOf?<1+)eE1UcB3XSx4lYN994^RW54XF zdS72@p40Imsd!^IX<{=cNCFU5)fs%XpH&$t6kWKnmBfCLjsL|!!^x@yx&kgcBA(^@ z`CM(k(o%$oHj~8e-tGn+b}}lgwHPm}X%{Ulo;WxOmai1`s4vxhy1cCS9N|74U(CNs zsRC899l#qU*zlCPwjDHaP)!F`fxV?A>B8$wwW4A3Ft29-&GmGTIq6f*95l(6SK^g@uch)uKG&AI zv2sa8XRxD>l0X*D9KgvMVc?;yj`s?2Vf36K9eG1O5Q!EJ--q2AER?m7Axegr*!ic_VAm4*Qb;EcAc>3$TI>`gR5O z-z%P&5C681fA;J2wktLrWk+&E5K-3~SDcbz1KeOrB2D9{7Cg>)vH)$Lv-g?Dnmnm| z-|)+Bi85v2`oC!@iitCN$n{_KJ9s5rv;mzM<_zBem5AepeLnuM(P2Xd+rpoVjl`y zV4Dr($zZ>Av^t86?9Lsqqgr(*0DEZz! z7aPlpCqy@Be}<$|q2l#F=*xXUXb_lX87aCR9%GdA6S*;{C%%Hw7#)+EEa$4UOw0A9 zUvU<~Q_4MA@Mt`!!%C!U!bUpS5cmHDlnrb0nb?+@9^kB{i-n`BXR&kGISpWw%687X zB|fLG(VN#=;plPW3lZ*O4ydVxF6&xn#b|1N*{MU$-@}1yejv@^#!ZB`Tw9#>No{S} zx4k>*yR^fVysP))oV(AHFBT75>$wc?hkFT;_TFp4`|ZNT&RH24%(msYT{G0Tai|~N zLv4_RB?gdSGYo^_q*QZryA*NKq+JSlGcy)5Qdfm;&%xGI4X@*p_k7!as7Z7+J9Wsl zx+%o4#CDBSCsnO0xkaItFw{t57h0vYb8vF^cXR=5Yst5sv;Q3d38%-g&fc#L=stnW zhuTRzAVBg3S|uR==@1D^#Bet{HsQNu_;A26V|yEv9?2bc@~L+Y<%bIj+(;OP zqR|ac&y)EFgr7a^#)$(zjaNpX@HMCpkZzss)Yhl~N3HS-Cjqel;qO83AfJ9LKWzCr zxnrmc5mK6p(plizj$nr+;=n*1UHX#$kwS+5(VlZC9*av-8$hnn)z;W*p9#O+{WC0S z>KZX&HS55Eea>Wc{A7{x3l8bj>0;H^qhp5wb{RwEpnwT&4ma%%HpGK&=^BKt;eCF_Yfm_X)ZNBo0kjYcTBrlr^aEk4Q>M z)xP|Lu2L~DmUP2TN$k@g#6u8$pMe4`t%CqM2RRaOQ>naw3?|e(M*=||RCB0Fw{P9h zrArr`l>>Lr>(_5M8#5*{Bq0)UfBpfTzj)cTxcBVYt*O%{DSPi8O`JMK(`HW7zWjYo za$mT7S-Jc2oayV##ml;ji)B;L`B@w~d`L%*9anKlsq5aQ%lrEEYfhr(S%Z=cF5tJN56aodv9XLRg%q0XK=ueyf% zR_J2`d#FKe&tnqXw%$rNl=owk)HQdVr&&R7pv5GDsz;hko_^^LpZ`r?g_#N}WD)Mmw{2D?Kwq zGm_>gX>Phsm!8+P>MAW?wpdBYb2Kk~p6RYk=WtzEN9$tkItot&!7#mjW@ zN=3NE-xzR%7S5kNs|9KEl$xBP*|TTqCyza*y#4t)c<8XQGBS1i*l{h)$kOhd9OvnF z@Zf%BWGr+*&rM6$@#7~|cBNbk(-$f!X}0FhOVf{k@|c4fDZY5=5~a?at68(>X!(k@ zs;s)M)obt#nWC)4%bY~NQ**Z!YD{JAU^_j!)$|BB7NP-S=b~++UGE=jSC6`dy0W4| zwGL`*x(x~j>UI0pHKnDcIy-b_)iupYo}+c^R%^$OEt)oMvYSvm|G+_wWcK^Ldz6!# zt?9F8D*teSrq7zK1q;$uT6)I0K+=7S3+B%3Ts`-~SZ&?5Tl@FsYRaSu+O}=04jd}b z)6f1|D^{*l_U;{ear8*7S-Vczxp^8nX1q3T-JzP=uyZ*6#cNir*7PaUv_Eg3)~#Es zM;`sL@($z+$v)|&i4JP~Qsyq0ukxyLEzDftyz+`p6l?U0FX`Zc0&U*7MboBC3wsvk z&T@<|b|5zD@HNq-%F}j<>a^$d9u3W0QbLZ&d z#S3o4$n@#cwQj?D?by9TGm>Vhps>)nSFTyJ*7;1|xOG#zaW{6$!X=}?bVc7)0LgKTN9_ec&S|D zCQNmH%NYwYv?Ozpu2xmK9?y}ZMrc>gZs&~k^fSNG!i9^Kk-1DGMom!8o`ag7zC;aYc+ZD z1f4upsLPixYV_z)+O~b0viD?b>Wt|+bnLiN=gn7EW~OVf6`ee(aW73!*5XCly(dqP zKlQxxZP>bLgC@N+PA5;E(8Vj|8aaBL)~(;5jT_c##0$^6feA>(eFqA3{!+QK8v`}^ z{^HC`El8X1oPmxVJEA9^d_wyV9MJy!gU)mA)Tv^XRaR^FrK+#pXtjXQQ~F>?Y6E3BZR3ENp0ySyiLfr*y>m;M=?nBQt4*z1?Z$(ZmX;_b zWwz!d&(N&d(=>6?L^t2^zWn`~K6{pPjl}PH%!^~ReA#m6`!Q|C3?-+gXw{nadh(g) zwPeW(oj!F!bCPCi#>^Q`r~cW`pVX>VYjn2sv@+5cC^BY-euGQHKS5)5^9*)$~ z9MaK(0;SGL)zT$PodXj(HGa+c`3E(7=4=(8Dt2nXs&#AigNOb{^E1+Q^VUsOR90)^ z8I_ct3lH0B?II7)?J@jy>ft1z?OEf1 z8pj*#!Z_A6sTrpt#{W5oqVSXi44=Y5rV&S(P-EDK0QW@~uzi}pLaPq~cIsAFLVOk) z0^vabHFs_~+xDi-o0OiBsmar3sOZE=H)7h&FVZ?a0n-QI%N?Eu0jPt{!6_KPRvqp} z$K2<9G3cCW_1bHJ(Ft4@Ici zIW_Tu){_Etrs*bRl|CoJ&$dX-1ba>+97zl-z_dz z!5zr>YJ}gneT&$=OGbPmskgllKp zj784vvm?}Az{Bpb?VfxN>elpmhG-%3dHBzL9pATAt!Z`NY=_z44*OyQc4UYazkjS< zp!8Kj_G31ebl1;m@7ey|U0;8H`lNGSAT^}ue(y}ya;z)~o zEJUUkEgefE^4gyKj~2f-&%FCgjlg)-D;4D~+y^z&g4t~NY=^^)@`L@1Os`f|S#@8C z_FNULAP}*N0M`-6)i?sz#~MGo;#Y_h+|wQ|qc^ zuRwpqsoos#+1kF%5ZX}Rpy;7q4a}z5Pr=fUb=%YD=q&!|?;Oq_%cuLck$KTjulk69 ze+|#t7)R*z-6G<)wBk*p)A;RuqNEdV8oY0(=|qX&-sS#ngX-b5vC)}`Sz^xui#z>4 Xt!kv|`%kY+00000NkvXXu0mjfi6XG( literal 0 HcmV?d00001 diff --git a/docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-7.png b/docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-7.png new file mode 100644 index 0000000000000000000000000000000000000000..c1cdb69e7ce5ab06b3be8a86168e58837c03a181 GIT binary patch literal 3749 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 P00000NkvXXu0mjf-g%4{ literal 0 HcmV?d00001 diff --git a/docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-8.png b/docs/Knowledge_Base/Cyber_Journey/TCM_Security/image-8.png new file mode 100644 index 0000000000000000000000000000000000000000..9c7a926eaef6ff444f8f9761587400ebb90e1368 GIT binary patch literal 58610 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

m=w5roYwbUY-o`f^H4g;*v0;R{Iz#<`^> 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