- PVSM.RU - https://www.pvsm.ru -
Рассмотрим передачу файлов в виртуальную машину с помощью симуляции активности пользователя.
Представим что у нас есть некоторая виртуальная машина под управлением операционной системы DOS (FreeDOS 1.1/MS-DOS 6.22) с полным набором программ, но не имеющая съемных носителей, последовательных и параллельных портов, доступа в сеть и установленных гостевых дополнений. Единственное что доступно — это консоль.
Попробуем скопировать файлы в виртуальную машину с машины клиента через… клавиатуру! Хотя и виртуальную :)
Так как копирование фалов по клавиатуре процесс длительный даже при использовании эмулятора клавиатуры "Key Paste [1]", запасаемся свободным временем и приступаем.
Для начала подготовим тестовый стенд для нашего эксперимента:
Доступ к виртуальной машине Windows XP осуществляется через протокол SPICE. Установлены и работают гостевые дополнения имеется выход в сеть.
Доступ к виртуальной машине DOS осуществляется через протокол VNC. Никаких дополнительных программ не установлено.
На виртуальной машине «Windows XP» запущена программа «Key Paste» готовая к эмуляции набора текста. Так как набор текста парализует работу в операционной системе, вынос клиента виртуальной машины DOS в виртуальную машину или отдельный компьютер вполне оправдано.
Попробуем создать в ВМ «DOS» простой бинарный файл размером в 5 байт в котором каждый байт содержит значение соответствующее его позиции а именно: 1,2,3,4,5 в шестнадцатеричной системе исчисления.
Создаем файл 5.txt со следующим содержимым:
n 5.bit e 0000 01 02 03 04 05 rcx 5 w 0 q
где, первая строка определяет имя создаваемого файла, вторая — содержимое файла в шестнадцатеричном формате, четвертая — размер файла.
Отправим файл на обработку программой «Debug»
debug < 5.txt
С помощью команды dir убеждаемся что файл создан
dir 1.bit
Debug позволяет создавать бинарные файлы только до 64Кб. Для создания больших файлов воспользуемся кодированием Base64, которое используется в электронной почте. В DOS по умолчанию нет средств для работы с кодировкой Base64 по-этому скопируем программу для работы с кодировкой base64 и программу для проверки контрольных сумм md5.
Первым делом, скопируем программу md5sum для проверки контрольных сумм md5, используя шестнадцатеричное представление.
В Linux с помощью программы hexdump создадим заготовку файла для передачи в программу debug
hexdump -v -e '"e %04_ax "' -e '10/1 "%02X "' -e '"n"' md5sum.exe > md5sum_.hex
На выходе получим файл с содержимым вида:
e 0000 4D 5A 73 01 3C 00 01 00 02 00 e 000a F1 0F FF FF 66 12 00 50 00 00 e 0014 00 00 00 00 1C 00 00 00 0E 00 e 001e 74 07 B9 80 3B BE FE 76 89 F7 e 0028 1E A9 B5 80 8C C8 05 05 00 8E e 0032 D8 05 FC 0A 8E C0 FD F3 A5 FC e 003c 2E 80 6C 12 10 73 E7 92 AF AD
Подсчитаем размер файла md5sum.exe с помощью команды
ls -l md5sum.exe
В результате получим число «30579». Преобразуя данное число в шестнадцатеричную систему исчисления из десятичной получим число «7773».
Используя заготовку и информацию о размере файла создадим исходный файл [2] для создания бинарного файла с помощью программы debug.
Проверим работоспособность файла в ВМ «Windows XP».
debug < md5sum.txt
Файл собрался. Переименуем файл md5sum.bin в файл md5sum.exe и попробуем подсчитать контрольную сумму файла md5sum.exe.
md5sum.exe md5sum.exe
контрольная сумма подсчитана и совпадает.
Теперь можно передать файл в DOS и проверить контрольную сумму
Аналогичным образом скопируем файл base64.exe [3].
Попробуем скопировать большой файл. В качестве примера возьмем дистрибутив «DOS Navigator» от компании «RIT-labs». Закодируем файл дистрибутива «dn151.zip» в формат Base64 с помощью команды:
base64 dn151.zip > dn.b64
Аналогичным образом запакуем файл unzip.exe
base64 UNZIP.EXE > unzip.b64
Так как текстовый редактор edit в DOS очень тяжело переваривает большие текстовые файлы, разобьем файл «dn.b64» на файлы по 3500 строк с помощью команды split
split -d -l 3500 dn.b64 dn
В результате выполнения команды получим файлы: «dn.00», «dn.01», «dn.02» и «dn.03».
С помощью edit и клавиатуры скопируем полученные файлы в DOS. С помощью перенаправления потока, объединим четыре текстовых файла в один
type dn.00 >> dn.txt type dn.01 >> dn.txt type dn.02 >> dn.txt type dn.03 >> dn.txt
Полученный файл раскодируем с помощью base64
base64 dn.txt dn.zip
раскодируем распаковщик:
base64 unzip.txt unzip.exe
Распакуем архив дистрибутива «DOS Navigator»
unzip -e dn.zip -d c:dn
После распаковки можно запускать «DOS Navigator» командой:
c:dndn
В результате данного эксперимента мы научились с помощью эмулятора клавиатуры передавать большие объемы текста, копировать файлы в виртуальные машины даже под управлением DOS. Которая казалась бы на первый взгляд не содержит средств взаимодействия с буфером обмена и создания бинарных файлов.
Процесс передачи файлов чрезвычайно медлителен, однако с другой стороны он работает и может использоваться в аварийных ситуациях или параноидальных условиях. Прежде чем приступать к реальной передаче файлов через клавиатуру вы можете скопировать текстовые файлы со специально подготовленного компакт-диска [4].
Используемое ПО:
Автор: b0r1s
Источник [12]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/vzlom/70796
Ссылки в тексте:
[1] Key Paste: http://umvirt.org/projects/keypaste
[2] исходный файл: http://pastebin.com/cYS1g9wJ
[3] base64.exe: http://pastebin.com/s74kFY31
[4] компакт-диска: http://files.zabaikalye.net/umvirt/keypaste/kp.iso
[5] www.freedos.org/software/?prog=md5sum: http://www.freedos.org/software/?prog=md5sum
[6] www.ibiblio.org/pub/micro/pc-stuff/freedos/files/util/file/md5sum/: http://www.ibiblio.org/pub/micro/pc-stuff/freedos/files/util/file/md5sum/
[7] old-dos.ru/files/file_1422.html: http://old-dos.ru/files/file_1422.html
[8] www.freedos.org/software/?prog=7-zip: http://www.freedos.org/software/?prog=7-zip
[9] www.freedos.org/software/?prog=unzip: http://www.freedos.org/software/?prog=unzip
[10] www.ritlabs.com/en/products/dn/: https://www.ritlabs.com/en/products/dn/
[11] www.ritlabs.com/download/files3/dn/dn151.zip: https://www.ritlabs.com/download/files3/dn/dn151.zip
[12] Источник: http://habrahabr.ru/post/238831/
Нажмите здесь для печати.