Читаем Кибероружие и кибербезопасность. О сложных вещах простыми словами полностью

Puc. 8.29. Ссылка на строку «login as:»

После нахождения нужной строки дважды кликаем и переходим местонахождению. Внутри секций данных IDA находит все перекрестные ссылки на строки. Для вывода всех перекрестных ссылок нажимаем комбинацию клавиш «Ctrl+Х».

На рисунке ниже показана ссылка внутри функции, которая выводит строку «login as:».

Puc. 8.30. Ссылки внутри функции, которая выводит строку «login as:»

На рисунке ниже показана инструкция, которую мы будем изменять. После выполнения кода бэкдора, эта инструкция будет использоваться вновь.


Puc. 8.31. Инструкция, которую мы будем менять

После изменения инструкции PUSH 467С7С на JMP 0x47А478 процесс перенаправления потока выполнения можно считать завершенным. Важно не забывать, что адрес следующей инструкции будет использоваться как адрес возврата после выполнения кода вредоноса. Следующий шаг — инжектирование кода бэкдора.

8.7.5. Внедрение кода программного трояна

Первая мысль, которая приходит в голову при внедрении (ин-жинировании) бэкдора, — сохранение регистров перед выполнением вредоносного кода. Каждое значение внутри регистров — чрезвычайно важно для выполнения программы. Поместив инструкции PUSHAD и PUSHPD в начале code cave, мы сможем сохранить все регистры и флаги регистров внутри стека. Эти значения будут возвращены после выполнения кода вредоноса, и программа продолжит выполнение без каких-либо проблем.

Как было упомянуто ранее, наш бэкдор представляет собой обратный tcp-шелл-код под meteipreter, взятый из проекта metasploit.

Puc. 8.32. Помещение инструкций PUSHAD и PUSHFD перед code cave


Однако потребуется некоторые изменения внутри шелл-кода. Обычно обратный tcp-шелл-код пытается подсоединиться к обработчику некоторое количество раз, и если соединиться не удалось, процесс закрывается посредством вызова API-функции ExitProcess.


Рис. 8.33. Участок шелл-кода, отвечающий за соединение с обработчиком

Проблема заключается в том, что если соединиться с обработчиком не получится, выполнение клиента putty будет остановлено. После внесения небольших изменений после неудачи шелл-код будет вновь пытаться соединиться с обработчиком. К тому же, немного уменьшится размер шелл-кода.



Рис. 8.34. Модифицированная версия участка кода, отвечающего за соединение с обработчиком

После внесения изменений внутри ассемблерного кода выполняем компиляцию при помощи команды nasm — f bin stager_reverse_tcpnx.asm. Теперь обратный tcp-шелл-код готов к употреблению, но пока еще не помещен в правильное место. Наша цель — осуществить выполнение в отдельном потоке, для создания которого потребуется отдельный шелл-код, выполняющий вызов API-функции CreateThread. Функция будет указывать на первоначальный обратный tcp-шелл-код. Код для создания потоков из проекта metasploit также написан Стивеном Фивером.


Рис. 8.35. Шелл-код для создания отдельного потока

После помещения байтов шелл-кода внутрь файла createthread. asm в шестнадцатеричном формате, как показано на рисунке выше, выполняем компиляцию при помощи команды nasm — fbin createthread. asm. Теперь шелл-код готов для внедрения в code cave, но перед вставкой следует выполнить кодирования для того, чтобы обойти статиче-ский/сигнатурный анализ антивируса. Поскольку все кодировщики из проекта metasploit известны большинству антивирусов, в работе рекомендуется использовать нестандартное кодирование. Здесь можно обойтись сочетанием нескольких стандартных кодировщиков, но можно обойтись сочетанием нескольких кодировщиков из проекта metasploit. После каждого акта кодирования загружаем шелл-код в проект Virus Total в «сыром» формате и проверяем результаты проверки. Комбинируем кодировщики до тех пор, пока шелл-код станет полностью незаметным (или можно подождать следующей статьи). После правильного кодирования шелл-код готов к внедрению внутрь code cave. Выбираем инструкцию, которая следует за инструкцией PUSHFD, и нажимаем Ctrl+E в отладчике Immunity Debugger. Шелл-код будет вставлен в шестнадцатеричном формате.

Рис. 8.36. Вставка шелл-кода

Перейти на страницу:

Похожие книги

Компьютер для тех, кому за…
Компьютер для тех, кому за…

В наш век высоких технологий без компьютера не обходится практически ни один человек. Но что делать, если вам уже за…, а компьютер вы так и не освоили? Не стоит отчаиваться! Эта книга была написана специально для тех, кто по каким-то причинам не смог освоить его раньше. Легким и доступным языком в книге изложены основные принципы работы на компьютере. Вы узнаете, как создать документ в текстовом редакторе, выстроить таблицы и диаграммы в экселе, освоите графический редактор, который позволит вам рисовать и редактировать фото и рисунки, научитесь самостоятельно подключать принтер и печать, общаться с родными и друзьями по скайпу и ICQ, узнаете, какие бывают игры, как выбрать игру для себя, и многое-многое другое.Никогда не поздно осваивать что-то новое! А уж тем более — компьютер. Он откроет вам целый мир безграничных возможностей. Не упустите свой шанс узнать что-то новое и интересное — дайте компьютеру прочно войти в вашу жизнь. Ведь пользоваться им так же просто, как и обычным телефоном, только в тысячу раз интереснее!

Оксана Грибова

Зарубежная компьютерная, околокомпьютерная литература / Интернет / Программное обеспечение / Прочая компьютерная литература / Книги по IT