Giter VIP home page Giter VIP logo

secr's Introduction

secr

################################################################

disclaimer : use at your own risk

** How to dump device keys and secrets

  1. Get a USB stick and copy all the .ko files to it

  2. Connect a USB drive to the router and config that it is mounted correctly i.e.

root@mygateway:~# ls -la /mnt/usb/USB-*/*.ko
-rwxrwxrwx    1 root     root         ?0638 Dec 23  2018 /mnt/usb/USB-A1/lime.???.ko
-rwxrwxrwx    1 root     root          ?531 Dec 23  2018 /mnt/usb/USB-A1/r2secr.???.ko
-rwxrwxrwx    1 root     root         ?7183 Dec 23  2018 /mnt/usb/USB-A1/ripdrv.???.ko
root@mygateway:~#
  1. Change current directory to USB mountpoint:
cd /mnt/usb/USB-A1/
  1. Check your kernel version:
uname -a
  1. Try grabbing your ECKey using r2secr:

On ARM (e.g. linux 4.1.38):

insmod r2secr.arm.4.1.38.ko && dmesg | tail -n 20 && rmmod r2secr

On ARM (if linux 3.4.11-rt19):

insmod r2secr.arm.3.4.11-rt19.ko && dmesg | tail -n 20 && rmmod r2secr

On MIPS (if linux 3.4.11-rt19):

insmod r2secr.mips.3.4-rt19.ko && dmesg | tail -n 20 && rmmod r2secr

On MIPS (if linux 2.6):

insmod r2secr.mips.2.6.ko && dmesg | tail -n 20 && rmmod r2secr

Same for other versions available in this repo. If you can't find a valid module for your platform, please, compile it and share it here ;-)

If it worked you will get output like:

root@mygateway:/tmp/run/mountd/sda1# insmod r2secr.mips.3.4.ko && dmesg | tail -n 10 && rmmod r2secr
[ 2554.482000] module cleanup
[ 2574.716000] r2secr : affdf800
[ 2574.719000] r2secr_struct : affdf800
[ 2574.726000] r2secr_struct->magic : d104ea5b
[ 2574.731000] r2secr_struct->items : affdf808
[ 2574.735000] nextFreeItem->id : 11f
[ 2574.738000] nextFreeItem->length : 16
[ 2574.742000] nextFreeItem->data : affdf820
[ 2574.747000] data_ptr : affdf820
[ 2574.750000] XX XX XX XX XX XX XX XX  XX XX XX XX XX XX XX XX  |  ................
root@mygateway:/tmp/run/mountd/sda1#

If it didn't you need to grab a full RAM dump with LiME and take the ECKey from it. Read further in this page about how to to it.

  1. Grab your eripv2 partition (mtd5 normally, confirm with 'cat /proc/mtd') for offline processing (should go to USB stick if steps have been followed)
cd /mnt/usb/USB-A1/
dd if=/dev/mtd5 of=mtd5.dump
  1. Copy it to a computer where you are able to run this python script with the key from above (with quotes if you keep spaces)
python3 eripv2.py --eripv2 mtd5.dump --eckey "XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX"

The secrets will be displayed on screen and dumped unencrypted contents to files ( messy :P )
OSCK key file is of relevance to decrypt encrypted rbi files with another script Relevant : OSCK OSIK EIK

** How to decrypt RBI firmwares

  1. Copy RIP_ID_OSCK_0x0121-... to BOARD_NAME.osck

  2. Use blidec_enhanced.py with .osck file from last step and .rbi firmware to decrypt to .bin

python3 blidec_enhanced.py --osck BOARD_NAME.osck --rbi my_firmware.rbi
  1. Inspect .bin root file system using 7-Zip or binwalk

** How to dump memory on newer platforms with LiME On some newer firmwares /dev/mem is not exposed or r2secr kernel symbol is not exported. You need to search for your ECKey into the full RAM dump made with LiME

On ARM (if Linux 3.4.11-rt19):

# Double check the "path=..." exists before running this command
insmod lime.arm.3.4.11-rt19.ko "path="/tmp/run/mountd/sda1/ram.dump" format=raw"

Read more about LiME usage on 504ensicsLabs/LiME.

** How to expose all rip values in /proc

rmmod keymanager
rmmod ripdrv
insmod ripdrv.arm.3.4.ko

All private cryptos exposed now at /proc/rip
EFU stuff at /proc/efu

secr's People

Contributors

pedro-n-rocha avatar lukepicci avatar mswhirl avatar cifred98 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.