Статьи Уязвимости в RAPID7 и Tenable Network Security

Discussion in 'Статьи' started by e17, 20 Mar 2014.

  1. e17

    e17 Member

    Joined:
    8 Feb 2013
    Messages:
    47
    Likes Received:
    57
    Reputations:
    81
    Доброго времени суток господа не буду разводить воду сразу к делу.

    Мне часто как и любому пентестеру приходится прибегать так сказать к автоматизированным средствам проведения пентестов, среди которых можно отметить как и опенсорс так и комерческие продукты. Естественно платить за "более менее" проработанный продукт мне как и всем Вам не особо то хочется(ибо зачастую много фолсов, логов и платить за 1дай уязвимости/сплоеты как то не канает согласитесь), при том как обладая некоторыми знаниями в области реверса и крэкинга в частности я ломаю эти так называемые комерс продукты для личного пользования.


    Недавно опять встала задача автоматизации прогона одной сети на метод пробива через 1дай уязвимости при помощи существующих продуктов которые могли бы это сделать. Естественно как и подобается правильному пентестеру были выбраны соотвествующие продукты :

    Metasploit Pro 4.8 от Rapid7
    Tenable Nessus 5.2.5 от Tenable Network Security

    Эти продукты впрочем можно получить в виде триальной серии действующей 7 дней (в обоих случаях). Кстати хоть и триал но все же работают они как полноценные продукты, так что не путаем триал с демо.

    Конечно рассматривать 7 дней как принцип одноразовой проверки я не стал поэтому было решено об "продлении срока триала" насколько это возможно и естественно в дело пошел старый добрый битхак скриптхак. Да разработчики таких комерс продуктов ныне кодят свои продукты не на сях и не на прочем добре а на руби.


    Поснифав трафик через сслстрип я честно говоря ох*ел от происходящего. После регистрации он выкладывает свои ключики в директорию

    dir_metasploit/apps/pro/engine/license.

    Для поциента Метасплоет Про 4.8 скриптхак в целом понадобился для облома даты в одном месте. Пропатчив таким образом
    PHP:
      def expired?
        @
    expiration Time.now
      end
    на 
      def expired
    ?
        @
    expiration Time.now
      end
    я получил желаемый результат. На это правда не остановился и переломал все что возможно

    PHP:
      def seconds_until_expired
        
    return if @expiration.nil?
      
    #return expiration.to_i - Time.now.utc.to_i меняем местами и получаем обратный ход времени, лол.
        
    return Time.now.utc.to_i expiration.to_i
      end
    теперь по истечении срока триала срок нашей лицензии не кончается а наоборот увеличивается, например если у вас рега лицензии была 17 марта 2014 как у меня, то 17 марта 2015 года у вас останется до окончания лицензии ~365,5 дней.

    Есть правда отдельные скрипты которые не работают без отвязки , там отдельная история но принцип почти тот же. отключаем посредством коментариев места запроса лицензии и все работает без триала.

    Кстати функция считывания ключа с триалки находится в классе контроллере лицензий licenses_controller.rb :

    PHP:
    def offline_activation
    temp 
    nil
    if params[:activation_file]
    # Copy the uploaded file to a tempfile
    temp = ::Rex::Quickfile.new('activate')
    uploaded_io params[:activation_file]

    begin
    while (buff uploaded_io.read(1024*64))
    temp.write(buff)
    end
    rescue 
    ::EOFError
    end

    temp
    .flush
    end


    # Just present the user with the form
    if not temp
    return
    end


    begin
    # Explicitly close the file to prevent locking issues
    path temp.path
    temp
    .close rescue nil

    @license.activate_offline(path)
    if @
    license.activated? and not @license.error
    flash
    [:notice] = "Activation Successful"
    redirect_to root_path
    else
    flash[:error] = "Activation Failed: #{@license.error}"
    end
    rescue Exception 
    => e
    flash
    [:error] = "Activation Failed: #{e.message}"
    end
    end
    Из класса license
    .rb 

    require 
    "digest/sha1"

      
    attr :product_serial
      attr 
    :product_key
    Ключ procuduct.lic сгенерен и зашифрован посредством алго sha1. По идее если кому хочется можно разобрать всю тему и генерить ключики lic и продавать хомячкам от имени Rapid7

    Окей, поциент #2 Nessus :

    Ну чо сказать явно не лучше, разрабы вообще долбоебы объебывается банальной прокруткой времени назад. Вот обычный 7days триал :

    https://www.dropbox.com/s/ap83p2qqx6k834u/nessus_trial.png


    Окей, крутим время назад : date -s "11 MAR 2014" :



    https://www.dropbox.com/s/mrsh0jv0fbsgro7/xpng.png



    Что мы видим ? 13 дней, на скрине как видно все функции продолжают работать. Для конкретного обломного пиздеца создал прошку которая посредством LD_PRELOAD меняет env окружение для демона /etc/init.d/nessusd таким образом что получаем фулл анлим лицензию



    https://www.dropbox.com/s/ca39wfml701eiwj/untrialed.png



    Сообственно Nuff Said ?
    Итак цены цены цены : http://www.rapid7.com/store/index.jsp?p=price

    максимальная цена на msf экспресс на уникальных 1024 IP: 10,000$

    разницы особой не заметите от про версии : https://community.rapid7.com/docs/DOC-2280
    Если посмотреть классы лицензий там можно понять что несложно портировать двиг на под другие нужды :

    PHP:
    def pro?
        
    product_type == "Metasploit Pro"
      
    end

      def express
    ?
        
    product_type == "Metasploit Express"
      
    end

      def community
    ?
        
    product_type == "Metasploit Community"
      
    end
    Что касается Nessus : 1.500 USD

    https://store.tenable.com/index.php?main_page=product_info&cPath=1&products_id=7


    Т.е если рассматривать те же 1024 уник айпи то 1024 x 1,5k $ = 1.536.000 $

    мы и так можем ее использовать без всяких ограничений.

    Выкладываю архив с патчами, скринами : https://www.dropbox.com/s/n61i9yia4mtm7ip/metasploit_patch.zip

    PS.PS.: для метапслойта про можно кстати не замарачиваться с лицензиями и пойти более законным путем был найден путь постоянного слива легальных триальных лицензий по времени истечения триала. Алго такой удаляем все ключи в директории
    PHP:
    1rm -rf msf_dir/apps/pro/engine/license/*
    Далее перезагружаем метасплоент : 
    2) msf_dir/scripts/stop.sh и start.sh
    3) запускаем $ msf_dir/msfpro
    открывается брауз нажимаем рекуэст имена и данные пользователя можно оставлять теми же. единственное меняем почту, по умолчанию девелоперы не принимают почты типа gmail, mail, rambler, yahoo, etc. регаем быстро новую почту на inbox.uz(обычно [email protected], tmp2, tmp3, etc) можно написать бота даже потому что триальные ключи с той стороны раздаются посредством такого же бота, который ничего не проверяет кроме почты.
     
    #1 e17, 20 Mar 2014
    Last edited: 20 Mar 2014
    CyberTro1n, kori256, YaBtr and 3 others like this.
  2. \/IRUS

    \/IRUS Elder - Старейшина

    Joined:
    3 Aug 2012
    Messages:
    379
    Likes Received:
    498
    Reputations:
    37
    спс что подсказал места, самому рыть говнокод не было желания
     
    #2 \/IRUS, 20 Mar 2014
    Last edited: 20 Mar 2014
  3. e17

    e17 Member

    Joined:
    8 Feb 2013
    Messages:
    47
    Likes Received:
    57
    Reputations:
    81
    Тут по мимо описанных мною мест есть и готовые решения.
     
    #3 e17, 21 Mar 2014
    Last edited: 21 Mar 2014
  4. PoliGroS

    PoliGroS Member

    Joined:
    29 Mar 2012
    Messages:
    79
    Likes Received:
    8
    Reputations:
    0
    выложи пожалуйста для nessus свой програм. Спасибо
     
  5. e17

    e17 Member

    Joined:
    8 Feb 2013
    Messages:
    47
    Likes Received:
    57
    Reputations:
    81
    https://www.dropbox.com/s/n61i9yia4mtm7ip/metasploit_patch.zip - патч
     
  6. PoliGroS

    PoliGroS Member

    Joined:
    29 Mar 2012
    Messages:
    79
    Likes Received:
    8
    Reputations:
    0
    можеш прошку лоад?

    после патча умер
    пси:рестарт делал
     
    #6 PoliGroS, 27 Mar 2014
    Last edited: 27 Mar 2014