Open AnrDaemon opened 9 years ago
Правильно ибо NetBox к ним дороги не знает. Настройки путей в NetBox - Интеграция проверьте, раз, и тут прочитайте http://msdn.microsoft.com/ru-ru/library/7d83bc18.aspx (русский перевод той же статьи MSDN):
Путь поиска, используемый Windows для обнаружения библиотеки DLL
Используя механизмы явного и неявного связывания, Windows сначала выполняет поиск
"известных библиотек DLL", таких как Kernel32.dll и User32.dll. Затем Windows выполняет
поиск библиотек DLL в следующей последовательности:
1) Каталог, в котором находится исполняемый модуль текущего процесса.
2) Текущий каталог.
3) Системный каталог Windows. Путь к этому каталогу извлекается с помощью
функции GetSystemDirectory().
4) Каталог Windows. Путь к этому каталогу извлекается с помощью функции GetWindowsDirectory().
5) Каталоги, указанные в переменной среды PATH.
Примечание:
Переменная среды LIBPATH не используется.
эти правила применяются ОС для поиска любых исполняемых файлов если в команде не указан абсолютный путь к исполняемому модулю.
При чём тут это?… Пути интеграции, естественно, прописаны верные, но они тут совершенно не при чём.
PageAnt запущен в сессии обычного пользователя.
В него загружены ключи.
Запускаю Far - NetBox работает.
Перезапускаю этот же Far с повышением привилегий.
Все те же самые настройки, тот же самый пользователь, только на этот раз в полными правами - NetBox не видит ключи в PageAnt. Требует пароля.
Тут же прямо в Far'е запускаю plink -ssh тотжехост
- коннектится по ключам.
Как вы думаете тут есть телепаты? Что до запроса пароля, то всё правильно - механизм повышения привилегий в любой ОС при своём срабатывании запускает новую копию задачи в новой сессии от имени другого пользователя. Со всеми вытекающими...
Пользователь тот же. putty работает. NetBox нет. (На скриншоте mintty, а не putty, если это не очевидно. Привилегированный слева.)
Вижу, но вы ошибаетесь говоря что пользователь тот же. Механизм описан в MSDN (https://msdn.microsoft.com/en-us/library/aa751843%28v=vs.110%29.aspx)
Знаете, мне, честно говоря, как-то без разницы, какой пользователь. Хоть фиолетовый в крапинку.
Факт в том, что две программы, предположительно построенные на одной библиотеке (базе кода, как хотите назовите), работают по-разному. Причём достаточно по-разному, чтобы создавать головную боль у пользователя.
А статья вообще выглядит ни к селу, ни к городу. Во-первых, при чём тут .Net 4.5, во-вторых, подзаголовок статьи "Elevation of privilege results from giving an attacker authorization permissions beyond those initially granted."
В таком случае пишите собственную ОС и там устанавливайте личные правила, а в действующей хотите или нет, но будете играть по её правилам. И ваш "баг-репорт" это грубое нежелание думать, а посему должен остаться без рассмотрения.
То есть вы хотите сказать, что люди, постящие вам баги, по определению не способны сложить 2+2 и проанализировать то, что они видят на экране?
Тогда делайте раз - логиньтесь под админом.
Делайте два - запускайте pageant.
Делайте три - добавляйте в него ключ.
Делайте четыре - запускайте Far.
Делайте пять - открывайте NetBox.
Делайте шесть - соединяйтесь с сайтом по ключу из агента.
Делайте семь - открывайте Far с повышением привилегий.
Делайте восемь - заходите в каталог PuTTY.
Делайте девять - запускайте plink -ssh user@host -v -agent exit
.
Делаете десять - открываете NetBox.
Делаете одиннадцать - пытаетесь повторить подвиг plink'а.
Как выполните, доложите ваши наблюдения. Мне очень интересно, к каким выводам придёте вы. Свои я изложил выше.
Просто в отличии от вас я не делаю скоропалительных выводов. Вы приводите скриншот где я по приглашению вижу уровень прав, но отбрасываете "маленький пустяк" - взаимодействие процессов и делаете ошибочный вывод что раз консоль запущена пользователем А и там виден вывод привилегированной сессии, то значит всё происходит в рамках одного процесса, а раз так то я даю вам ложные данные чтобы запутать вас. На деле механизм работает иначе чем кажется по картинкам - объясню на примере утилиты su(1) (одно из её описаний тут - http://www.freebsd.org/cgi/man.cgi?query=su%281%29&apropos=0&sektion=0&manpath=FreeBSD+10.1-RELEASE&arch=default&format=html) которая позволяет выполнить одну или более команд от имени другого пользователя:
исходно мы работаем в сессии пользователя А и у нас на терминале выводится приглашение вида $
, но в процессе работы нам надо выполнить ряд операций от имени пользователей D и суперпользователя root ( в терминах Windows админа) и тогда мы выдаём в терминале команду su [options] username [user_password] и если всё прошло успешно олицетворяемся с другим пользователем. Для непривилегированной учётной записи приглашение не изменится, а для суперпользователя приобретёт вид #
, НО! для успешности выполнения команды su [-m] root rootpswd необходимо чтобы мы входили в группу wheel в противном случае мы не получим повышенных прав. Если всё прошло успешно, то ОС запускает фоновую сессию куда из родительской сессии перенаправляются команды оператора, а их вывод перенаправляет на терминал вызвавшей сессии, но для оператора если он ввёл команду su с ключом -m видимого изменения среды не происходит ибо его домашний каталог и шелл не менялись. И если следовать вашей логике то пользователю A временно добавили права и другого пользователя в системе нет, но на деле ядро запустило ещё один сеанс, просто он скрыт и взаимодействует с нами через сетевые механизмы.
На платформе WINNT разработанной на основе ОС DEC OpenVMS используется упрощенный механизм повышения привилегий предполагающий что все пользователи входящие в локальную группу users имеют право олицетворения с с другими пользователями, но при запуске задачи/процесса/треда с повышенными привилегиями они выполняются в фоновом режиме в контексте того пользователя от имени которого инициировано их выполнение, а взаимодействие основного процесса и привилегированного идёт через механизмы ядра, и ваша "ирония" тут абсолютно неуместна т.к. в таком случае привелигированный процесс временно работает в отдельном сеансе и для передачи в него данных нужно использовать достаточно сложные механизмы. И тут есть возможное решение - плагин sudo. Вы должны установить у себя FarSudo (https://sourceforge.net/projects/farplugs/files/), запустить через него новую копию Far с правами админа и там можете выполнить все описанные вами операции. Это корректный способ, вы же вместо того, чтобы прочитать документацию по ОС и понять как работает механизм Elevation не разобравшись говорите "баг!" и предлагаете принять ошибочную гипотезу в качестве единственного допустимого объяснения происходящего.
Вы, прежде чем писать стену текста, проделали предложенную мной последовательность операций? Или у вас не возникает и тени мысли, что вы можете оказаться неправы, а все ваши аргументы - не относящимися к вопросу?
Конечно вы правы ибо вы не можете быть не правы, а документация по ОС это так, для дяди и её читать не надо, а можно сразу писать что вздумается. Упрямство в заблуждениях никому не приносит пользы.
То есть вы предложенную мною последовательность сами не произвели? И кто тут упрямствует в заблуждениях?
Вашу "проверку" я давно сделал - бред полный, но вы упорно ищете чёрную кошку в тёмной комнате лишь бы убедить себя в своей правоте.
Поясните, пожалуйста, выражение "бред полный"? Какое поведение вы наблюдаете?
ОС, фар и плагин ведут себя именно так как я вам написал - я вижу фоновый процесс с повышенными привилегиями и да, поскольку агент с загруженными вами в него ключами работает в сеансе другого пользователя при обращении к нему в текущей копии его процесса ранее введённых ключей нет. Именно это я вам неоднократно говорю, но именно это вы упорно игнорируете, а посему баг-репорт несостоятелен ибо вы не захотели думать, а думать надо.
Какой фоновый процесс? О чём вы? У меня растёт устойчивое чуство, что вы либо не понимаете, что нужно делать, либо не хотите понимать.
Ещё раз, по шагам.
plink -ssh user@host -v -agent exit
(любое приложение, запущенное эскалированным приложением, получает те же самые права).Это так сложно? Или, может, вы наблюдаете какое-то другое поведение? Или у вас есть "более другое" объяснение поведению plink, кроме как "works as intended"?
Я смотрю вы совсем не хотите слушать. Я проверил вашу "методику", вижу фоновый процесс но "его нет ибо мне, AnrDaemon, он не нужен" посему дальнейший разговор считаю бессмысленным...
КАКОЙ фоновый процесс? Уж снизойдите до ответа на простой вопрос, напоследок.
Читайте внимательно!
Прочитал, ни намёка не увидел. Запустил ещё раз тесты - никаких посторонних процессов нет. Привилегированный Far, его conhost, запущенный им cmd.exe и plink. Инфы по модулям не видно, потому что смотрим из непривилегированного Far'а.
А вы воспользуйтесь не Far-ом , а иным инструментом - Process Hacker (https://yadi.sk/d/193Gnglm4Ia5D , последний бинарник - v2.34 SVN r5687, x86, AMD64, инсталлируемая и "портабле" сборки, dbghelp.dll (эта может понадобится если в системе нет Debugging Tools for Windows), документация, исходники пришлось из архива убрать - народ упросил, а раз так, то пусть сами с SVN обновляются :) ) смотрите - он позволяет проконтролировать то, что иными методами не посмотреть (только при инсталляции укажите установку драйвера - именно он и позволяет нам в самые "тёмные углы" системы заглянуть.
P.S.
Если вы используете Far 2.0, то под него точно вряд-ли есть смысл что-то править ибо версии 1.xx и 2.0 давно уже отправлены в архив, и коли баг в коде Far.exe, то это практически навсегда.
Куда смотреть и что я должен там увидеть? Можете не ходить вокруг да около а просто ответить на простой вопрос?
В главном окне программы щёлкните ПКМ по списку колонок и увидите их настройки (колонки можно перетаскивать для удобства), там нас интересует колонка User Name - в ней мы видим кто запустил ту или иную задачу или процесс. Давайте её посмотрим, а в свойствах процесса (ПКМ на его имени, Propites) мы с вами увидим вкладки его счётчиков производительности, хендлов, тредов, загруженных в его процессе модулей, распределения памяти. РН позволяет нам пройтись по всему дереву вложенных процессов задачи и увидеть что в ней творится с максимальной точностью. Я несколько часов назад собрал и выложил его новую версию v2.34 r5689, адрес тот же (он постоянный, я просто обновляю архив) где поправлена пара ошибок в плагине ToolStatus.
Смотрим. Что дальше?
Дерево видите? Мы с вами видим, что процессы pageant (PID = 3684) и far.exe (PID = 11520) с его дочками запущены в одной сессии, но в разных задачах, а значит ЦП будет блокировать для них доступ к чужому ОЗУ - "Общайтесь цивилизовано!". Давайте глянем что у вас выйдет при срабатывании механизма Elevation.
Они уже запущены с эскалацией привилегий (оранжевый цвет видите?) Pageant (выше) запущен в обычной сессии. plink, как видите, подключился к серверу и ждёт дальнейших указаний. А вот NetBox работать отказывается.
Вы немного не там смотрите - на вкладке процессов мы видим их дерево, а что и как происходит в сети нужно смотреть на вкладке Network.
Там как бы дохрена чего происходит. Куда именно смотреть?
На вкладке NetWork ищем наши процессы по имени (для удобства можем воспользоваться фильтром - CtrlK) и смотрим колонку State. Что там пишется?
Пишется там предсказуемо всё.
plink.exe (13860), daemon2, 57073, daemon2, 57074, TCP, Established,
Module: plink.exe
Full path: C:\Programs\PuTTY\plink.exe
File version: Release 0.63
Description: Command-line SSH, Telnet, and Rlogin client
PID: 13860
Parent PID: 17120 (cmd.exe)
Priority: 8
Threads: 5
Owner: daemon2\anrdaemon (S-1-5-21-2916456319-725650362-4229827469-1000)
Session: 1
netstat -aon | grep ":22"
$ netstat -aon | iconv -f CP866 | grep ":22"
TCP 0.0.0.0:22025 0.0.0.0:0 LISTENING 2732
TCP 0.0.0.0:22110 0.0.0.0:0 LISTENING 2732
TCP 192.168.1.10:57075 192.168.1.12:22 ESTABLISHED 2496
(2496 - dwnetfilter, компонент антивируса)
Скажите, что я должен увидеть. А то вокруг да около можно ходить годами.
Процессы pageant.exe и Far.exe смотрите. Или мы с вами исследем что-то иное?
pageant вообще с сетью не общается. Никогда. Смысл туда смотреть?
А давайте убедимся. Для поиска ответа нам надо исключить все побочные элементы.
Убедимся в чём? Он не слушает ни одного порта! Он даже не импортирует ни одной сетевой библиотеки!
Сами откройте свойства pageant в вашем хакере и поищите там ws2_32|mswsock|wshtcpip|wship6|DNSAPI
Я смотрю вы сами себя убедили в том что всё происходят именно как вы их хотите видеть и иного признать не готовы.
Вызов либ "в лоб" из секции импортов - это конечно единственный способ их вызова и других не бывает. :)
При чём тут секции импорта? Я говорю о конкретно загруженных в процесс модулях. PuTTY тоже не сразу подгружает сетевой стек. Только когда актуально пытается соединиться с кем-то. Найдите в Far'е плагин Process List, и там откройте для себя кнопочку F3. Очень, знаете ли, показательно. И никаких хакеров не надо.
Это, похоже, вы себя убедили, что ничего работать не может, потому что вам лень читать багрепорты и делать простые тесты.
Вы так и не объяснили, что именно ВЫ наблюдаете про воспроизведении указанных мной тестов. Только упоминаете каких-то призраков, которых кроме вас никто не видит.
Знаете что, давайте проще поступим. У вас тимвьювер есть? Я приду с работы часиков в семь по москве, уставший и злой. Самое то настроение для поиска несуществующих процессов. Я запущу демонстрацию экрана, а вы мне будете говорить, какие кнопочки нажимать и куда смотреть.
Не держу, увы, и в итоге отписываюсь от данного "баг-репорта" ибо вы искуственно ищите предлоги для оправдания его существования, а мне этим заниматься некогда - чужую работу нужно сдавать.
Предлоги сущестования чего? Вам видео что ли записать, чтобы вы разули глаза?
Вас что в детсве вежливости не научили?
Мой запас вежливости за две недели истощился окончательно. Вы как страус, засунули голову в msdn и твердите "не может быть, потому что не может быть никогда". Отказываетесь проделать простую последовательность действий. Посылаете меня ловить какие-то мифические процессы. Что я должен по-вашему, улыбаться сидеть?
Прежде всего если вы желаете найти реальную причину явления, то нужно исключить все казалось бы самые вероятные ошибочные гипотезы. А это без экспериментальной проверки не сделать. Мой покойный отец когда-то рассказал мне чем отличается наука от религии:
поп кричит - на веру его, на веру! , а учёный кричит - на зуб его, на зуб! .
Так что я вам предлагаю поступить просто - оставьте эту проблему на некоторое время и отдохните занявшись иными делами, а после мы с вами к ней вернёмся, но со свежими силами.
Нет не решаемых задач, просто есть задачи которые в данный момент мы не можем решить, но непременно решим позднее.
Я не прошу от вас решения. Всё, чего я прошу - проделать манипуляции, не требующие скачивания посторонних програм, и сравнить результаты с теми, что наблюдаю я. Могу предоставить свой сервер для тестов. Скиньте идентификатор вашего ключа.
У меня сейчас ключа нет поскольку по работе не был нужен и протух, так что можем свежий генерить.
Кстати, свежий Far 3.0 x86/x64 . х64 тут можно взять https://yadi.sk/d/S96fUFmedrYgE (линк постоянный, я обновляю начинку архива), и бинарники х86 и x64 без FarColorer и NetBox отдельно https://yadi.sk/d/YcBvzdw4eobuz номер версии смотрите в version.txt https://yadi.sk/i/c-fy-oF9b39Rf . Собирается с оптимизацией по скорости работы и расходу ОЗУ. Сгодится?
SSH ключи же не ограничены по времени? Far 3 я не пользуюсь, не было времени посмотреть статусы используемых мною плагинов. Это не так просто, когда тебя на форуме забанили. >.>
С Far3 могу помочь - только что меня парень спрашивал по поводу моей х86 сборки - http://forum.ru-board.com/topic.cgi?forum=5&topic=31718&start=6280#20 . Я тут под НГ менял железо, но получил проблемы с драйверами USB 3.0 контроллера от Renessans потому сейчас всё делаю по принципу "минёр ошибается только один раз", а это понятно медленно, но и я не намерен отступать.
Проблема в том, что я использую около 35 плагинов, ни от одного из которых я в принципе не могу отказаться. Это не считая десяти стандартных. Плюс ArcLite меня ДИКО БЕСИТ. Мало того, что его функциональность не совпадает с функционалом MultiArc, так ещё новые/неизвестные контейнеры к нему не прикрутишь десятью строчками в ini. (За это меня кстати и забанили…)
Так мы и сами набор можем посмотреть, это не проблема. Если что на ру-борде тема жива и активна и задача решаема, как и с архиваторами. Сам использую арклайт и МА в общей связке с обсервером в качестве главного по распаковке контейнеров и всё прекрасно работает в Фар3. Так что задачка чисто техническая, а значит надо повозится и решить. За чем-то дело встало?
По ходу жизни постоянно приходится запускать Far с повышением привилегий. При этом NetBox не видит работающего рядом PageAnt. putty/plink в этой же ситуации без проблем коннектятся и авторизуются.