Thursday, 21 June 2018

Запрос Get-WinEvent и его параметры.

Всем привет.

Продолжим вычитывать события с помощью Get-WinEvent. У одного админа была задача сформировать запрос Get-WinEvent в котором более 25 условий. Такие вот задачки ставят администратору. Почему 25, а не 125?  Не знаю. Жизнь штука сложная.

Ближе к делу. Для формирования запросов в  Get-WinEvent мы можем использовать 3 параметра:
-FilterXPath <String>
-FilterXml <XmlDocument>
-FilterHashtable <Hashtable[]>

Подробную справку по параметрам у Get-WinEvent найдете здесь.

Я просто поганял все три параметра для самых популярных, на мой взгляд, кодов событий:
4720 : A user account was created.
4722 : A user account was enabled.
4723 : An attempt was made to change an account’s password.
4724 : An attempt was made to reset an account’s password.
4725 : A user account was disabled.
4726 : A user account was deleted.

1) FilterHashtable.
Первый вариант использует период времени в сутки и сам код события $IDEvent.
Если нужен диапазон то $IDEvent = (4720..4726), если  несколько то $IDEvent = (4720,4722,4725) соответственно.

$time = (get-date) - (new-timespan -hour 24)
$QEvent = 0
$IDEvent = 4720

"Time  | ADGroup | NewUser | AdminUser | ID:"+ $IDEvent
Get-WinEvent -FilterHashtable @{LogName="Security";ID=$IDEvent;StartTime=$Time}| Foreach {
$event = [xml]$_.ToXml()
if($event)
{
$QEvent = $QEvent +1;

$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$NewUser = $event.Event.EventData.Data[0]."#text"
$ADGroup = $event.Event.EventData.Data[2]."#text"
$AdminUser = $event.Event.EventData.Data[6]."#text"
$dc = $event.Event.System.computer
$Time + " | " + $ADGroup + " | " + $NewUser + " | " + $AdminUser
 }
}
"Count: "+$QEvent

Wednesday, 20 June 2018

Поиск закрытого видео по картинке.

Всем привет.

Еще раз убеждаешься что у интернета хорошая память. И если вы что-то спрятали от посторонних глаз в интернет то ваши друзья могут нам "помочь" это найти. Если быть точным то ваши друзья и, конечно же, Google. С оговоркой. Мои практические кейсы с поиском по фотографиям можно глянуть здесь и здесь.

Но сегодняшний кейс более сложный. В одном из музыкальных видео в youtube есть 5-ти секундный отрывок зажигательного танца на свадьбе. Разумеется никаких комментариев кто и когда зажигает там не было, так как само видео было совершенно по другому поводу. Мне захотелось посмотреть выступление невесты полностью.

Как поступаем? Ставим видео на паузу, делаем снимок. 



Идем в поиск по картинке Google и предлагаем ему наш снимок. Но Google сегодня подкачал, кроме как "на картинке девушка" ничего предложить не смог. Не сдаемся и идем в другой поисковик по картинками TinEye. Оп-па, он нам выдает 4 результата. Уже есть от чего отталкиваться. На поверку улов оказался еще лучше - вторым пунктом была ссылка не на похожие фото, а прямо на случайный сайт с полным видео с танцем.


А так как само видео, как обычно, располагалось на youtube то получить закрытую ссылку с того сайта "для своих" оказалось пустяковым делом.


Такие дела. И девушка молодец, отожгла по полной!

Monday, 18 June 2018

Запрещаем USB накопители.

Всем привет.

При подключении нового USB устройства к компьютеру, ОС автоматически определяет устройство и устанавливает подходящий драйвер, в результате чего пользователь практически сразу может использовать подключенный USB накопитель. 

В многих организациях для предотвращения утечки конфиденциальных данных и проникновения в сеть вирусов, возможность использования USB накопителей (флешки, USB HDD, SD-карты и т.п) отключена из соображений безопасности по умолчанию. 

Например в этой статье показано как с помощью групповых политик полностью отключить возможность использовать внешних USB накопителей, запретить запись данных и запуск исполняемых файлов.


Первой неплохо было бы включить именно политику "Запретить выполнение" со сьемных и других внешних накопителей. Как по мне это самая ценная возможность из всего списка. Однако это опция применима только к Компьютерам и отсутствует как для Пользователей. Также эта опция не применима к компьютерам на которых живет Windows ХР. Достаточно одной такой старушки и у вас будет брешь в безопасности сети.

К тому же у вас может быть группа техподдержки которой необходимо использование служебных флеш-накопителей. С одной стороны можно внести такие накопители в белый список разрешенных к использованию на фирме. С другой - как запретить пользователям использовать служебные флешки вне работы, дома например? Разве что они их должны сдавать своему шефу в конце дня. Или замыкать в служебном сейфе.

Только техническими средствами вы не добьётесь нормальной безопасности, особенно с инсайдером. Вначале должны быть приняты административные меры, и только потом - технические. Причем по административным мерам, извините, нужен пример показательной порки по случаю. Например оставить нарушителя без квартальной премии. Это сильно впечатляет, и может перевоспитать не один десяток любителей фото на природе).

Но помните, как бы они не закручивали гайки - все равно человеческий фактор не исключишь на 100%. И конфиденциальную информацию рано или поздно вынесут. Поэтому главные ваши силы все таки лучше сосредоточить на противодействии привнесения вредного кода через парадный вход. 

Удачи.

Sunday, 17 June 2018

Способы делегирования административных полномoчий в АD.

Всем привет.

Очевидно, что практически в каждой организации ИТ-подразделение включает в себя нескольких администраторов, и различные административные задачи должны быть распределены среди администраторов и администраторов филиалов.

Есть разные способы делегирования административных полномoчий в АD:

1) В OU Группа по меню «Свойства/Управляется/Изменить»  назначается Пользователь который может изменять только членство объектов в этой группе.

2) В OU Группа по меню «Делегирование управления…» назначается Пользователь которому далее назначается задача из предлагаемого списка, например «Создание, удаление и управление уч. записями пользователей».  Это дает ему право править в этой группе любой объект типа «Пользователь» и все его атрибуты.

3) С помощью создания Группы с ограниченным доступом. Создается еще одна группа администраторов которой назначаются ограниченные права на конкретный OU. 

Я много раз читал что таким образом можно предложить и отделу кадров править многие атрибуты пользователей, но никак не мог понять каким именно образом кадровики будут это делать.)

Думаю, с администратором филиала должно быть полегче. Итак, инструменты которыми можно править делегированные администратору филиала объекты AD:
- модуль RSAT Powershell: бесплатен, без GUI, требует знания Powershell, требует инсталляцию
- оснастка MMC «Пользователи и компьютеры AD»: бесплатен, не требует инсталляции.
- оснастка MMC ADSIEdit: бесплатен, не требует инсталляции
- утилита ADExplorer: бесплатен, не требует инсталляции
- утилита Softerra LDAP Administrator: 30 дней бесплатный период, требует инсталляцию.

Однако независимо от задачи делегирования существует видимость объектов в AD. По умолчанию все пользователи домена как члены группы «Прошедшие проверку» могут видеть все объекты в домене в режиме чтения.

Friday, 15 June 2018

PowerShell и другие языки программирования.

Привет всем.

Технический писатель Коробко Иван Викторович в своей книге "PowerShell как средство автоматического администрирования" 2012-го года издания еще раз показал нам насколько PowerShell является универсальным инструментом. Я имею ввиду его главу про "PowerShell и другие языки программирования". Просто передам слово автору.

Довольно часто возникает потребность использовать вставки VB.NET или C# в листинге PowerShell. Это обусловливается невозможностью реализовать тот или иной функционал в PowerShell. Как правило, любую манипуляцию с любым объектом можно выполнить с помощью API-функции, вызываемой на низком уровне. Ярким примером является служба DFS, программное управление которой возможно только с помощью API-функций. Чтобы упростить изложение материала  приведем пример вывода обычного окна сообщения – MessageBox(). Реализуем вызов сообщения с помощью вставки листинга программного кода, написанного на VB.NET, в тело сценария на PowerShell и с помощью вызова соответствующей API-функции, описанной в VB.NET.

Компиляция кода на DOT.NET в PowerShell

Интеграция в PowerShell кода компилируемых языков, например C# или VB.NET, осуществляется несколько иным механизмом. Вставка программного кода также компилируется, однако вместо файла записывается в оперативную память. Успешная интеграция программного кода на DOT.NET обеспечивается с помощью двух объектов: с помощью первого объекта – CompilerParameters – осуществляется настройка параметров компиляции указанного кода, идентификация языка программирования. Второй объект изменяется в зависимости от используемого языка программирования в ставке. Для C# – Microsoft.CSharp.CSharp-CodeProvider, а для Visual Basic - Microsoft.VisualBasic.VBCodePro-
vider.

Фрагмент исполняемого кода на DOT.NET представляет собой описание класса с произвольным именем и минимум одной функции, имя которой так же произвольно. Листинг является значением переменной, заключенной, помимо кавычек, в символы @ (листинги П4.1 (C#) и П4.2 (VB.NET). При переносе листинга из Visual Studio в PowerShell необходимо следить за тем, чтобы иерархический путь ко всем методам и функциям был указан целиком, так как импорт пространств имен не поддерживается. Таким образом, вывести окно с помощью MsgBox() невозможно, следует указать полный путь – Microsoft.VisualBasic.Interaction.MsgBox().

Листинг П4.1. Вызов VB.NET-вставки из PowerShell (C#)

$provider = New-Object Microsoft.CSharp.CSharpCodeProvider
$params = New-Object System.CodeDom.Compiler.CompilerParameters
$params.GenerateInMemory = $True
$refs = "System.dll","System.Windows.Forms.dll"
$params.ReferencedAssemblies.AddRange($refs)
$txtCode = @"
Class mBox
Sub Main()
Microsoft.VisualBasic.Interaction.MsgBox ("Тестовое сообщение")
End Sub
End class
“@
$results = $provider.CompileAssemblyFromSource($params, $txtCode)
$mAssembly = $results.CompiledAssembly
$i = $mAssembly.CreateInstance("mBox")
$r = $i.main()

Листинг П4.2. Вызов VB.NET-вставки из PowerShell (VB.NET)

$provider = New-Object Microsoft.VisualBasic.VBCodeProvider
$params = New-Object System.CodeDom.Compiler.CompilerParameters
$params.GenerateInMemory = $True
$refs = "System.dll","Microsoft.VisualBasic.dll"
$params.ReferencedAssemblies.AddRange($refs)
$txtCode = @"
Class mBox
Sub Main()
Microsoft.VisualBasic.Interaction.MsgBox ("Тестовое сообщение")
End Sub
End class
"@
$results = $provider.CompileAssemblyFromSource($params, $txtCode)
$mAssembly = $results.CompiledAssembly
$i = $mAssembly.CreateInstance("mBox")
$r = $i.main()

Компиляция вставки на DOT.NET осуществляется в оперативной памяти. За это отвечает свойство GenerateInMemory. После завершения компиляции осуществляется выполнение скомпилированного кода. Для обращения к нужной функции необходимо указать класс, в котором она находится, а затем и саму функцию.

Версия на печать

Популярное

Медиа облако