LINUX.ORG.RU

Пароль в праметре командной строки xfreerdp - безопасно?

 , , ,


0

1

Пользуюсь xfreerdp3, запускаю её простеньким скриптом, передавая параметры (включая пароль (он берется из keepassxc-cli)) в командной строке. Несколько скриптов для разных подключений. Удобно.

Выполнил ps -x | grep xfree, ожидая увидеть пароль, но его там не оказалось, было ... /p:*******, т.е., он скрыт звездочками.

Полагаю, это заслуга разработчиков xfreerdp.

Т.к., запуск из скрипта, в .bash_history сохраняется строка запуска самого скрипта, параметров xfreerdp3 там нет.

Вопрос: где-то еще в системе можно увидеть пароль, переданный таким способом? Или это таки более менее безопасно?

OS: Debian 12, xfce


Пароль можно подсмотреть в момент времени когда оно только запускается но ещё не успело затереть его.

А вообще если глубоко копать подобные вопросы - обнаружишь что там кругом дыры и страшно. Если у тебя на компе заведётся шпионский софт то этот пароль он в любом случае украсть сможет, даже если ты его другим способом будешь передавать.

firkax ★★★★★
()

Я бы посмотрел ещё в env переменных самого процесса и прошёлся по цепочке родителей. Так же можно погрепать память процесса в поисках пароля

cobold ★★★★★
()
Последнее исправление: cobold (всего исправлений: 1)
Ответ на: комментарий от anonymous

Не, в скрипте пароля нет. Он берется из keepass.

Вот, собственно, скрипт:

#!/bin/sh

SERVER="rdp.udalenka.work.tridevjatoye.ru"
PORT="3389" #на самом деле другой

echo -n 'pass: ' # это пароль для доступа к db keepass
PASS="$(keepassxc-cli show -a password -s /home/$USER/db.kdbx -k /home/$USER/db.key 'RDP ENDTRY NAME' --quiet)"

xfreerdp3 /u:dobry_molodec /p:"$PASS" /d:'' /v:$SERVER:$PORT /t:tridevjatoye /drive:home,/home/$USER /bpp:24 /compression-level:2 -decorations +dynamic-resolution +rfx /rfx-mode:video -themes -wallpaper /cert:ignore +clipboard +f

le_
() автор топика
Последнее исправление: le_ (всего исправлений: 1)
Ответ на: комментарий от cobold

Я бы посмотрел ещё в env переменных самого процесса

В cat /proc/$PID/environ |tr "\0" "\n" тоже нет…

Так же можно погрепать память процесса в поисках пароля

Память процесса - это уже сложно…

Если тот, кто проникнет, доберется до памяти процесса, от такого уже не спастись, видимо )

le_
() автор топика
Последнее исправление: le_ (всего исправлений: 2)
Ответ на: комментарий от le_

В man xfreerdp3 есть параметр --from-stdin

Можно попробовать передат пароль через pipe, тогда пароль не буддет светиться в командной строке

# набросок
xfreerdp3 --user:user --from-stdin <<EOF
$(keepass-cli)
EOF
anonymous
()
Ответ на: комментарий от le_

Чего тут сложного? Если рассматривать возможность выполнения команд или кода на хосте(а иначе чего бояться компрометации пароля в командной строке?), то найти рабочий privilege escalation как будто не проблема. А с рутовыми привилегиями можно смотреть любую память

cobold ★★★★★
()
Ответ на: комментарий от cobold

Чего тут сложного? Если рассматривать возможность выполнения команд или кода на хосте(а иначе чего бояться компрометации пароля в командной строке?), то найти рабочий privilege escalation как будто не проблема. А с рутовыми привилегиями можно смотреть любую память

Ну, это уже не вопрос запуска приложения с паролем в параметре cmd, это проблема защиты хоста в целом…

le_
() автор топика
Ответ на: комментарий от le_

keepassxc-cli show -a password -s /home/$USER/db.kdbx -k /home/$USER/db.key 'RDP ENDTRY NAME' --quiet

Не, в скрипте пароля нет. Он берется из keepass.

Ну тогда, точно так же как и скрипт, брать из кипасс)

# это пароль для доступа к db keepass

И другие тоже!

goingUp ★★★★★
()
Последнее исправление: goingUp (всего исправлений: 3)
Ответ на: комментарий от goingUp

Пароль к db keepass вводится интерактивно.

echo -n 'pass: ' - это просто промпт самопальный ) т.к., keepassxc-cli с параметром --quiet не выводит ничего (а без --quiet лишнее выводит).

le_
() автор топика
Последнее исправление: le_ (всего исправлений: 1)
Ответ на: комментарий от le_

Можно в скриптах операции с паролями обворачивать umask:

( umask 177
    PASS="$(keepassxc-cli show -a password -s /home/$USER/db.kdbx -k /home/$USER/db.key 'RDP ENDTRY NAME' --quiet)"

    xfreerdp3 /u:dobry_molodec /p:"$PASS" /d:'' /v:$SERVER:$PORT /t:tridevjatoye /drive:home,/home/$USER /bpp:24 /compression-level:2 -decorations +dynamic-resolution +rfx /rfx-mode:video -themes -wallpaper /cert:ignore +clipboard +f
)

Так переменная PASS далеко не утечет и все создаваемые файлы будут доступны на чтение и запись только пользователю.

anonymous
()
Ответ на: комментарий от le_

В общем, сделал с использованием параметра /from-stdin:

#!/bin/sh

SERVER="rdp.udalenka.work.tridevjatoye.ru"
PORT="3389" #на самом деле другой

echo -n 'pass: ' # подсказка о запросе пароля для базы keepassxc

xfreerdp3 /u:dobry_molodec /d:'' /v:"$SERVER:$PORT" /t:tridevjatoye /drive:home,/home/$USER /bpp:24 /compression-level:2 -decorations +dynamic-resolution +rfx /rfx-mode:video -themes -wallpaper /cert:ignore +clipboard +f /from-stdin <<EOF
$(keepassxc-cli show -a password -s /home/$USER/db.kdbx -k /home/$USER/db.key 'RDP udalenka' --quiet)
EOF

Всем спасибо!

le_
() автор топика
Последнее исправление: le_ (всего исправлений: 1)

Какая-то безопасность ради безопасности без внятной модели угроз. У 98% твоих коллег по удалёнке пароль сохранён в виндовом RDP-клиенте, и никого это не парит. Судя по тому, что у тебя на клиенте Linux и ты сам там что-то решаешь, endpoint security в конторе даже не пахнет.

anonymous
()
Ответ на: комментарий от le_

Какой конкретно? У нас не те масштабы, чтобы были вещи типа ES, но RDP через интернет точно не используем :) Если требуется только 1С, то оно умеет работать через нормальный HTTPS, дополнительно есть аутентификация на реверс-прокси (не уверен, что это дофига повышает безопасность, но хотя бы без прохождения этого шага не видно, что там за ним). Для пары привилегированных пользователей — wireguard.

Но мой поинт был в том, что ты заморачиваешься с какими-то паролем, который никому не нужен. Слишком причудливый сценарий атаки, когда ради пароля внедряется вредоносный софт на твой компьютер, и он шарится по /proc/*/cmdline в надежде там найти пароль. Проще уж завести сразу кейоггер и утащить твою базу паролей, но, опять же, на практике это выглядит не очень правдоподобно, если ты не руководитель или другая примечательная цель.

anonymous
()
Ответ на: комментарий от hobbit

Первое. Endpoint security (будем честны, зачастую это кривое говно с опасной иллюзией безопасности) придумали не от хорошей жизни и не от большой щедрости. По уму, удалённые работники должны работать на устройствах, полностью подконтрольных работодателю, а не вот так вот, как ТС.

anonymous
()
Ответ на: комментарий от anonymous

У нас не те масштабы, чтобы были вещи типа ES

Вот и у меня тоже.

Но мой поинт был в том, что ты заморачиваешься с какими-то паролем, который никому не нужен. Слишком причудливый сценарий атаки, когда ради пароля внедряется вредоносный софт на твой компьютер…

Специально, конечно, вряд ли кто-то полезет. А вирусы, черви, которые эксплуатируют какие-нибудь уязвимости для распространения и в автоматическом режиме передают найденное куда-то там - это более вероятно. И, как мне думается, по этой причине можно задумываться и о том, как и где светится пароль, передаваемый в параметрах…

le_
() автор топика
Ответ на: комментарий от le_

А вирусы, черви, которые эксплуатируют какие-нибудь уязвимости для распространения и в автоматическом режиме передают найденное куда-то там - это более вероятно.

Много ты таких видел? На практике это чаще DDoS, криптомайнинг, рассылка спама, вымогательство и прочие практичные вещи. Ну да ладно, я не эксперт в области вредоносного ПО, просто очень давно не слышал про массовые атаки такого типа, как ты описываешь. Это больше похоже на таргетированные, которые проводят точечно и с упором больше на социальную инженерию, нежели технические средства.

anonymous
()
Ответ на: комментарий от anonymous

Да просто погуглите: «червь под linux ворует данные».

Но на самом деле, это просто мне так хочется и было интересно узнать. Если что-то можно сделать более безопасно - почему бы и нет? )

Кто знает, может быть, такие привычки уже спасали мои аккаунты от всяческих проказников, или спасут в будущем…

le_
() автор топика
Последнее исправление: le_ (всего исправлений: 1)
Ответ на: комментарий от le_

Да просто погуглите: «червь под linux ворует данные».

Погуглил, предлагаю и тебе попробовать. Как и следовало ожидать, на первой странице из релевантного примерно одна ссылка с чем-то заточенным под криптокошельки (мне следовало это включить в перечень в своём комментарии). Если немного вникнуть в вопрос, как оно работает, то несложно заметить, что на типичный десктоп в большинстве случаев тебе придётся тащить вирус самостоятельно, он не прилетит откуда-то по волшебству.

anonymous
()
Ответ на: комментарий от le_

Кто знает, может быть, такие привычки уже спасали мои аккаунты от всяческих проказников

У тебя браузерные cookies лежат в открытом виде для этого, но, похоже, их пока никто не трогал. Странно!

anonymous
()
Ответ на: комментарий от anonymous

Куки, всё-таки, не совсем пароли. Но спорить, конечно, не буду, их кража может тоже привести к не оч. приятным последствиям…

В общем, думаю, не стоит следовать поговорке: «Горит сарай - гори и хата!»

Меньше чувствительных данных доступно - лучше.

le_
() автор топика
Ответ на: комментарий от le_

Куки, всё-таки, не совсем пароли.

Это даже лучше в некоторых случаях :) Реально пароли вообще мало смысла воровать, особенно когда везде 2FA (а где нет, то там и интересного ничего нет).

Меньше чувствительных данных доступно - лучше.

С этим я совершенно согласен. А засвечивание паролей и прочих таких данных в командной строке нормой никогда особо не было в многопользовательских ОС, если вернуться к изначальному вопросу :) Если не ошибаюсь, командную строку чужих процессов в Linux по умолчанию видно любому пользователю.

anonymous
()
Ответ на: комментарий от anonymous

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

Не должно. В прочим допускаю в разных дистрах разное.

Опция монтирования hidepid=2 должна быть для /proc включена.

А чтобы процессы одного пользователя к друг другу а память не лазили надо ещё и YAMA включать.

anonymous
()
Ответ на: комментарий от anonymous

Это даже лучше в некоторых случаях :) Реально пароли вообще мало смысла воровать, особенно когда везде 2FA (а где нет, то там и интересного ничего нет).

Я думаю, тут индивидуально всё.

У меня в Keepass ~200 записей, 2FA штук у пяти-семи включено.

И я не сказал бы, что доступ к вэбке электронной почты, например, или форума какого-то, не будет представлять интерес для мошенника, который будет соц. инженерией заниматься. А тех, кто 2FA на свои почтовые сервисы (и форумы) настраивает не думаю, что так уж много )

Кроме того, там пароли не только от сайтов. RDP, VPN, прочие сервисы и приложения.

В общем, вы не убедили меня, что я зря заморачиваюсь )

Хотя, я особо и не заморачиваюсь. Просто интересны некоторые вопросы )

le_
() автор топика