• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Динамический анализ файлов VirtualBox+Python

Возрадуемся!

Версия 0.7.3:
* Добавлена документация для всех функций. Использование в виде: help(function_name).
* Добавлены функции для экспорта и импорта ВМ - vm_export() and vm_import(). Имеют свои настройки таймаута, т.к. операции могут быть более продолжительными, чем всё остальное.

Версия 0.8:
* Добавлены опции 'uac_fix' и 'uac_parent' для функции vm_exec() и соответствующие аргументы командной строки: --uac_fix и --uac_parent.
Используются для обхода ошибки VERR_PROC_ELEVATION_REQUIRED в VirtualBox, когда запускается приложение с запросом UAC.
Также удобно для анализа потенциальной малвари (родительский процесс у основного файла будет Explorer.exe (либо тот, который указан в uac_parent), вместо стандартного VBoxService.exe, что было палевом).
* Добавлены короткие алиасы для параметров '--vms' и '--snapshots': '-v' и '-s'.
* Добавлена опция 'dictionary' для функции list_vms(). Список виртуальных машин будет возвращен в виде словаря {'vm': '/', 'vm2': '/group2', 'vm3': '/group2'}.
* Добавлена функция для клонирования ВМ - vm_clone().
* Добавлены функции записи гостевого экрана - vm_record() и vm_record_stop().
* Добавлена опция для восстановления текущего снимка: vm_snapshot_restore('vm', 'restorecurrent').
* Обновлена функция vm_screenshot() - код для генерации индекса изображения перемещен в основной скрипт.
* Все файлы конвертированы в Unix EOL (LF).
 
Подкину идею - для имитации пользовательской активности, задействовать VirtualBox SDK (Python прокладку) - двигать мышью и нажимать клавиши.
Реализация есть тут https://github.com/sethmlarson/virtualbox-python
 
Подкину идею - для имитации пользовательской активности, задействовать VirtualBox SDK (Python прокладку) - двигать мышью и нажимать клавиши.
Реализация есть тут https://github.com/sethmlarson/virtualbox-python
Изначальный замысел был в том, чтобы написать простую многопоточную оболочку для vboxmanage, которая работала-бы без каких-либо дополнительных компонентов/зависимостей.
На SDK смотрел и буду смотреть ещё, временами. Может потом что-то и с ним напишу :)
 
Изначальный замысел был в том, чтобы написать простую многопоточную оболочку для vboxmanage, которая работала-бы без каких-либо дополнительных компонентов/зависимостей.
На SDK смотрел и буду смотреть ещё, временами. Может потом что-то и с ним напишу :)
Там можно сделать "запись" активности юсера, и потом ее воспроизводить, ну типа окрыть браузер, зайти на маил.ру вбить пасс
 
Там можно сделать "запись" активности юсера, и потом ее воспроизводить, ну типа окрыть браузер, зайти на маил.ру вбить пасс
Аргумент.
Хотя такое, в принципе, можно и внутри гостя сделать софтом для макросов/автоматизации.

Я копну в этом направлении.
 
Аргумент.
Хотя такое, в принципе, можно и внутри гостя сделать софтом для макросов/автоматизации.

Я копну в этом направлении.
Из гостя не лучший вариант, может сойти за малварь скрипт
 
Поднимем тему :)
Версия 0.8.1. Небольшой фикс. Теперь не игнорируется опция --ui.

Также теперь можно купить "спасибо". Чисто ради поржать.
Платный контент.
Спасибо! :)

Платный контент. Куплено: 1.
Большое спасибо! :O

Платный контент.
Офинно большое спасибо! D:
 
Большое спасибо! :O
И тебе, продолжай проект.
Интересно что планируешь по веб интерфейсу.
А именно что будет с проектом:
1) планируешь ли вынести в docker? Как то более автоматизировать развёртывание? Видел, что можно прокинуть с хоста драйвер вбокса и работать из под контейнеров с вбоксом.
2) что думаешь по админке?
3) что думаешь, возможно ли будет через апи вбокса залить для работы через админку заранее настроенную вм со снепшотами. Тоже вопрос об автоматизации этой части.
4) возможно ли автоматизировать откат снепшота для конкретной вм после чека файла?
5) что думаешь о надежности определения детекта и связывание этого с автоматикой?
 
И тебе, продолжай проект.
Интересно что планируешь по веб интерфейсу.
А именно что будет с проектом:
1) планируешь ли вынести в docker? Как то более автоматизировать развёртывание? Видел, что можно прокинуть с хоста драйвер вбокса и работать из под контейнеров с вбоксом.
Спасибо :)

Докер планирую, но для этого надо будет управлять VirtualBox'ом через их АПИ. Сейчас скрипт запускает комманды напрямую на хосте, а такое в Докер не особо упакуешь.
Там-же будет и поддержка нескольких физических хостов (если управлять через vboxweb).

2) что думаешь по админке?
Займусь после переписи ядра на использование АПИ. Скорее всего будет на Джанго, чтобы не изобретать велопипед.

3) что думаешь, возможно ли будет через апи вбокса залить для работы через админку заранее настроенную вм со снепшотами. Тоже вопрос об автоматизации этой части.
В теории, можно. На практике - сомнительно.
Заливать 20-30 ГБ образ со снапшотами сначала на админку, потом переливать на хост с Боксом и там импортировать/регистрировать ВМ, это долго и не очень надёжно :)
Автоматизировать такое можно другими средствами, типа ССШ.

4) возможно ли автоматизировать откат снепшота для конкретной вм после чека файла?
Все ВМ откатываются до/после чека. Или нужен какой-то отпределенный снапшот для определенной ВМ?

5) что думаешь о надежности определения детекта и связывание этого с автоматикой?
Есть несколько идей:
Парсить логи АВ - нужно будет для каждого АВ настроить логирование и написать для них парсер (регулярки рулят).
Парсить логи ОС - универсальнее предыдущего способа но, при условии, что АВ их туда пишет.
Парсить скриншот с попапом АВ - нужны сторонние либы для OCR. Хотя вариант, потенциально, рабочий.
Ловить и читать содержимое окна АВ из гостя. Не со всеми АВ может работать.
Смотреть в директорию с карантином - сомнительно, т.к. мы не будет знать, какой был детект и у какого именно файла (если дропается несколько).
 
Последнее редактирование:
Небольшой апдейт:
Версия 0.8.2: Добавлена функция vm_backup(vm). Делает live-снэпшот указанной ВМ с именем в формате 'backup_YYYY_MM_DD_HH_MM_SS'.

Далее я буду заниматься переписыванием ядра на использование API. Это, как минимум, позволит легко управлять виртуалками на удалённых хостах (распределение нагрузки и масштабирование FTW) и даст больше возможностей в плане управления.
В связи с нагрузкой, пилиться будет не очень быстро, поэтому релиз планирую месяца через два. После пойду изучать, как пишутся веб-интерфейсы :)

Toss a Coin to Your Witcher Поддержать автора:

Платный контент.
Спасибо :)

Платный контент.
Большое спасибо! :D

Платный контент.
Очень большое спасибо! :O

Платный контент.
Мега спасибо! D:
 
веб был бы очень кстати.
В следующей версии будет возможность генерировать html отчеты, которые можно будет на веб-сервер выкладывать.

Полнофункциональный веб-интерфейс (процентов на 80 уверен, что это будет nginx unit в докере) выйдет во второй версии скрипта, который будет использовать VirtualBox API.
 
Версия 0.9:
* Добавлена опция для генерации отчёта в виде html ('--report'). Результат (включая скриншоты) будет сохранён в каталог ./reports/<file_hash>
* Добавлена опция для записи видео с гостевой ОС ('--record output.webm').
* uac_parent теперь так-же применяется для скиптов pre_exec и post_exec.
* Удалены ключи '--info' и '--uac_fix'. Обе опции теперь всегда включены.
* Добавлен алиас '--user' для опции '--login'.

Пример отчёта:
1590958572207.png
 
Вдогонку пара апдейтов:

Версия 0.9.1:
  • Добавлена проверка наличия оригинального файла после завершения анализа.
  • Больше инфы в html отчёте.
  • Чистка кода.
Версия 0.9.2:
  • Добавлена опция '--delay' для установки задержки между запусками ВМ и прочими . Зависит от производительности железа.
  • Добавлен подсчёт md5 хеша для файла.
  • Обновлена логика генерации html отчёта.
  • Добавлена проверка, чтобы количество потоков было меньше или равно количеству ВМ.

Также записал демо с тестом meterpreter и несколькими АВ. Смотреть на скорости 2х во избежании засыпания.
 
Вдогонку пара апдейтов:

Версия 0.9.1:
  • Добавлена проверка наличия оригинального файла после завершения анализа.
  • Больше инфы в html отчёте.
  • Чистка кода.
Версия 0.9.2:
  • Добавлена опция '--delay' для установки задержки между запусками ВМ и прочими . Зависит от производительности железа.
  • Добавлен подсчёт md5 хеша для файла.
  • Обновлена логика генерации html отчёта.
  • Добавлена проверка, чтобы количество потоков было меньше или равно количеству ВМ.

Также записал демо с тестом meterpreter и несколькими АВ. Смотреть на скорости 2х во избежании засыпания.

подскажите в чем проблема что он не грузит файл

Capture.PNG
 
подскажите в чем проблема что он не грузит файл
По ошибке не совсем понятно, в чём проблема.
Каталог "C:\Users\user\desktop\" существует? Версия гостевых дополнений совпадает с версией VirtualBox на хосте?

Попробуй запустить ВМ и залить файл вручную:
vboxmanage guestcontrol avast --username user --password 12345678 copyto ".\puttygen.exe" "C:\Users\user\desktop\puttygen.exe"
 
По ошибке не совсем понятно, в чём проблема.
Каталог "C:\Users\user\desktop\" существует? Версия гостевых дополнений совпадает с версией VirtualBox на хосте?

Попробуй запустить ВМ и залить файл вручную:
vboxmanage guestcontrol avast --username user --password 12345678 copyto ".\puttygen.exe" "C:\Users\user\desktop\puttygen.exe"
так фаил копируется в вм но при запуске кода выдает туже ошыбку
 
Попробуй обновить VirtualBox вместе с гостевыми аддонами и перезапустить скрипт с '--verbosity debug'.
Других идей пока нет.
 
Версия 0.10:
* Добавлена опция для сохранения сетевого трафика виртуальной машины в файл ('--pcap'). Файл будет сохранен как {vm_name}_{snapshot}.pcap.
* Добавлена опция '--get_file' для выгрузки файла с ВМ перед её остановкой. Можно забирать дампы памяти, журналы, отчеты и прочее.
* Удалена опция 'keep' для всех аргументов.
* Добавлена функция vm_set_mac (vm, mac) и опция для изменения MAC-адреса виртуальной машины перед запуском.
Можно установить определенный адрес ('--mac 80AABBCCDDEE'), случайный адрес из диапазона VirtualBox ('--mac new') или полностью случайным ('--mac random').
* Изменены уровни логов, чтобы сделать вывод по умолчанию более чистым.
* Добавлен аргумент '--debug' (алиас для '--verbosity debug').
* Добавлен самодостаточный виндовый бинарник, не требующий Python. Лежит в релизах. VT scan.

Доступен, как всегда, тут: https://github.com/Pernat1y/vm-automation

Напомню, что поддержать развитие проекта можно битком:
BTC (Legacy): 1GDy6seYwiK92XAyoQsSeMf2LMR9pCpkY8
BTC (SegWit bech32): bc1q5wzj6qa3d7vtw9cehftt7gvswr60kgfgeu98z6
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх