Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   [решено] Мониторинг USB устройств bat-файлом (http://forum.oszone.net/showthread.php?t=344989)

EvgenBrain 26-04-2020 11:42 2919004

Мониторинг USB устройств bat-файлом
 
Со скриптами bat не сталкивался, особо не нужны были, но сейчас поставили задачу(кровь из носу надо сделать еще вчера) написать скрипт, который бы мониторил подключенные USB устройства, список разрешенных будет в отдельном файле, если подключаемое USB - устройство совпадает, то все нормально, а если нет, то либо блокирует хост, либо порты(закрыть передачу данных)...
batники, для меня что-то новое, инет ничего дельного не дает, вторые сутки уже сижу, пытают все систематизировать, уже депрессия маячит и начальство наседает! HELP!

DJ Mogarych 26-04-2020 13:50 2919019

Цитата:

Цитата EvgenBrain
начальство наседает »

Начальству надо сказать, что такая задача батниками не решается. Пусть покупают соответствующий софт.

megaloman 26-04-2020 14:36 2919027

Вроде бы есть встроенный в Windows продукт. Хотя, наверное, можно поплясать с бубном

DJ Mogarych 26-04-2020 14:41 2919028

А что, Защитник умеет фильтровать USB?

megaloman 26-04-2020 14:52 2919030

Цитата:

Цитата DJ Mogarych
А что, Защитник умеет фильтровать USB? »

Сам не пробовал, Здесь вроде бы утверждается, что можно

EvgenBrain 26-04-2020 15:44 2919036

Ну а что-то похожее вообще написать реально?

То, что предотвращало нелегальное копирование

То, что предотвращало нелегальное копирование

DJ Mogarych 26-04-2020 15:58 2919040

Написать всё реально, но не в нашем случае и не батником.
Какие-то функции управления USB-устройствами имеют многие антивирусы, например, у Каспера было что-то на эту тему.

alpap 26-04-2020 16:27 2919046

EvgenBrain, кое-что делал на cmd, работает не всегда на 100% и доп. софт требуется устанавливать в систему все равно.

EvgenBrain 26-04-2020 19:18 2919070

Хорошо, а есть функция сравнения содержимого у бат файлов??

Iska 26-04-2020 20:41 2919079

EvgenBrain,
Код:

fc.exe /?

Vadikan 26-04-2020 21:37 2919083

Цитата:

Цитата EvgenBrain
который бы мониторил подключенные USB устройства, список разрешенных будет в отдельном файле, »

Есть событие в журнале, дальше можно с PowerShell парсить и сопоставлять со списком одобренных устройств.
https://www.techrepublic.com/article...-event-viewer/
Это не для тех, кто
Цитата:

Цитата EvgenBrain
Со скриптами bat не сталкивался, »

но хороший повод поизучать PowerShell наверное...

Цитата:

Цитата DJ Mogarych
А что, Защитник умеет фильтровать USB? »

Это фича Windows Defender ATP.

EvgenBrain 27-04-2020 11:43 2919136

Vadikan, да, пришел теперь к power shell... Но так как с ним тоже не сталкивался, ищу как это все реализовать

megaloman 27-04-2020 16:23 2919182

EvgenBrain, То, что можно написать скриптами, с точки зрения безопасности - детский лепет и легко обходится. Можно, например, ориентироваться на серийный номер устройства.
Откуда его взять: В командной строке запустить wmic
Код:

wmic diskdrive get model,name,serialnumber,mediatype >C:\zzzzzz.txt
У меня в файле C:\zzzzzz.txt получилось
Код:

MediaType                Model                              Name                SerialNumber                             
Fixed hard disk media    TOSHIBA MK1637GSX ATA Device        \\.\PHYSICALDRIVE0  2020202020202020202059204a36464d46425359 
Removable Media          JetFlash Transcend 32GB USB Device  \\.\PHYSICALDRIVE3  AA00000000000489                         
Removable Media          JetFlash Transcend 8GB USB Device  \\.\PHYSICALDRIVE1  03U0UDBRCJ6HLEYV                         
External hard disk media  WD My Passport 0743 USB Device      \\.\PHYSICALDRIVE2  WX61A93R0348

Будем контролировать 2 вида устройств:
Флэшка- Removable Media
Внешний винт- External hard disk media
Допустим, разрешены 2 устройства с номерами
03U0UDBRCJ6HLEYV
WX61A93R0348
А вот AA00000000000489 будем считать нелегальным и при его подключении выключим комп
А далее на компьютере должен быть запущен vbs-скрипт (например, в автозагрузке)
Код:

ConType = Array("Removable Media", "External hard disk media")
ConSerial = Array("03U0UDBRCJ6HLEYV", "WX61A93R0348")
   
Quant = 5 * 1000                        'милиСек опроса
FLog = "Z:\Soft_Out\Spy.txt"                'Лог-файл, куда запишется инфа о незарегистрированной флэшке

Spause = 1                                'Пауза Сек начала выключения
   
Set WMI = GetObject("winmgmts:")
Do
    Set DAll = WMI.ExecQuery("Select * from Win32_DiskDrive")
    Msg = ""
    Flag = True
    For Each Drv In DAll
        For Each iType In ConType
            If LCase(iType) = LCase(Drv.MediaType) Then
                Flag = False
                For Each iSerial In ConSerial
                    If LCase(CStr(Drv.SerialNumber)) = LCase(iSerial) Then
                        Flag = True
                        Exit For
                    End If
                Next
            End If
            If Flag Then Exit For
        Next
        If Not Flag Then
            Msg = CStr(Now) + vbTab + Drv.MediaType + vbTab + Drv.Model + vbTab + CStr(Drv.SerialNumber)
'            MsgBox Msg
            With CreateObject("Scripting.FileSystemObject")
                Set F = .OpenTextFile(FLog, 8, True)
                F.WriteLine Msg
                F.Close
            End With
            R = CreateObject("WScript.Shell").Run("shutdown.exe /s /f /t " + CStr(Spause), 7, True)
            Exit For
        End If
    Next
    WScript.Sleep Quant
Loop

Скрипт будет опрашивать имеющиеся накопители с заданным периодом (здесь в примере 5 сек)
Здесь прописаны 2 типа контролируемых устройств: "Removable Media", "External hard disk media"
Здесь прописаны 2 серийных номера: "03U0UDBRCJ6HLEYV", "WX61A93R0348"
После обнаружения незарегистрированной флэшки комп через 1 секунду начнет выключаться
При этом в файл (напишите свой путь) будут записаны атрибуты нелегальной флэшки

Но это хилый костыль с легкой возможностью его нейтрализации. Зато всё штатное и ничего доустанавливать не нужно.

EvgenBrain 29-04-2020 10:29 2919346

megaloman, решил протестить скрипт, вообще тишина

EvgenBrain 29-04-2020 13:18 2919380

# В первых двух строчках мы считываем наши файлы.
wmic diskdrive get model > received_name.txt
$Trusted_Name = get-content -Path .\trusted_name.txt
$Received_Name = get-content -Path .\received_name.txt

$i = $true
do
{


foreach ($objectTN in $Trusted_Name)
{
$objectTN = $objectTN.tostring().Trim()
$objectTN = $objectTN.Replace(" ","")
$objectTN = $objectTN.ToUpper()
$found = $False

foreach ($objectRN in $Received_Name)
{
$objectRN = $objectRN.Replace(" ", "")
$objectRN = $objectRN.Trim()
$objectRN = $objectRN.ToUpper()


if ($objectTN -eq $objectRN)
{
$found = $True

}

# return $found
}

if ($found -eq $false)
{
Stop-Computer
}
}

} until($i -eq $true)

почему скрипт не работает, ума не приложу, что с vbs, что ps1

EvgenBrain 29-04-2020 13:23 2919383

Вложений: 1
megaloman, Файл 161196

EvgenBrain 29-04-2020 13:29 2919384

megaloman, Файл 161196

megaloman, да в диспечере ws есть, я подключаю левую флешку и ничего не происходит

megaloman 29-04-2020 13:34 2919386

EvgenBrain,
1. Просил результат wmic
2. Сохраняйте скрипт в 1251 кодировке.
3. Вы понаписывали не то в контролируемых устройствах, надо:
ConType = Array("Removable Media", "External hard disk media"), а вот серийные номера возьмите из результата wmic

EvgenBrain 29-04-2020 13:36 2919387

megaloman, да в диспечере ws есть, я подключаю левую флешку и ничего не происходит

megaloman, есть телеграмм?? Очень нужна помощь!

megaloman, есть телеграмм?? Очень нужна помощь!

EvgenBrain 29-04-2020 13:43 2919391

Вложений: 1
megaloman, Файл 161197

megaloman 29-04-2020 14:16 2919393

EvgenBrain, Всё прекрасно! Надо контролировать два типа устройств: флэшки и внешние диски. На картинке они присутствуют.
ConType = Array("Removable Media", "External hard disk media")
Зачем запускать wmic c выводом в файл - чтобы потом перенести серийные номера разрешенных флэшек и внешних дисков копипастом - руками можно накосячить. Единственное, там файл лучше открывать как UTF, чтобы не было лишних пробелов.
У меня было:
ConSerial = Array("03U0UDBRCJ6HLEYV", "WX61A93R0348")
Вы вбейте свои.
Кстати, поубивайте в диспетчере все лишние wscript

EvgenBrain 29-04-2020 17:09 2919409

у меня вопрос, а можно связать интерфейс с этим скриптом? Так, чтобы массив мы вручную задавали??
а интерфейс написать на Vba
И как его скрыьт из диспетчера задач??

Iska 30-04-2020 01:41 2919461

Цитата:

Цитата EvgenBrain
а можно связать интерфейс с этим скриптом? Так, чтобы массив мы вручную задавали?? »

Не надо интерфейса. Задавайте параметрами скрипта.

megaloman 30-04-2020 10:45 2919488

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

EvgenBrain 30-04-2020 11:53 2919493

Есть учреждение, где разрешено 10 флешек, но есть вероятность, что будут поступать новые.
Начальство сначала просило написать скрипт, хорошо, а потом моча в голову долбанула, мол а давайте еще интерфейс замутим, чтобы пользователь(владелец хоста) сам сносил нужный перечень разрешенных флешек... По мне так бред бредом, единственное, что приходит на ум, так сделать банальную winForm, чтобы та в свою очередь создавала 2 текстовых файла с данными, а скрипт их считывал, но тогда возникают другие "камни"

Есть учреждение, где разрешено 10 флешек, но есть вероятность, что будут поступать новые.
Начальство сначала просило написать скрипт, хорошо, а потом моча в голову долбанула, мол а давайте еще интерфейс замутим, чтобы пользователь(владелец хоста) сам сносил нужный перечень разрешенных флешек... По мне так бред бредом, единственное, что приходит на ум, так сделать банальную winForm, чтобы та в свою очередь создавала 2 текстовых файла с данными, а скрипт их считывал, но тогда возникают другие "камни"...
И вот как его скрыть из диспетчера задач

megaloman 30-04-2020 13:33 2919503

EvgenBrain,
Цитата:

Цитата EvgenBrain
чтобы пользователь(владелец хоста) сам сносил нужный перечень разрешенных флешек... »

Изначально поставленная задача - это профанация системы безопасности. А пустить пользователя в нее - вообще без смысла.
Цитата:

Цитата EvgenBrain
И вот как его скрыть из диспетчера задач »

- это уже за пределом моего понимания.
Вот вариант с "интерфейсом" - текстовым редактором
Код:

Perm = "\\Server\Test11\permition.txt"    'Файл с разрешенными номерами флэшек

Quant = 5 * 1000    'милиСек опроса списка дисков
Frequency = 60      'Сколько опросов списка дисков для перепрочтения файла с номерами

FLog = "Z:\Soft_Out\Spy.txt"                    'Лог-файл, куда запишется инфа о нерегистрированной флэшке
Spause = 2                                    'Пауза Сек начала выключения
   
ConType = Array("Removable Media", "External hard disk media")

Set WMI = GetObject("winmgmts:")
Set FSO = CreateObject("Scripting.FileSystemObject")

iFreq = Frequency
Do
    If iFreq = Frequency Then
        On Error Resume Next
        Set fIn = FSO.OpenTextFile(Perm, 1, False)
        If Err.Number <> 0 Then
            MsgBox "File  " + Perm + vbCrLf + Err.Description + "(" + CStr(Err.Number) + ")"
            ConSerial = Array(" ")
'            WScript.Quit 2
        Else
                ConSerial = Split(fIn.ReadAll, vbCrLf)
                fIn.Close
        End If
        On Error GoTo 0

        iFreq = 0
    End If
   
'    For Each iSerial In ConSerial
'        If Len(Trim(iSerial)) <> 0 Then MsgBox iSerial
'    Next
   
    iFreq = iFreq + 1
   
    Set DAll = WMI.ExecQuery("Select * from Win32_DiskDrive")
    Msg = ""
    Flag = True
    For Each Drv In DAll
        For Each iType In ConType
            If LCase(iType) = LCase(Drv.MediaType) Then
                Flag = False
                For Each iSerial In ConSerial
                    If Len(Trim(iSerial)) <> 0 Then
'                        MsgBox iSerial + "^" + CStr(Drv.SerialNumber)
                        If LCase(CStr(Drv.SerialNumber)) = LCase(Trim(iSerial)) Then
                            Flag = True
                            Exit For
                        End If
                    End If
                Next
            End If
            If Flag Then Exit For
        Next
        If Not Flag Then
            Msg = CStr(Now) + vbTab + Drv.MediaType + vbTab + Drv.Model + vbTab + CStr(Drv.SerialNumber)
'            MsgBox Msg
            Set F = FSO.OpenTextFile(FLog, 8, True)
            F.WriteLine Msg
            F.Close
            R = CreateObject("WScript.Shell").Run("shutdown.exe /s /f /t " + CStr(Spause), 7, True)
            Exit For
        End If
    Next
    WScript.Sleep Quant
Loop

Предполагается, что где-то на сервере есть файл

Perm = "\\Server\Test1\permition.txt" 'Файл с разрешенными номерами флэшек

с доступом только для чтения, кстати, можно организовать, что он будет персональным для каждого пользователя.
Администратор сможет прописывать в этом файле с помощью "интерфейса" :) - текстового редактора, список разрешенных флэшек.
Управление безопасностью - это прежде всего система ограничений прав пользователя, и без администратора никак.

Iska 30-04-2020 15:13 2919515

Цитата:

Цитата EvgenBrain
И вот как его скрыть из диспетчера задач »

Никак.

EvgenBrain 30-04-2020 19:34 2919536

megaloman, conType остается статическим?? или так же можно вставить ссылку на файл с содержанием???

megaloman 30-04-2020 19:43 2919540

EvgenBrain,
Цитата:

conType остается статическим?? или так же можно вставить ссылку на файл с содержанием???
Зачем? Вам надо контролировать флэшки и внешние винты.
"Removable Media", "External hard disk media"
Продемонстрируйте, что еще возможно?
Смысл считывать эту инфу из файла?
Можно еще в файле к номерам прицепить модель устройства, но смысл? Усложнить администрирование?

EvgenBrain 01-05-2020 17:26 2919628

Я - то понимаю, что это усложняет задачу, но руководству не докажешь

Vadikan 01-05-2020 20:49 2919651

EvgenBrain, а что вы сейчас доказываете руководству? А этой темой, если ее предъявить?


Время: 23:11.

Время: 23:11.
© OSzone.net 2001-